Mo Bitar - Rust vs Julia in scientific computing

แชร์
ฝัง

ความคิดเห็น • 20

  • @offensivearch
    @offensivearch ปีที่แล้ว +27

    I don't think Julia has many "performance footguns". To me a footgun is something that is easy to get wrong. Does Julia allow non-performant, non-type stable, etc things? Yes. I have yet to see Julia code that is very slow where I am wondering why it isn't fast. The example given of a Array{Any}, it is obvious to me why that wouldn't be performant. To me Julia's advantage is that it is a language where it is "easy to get performant and idiomatic code".
    You can not care about performance at all and get code that runs slow (but you can write fast). You can, if you want, make very optimized code that looks nothing like idiomatic Julia. In most cases I want something in the middle. I want abstract idiomatic code (easy to maintain) that is reasonably fast. I've found avoiding things that make your code slow in Julia is usually easy and there are nice tools for doing so.

  • @Sumospider
    @Sumospider ปีที่แล้ว +15

    Guys, use the right language for the right problem...
    Rust is the language you want for writing stable and performant software for sure. Noone would want to write a database in Julia, but for scientific computing, Im sorry, Julia is just the better language.
    There are static analysis tools for Julia as well you dont need a compiler for that.
    Btw you can have bad performance in any language if you dont know basics.

    • @rolandschatzle4208
      @rolandschatzle4208 11 หลายเดือนก่อน +1

      This is exactly the point! Rust is a systems programming language and should be used for that. Julia is aimed on scientific computing and the like and really shines there. In scientific computing, data science etc. you need an interactive environment und you don’t want to care about memory management.

    • @tychoides
      @tychoides 10 หลายเดือนก่อน

      @@rolandschatzle4208 I tried to move my data science workflow to Julia and it was hopeless. The JIT lag is still awful. It seems that they move the compilation to the library importing so there is less in the REPL, but that is useless as I need to run the script regularly in a container. I used Dataframes.jl and the performance was similar to Pandas for merging tables to 2x better for grouping. But actually I can get more improvement moving more of those operations to the database. I bet there could be more optimizations that could have been done in Julia, but also my python code was not optimized either. The memory consumption was twice than python for small datasets. Finally I tried Polars (rust library for dataframes) and it was 10x faster with automatic multi-threading, even when I was not taking advantage of the lazy evaluation. I am moving my pandas work to a mixture of sql queries, pandas and polars for the more intensive scripts. Julia is not going to win in data science or ML. Python is more than enough for that work. Libraries are made in the C/C++/Fortran and now Rust. And you want good well optimized libraries. Julia is only feasible for long simulations until they bring good static compilation to the language (the current one is a joke) and an actual interpreter to the REPL. I don't want optimized JIT. I want a decent JIT for REPL and optimized compilation for my binary.

  • @MarcoAntoniotti
    @MarcoAntoniotti 9 หลายเดือนก่อน +2

    This is an old debate. Bottom line: developing in Julia is and will be easier. Rust is an amazing compiler, but developing code in Rust seem to be a PITA.

  • @halneufmille
    @halneufmille ปีที่แล้ว +3

    4:28 I think pop! is a feature. Most of the time, if I try to pop an empty array, I want my program to error so I can know there was something wrong.

    • @oro6768
      @oro6768 ปีที่แล้ว

      Better to gracefully handle an error (i.e. provide more meaningful context, provide a default value if necessary, etc) sounds a *lot* better than saying "whatever" and letting it crash during runtime, without your input.

  • @nanocentury
    @nanocentury 10 หลายเดือนก่อน +2

    never have i ever seen v.pop used or taught in julia. the use case would be someone trying to straight up paste code from some other language to julia.

  • @kaihsiangju
    @kaihsiangju 11 หลายเดือนก่อน +3

    what about software development efficiency? how easy the language for researcher or scientist to adopt the language? code readability? personally, for scientific computing, I don't think rust is anywhere close to julia/python or even matlab or R. I love rust for its speed and safety, but a lot of rust enthusiasts want others to see it as the "best language for everything" which is just clearly wrong.

  • @dustinhess6798
    @dustinhess6798 2 หลายเดือนก่อน +1

    Saying Julia is not good for anything outside of simple scripting seems to me that some doesn't actually know how to program in Julia. I have written at least 2 large simulation packages ( phontonics related.) They were previously written in C for speed. Julia is just at fast as the C ones and and way easier to maintain and extend. I was able to model then optimize the code so much easier than c or c++. I think think you just don't have experience writing a large package in Julia. That is not to say Rust isn't a good language. Rust seems to be a good systems level programing language. Julia is not. Plain simple has nothing to do with size of the program.

  • @nicklam3594
    @nicklam3594 ปีที่แล้ว +13

    Nd arrays in rust suck. Lack of elegant broadcasting rules also sucks. No way to generate cuda kernels (from within rust). Lack of a good AD/ML library. I dont know what kind of scientific products you are using rust for, but definately rust is not the tool for my usecase.

    • @nicklam3594
      @nicklam3594 ปีที่แล้ว +4

      nvm disregard this comment. I love rust now

    • @mannacharya4088
      @mannacharya4088 ปีที่แล้ว

      What happend to you bro?
      @@nicklam3594

    • @waynelau3256
      @waynelau3256 ปีที่แล้ว +3

      ​@@nicklam3594can you share what you have learnt haha.

    • @vidal9747
      @vidal9747 ปีที่แล้ว +2

      ​@@nicklam3594It is important to any scientists to keep an open mind and change it when you realize you are wrong. But could you provide a little more contest in your change of heart? A link to a blogpost or anything would do. I am thinking of migrating some of my code to rust. I am a undergrad in computational physics and want something closer to what I get in fortran, but without using a dead language.

    • @nicklam3594
      @nicklam3594 5 หลายเดือนก่อน

      I will be making a presentation on this. Will keep you posted.

  • @UpstreamNL
    @UpstreamNL ปีที่แล้ว

    Great talk

  • @yevgeniygrechka6431
    @yevgeniygrechka6431 5 หลายเดือนก่อน

    I think this is a great snippet of the issues of Julia; there are of course a lot of other issues (starting with the fact that it indexes at 1). I definitely agree that Julia does not solve the two language problem; right now mojo is the best candidate to solve it, but mojo's decision to essentially be compatible with python will be a huge albatross in this endeavor. Ironically, I do think that Rust comes closest to solving the two language problem, it is much easier to do scripting/prototyping in rust that to get a quality prod-ready code in Julia.