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.
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.
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.
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. :-)
I wish companies were under more financial pressure to actually track and mitigate this. (hint hint, carbon taxes)
Cloud spot pricing is I think one example where things that can be batched and deferred will be cheap even in a energy-decline future.
This is assuming we don’t sink so far as to lose our productive capacity for energy infrastructure altogether. Depends how bull/bear you are about the whole thing I suppose. In that scenario, there’s also gonna be no market to sell whatever you’re coding to.
In overall total effort needed to make something robust, something like rust will beat something like ruby, because the dynamic language-ists compensate via a larger test suite.
Funnily enough someone said that exact same thing 10 years ago in that thread:
>* Functional programming / dynamic languages will go out of fashion. People still using them will be judged as incompetent programmers by the people who moved on to the new fashionable programming paradigm(s). At the same time, huge corporations will embrace functional programming / dynamic languages and third world universities will start focusing on them in their courses.
Wrong then wrong now.
While pithy, that's not actually an interesting rebuttal.
You should elaborate, especially since "huge corporations", namely Apple, Google, and Mozilla (I guess?), are the ones pushing Swift, Go, and Rust, respectively.
So what happens is that people gravitate towards languages which are pleasant enough to work on to try new ideas in.
The progressing of bash -> awk -> perl -> python happened for a reason. Hell we're even seeing people use lisp like languages unironically for the first time in decades.
More powerful languages enable talented developers to be more productive individually, but it's hard to teach all the other developers about the new and interesting abstractions that the powerful languages enable, and it's impossible to hire for them directly. This limits velocity.
And it's not just huge corporations, it's any company which is trying to scale from 10 to 100 developers; where you're hiring continuously, where there are too many other developers to efficiently rely on ambient learning.
JS really shows what's possible in this field with some benchmarks even outperforming c++. This space of expressive yet fast languages is a gap that remains to be filled and will probably be by 2030, sadly it's a bit of a chicken-and-egg situation because you don't only need a good syntax to become popular, also a healthy ecosystem around it. What we will see is probably not any new language but rather that existing languages from both sides of the spectrum converge more towards the middle ground.
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.
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.
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.
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.
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.
Hence the training for "what" or for "who" not being immediately parseable.
Until @ryacko said "Whom do you think I'm talking about?", I wasn't sure either.
I still think asking "what or who?" with no other elaboration is really confusing. It's such a vague question that you have to guess how to answer, and it's super easy to answer it in a way that doesn't satisfy what the asker actually meant to ask.
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.
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.
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)
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.
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.
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.
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.
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.650That isn't something which can be checked, just stuff someone said.
If I look at a composite benchmark like debian's and don't see one leading by an order of magnitude, I file that away as "probably about the same speed, depends on your use case"
and golang (Go)