4 ms·
Not being 100% interoperable with python make Julia doomed. Library ecosystems have a human workforce value of billions of dollars, available for free. Any mo
by The_rationalist 7y ago
Not being 100% interoperable with python make Julia doomed.
Library ecosystems have a human workforce value of billions of dollars, available for free.
Any modern language that want to go mainstream must offer transparent and complete interoperability with an existing ecosystem.
TypeScript -> js
Kotlin -> jvm
C++ -> C
Elixir -> Erlang
Hack -> php
Crystal -> ruby
As we can see there are still Big ecosystems lacking a new modern language™
The python ecosystem
The C# (CLR) ecosystem
It could be said that's mainly because those languages are already mostly "modern"
There are also dying big ecosystem and there would be economic value to make their old libraries accessible.
Fortran
Pascal
Perl
Etc
- Tomte 7y ago> As we can see there are still Big ecosystems lacking a new modern language™ [...] The C# (CLR) ecosystem F#, obviously.
- coldtea 7y agoNot to mention C# is as modern as it gets...
- BubRoss 7y agoHow is C# modern? It is extremely verbose and rooted in Java style 'OO' with lots of memory hopping.
- SigmundA 7y agoEvery iteration of C# has made it less verbose and adds more modern concepts [1]. What do you mean by memory hopping, reference types? C# has had value types since the beginning unlike Java. 1. https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-8 https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csh...
- coldtea 7y agoModern != less verbose
- StefanKarpinski 7y agoIs it really? Class-based single dispatch OO with strictly explicit static typing—no gradual or optional or even Hindley-Milner type inference—is about as 90s a language design as there is. It’s like the “Friends” of PL designs. Which is to say, very popular and not bad, but certainly not modern or cutting edge.
- SigmundA 7y agoC# supports multi-dispatch and gradual typing using the dynamic keyword since 4.0. It also does some type inference using var, but not full HM.
- coldtea 7y agoI didn't say "cutting edge" though, I said modern. Modern is not some "PL-community favorite with small following" a la Haskell, it's what programmers in the trenches are using. The same way a modern car is (pick a popular current model) and not some limited edition car with limited sales. C# "keeps up with the Joneses", brings in ideas from functional programming (bringing in F# features incrementally), etc. LINQ, pattern matching, dynamic, value types, tuples, destructuring, async/await, null-coalescing operators/assignment, streams, and much more... Not only is up there with any popular language in the same domain (Swift, Kotlin, etc), and way ahead of Java, but compared to something like Go that gets people excited this is space technology. (Plus is not like multiple dispatch is a new development, or gradual/optional typing is the "new" thing - we had those things for decades, and I don't see them catching on except the latter where necessary - e.g. adding gradual typing in JS/Python/etc variants like TS, where they can't have strict static typing for compatibility/historical reasons. The only language with gradual typing I remember in recent times was not very cutting-edge itself, Dart, and didn't manage to go anywhere).
- socialdemocrat 7y agoYou can use Python, C and Fortran code from Julia. More importantly package development is much faster in Julia than in Python. Which means the speed of which packages get added to Julia is much faster than Python. And here is the kicker: Packages is Julia are far more interoperable than in any other eco system I have seen. Than means 10 packages in Julia can quickly do more than 50 packages in other language. Say somebody makes a GPU processing package and somebody else makes a Machine learning package. They don't know about it each other. Yet with Julia we frequently see that these guy can use each others package. The ML package can with little effort run on a GPU by including a GPU package even if it was never designed for it. Julia just moves way faster than the competition and that is why Julia is NOT doomed.
- coldtea 7y ago>You can use Python, C and Fortran code from Julia. More importantly package development is much faster in Julia than in Python. Which means the speed of which packages get added to Julia is much faster than Python. That's because Python already has tons, while Julia lacks tons. Are the new ones added to Julia as good or better though? >That means 10 packages in Julia can quickly do more than 50 packages in other language. Say somebody makes a GPU processing package and somebody else makes a Machine learning package. They don't know about it each other. Yet with Julia we frequently see that these guy can use each others package. The ML package can with little effort run on a GPU by including a GPU package even if it was never designed for it. This sounds like magic bullet / handwaving. Perhaps Julia's multiple dispatch helps here (?), but why would the above be the case and wouldn't be achievable in other existing languages as is?
- StefanKarpinski 7y ago> Perhaps Julia's multiple dispatch helps here (?), but why would the above be the case and wouldn't be achievable in other existing languages as is? Yes, ubiquitous, zero-overhead multiple dispatch is the reason, as explained in depth here: https://youtu.be/kc9HwsxE1OY https://youtu.be/kc9HwsxE1OY
- 7y ago
- nnq 7y agoThere are only 2 languages with really good Python interop (you could call it "as close as possible to 100%" since there is no such thing as "100% interop" except across languages sharing same VM like on the JVM Java & Clojure & Kotlin...). One of them is Julia! - https://github.com/JuliaPy/PyCall.jl https://github.com/JuliaPy/PyCall.jl . The other is Swift - https://github.com/tensorflow/swift/blob/master/docs/PythonInteroperability.md https://github.com/tensorflow/swift/blob/master/docs/PythonI... .
- oxinabox 7y agoAnd pretty sure the Swift team did it after seeing how well it went for julia.