7 ms·
> - As Moore's Law marches on, dynamic languages that are even slower than Ruby are likely to catch on. They may be to Ruby what Ruby is to Java, trading even m
by TulliusCicero 7y ago
> - As Moore's Law marches on, dynamic languages that are even slower than Ruby are likely to catch on. They may be to Ruby what Ruby is to Java, trading even more programmer time for CPU time.
Interesting how plausible this one is, yet turned out to be terribly wrong: the newer hyped languages that got some uptake were largely compiled ones like Swift, Rust, Kotlin, and Dart.
- mminer237 7y agoI mean, JavaScript and Python have definitely become much more popular for many more things than they were in 2010. I doubt Swift replaced much besides other compiled languages, and Kotlin just compiles to Java anyway. Dart's VM idea was dropped so its small usage is largely compiling to JS still. I would say that the overall idea of performance being traded for programmer time is definitely happening despite the emergence of Rust.
- CoolGuySteve 7y agoIn terms of language design, it seems like swift and julia are the most forward looking. I personally don't think swift will ever escape the Mac ecosystem, just like Objective-C never did, but something with the same DNA will. In the same way that Objective-C and Ruby both implement the philosophy of Smalltalk, I think that philosophy has yet to be fleshed out in a simple syntax that is natively jit'ed/compiled. The same goes for julia as an answer to R/pandas.
- heavyset_go 7y ago> Dart's VM idea was dropped so its small usage is largely compiling to JS still. Are you sure about this? I was under the impression that today's Flutter development is highly dependent on the niceties the Dart VM provides, and newer Dart releases improved upon them.
- deleted 7y ago[deleted]
- jlarocco 7y ago> I would say that the overall idea of performance being traded for programmer time is definitely happening despite the emergence of Rust. In some sense Rust is in that same vain - reducing certain errors and the need for tools like Coverity, which in turn makes programmers more efficient.
- rsynnott 7y agoThose are both typically faster than Ruby, tho. Ruby (especially pre-1.9) probably does represent the mainstream peak for tolerance of slowness.
- druddha 7y agoJS and Python are not to Ruby what Ruby is to Java, though.
- scarface74 7y agoRust and Dart hasn’t seen that much “uptake” by the broader market, it’s hyped by geeks but that’s about it. Swift is becoming popular because if you want to develop for iOS, you don’t have a choice. Kotlin is getting some uptake.
- swsieber 7y agoRust has seen lots of quiet uptake. What you don't see is hiring for people for Rust because most organizations don't experience a whole-sale shift to Rust, and you just retrain people on the inside. I'd wager there are lots of people like me - writing small tools at work in Rust, but the employer would never hire for Rust. I think we'll see broader market adoption in the next 2-5yrs though, in terms of people actually hiring Rust developers. There's still a little maturing to do in a couple areas to clean up some papercuts. Disclaimer: I really like Rust am a little biased.
- scarface74 7y agoAny citations?
- swsieber 7y agoSo, for the uptake, you can see a large list of companies here: https://www.rust-lang.org/production/users https://www.rust-lang.org/production/users The not hiring but using bit is based on not seeing Rust jobs despite companies actively using Rust, and many anecdotes of "I wasn't hired for rust, but we use it" over in reddit on r/rust when people ask how to get a rust job.
- CoolGuySteve 7y agoOne thing that always really bugged me about the "the language will figure it out" philosophy is the complete disregard towards carbon footprint. Like yeah, you can make an interpreted dynamic language that's pretty neat, but you can also make something like go, swift, or Julia that jits and also captures 90% of that ease of use while significantly reducing your hosting costs/energy consumption. Going forward I think static compiler inference will be the future of language design. Either for safety like in rust or for convenience like in swift. And we can already see pitfalls in the interpreted world of python where the wrong implementation, like using a loop instead of numpy, can lead to devastating performance impacts. Looking forward, something like this seems as outdated as having to manage your 640k of executable space in DOS: an unreasonable design constraint caused by the legacy implications of the day. My prediction is 10 years from now we'll look at interpreters and language VMs as relics from a simpler time when clockrates were always increasing and energy was cheap.
- guidoism 7y agoI'm actually pretty amazed at what the Javascript VM people have done in the past decade. It's way more than I ever expected. As far as the carbon footprint, well, yeah, it depends. At Google I remember a friend talking about how he cringed whenever he added more code to the pipeline that ingests the entire internet. He said that he wondered how much extra carbon was release into the atmosphere just because of his stupid code. As for numpy, we are seeing that loops are stupid and Iverson and APL were right. :-)
- bjz_ 7y ago> At Google I remember a friend talking about how he cringed whenever he added more code to the pipeline that ingests the entire internet. He said that he wondered how much extra carbon was release into the atmosphere just because of his stupid code. I wish companies were under more financial pressure to actually track and mitigate this. (hint hint, carbon taxes)
- SamReidHughes 7y ago
- jtolmar 7y agoIt's also been quite a decade of growth for old stodgy languages. In 2010, it seemed like C++, Java, and Javascript were never going to change, but they've all significantly cleaned up their acts. I think the prediction still had a kernel of truth to it though - every edge that chip manufacturers and JIT developers can give us has been burned away on slower and slower client-side rendering frameworks.
- geerlingguy 7y agoAnd PHP. PVP 5.3 was the newest version in 2010 and as the years wore on many thought HipHop by Facebook would start to take over for serious PHP applications. PHP 7 completely changed the course of the PHP community and took the air out of HHVM’s sails.
- TheKarateKid 7y agoDid PHP 7 introduce optimizations similar to HipHop? I was always curious what happened to HipHop. Didn’t it become a part of Facebook’s custom flavor of PHP? (Forgot it’s name)
- scrollaway 7y agoHack, right? I'm curious as well.
- Joeri 7y agoHipHop was a cross-compiler which facebook abandoned for HHVM, a rewrite of the PHP engine with faster internals. It always had compatibility issues, but the improved performance made it interesting (afaik nobody outside facebook really got that much into Hack the language). PHP7 was a rewrite of the internal data structures which put it on close enough performance footing. Because HHVM was never a drop-in replacement for PHP and moved further away over time the community ended up sticking with PHP7 and now pretty much only facebook uses HHVM, with the big players that moved to HHVM all transitioning back to PHP7.
- zargon 7y agoIn my opinion, Electron is the fulfillment of that prediction.
- api 7y agoJavaScript is quite a bit faster than Ruby in most cases.
- zargon 7y agoElectron isn’t just JavaScript, else I would have said JavaScript. Electron is front and center in the movement to shorten development time by consuming more PC resources at runtime. I feel that’s the spirit of the prediction.
- ryacko 7y agoI think Electron's advantage is to shorten training time, not development time.
- twobat 7y agoTraining for what or for who?
- ryacko 7y agoWho? Whom do you think I'm talking about?
- scandox 7y agoWell I as an innocent bystander have no idea what you mean either, unfortunately.
- Dylan16807 7y agoI'm also an innocent bystander! ryacko is perfectly clearly stating that Electron reduces the amount of training that developers need. This is different from making them develop faster. It just makes them more replaceable. I have no idea how to parse twobat's question. The "or" is especially confusing. I'm not surprised that ryacko is baffled by it.
- Dylan16807 7y agoBecause it's not Moore's Law that matters here, but rather the subset that is the performance of single cores. And that subset stalled out pretty badly. We're adding more and more cores, but more cores don't help you write a program in easy mode. Easy mode doesn't multithread.
- danso 7y agoI was thinking that exact same thing. Rails was hitting its peak in 2010, and the idea that programmer time is more valuable than CPU time suggested dynamic languages were the future. I mean, that’s not entirely wrong — Besides JS, Python is arguably the most dominant language across all domains. Python is also faster than Ruby, though, and 3.x added static-like features to the language. It doesn’t seem like there’s much appetite for languages any slower than what we have now.
- mnutt 7y agoI don’t think one can say that python is faster than ruby: https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/yarv-python3.html https://benchmarksgame-team.pages.debian.net/benchmarksgame/... I think the perception is there because of python’s scientific and ML libraries that have a lot of c bindings, perhaps? Both are drastically faster than they were a decade ago, so 2010-era python or ruby are still the high-water mark.
- igouy 7y agoafaict until the 25 Dec 2019 ruby 2.7.0 release you probably could "say that python is faster than ruby". fwiw ruby 2.6.3p62 ruby 2.7.0p0 binarytrees-5 220.557 elapsed secs binarytrees-5 124.421 binarytrees-2 178.751 binarytrees-2 149.458 binarytrees-3 176.672 binarytrees-3 150.645 binarytrees-4 136.930 binarytrees-4 113.516 binarytrees-1 176.208 binarytrees-1 149.078 fannkuchredux-1 1702.734 fannkuchredux-1 1738.016 fannkuchredux-2 2129.404 fannkuchredux-2 1153.396 fasta-3 132.449 fasta-3 81.565 fasta-6 105.649 fasta-6 54.305 fasta-2 236.321 fasta-2 180.647 fasta-5 181.954 fasta-5 146.962 fasta-4 178.753 fasta-4 144.130 knucleotide-7 702.380 knucleotide-7 361.174 knucleotide-2 412.034 knucleotide-2 365.819 knucleotide-1 678.888 knucleotide-1 378.368 knucleotide-3 426.748 knucleotide-3 385.934 mandelbrot-4 886.246 mandelbrot-4 1202.783 mandelbrot-2 1770.692 mandelbrot-2 1329.560 mandelbrot-3 1689.111 mandelbrot-3 2090.329 mandelbrot-5 1789.859 mandelbrot-5 2119.157 nbody-2 423.428 nbody-2 376.758 pidigits-1 60.476 pidigits-1 30.232 pidigits-5 6.446 pidigits-5, 4.790 pidigits-2 18.670 pidigits-2 11.841 regexredux-3 17.774 regexredux-3 9.431 regexredux-9 71.050 regexredux-9 40.018 regexredux-2 55.729 regexredux-2 33.070 revcomp-2 66.741 revcomp-2 32.203 revcomp-5 44.957 revcomp-5 21.445 revcomp-3 89.536 revcomp-3 39.507 revcomp-4 107.196 revcomp-4 43.994 spectralnorm-5 1059.201 spectralnorm-5 587.204 spectralnorm-1 318.088 spectralnorm-1 291.167 spectralnorm-4 271.367 spectralnorm-4 209.650
- maerF0x0 7y ago> Swift, Rust, Kotlin, and Dart and golang (Go)