3 ms·
It's kind of complicated to consider creating new programming languages as reinventing the wheel. Every new language will be created with a smaller ecosystem so
by ddragon 6y ago
It's kind of complicated to consider creating new programming languages as reinventing the wheel. Every new language will be created with a smaller ecosystem so someone will always have to rewrite X that some older language already has. But they are also created with the knowledge of what worked well and what didn't in those previous languages, so it's not reinventing the wheel, but inventing a wheel that (attempts to) corrects the fundamental mistakes/compromises that were inevitable with the knowledge and tools of that time.
Julia was created with 20 years of extra knowledge from Python, Matlab, R and other languages, and from a domain that basically didn't exist when Python was designed, resulting in a set of features that cannot be added to Python at this point. It's a different wheel, which can move faster so even if the cars with the old wheel are way ahead, it can still eventually catch up (creating libraries in Julia from scratch is easier and faster so it can compete even 20 years late and with much lower support). Should we stop trying to create improved languages, stay with the languages we have now forever and simply create increasingly "clever" ways to compensate any flaw (that can't be directly fixed without breaking all that legacy)?
Plus Julia has web frameworks like Genie, but it's true that they are nowhere near as mature (especially compared to a project that is considerably older than Julia itself).
- brylie 6y ago> creating libraries in Julia from scratch is easier and faster Easier than what? In what ways is it faster?
- adamnemecek 6y agoEasier and faster than creating them in python.
- ddragon 6y agoIt's easier and faster because it's a more powerful language. You can achieve fortran/C speeds without leaving the language (for example Tullio.jl and LoopVectorization.jl competing with super optimized BLAS methods). Multiple Dispatch means libraries can compose, for example Julia's main Machine Learning library doesn't even need to know anything about GPUs to run all of it's methods on it (said library is also only a few thousands of lines of high level Julia, and the CUDA library is also 100% Julia). Even the state of the art implementation of Tensorflow interface that couldn't work on Python (Swift for Tensorflow, a fork of the swift compiler) had a competitor implemented as pure Julia libraries (Zygote.jl, a source to source differentiation library) thanks to it's metaprogamming capabilities. I did mention from scratch because of course, if your library requires another library that does not exist (and you don't want to use the FFI), it won't be faster or easier (though I did mention in the previous comment that it's something all new languages will have to go through, until it's not a problem anymore).