4 ms·
Personally, every time I try to delve into Julia, I am reminded by the massive ecosystem that exists around Python. Speed takes a backseat, instead enormous eco
by fermienrico 6y ago
Personally, every time I try to delve into Julia, I am reminded by the massive ecosystem that exists around Python. Speed takes a backseat, instead enormous ecosystem makes Python indispensable and Julia a fringe language despite of its growing popularity.
Say you have a database, and need pull data, do some heavy math computation, then present this data in a pdf report with a QR code, pulling images and processing them in the report.
In Python, it is without bells and whistles: psycopg2, numpy/pandas, reportlab and may be use PIL. Wanna stick this on S3? boto3.
In Julia, it's all very fragmented. LibPQ is immature, DataFrames.jl is nice, ??? (what pdf conversion tool?), images.jl (300 stars), qr code generator?
The problem is not the speed with most tasks. The problem is availability of tools. I am sure that will come with it, but why not just use Python at that point? I am not a fan of Julia and that's nothing to do with its features. It has immature ecosystem, with terrible IDE support (Atom/Juno raises my blood pressure), debugging is painful if non existent, error messages are all over the place, everything falls apart as the immature dependencies change and error messages don't help at all.
Julia is fun in your jupyter notebook. If you try to build apps in production environment in my team, expect push back if not straight up refusal to initiate such a project in the first place.
Syntax was amazing around 0.4v and it went downhill from there.
I am sure someone is going to nitpick my comment and provide a way to do it in Julia, but that's missing the point. The point is Python is miles ahead of what it does. In production systems, robustness + maturity matters.
Also, don't forget ancillary aspects of a programming language. When we put a python repo together, I am rewarded by an endless supply of developers that I can hire and immediately work on it. With Julia, the supply of engineers is limited and it is such a pain to train people to use it, learn its quirks, spend nights and weekends fighting with it and the business doesn't give a fuck about it.
- EricForgy 6y agoI am not going to try to change your mind, but I'll just point out that one of the highlights, in my mind, of the recent JuliaCon was the merging of the Juno and VS Code teams. All IDE development for these teams going forward will be focused VS Code. Have a look at the VS Code presentations available on YouTube. It is pretty amazing to see where they are now and the future is even brighter.
- bananaquant 6y agoDo they have a usable debugger now? My last experience was 2 years ago, and launching it even on some trivial code took over 10 seconds.
- eigenspace 6y agoThe Debugger has come a long way, here's it running in 1.5.0 on my machine: julia> @time using Debugger 0.115907 seconds (202.08 k allocations: 13.215 MiB) julia> @time @run sin(1) 1.438537 seconds (1.85 M allocations: 90.376 MiB, 0.80% gc time) 0.8414709848078965 julia> @time @run sin(1) 0.003900 seconds (23.39 k allocations: 1.057 MiB) 0.8414709848078965
- bananaquant 6y agoWhoa. This looks really promising now.
- pdeffebach 6y agoSure, Julia doesn't have an industry-tested QR code maker (though if you google you will find some options). But it's worth noting that CSV.jl is a file that was entirely re-written in the past 6 months and has probably the fastest performance of any CSV parser currently used. It was written using pure julia and takes advantage of tons of Base-julia features as well as multi-purpose packages. Julia's design makes it incredible easy to write the kinds of tools you want in a flexible way.
- LolWolf 6y agoThat's fine; I don't think this is the general point. If you're trying to run a production system, need incredible robustness guarantees that somehow Julia cannot meet (which would be surprising to me), and require some specific things that Julia doesn't have, then sure, use Python. I'm just saying that, if you're a numerical scientist or engineer, go take a look at Julia and for most of these people it'll do everything and more than what they need. There will always be the pains of switching from one language/ecosystem to another and I'm not saying the tradeoff is worth it for everyone, but, if you can get development and performance speed up for a small tradeoff in learning curve, then I think it's worth at least trying it out, no? EDIT: The parent post was edited somewhat (which means this comment and some siblings appear slightly out of place) and I heavily disagree with a lot of the issues raised. I will keep the current comment as is for the sake of completeness, but I think the parent's approach to criticizing Julia is somewhat disappointing.
- tjwhitaker 6y agoI mean yea you're not wrong. Python is a much more general language and has a large ecosystem. But also, not everyone is an enterprise programmer and values the same things you do. This kind of complaint comes up every time there's a new julia release and it's kind of akin to posting in a C++ thread and asking why anyone uses it because the python ecosystem is so much better for your use case.
- xiaodai 6y agoWhen python was an upstart. Same thing was said about perl and c++
- FridgeSeal 6y agoAll of these complaints can be levelled at literally any programming language that isn't as entrenched as its competition, and indeed would have been levelled at Python when it was young as well. > In Julia, it's all very fragmented. LibPQ is immature, DataFrames.jl is nice, ??? (what pdf conversion tool?), images.jl (300 stars), qr code generator? A quick google search yielded this [0], [1] which seems like they'd do the job.. Personally I think judging the quality of the ecosystem on the number of stars a package has is short-sighted and gives only a skin-deep view. > error messages are all over the place, everything falls apart as the immature dependencies change and error messages don't help at all. When was the last time you used Julia? Because I've found the error messages personally far superior to Pythons errors, even in deep stack traces I find it easy to pinpoint the exact bit of functionality that has failed, why and understand what to do to fix it. > I am sure someone is going to nitpick my comment and provide a way to do it in Julia, but that's missing the point. The point is Python is miles ahead of what it does. In production systems, robustness + maturity matters. Python is mature _for now_, but this gap is gradually closing, and I've come across more than my fair-share of python packages that are abandoned, heavily reliant on magic, poorly written etc. The size of the ecosystem is not necessarily representative of it's value or worth. > When we put a python repo together, I am rewarded by an endless supply of developers that I can hire and immediately work on it This feels to me like the equivalent of "I'm looking for _React_ JS devs" - the knowledge and competency you have as a programmer should be able to be applied to new frameworks and languages, and I'd personally gladly hire someone who says "I'll learn the languages and tools I need to in order to apply my skills" instead of someone who says "oh it's not language + framework I won't/can't apply my skills", because the former is almost certainly going to be a much better programmer. [0] https://stackoverflow.com/questions/53074626/how-to-generate-pdf-documents-using-julia https://stackoverflow.com/questions/53074626/how-to-generate... [1] https://github.com/jverzani/Mustache.jl https://github.com/jverzani/Mustache.jl
- marmaduke 6y agoI don’t think the comment merited point by point refutation. One can just point to language age and past popularity to account for ecosystem differences. One area Julia could pull ahead in is