TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

What's Great about Julia?

198 pointsby jakobnissenover 2 years ago

23 comments

CoreyFieldensover 2 years ago
Everytime Julia is mentioned on HN, I see a surprising amount of people who dislike the language for whatever reason. I understand a lot of their concerns (time to first plot, debugging sucks, IDE support isn&#x27;t amazing yet). However, I don&#x27;t see a lot of alternatives for the niche that Julia occupies. If you want to do high performance scientific computing, there aren&#x27;t a lot of options in terms of languages.<p>Python is the de facto but it&#x27;s so slow for anything that can&#x27;t be well represented as vectorized NumPy operations. There are ways around that like Numba, Jax, Cython, etc. but their use cases are pretty limited, and they don&#x27;t work well with other Python packages.<p>There is, of course, C and C++ which are commonly used to speed up Python or as standalone packages. However, C++ is such a complicated beast that writing performant and correct code takes forever. C is much more manageable, but I find that there are not a lot of scientific packages written in pure C. This isn&#x27;t even touching on the horrendous build system that is CMake.<p>Fortran is a pretty simple looking language and would probably be the closest to Julia in terms of speed and expressiveness, but the writing is on the wall and Fortran&#x27;s days are numbered. I am not aware of many new packages being developed using it.<p>Other than that, there&#x27;s languages like Rust and Go but those have ecosystems that are so small, they make Julia&#x27;s ecosystem look like Python&#x27;s. I really don&#x27;t want to spend my time as a grad student writing basic numerical libraries from scratch.
评论 #33904170 未加载
评论 #33903514 未加载
评论 #33903408 未加载
评论 #33912196 未加载
评论 #33905067 未加载
评论 #33906731 未加载
评论 #33912408 未加载
评论 #33906226 未加载
评论 #33904954 未加载
评论 #33905076 未加载
评论 #33903791 未加载
评论 #33904775 未加载
评论 #33906016 未加载
评论 #33906751 未加载
canjobearover 2 years ago
As someone who has used and contributed to Julia, I find Yuri Vishnevsky&#x27;s arguments about correctness totally fatal [0]. And Yuri&#x27;s examples are not obscure, they are totally realistic scenarios where Julia silently returns wrong results in ways that may be hard to detect. I do mostly scientific computing, and the idea that I might have to retract a paper because of a bug <i>in the programming language</i> is intolerable. It doesn&#x27;t matter how beautiful and fun to write and develop the language is if it can&#x27;t be trusted to return correct results.<p>[0] <a href="https:&#x2F;&#x2F;yuri.is&#x2F;not-julia&#x2F;" rel="nofollow">https:&#x2F;&#x2F;yuri.is&#x2F;not-julia&#x2F;</a>
评论 #33905577 未加载
评论 #33905728 未加载
评论 #33902739 未加载
评论 #33902725 未加载
评论 #33905501 未加载
评论 #33903245 未加载
评论 #33903436 未加载
评论 #33904951 未加载
评论 #33902962 未加载
评论 #33907555 未加载
评论 #33915826 未加载
评论 #33903109 未加载
评论 #33906524 未加载
ubjover 2 years ago
Great writeup. Minor comment about the portion of the post mentioning Conda being glacially slow: Mamba [1] is a much better drop-in replacement written in C++. Not only is it significantly faster, but error messages are much more sane and helpful.<p>That being said, I do agree that Pkg.jl is much more sleek and modern than Conda&#x2F;Mamba.<p>[1]: <a href="https:&#x2F;&#x2F;github.com&#x2F;mamba-org&#x2F;mamba" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;mamba-org&#x2F;mamba</a>
评论 #33904004 未加载
UncleOxidantover 2 years ago
Agree with all of these points. Multiple Dispatch takes a bit of getting used to, but once you get it it just makes a lot of sense and allows for an amazing amount of code-reuse. And, yes, Julia&#x27;s REPL is sooo much nicer to use than Python&#x27;s - I always kind of cringe when I&#x27;ve gotta go back and use the Python REPL as it&#x27;s so primitive by comparison. You can even tab-complete filenames in the current directory in the Julia REPL. Say you want to open a file called &quot;example.log&quot;:<p>julia&gt; open(&quot;exam&lt;TAB&gt;<p>will give you:<p>julia&gt; open(&quot;example.log&quot;
评论 #33902508 未加载
ChrisRackauckasover 2 years ago
Thanks for sharing. Being a developer of a lot of libraries, it&#x27;s easy to spend every day just focused on what&#x27;s bad right now. Indeed, that&#x27;s what you do because that&#x27;s what needs to get fixed! But it&#x27;s nice to take a step back every once in awhile and see what has been accomplished. I think there&#x27;s a long ways to go still, but there is a lot of good in there. Thanks for taking the time to highlight it.
the__alchemistover 2 years ago
I wanted to like Julia, but have been unable to. If I want fast numerical&#x2F;scientific code, I have Rust. If I want to prototype numerical algorithms, plot things, prototype, REPL etc, I have Python. I was hoping Julia could replace the latter, but it&#x27;s too slow-to-compile; need fast iteration.<p>Julia&#x27;s numerical syntax is unbeaten. I wish other languages would adopt it.
评论 #33902885 未加载
评论 #33905583 未加载
评论 #33904868 未加载
评论 #33913593 未加载
klabb3over 2 years ago
Curious bystander here. Is there a cult follower on HN who can speak to the benefits of multiple dispatch, practically and compared to other languages? I know the sales pitch but I’m curious in particular about which <i>practical</i> coding problems and abstractions become obsolete with MD.<p>It looks really promising, like “the way things were always supposed to be”, but I haven’t yet developed a full and intuitive understanding of what it means.
评论 #33903157 未加载
评论 #33904023 未加载
评论 #33903677 未加载
评论 #33905688 未加载
评论 #33902957 未加载
评论 #33983842 未加载
评论 #33909043 未加载
clumsysmurfover 2 years ago
If one wanted to learn Julia, where is the best place to start? I looked at <a href="https:&#x2F;&#x2F;julialang.org&#x2F;learning&#x2F;books&#x2F;" rel="nofollow">https:&#x2F;&#x2F;julialang.org&#x2F;learning&#x2F;books&#x2F;</a><p>For new programming language XXX I look for a book like the &quot;K&amp;R for XXX&quot;. I see some older ones from Packt, but nothing like the official Rust Book, for example. There is &quot;Think Julia&quot; (OReilly) but its older.
评论 #33902463 未加载
评论 #33905073 未加载
评论 #33903195 未加载
评论 #33902343 未加载
评论 #33905777 未加载
lukegoover 2 years ago
I&#x27;m programming in Julia today and really enjoying it.<p>Julia is the language that spares me from reaching for Python. I appreciate that.<p>It doesn&#x27;t replace all the other languages in my quiver but nor does it have to.<p>(If I compare Julia with Lisp or R&#x2F;tidyverse&#x2F;ggplot2 then frustrations emerge but &quot;doctor doctor it hurts when I do this.&quot;)
m_nyongesaover 2 years ago
I&#x27;d like to point out two things I _don&#x27;t_ like about Julia that seem to be idiosyncratic but nevertheless matter to me:<p>1. Rather than use something like reStructuredText or Texinfo they used Markdown, and then of course had to define a bunch of custom additional stuff to make it work for documentation, plus a custom program to publish the documentation to a limited number of formats. Unlike the two documentation languages I mentioned, the Juila &quot;customized Markdown&quot; isn&#x27;t publishable to Info, so it can&#x27;t be used in Emacs: rather, it&#x27;s basically just a bunch of web pages.<p>2. Julia is completely dependent on LLVM. Even Rust (which was initially like that) now has a GCC-based implementation.
评论 #33909924 未加载
评论 #33907269 未加载
Volker_Wover 2 years ago
Shameless plug: I wrote about what I think is bad about Julia:<p><a href="https:&#x2F;&#x2F;weissmann.pm&#x2F;julialang&#x2F;" rel="nofollow">https:&#x2F;&#x2F;weissmann.pm&#x2F;julialang&#x2F;</a>
评论 #33905019 未加载
评论 #33904197 未加载
eigenspaceover 2 years ago
Nice post Jakob. I almost universally agree with the points here, especially the ones about the joy of optimizing Julia code.
chenzheklover 2 years ago
For me, Julia lags in deep learning compared to Python and lacks many valuable packages like PyTorch and PyG. Another reason that stops me from adopting Julia is that it lacks good learning resources. I can grasp Python within an afternoon. But the same thing is pretty hard for Julia.
MegaSecover 2 years ago
I love Julia, for reasons mainly covered in this post. The functional features are also <i>fantastic</i>.
winstonprivacyover 2 years ago
&gt;I don&#x27;t know much about the intricasies of multithreading, so I couldn&#x27;t tell you if Julia&#x27;s approach to multithreading is groundbreaking or well designed. What I can tell you, is that in Julia, it is so easy to use multiple threads effectively, that even though I don&#x27;t feel that confident writing complex multithreaded code, most my performance sensitive scripts are multithreaded where it&#x27;s obvious to do so.<p>Threading may be easy but the approach they are taking is not very performant for various hardware-related reasons.
评论 #33907249 未加载
jweirover 2 years ago
I started to use Julia to reply to a question on Twitter with a full program.<p>I tried Ruby first but it was just a bit too long.<p>Julia fit the ticket. I could write a simple simulation that was understandable inside the Tweet.
college_physicsover 2 years ago
when choosing a foreign language to learn most normal people would not examine which one has the most elegant grammar, the most performant representation of information or any such abstract design elements.<p>people ask instead: whom will I be able to communicate with. what kind of cultural repository (wealth) do I get access to. how will <i>I</i> benefit to justify spending the limited opportunities I have to reprogram my brain.<p>the programmer-to-programmer aspect of computer languages is not appreciated enough, especially not in the modern, highly networked and open source way of developing software. yes, the primary purpose is to marshal ones and zeros in silicon chips and it does matter if the language helps you do that in a sane way but this is just one of the many factors people consider.<p>I think, unfortunately for Julia and other aspiring challengers, right now the primary social network dynamics among developers is &quot;winner takes all&quot;. e.g., its not a deep secret that the meteoric rize of python is because it enabled countless people to aspire to be part of the perceived AI&#x2F;ML&#x2F;FAANG gold rush. Over time programmer eyeballs motivate investment in ecosystem evolution and a benign spiral is set in motion.<p>I don&#x27;t have a crystal ball as to when&#x2F;if&#x2F;how the current pyfever might cool down. You can&#x27;t predict those things, they are an emergent property of our very complex networks. Maybe some killer feature or julia or rust or go or dart or kotlin will trigger some regime change, but unless it does, any discussions of alternate greatness have a distinct detached feeling to them.
评论 #33906052 未加载
nixpulvisover 2 years ago
&quot;Multithreading is easy&quot;<p>Famous last words.
评论 #33907345 未加载
评论 #33904094 未加载
jostmeyover 2 years ago
I loved the early iterations of Julia. It was everything I wanted… fast, simple, and readable. Somehow the language has become less simple and readable to the point I don’t recommend it anymore
blindseerover 2 years ago
&gt; A better catchphrase for Julia might be &quot;The best expressiveness &#x2F; performance tradeoff you have ever seen&quot;.<p>Man, Jakob just has a way of writing that gets right to the point. Nice post.<p>My only complaint about the post is that in Python you have many different REPL options. For example, both ipython and bpython are miles ahead of the Julia REPL. I agree though that the Julia default REPL is better than the Python default REPL. I particularly like the shell mode in Julia. You can also make your own modes, like a sql mode or any custom DSL mode.<p>I have been very critical about Julia in the past, so I&#x27;ll say some positive things before I complain more :)<p>- The package management in Julia is god-like. Specifically, there&#x27;s a whole subset of packages that are just binaries and libraries cross compiled on VMs for Windows &#x2F; Mac &#x2F; Linux + x86 &#x2F; x64 &#x2F; ARM, and <i>it just works</i>. There&#x27;s no more trying to compile code on a users computer when trying to install a package, it&#x27;s beautiful. It is truly a phenomenal piece of engineering, and I cannot praise it enough. Hats off to the core team responsible for this.<p>- Multithreading is such a joy to use. Compared to any other dynamic GC language, Julia and Go are pretty much up there in terms of usability + features. So much better than Python or R. But while I prefer Julia over Go, I do prefer Rust over Julia.<p>Now for some of my grievances. I&#x27;m a nobody in the Julia community so take my word for what it is worth.<p>- Optimizing Julia code <i>is</i> a joy. However, learning how to optimize Julia code not straightforward. If you are coming from Python and&#x2F;or don&#x27;t have experience thinking about memory, cache lines, references, mutability etc, you have your work cut out for you in terms of learning how to optimize Julia code. In addition to that, there are Julia specific things you need to learn to know how to optimize your code. Do you know what the function barrier paradigm is? No? Too bad, now your codebase is 10x slower and refactoring could take weeks. And that&#x27;s just the theory of everything you need to learn. There&#x27;s SO many subtle ways your Julia code can be slow because the compiler wasn&#x27;t able to &quot;see through your code&quot;. And the tooling here is getting better but still has a LOONNNGGG way to go. Statically being able to check and assert for problematic inferences will improve this for me a la JET.jl but right now JET.jl is too slow to run on a large codebase.<p>- Thinking with Multiple Dispatch (MD) is much like Thinking with Portals. Once you get it, you have this ah-ha moment. But the type system is overloaded in my opinion. You HAVE to use the type system for MD but people also use it for interfaces (AbstractArray for example). I think adding inheritance in the abstract type system was a mistake, and a trait or interface like approach would be way better for this. Maybe something like concrete types for dispatch and abstract types for interfaces? I don&#x27;t think this will EVER change though, not in Julia 2.0 or 3.0 or later, because it is SO ingrained into the Julia community. I&#x27;m not explaining this well here but I&#x27;ve complained about it before in previous comments on HN and am too lazy to go find it and copy paste :)<p>- There&#x27;s a number of minor syntax &#x2F; usability gripes I have that I don&#x27;t think will ever be fixed as well. I generally think a programming language should incentivize you to &quot;do the right thing&quot;, often my making it easier to type. In Julia this framework of thinking exists but isn&#x27;t applied consistently. It is easier to create a immutable struct than a mutable struct<p><pre><code> struct Immutable x::Int y::Int end # vs mutable struct Mutable x::Int y::Int end </code></pre> However, if you want to use it to store user data, if you choose immutable structs, your interface for users is EXTREMELY annoying. For example, if they want to update `x` from `1` to be `2`.<p><pre><code> im = Immutable(1, 3) im = Immutable(2, im.y) </code></pre> With mutable structs:<p><pre><code> m = Mutable(1, 3) m.x = 2 </code></pre> There&#x27;s third party packages that make this easier but this should ABSOLUTELY be in Base.<p>There&#x27;s similar complaints I have about type names in Julia. I&#x27;m incentivized to write `::String` instead of `::AbstractString`, `::Int` instead of `::Integer`. In Julia using `AbstractString` is almost always preferred. The naming is also quite annoying. Why does `AbstractString` have `Abstract` in the name but `Integer` not, when both of them are abstract types?<p>I&#x27;ve said this before and I&#x27;ll say it again. I think Julia core devs should have a usability expert come in and review their whole codebase and workflows and make suggestions. I have no idea how Rust has nailed this so well. In Rust, so many things are just consistent. You can guess what the names or behavior of what you want so often, it&#x27;s awesome.<p>TLDR:<p>If you are thinking of using Julia for a large production codebase, wait 5 more years. I&#x27;ve learnt that the hard way. For personal projects it is amazing though.
评论 #33905578 未加载
评论 #33907543 未加载
评论 #33903409 未加载
xyzzy4747over 2 years ago
Just use Rust. Enough said.
aswansonover 2 years ago
<i>The core language is unstable</i><p>Welp. Im out.
评论 #33902994 未加载
RivieraKidover 2 years ago
I used to really like Julia but over time have heavily moved to the view that my ideal general-purpose programming language would look a lot like Swift, perhaps with some bits of Julia, e.g. the REPL.<p>Julia doesn&#x27;t have a good support for OOP. I don&#x27;t think FP is the optimal way to solve all possible programming tasks. Usually a mix of both approaches leads to the most simple, maintainable and readable code.<p>And I&#x27;m really not sold on multiple dispatch. In Swift, I would simply implement the join function by adding an extension on `Array&lt;String&gt;`. And the + function would just be, for example, `static func + (left: Vector2D, right: Vector2D) -&gt; Vector2D`. I&#x27;ve never come across a situation where I wished Swift would support multiple dispatch. On the other hand, the fact that Julia doesn&#x27;t use the object.method() has 2 very clear drawbacks: lack of completion in an IDE and poor readability (example: `object.doSomething(a, b, c).doSomethingElse(a, b, c)` - imagine how would this look in Julia).
评论 #33906887 未加载
评论 #33916043 未加载
评论 #33906647 未加载
评论 #33906549 未加载