# Discussion on "Why I no longer recommend Julia" by Yuri Vishnevsky

**URL:** <https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151>\
**Category:** Community\
**Tags:** discussion\
**Created:** [May 16, 2022, 2:33pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151 "2022-05-16T14:33:38Z")\
**Posts on this page:** 20\
**Page:** 6

<div class="post-metadata">

**Author:** ![jlperla](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jlperla/32/34332_2.png) [@jlperla](https://discourse.julialang.org/u/jlperla)\
**Post date:** [May 19, 2022, 3:12am UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/102 "2022-05-19T03:12:58Z")

</div>

> [@xfcjscn](#):
>
> Most developer perceive array as: A[0, 1, 2, …].

For those coming from matlab or fortran that is not the case.

---

<div class="post-metadata">

**Author:** ![jling](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jling/32/212909_2.png) [@jling](https://discourse.julialang.org/u/jling)\
**Post date:** [May 19, 2022, 4:16am UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/103 "2022-05-19T04:16:00Z")

</div>

or R or Mathematica (Wolfram)

---

<div class="post-metadata">

**Author:** ![Allan\_Baker](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/allan_baker/32/42645_2.png) [@Allan\_Baker](https://discourse.julialang.org/u/Allan_Baker)\
**Post date:** [May 19, 2022, 1:17pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/104 "2022-05-19T13:17:13Z")

</div>

Maybe there are SW standards that packages and the base can certify against. To be useful, not only does the analyst or programmer have to trust it, but their management and customers have to trust it.

For engineering to adopt it over MATLAB or hand written C++ it must get equivalently safe and secure results at the benefit of reduced coding complexity and improved execution performance.

Otherwise, Julia will only be a prototyping or an academic tool and will not have solved the two language problem.

Also, all software has bugs. At least with Julia you can fix most of them and submit the fix. With Xilinx and Mathworks and some of the other open source languages, it’s much more complicated to work around their bugs.

With Julia and the professional use case, understanding good Julia coding standards and best practices especially when integrating with non base packages is what is difficult for a new user. There are a lot of assumptions about experience level made in some of the documentation but I am still impressed at how thorough it is. Many times there are a lot of choices and the new user doesn’t understand the consequences of one over the other. Many engineers have a copy and modify work style. Make sure the use cases have non trivial examples as well that don’t require the engineer to rube-Goldberg a series of examples too much to understand what is the right way to do something.

I’m excited for the day when Julia is mature enough to allow algorithm development that targets embedded systems. But simulating fast and developing fast is still a plus.

How the Julia community addresses problems will be more important than if the Julia language has problems here and there.

Problems and bugs are expected. We just want a stable path to resolution. We have to verify and validate our engineering solutions. If we can push some of that off on a robust test process or set of standards that are easily testable, that would be wonderful.

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [May 19, 2022, 2:07pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/105 "2022-05-19T14:07:59Z")

</div>

> [@Allan\_Baker](#):
>
> For engineering to adopt it over MATLAB or hand written C++ it must get equivalently safe and secure results at the benefit of reduced coding complexity and improved execution performance.
> 
> Otherwise, Julia will only be a prototyping or an academic tool and will not have solved the two language problem.

I don’t really get what you mean by being equivalently safe to C++. C++ is extremely unsafe and the vast majority of security issues is from code written in it (or in C). Julia has automatic memory management which avoids a whole set of security issues immediately and it also checks index bounds by default. It is possible to turn off bounds checking but that should very rarely be needed since it is only really useful in those cases where it enables the compiler to do significant extra optimizations.

Also, if you are worried about problems as described in the blog you can just run with `--check-bounds=yes` to force bounds checking to be on (when you run the tests with `Pkg.test` that is done for example).

---

<div class="post-metadata">

**Author:** ![Elrod](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/elrod/32/22461_2.png) [@Elrod](https://discourse.julialang.org/u/Elrod)\
**Post date:** [May 19, 2022, 9:47pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/106 "2022-05-19T21:47:25Z")

</div>

> [@kristoffer.carlsson](#):
>
> I don’t really get what you mean by being equivalently safe to C++. C++ is extremely unsafe and the vast majority of security issues is from code written in it (or in C). Julia has automatic memory management which avoids a whole set of security issues immediately and it also checks index bounds by default.

I think the gap between C++'s portrayal and reality is rather large.  
Using `llvm::SmallVector` (a C++ data type for dynamically sized arrays, like `Vector`) memory management is also automatic, it checks bounds by default, and some polynomial code I wrote is about 3x faster than the Julia version using the same data representation and algorithms.

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 20, 2022, 2:11am UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/107 "2022-05-20T02:11:05Z")

</div>

> [@Elrod](#):
>
> I think the gap between C++'s portrayal and reality is rather large.

There are almost infinitely many subsets of the language which people call “C++”. I think that’s the major issue with it at this point, not necessarily any of its features in isolation. Every person’s code looks like a different language, using different standard libraries, different code conventions, different features for generics, etc. So there are many unsafe variations of C++ that people use, and there are some that are safer but don’t seem to get as much use for various reasons. Both are simultaneously the same language.

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [May 23, 2022, 3:05pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/108 "2022-05-23T15:05:22Z")

</div>

Split this topic on May 23, 2022, 3:05pm UTC

26 posts were split to a new topic: [Julia on embedded devices & validation thereof](https://discourse.julialang.org/t/julia-on-embedded-devices-validation-thereof/81518)

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [May 21, 2022, 7:29pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/120 "2022-05-21T19:29:15Z")

</div>

> [@Elrod](#):
>
> I think the gap between C++'s portrayal and reality is rather large.

> [@Julia on embedded devices & validation thereof](https://discourse.julialang.org/t/julia-on-embedded-devices-validation-thereof/81518/1):
>
> For C and C++, there are standards that the compilers follow, there are tools that can be used to check for problems,

And yet, as an example, 70% of vulnerabilities from Microsoft are from memory unsafeness ([/blog/2019/07/we-need-a-safer-systems-programming-language/](https://msrc-blog.microsoft.com/2019/07/18/we-need-a-safer-systems-programming-language/)). No one will ever be able to explain away that in _reality_ memory unsafeness from memory unsafe programming languages are the largest contributors to security problems in modern software.

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [May 22, 2022, 8:54pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/132 "2022-05-22T20:54:33Z")

</div>

[Meta-comment] I don’t know who Yuri Vishnevsky is, but I’m sure that after all the attention his thoughts have received here, he will reconsider his position on Julia.

---

<div class="post-metadata">

**Author:** ![Vyacheslav\_Vorobyov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vyacheslav_vorobyov/32/26301_2.png) [@Vyacheslav\_Vorobyov](https://discourse.julialang.org/u/Vyacheslav_Vorobyov)\
**Post date:** [May 23, 2022, 6:05pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/133 "2022-05-23T18:05:31Z")

</div>

Tbh, my interest in Julia was mainly due to Flux/Zygote due to ease of creating custom NN models. I believe each language have a set of libs/tools which drive a community interest to that language, I’d say they are mission critiacal part of a language community. So it is pointless to reason about some abstract beauty/composability of language if its main practical goals are failed. Incorrect computation of gradients or incorrect behavoir for stdout definitely would play dramatic impact on Julia. And to fix that Julia community should have much more develpoers who capable contribute to the ecosystems, and I believe thaere are lot of such, but may be languge lack of interfaces or protocol or whatever other contract mechanisms to make Julia capable efficiently assimilate voluntiers efforts.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [May 23, 2022, 7:18pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/134 "2022-05-23T19:18:34Z")

</div>

Well, machine learning is not the main practical goal of Julia… I use it very successfully for solving differential equations where I do not need automatic differentiation for calculating gradients… I would say you are looking at a very specific field of application of Julia, and making conclusions about weaknesses of a language from weaknesses in one specific field of application is not correct.

Julia provides a lot of very advanced technologies, and some are production ready and some are not (yet).

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 23, 2022, 8:05pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/135 "2022-05-23T20:05:07Z")

</div>

> [@ufechner7](#):
>
> Well, machine learning is not the main practical goal of Julia…

My impression is that machine learning is _one of the_ main applications of Julia. One of the _best known_ parts of the ecosystem is [SciML](https://sciml.ai/).

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [May 23, 2022, 8:09pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/136 "2022-05-23T20:09:35Z")

</div>

Well, there is a lot of hype about machine learning… But I would say for 90% of the tasks in the fields of modelling and control you do not need it… And Julia is very good in modelling and control…

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [May 23, 2022, 8:12pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/137 "2022-05-23T20:12:13Z")

</div>

Do the Zygote bugs have anything to do with the composability of Julia (as are the OffsetArrays related bugs there)?

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 23, 2022, 8:13pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/138 "2022-05-23T20:13:14Z")

</div>

Sure there Julia is used for many things, but you cannot seriously dismiss the importance of machine learning for the Julia ecosystem like that.

But ok, I agree that this:

> [@Vyacheslav\_Vorobyov](#):
>
> So it is pointless to reason about some abstract beauty/composability of language if its main practical goals are failed.

is dramatically overstated.

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 23, 2022, 8:13pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/139 "2022-05-23T20:13:57Z")

</div>

Is that a question for me?

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [May 23, 2022, 8:31pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/140 "2022-05-23T20:31:01Z")

</div>

Only if you know the answer 😀

---

<div class="post-metadata">

**Author:** ![DNF](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dnf/32/10191_2.png) [@DNF](https://discourse.julialang.org/u/DNF)\
**Post date:** [May 23, 2022, 8:36pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/141 "2022-05-23T20:36:28Z")

</div>

I’m afraid I don’t really know 🤷 I was reacting more to the dismissal of the point than to the point itself (which I think was over the top.)

---

<div class="post-metadata">

**Author:** ![Vyacheslav\_Vorobyov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/vyacheslav_vorobyov/32/26301_2.png) [@Vyacheslav\_Vorobyov](https://discourse.julialang.org/u/Vyacheslav_Vorobyov)\
**Post date:** [May 23, 2022, 10:54pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/142 "2022-05-23T22:54:01Z")

</div>

ML is not one of main goals of Julia? Just, wow. Do you think the Julia was born to became just yet another tool to solve differntial equations which already successfuly solvable by packges in Python, R, Matlab, Fortran, etc? For such a well known task like solving DEs numerically, it is doubtful that relevant community needs a whole new language. Also you mentioned control. I am sure, you don’t want your your airplane would be controlled by program on Julia due to aforementioned correctness problems.

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [May 23, 2022, 11:13pm UTC](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151/143 "2022-05-23T23:13:49Z")

</div>

> [@Vyacheslav\_Vorobyov](#):
>
> ML is not one of main goals of Julia?

Well, not for me.

> [@Vyacheslav\_Vorobyov](#):
>
> Do you think the Julia was born to became just yet another tool to solve differntial equations which already successfuly solvable by packges in Python, R, Matlab, Fortran, etc?

Is it such a minor goal?

> [@Vyacheslav\_Vorobyov](#):
>
> your airplane would be controlled by program on Julia

Common people don’t program air plain flights. (not pretending that those who do are not common people)

[Previous page](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151.md?page=5)

[Next page](https://discourse.julialang.org/t/discussion-on-why-i-no-longer-recommend-julia-by-yuri-vishnevsky/81151.md?page=7)
