End result: code that is uglier and still much slower than C++. Kind of a shame.
My work is more combinatorial. Julia does excel at numerical computation. There's a tribal divide in math between people who can't go 30 seconds away from the real or complex numbers, and those whose tolerance is about that long. I try to keep an open mind, but I'm closer to the second camp. Julia is good enough to consider either way.
A development in recent months, AI can assist in general purpose Lean 4 programming, no longer getting confused by the dominant proof-oriented training corpus. If one is a functional programmer who believes that Haskell was on the right track, then Lean is the most interesting language choice for shaping one's thoughts. Benchmarks are inherently misleading if a better language makes it possible to express algorithms out of reach of more primitive languages.
https://github.com/Syzygies/Compare
C++ 100 13.08s ±0.08s
Rust 99 13.16s ±0.02s
Julia 90 14.54s ±0.01s
F# 90 14.54s ±0.04s
Kotlin-native 88 14.79s ±0.01s
Kotlin 86 15.18s ±0.01s
Scala 79 16.50s ±0.08s
Scala-native 76 17.14s ±0.02s
Nim 65 20.17s ±0.01s
Swift 64 20.54s ±0.04s
Ocaml 52 25.38s ±0.04s
Chez 49 26.64s ±0.02s
Haskell 37 34.96s ±0.06s
Lean 29 45.39s ±0.15sTo those who regularly write Julia code, what is your workflow? The whole thing with Revise.jl did not suit me honestly. I have enjoyed programming in Rust orders of magnitude more because there's no run time and you can do AOT. My intention is not write scripts, but high performance numerical/scientific code, and with Julia's JIT-based design, rapid iteration (to me at least) feels slower than Rust (!).
And that's a good thing, because Python+NumPy syntax is far more cumbersome than either Julia or MATLAB's.
You can see this at a glance from this nice trilingual cheat sheet:
One could say that we can almost replicate the semantic of a C++ program, but writing in Julia. For example we can remove bounds checks in arrays or remove hidden memory allocations.
But the goal of a language for numerical computing is capturing the mathematical formulas using high level constructs closer to the original representation while compiling to efficient code.
Domain scientists want to play with the math and the formulas, not doing common subexpression elimination in their programs. Just curious to see how it evolves
- not a single post has anything inside here https://flow.byu.edu/posts/
Prelude of what's to come in the self-reinforcing cycle of machines talking to machines and drowning everything else.