14 comments

  • prof-dr-ir 4 hours ago
    Julia is fantastic if you do numerical work and want to write out your inner loops explicitly without sacrificing too much performance, either for pedagogical reasons or because you want to fiddle with the algorithm.

    It is a lot of fun to start from an empty file, add maybe an import LinearAlgebra, and develop things like a convolutional neural network or a Markov-chain Monte Carlo algorithm completely from scratch. And then it is very rewarding to have such a program be fast enough (looking at Python here) to train on the MNIST dataset or find reasonable estimates for critical exponents.

    I am not sure there are languages better suited than Julia for these kind of things.

    • Staross 47 minutes ago
      And if you don't want to code your own HMM it also has the best (AFAIK) HMM library out there (HiddenMarkovModels.jl).
    • guiriduro 1 hour ago
      Julia also has some of the nicest GPU abstraction frameworks of any language, achieving pretty low friction portability over a decent subset of CUDA, Metal, ROCm and CPU. KernelAbstractions.jl, AcceleratedKernels.jl etc.
  • drhagen 1 hour ago
    When I was a grad student at MIT, my desk was across the hall from the Julia people. We even shared a lunch table. Julia is most famous for its optimizing compiler, but many people may not notice the careful work that went into designing the language itself. Matlab this was not! I remember one long conversation where one of them was teaching me about the different types of normalization of unicode. They had to pick one to canonicalize unicode variable names (more useful for a mathy programming language), and they were carefully considering the consequences of the options.
  • radiator 2 hours ago
    Do you think the criticism in the article "Why I no longer recommend Julia" about correctness is still valid? * there are too many correctness and composability bugs throughout the ecosystem to justify using it in just about any context where correctness matters *

    https://yuri.is/not-julia/

    • postflopclarity 2 hours ago
      I think that article has been discussed to death and there's not much value in resurrecting it on every single post that mentions Julia. ultimately if you think the language might be a fit for your use case, I'd recommend trying it out and see how you like it first-hand.
    • ainch 39 minutes ago
      As someone who could be tempted by Julia but isn't involved in the community this was a very helpful read, thank you for sharing.
    • yurivish 2 hours ago
      I do. It pairs nicely with this quote from the article:

      > “With Dyad 3.0, you can upload data and design documents and the system will design an entire aircraft for you,” Shah says

  • maxall4 8 hours ago
    I really want to like Julia. It has a nice type system, a good ecosystem, reasonable syntax, and it’s far faster than Python. But there are several issues with its DX that prevent me from using it: the most severe of which being the complete lack of a cache for the JIT (or JIT like system), inducing multi second compile times for scripts that run in <100ms. There are some external packages that try to solve this issue, but they are far from first-party quality, and, in my experience, are quite buggy.

    (I last tried Julia a few years ago; perhaps this has been improved since?)

    • jampekka 1 hour ago
      Also the module/import system is still quite painful/hacky. Which is partly due to the long compile times.

      https://docs.julialang.org/en/v1.13-dev/manual/workflow-tips...

    • adgjlsfhk1 8 hours ago
      a between session cache had been merged for 1.14 (release expected within 6-12 months).
      • JanisErdmanis 7 hours ago
        What is this magic, how does it differ from PkgImages Julia already has?
    • ssivark 3 hours ago
      I imagine this will only become more important as we have more agents working on codebases in parallel; so a clean solution would be extremely valuable.

      On the flip side, the rise of agentic coding means that the library/batteries mismatch against python will largely stop mattering. It should be very easy to have an agent implement large libraries -- especially if they can be just a translation from one language to another (esp. one with with better primitives!)

    • Joel_Mckay 4 hours ago
      > tried Julia a few years ago; perhaps this has been improved since?

      The pre-compiled binary outputs are much smaller, and load a lot faster. =3

    • bandrami 7 hours ago
      [dead]
  • ashton314 7 hours ago
    Julia is my go-to when I need a fast language that I can reason about in a functional way. The type system is fine, the pattern matching is pretty darn good, the metaprogramming story could be significantly better but it’s not bad and boy howdy it’s fast. So stinking fast.
  • hn_submit 5 hours ago
    Safe for BASIC I believe it's very difficult to make a programming language which is easy-to-learn like the creators of Julia proclaim. It may be somewhat easier to implement specific scientific functionality in the language but does that warrant the creation of yet another language?

    Scanning the language it doesn't strike me at all as "simple."

    • Joel_Mckay 4 hours ago
      Julia abstracts entire programming paradigms in single characters.

      https://juliahep.github.io/Hands-on-Julia-for-particle-physi...

      BASIC "made simple things easy, and hard things impossible..."

      Julia is the first language I've seen in years that implicitly abstracts parallelism cleanly. =3

      • Someone 28 minutes ago
        > Julia is the first language I've seen in years that implicitly abstracts parallelism cleanly.

        What do you mean by “implicitly”? A single dot is short but not implicit.

        I also do not see https://docs.julialang.org/en/v1/manual/parallel-computing/ s mention that such map calls (can) run on multiple threads.

        • Joel_Mckay 8 minutes ago
          The abstraction does not require a lot of understanding/bodges to get performant code by amateurs:

          https://cuda.juliagpu.org/stable/tutorials/introduction/

          But I agree the shared memory Distributed Computing part of Julia still needs a lot of work. Spawning binary image instances over ssh is too fragile. =3

      • ModernMech 10 minutes ago
        Yes that was the basic trick they learned from Matlab, said to be a billion dollar company built off a single operator: \

        Which, for anyone who doesn’t know Matlab, is the solve operator; it calls out to a big algorithm that chooses an appropriate solver given the operands, reducing large programs down to a single line.

        • Joel_Mckay 3 minutes ago
          Matlab was better than Octave in many ways, till folks get the sticker-price shock for $11k/host in a commercial cluster. ymmv

          I still like Julia more, as it is fun. =3

  • myrmidon 3 hours ago
    Julia is really fun to use, and I think they are onto something with the type system: Complex types interact much better across module boundaries than in most other languages; here's a good talk on this by one of the creators:

    https://www.youtube.com/watch?v=kc9HwsxE1OY

    The biggest drawback of the language in my view is that Julia is an LLVM toolchain "pretending" to be an interpreted language (it is, technically), this often leaks as very slow first execution latency (and almost forces you to keep the interpreter open instead of just calling it on the file you're editing).

  • Alien1Being 7 hours ago
    Thought that it would be about Lisp....
    • manwe150 7 hours ago
      It was about lisp ;)

      Secret mode: ./julia —-lisp

  • dandanua 1 hour ago
    The Julia type system is also great for AI, it makes code generation more robust. I also liked that some Julia code (such as matrix multiplication) can be executed on a GPU with no change and will be almost as fast as possible, although complex algorithms still require writing specialized kernels (which can be done completely in Julia as well).
  • bretnach 6 hours ago
    Yet another example of MIT taking far too much credit for something...
    • slwvx 6 hours ago
      I've seen JuliaHub taking credit for all of Julia before. I don't think there's anything new in this article
      • ModernMech 28 minutes ago
        It’s a stealth ad for Dyad.
  • drnick1 5 hours ago
    [dead]
  • xuchenyi 7 hours ago
    [flagged]
  • muragekibicho 7 hours ago
    Julia uses 1-based indexing. It's competes with R and Matlab for the same set of users. Both R and Julia have their core functions written in C++. Absolutely nothing new.

    From my experience, grad students use Julia when their PI thinks a new programming language will help differentiate their next NSF proposal among vast funding requests.

    • adgjlsfhk1 7 hours ago
      > Both R and Julia have their core functions written in C++. Absolutely nothing new.

      imo this isn't really a good summary. Julia is one of the 3 languages to have done an exascale HPC run https://arxiv.org/pdf/2309.10292v1 (Fortran and C are the other 2). Some parts of the compiler are written in c++ (the llvm interface), but doing codegen with llvm is much more similar to C/Rust/Fortran than R/Matlab

    • skew-aberration 6 hours ago
      It kinda feels like Julia competes for the people who write the libraries for R and Matlab. Writing fast and elegant ODE solvers, etc in Julia seems to be easier than the others and they've attracted a lot of academics for that reason.
      • tonyarkles 6 hours ago
        I'm currently split between Python and Julia, having used R happily in the past for data analysis and Matlab for this and that in my EE program. For me, Julia crushes one niche that the rest of them are not good at: making the math look like the math.

        https://docs.sciml.ai/ModelingToolkit/stable/tutorials/nonli...

        If you've used something like SciPy or symbolic Matlab or Maxima or whatever, it always feels like I'm very carefully converting the equations I've scribbled down on paper into code and always a little nervous that I've accidentally split one variable into two names or used the wrong equality operator and am going to end up hating life, or accidentally assigned x = sp.Symbol("y") somewhere.

        The Julia version is just plain beautiful. There's no ceremony other than the three @parameters, @variables, @mtkcompile macros. It lives in its own little world where you don't have to constantly watch your back to make sure you haven't duplicated a symbol somewhere.

        • hasley 4 hours ago
          Getting linear algebra in a programming language close to math formulas was, for a long time, my reason to use Octave.

          When I first read about Julia, I was really amazed - especially the type system with its multiple dispatching and not automatically converting between types (e.g., between integers and floats). Though, I do not know, how Julia is today.

          Today, I use Python instead of Octave (or Julia) - just because it has a large ecosystem and is widely adopted. An additional advantage is that Python has much better OOP features than Octave had back then.

          However, I wished Julia had the status that Python has today.

        • skew-aberration 4 hours ago
          I definitely agree. And the common performance optimization metaprogramming (like 'do it this way for this type of input') works so much better with multiple dispatch, tag structs. Way ahead of C++ expression templates and much more pleasant than macros, concepts, etc.

          Some of the lower-level APIs like those for concurrency were quite poorly thought out though, at least when I last used Julia. Condition variables don't have equivalent of pthread_timed_wait. Condition variables and channels APIs are not well integrated, design wise. I found so many such issues that it convinced me Julia wasn't general purpose enough. It felt like the features were a bit half-baked and had been hacked together by someone who knew their value but lacked the deep experience/knowledge to pull them all together into a single cohesive vision. Same issues as python, POSIX, etc.

          • tonyarkles 4 hours ago
            Yeah, the nifty part is instead of trying to write your whole multi-threaded high performance tool in Julia, there is excellent support for taking the math work you’ve done and codegen C out of it. Am very happily using that in prod today for a thing and it works awesome.
        • Joel_Mckay 4 hours ago
          Julia is fun, but is still mostly an academic language. Very few shops will use it in the private sector. Python is also more common as a prototype integration language, and rarely seen in industrial areas.

          If you are an EE that wants to remain employed... than make sure you have documented hours with C/C++, Verilog on Zynq, and ladder logic for Rockwell automation products.

          Best of luck =3

    • jhoechtl 4 hours ago
      > Julia uses 1-based indexing.

      That rules it out to become a successor to Python. It sounds reasonable until you start interacting with other libraries.

      I do know the attemp to justify it for Lua and I don't buy it.

      • jhbadger 2 hours ago
        Nearly all languages designed for mathematics are 1-based - R, Matlab, Mathematica, etc. because that's the mathematical convention and allows using formulas directly. The fact that Python isn't is a drawback in the domain.
        • ModernMech 20 minutes ago
          Nearly all languages for non coders are this way including Excel and SQL and Scratch.
      • ModernMech 19 minutes ago
        This is why AI is better at writing code than humans. They just write code and don’t complain about things that don’t matter, like indexing; or another classic, spaces vs tabs. Humans must learn to get past these things.
      • kvchiu 3 hours ago
        [dead]