5 ms·
Was there a write-up of what the goals of the rewrite were, and why they switched the language and made the new engineering decisions?
by nwah1 3y ago
Was there a write-up of what the goals of the rewrite were, and why they switched the language and made the new engineering decisions?
- bitwize 3y agoI don't think any language sparks joy the way Rust does -- not even Lisp and certainly not C# or F#. Rust gives the compiler lower memory overhead and attracts a broad base of developers.
- lionkor 3y agoWhichever language one prefers sparks joy like Rust does for you
- miohtama 3y agoWhile this is true on individual level, Rust has been ranked most liked programming language in many surveys and sparks joy to most of people more than other languages https://survey.stackoverflow.co/2023/#section-admired-and-desired-programming-scripting-and-markup-languages https://survey.stackoverflow.co/2023/#section-admired-and-de...
- antonvs 3y agoWhat's missing from a survey like that is correlation with prior experience and education. Python was a previous winner on those kind of surveys, and it's a terrible language in many ways.
- IshKebab 3y agoYeah someone needs to do a ranked preference test. Rank all the languages you are familiar with...
- tmtvl 3y agoFunnily enough I'm not very familiar with languages I don't like, probably because I elect not to use them.
- antonvs 3y agoLimiting to relatively well-known general-purpose languages I've used in commercial system development: Haskell, Scheme, OCaml, SML, Rust, Typescript, Smalltalk, Java, Scala, Common Lisp, Kotlin, C, C++, C#, Javascript, Forth, Delphi/Object Pascal, Turbo Pascal, Python, BASIC (various flavors), Fortran. How about you?
- nequo 3y agoWhat was your commercial application for SML?
- antonvs 3y agoWe developed the definitional model of a financial instrument modeling and simulation system in SML. The system included a DSL for specifying instrument models, so part of what the SML implementation did was act as a denotational semantics for that language. The intent was never to deploy it using SML, it was to flesh out and formalize the design, and act as a specification for development of the full system. The system was designed to run on a cluster long before the Kubernetes days, and so had to deal with many of the distribution, scaling, and concurrency issues itself, in addition to its business logic. One of the experiences I had while working on that system was that at the time, I was reading "Monad Transformers and Modular Interpreters" - a seminal paper by Liang, Hudak, and Jones - and I thought I could probably quite easily implement the paper's approach using ML parameterized modules, instead of the Haskell typeclasses used in the paper. I tried it, and was soon disabused of that notion. Partly as a result of that, we wrote the distributed simulation engine for a later version of the system in Haskell.
- IshKebab 3y agoI'd probably go Rust, Typescript, C++, Go, Java, OCaml, Python, Javascript, Matlab, PHP, SystemVerilog, CMake, C, Bash Ok I will make this site. :)
- miohtama 3y agoWhere you are failing here is likely empathy, or understanding how other people work or think. This might be because lack of experience in programming, or just because of reflexive negativity. Even if you think Python is a terrible language, for many people it’s the best language for the job. This also includes must PhDs, because Python is the most used languge in science and academia. When doing critical thinking, please set asides your own biases and try to understand that your own viewpoint is not always the correct one.
- brokenkebaby 3y agoThis answer looks unjustifiably overheated for a statement that says X is "terrible in many ways". It can be the best tool for someone, and still be terrible in many ways, no contradiction here.
- antonvs 3y agoI understand why people use Python. However, I'm just assessing it from a technical perspective, not an emotional one.
- patrec 3y agoI think you are a bit detached from reality if you think controlling for experience and education would massively change the picture for python, which evidently enjoys above average popularity with anyone from junior devs to elite programmers (such as Google's Director of Research, geohot etc.).
- antonvs 3y agoThe issue is what they're educated in. It's not generally programming languages.
- patrec 3y agoWhat makes you think so? If you've got a background in programming languages, maybe you'll roll your eyes at Guido not getting reduce or tail recursion, or CPython's unsophisticated runtime and under-specified/messy semantics, or whatever, but I'm kind of struggling to see why you'd be particularly down on python compared to other languages that (in the average case) have non-negative utility for software development.
- antonvs 3y agoI mentioned Python simply because it was ranked highly in some of these kinds of surveys, even though it has quite a few well-known problems as a language. It demonstrates that ranking in such surveys is not necessarily correlated with the capabilities or fitness for purpose of the language. In some ways, Python is in fact worse than many of the mainstream alternatives - for example, it's not unusual for people to look to rewrite Python systems in some other language because of performance issues at scale. Same (if not worse) goes for Ruby.
- brokenkebaby 3y agoI cannot help but notice that Perl used to be very popular in early web development, sys administration, and in a a row of scientific fields. And lots of people were enthusiastic about it (as witnessed by CPAN content). Then it was declared unsuitable for teaching (many ways to do everything), and the next gen who started with Python usually claim that Perl is bad, while among older generation who matured cooking Perl scripts you still can hear that Python is nothing more than a less flexible, less expressive Perl's bastard child. So yes, I think, education (and the first usable programming language learned in particular) influence popularity very much.
- Dudester230602 3y agoWhile I admire it I most certainly do not desire it - like Haskell. I need to ship things, not figure out some borrow of a monad.
- bitwize 3y agoLanguages with built-in checks for correctness, like type checking and borrow checking, help you ship software faster in the long run, cheaper, and with fewer bugs.
- antonvs 3y ago> I don't think any language sparks joy... Let the Marie Kondofication of programming languages begin. But one of Kondo's points is that "Only you can know what kind of environment makes you happy," i.e. there are no universals.
- ohgodplsno 3y agoBegin? The entire reason we have people trying to cram JavaScript everywhere is that, for some reason, it sparks joy for them. Hell, even going back, K&R vs Allman brace style was about what sparked joy. Color themes? Spark joy. At this point, I am convinced that the way to get a software developer to do anything is to just play on that need for joy.
- rmwaite 3y agoI agree with this. I use Fantasque Sans Mono for the same reason - k with a loop makes me feel warm and fuzzy for some reason.
- insanitybit 3y ago> The entire reason we have people trying to cram JavaScript everywhere is that, for some reason, it sparks joy for them. Wait really? I feel like it's just "you literally have no choice for frontend" and the various side effects of that.
- ohgodplsno 3y agoThat would explain frontend, yes. But that would not explain NodeJS, JavaScript for embedded microcontrollers, and so many more. Some might say it's Stockholm syndrome, but then there's the Python developers doing the same thing everywhere. And the LISP enthusiasts. So unless there's a lot of Stockholm syndrome (although it's not out of the question when it comes to LISP), a lot of it is easily explained by "me like language here, me go put language elsewhere to keep language"
- sudodude 3y ago
- tmtvl 3y agoYMMV, of course, I have a hard enough time managing with one style of brackets, Rust has, what, five (round brackets, square brackets, curlies, angles, and vertical bars)? Never mind the fact that some operators are prefix: do_something(a_thing); Others are infix: x = a + b * c; And yet others are postfix: foo.frobnicate()?; My sole braincell can't handle all that complexity, which is why I'll just stick with simple old Lisp.
- HumblyTossed 3y agoI actually don't like Rust. It just doesn't fit me. To each their own, I suppose.