3 ms·
And I have code still in production written in the "Perl Object Environment", one of several async frameworks for Perl, written before Node even existed. Also b
by jerf 3y ago
And I have code still in production written in the "Perl Object Environment", one of several async frameworks for Perl, written before Node even existed. Also before Node existed, I had written code in the Twisted framework for Python.
Node did not invent async by any means and I know it in the strongest possible sense, having used it before Node existed. But those libraries, in use for over a decade, did not make everyone using them exclaim in joy "Yes! This is what all concurrent programming should be!" A few, sure, but far from everyone. They're kind of a bear, even after years of polish.
Not only did those libraries already know about callback hell, they had already implemented some of the (partial) solutions to it. Watching the Node propaganda was almost surreal to me because I could and more-or-less did predict how it would go, years in advance, as it recreated the experience already had by other languages. Experience that did not leave the impression that this was the paradigm for the future. These libraries typically languished within their ecosystems, kept around only because they were the only practical way to, say, keep your Python but also get concurrency. The fact they were the only way to proceed kept them alive, but they never really flourished despite being right there, readily available.
Node is the reason people are running around today claiming async is the bee's knees. Node is the reason why people come on to /r/golang asking how Go can possibly be used for network programming when it lacks the Magic of Async. Contradicting the Node propaganda is why people are nervous about saying "uhmm, hey, I'm using async in a big program and it's not exactly sunshine and rainbows". Prior to Node that would have just been the common understanding; these libraries were often viewed as powerful within their target language because there was no other way to do what they did, but tricky and complex to work with. It was well understood they easily degraded into a mess and were often difficult to onboard a new developer because of the difficulty of following the control flow.
All I'm really saying here is, the community opinion was correct before Node and we should just go back to that opinion, founded on decades of experience.
- surajrmal 3y agoAsync await isn't useful because it's more ergonomic. It's useful because it's low overhead. If you don't care about that then rust might not be the right language for you the same way a language with a GC might be better suited for most folks. For my domain, any other choice would have made rust untenable. Rust has made all the right choices that make it an excellent choice for code I was otherwise forced to use c or c++ for. Not every language must bend its ways for every possible user, and most folks get upset when that inevitable happens because it dilutes the qualities that made the language useful for the original set of folks it was primarily useful for. Being popular unfortunately comes with the curse of not pleasing everyone.
- pdimitar 3y agoIMO almost nobody demands a language to "bend its way" so as to not "make folks upset", it's just that the way Rust went about async/await is not ergonomic at all. It's also pretty dark, as in it's hard to surface good information.
- seanhunter 3y agoA bear indeed. I too used twisted circa about 2001 or so.
- coryrc 3y agoPlease keep preaching. Every time I've investigated async I've just asked "why is it so unnecessarily complicated?", but I don't have enough background to know if I'm just missing something.
- jacquesm 3y agoExactly. I wonder how many people that are riding the async bandwagon have any actual experience building large systems that operate under some kind of reliability guarantee. It's a great way to pull a whole pile of unnecessary complexity into a codebase, lots of fun debugging hairy little problems and to solve interesting bugs with free footguns provided for all takers. It's a kludge at best and it's quite annoying to see a first class project such as Rust be distracted like this.
- pjmlp 3y agoAdd Tcl events to it as well, with famous rants like this one, "Why Threads Are A Bad Idea" https://www.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/ousterhout-threads.pdf https://www.cc.gatech.edu/classes/AY2010/cs4210_fall/papers/...