🙏🏽
I write software (C++) for a living.
#Emacs #Prolog #Erlang #SelfHosted
anti-witchhunt, see https://stallmansupport.org/
I get that it is an evolution, but building on top of SBCL seems like it would have made more sense.
That is great. But isn’t this more than the scientific method? It is rigor, and the capacity to look at all the factors in reality instead of cherry-picking one for a laboratory experiment.
I do agree we all could do with more rigor and also avoid cherry-picking factors to study, in any discipline.
there’s already mountains of evidence of static typing making code significantly less buggy on average
What is this mountain of evidence? The only evidence I remember about bugginess of code across languages is that bug count correlates closely to lines of code no matter the language.
That sounds like a laundry list of tech thrown together for effect. It is not even relevant. You are talking empirically-proven tech as a counterpoint to laboratory-only experiments, aren’t you?
I don’t know about the Wright brothers, but the human-powered flight bounty was apparently won using the strategy of fast iteration to empirically identify the solution. GPS too would have been built on real-world feedback iterations.
Computing hardware is a special case, where they replicate the laboratory into a billion-dollar structure and call it … ‘fab’ ;-)
The scientific method shorn of contact with reality, like with most research nowadays and especially in medicine, is just for show.
I submit that laboratory-experiment-based understanding being valid in real-world use, in any domain, is itself a belief rather than knowledge. And in such an unstructured domain as software development, it is even less likely.
Thanks for posting this! That blogsite is always very productive reading.
I don’t get the obsession with the scientific method. Movie quote: “we don’t live in the courtroom, your Honor; do we?”. You can eliminate outliers like experts and students, hobby projects and lives-at-stake projects; everything you are left with is a good reflection of the industry. Example: any study with Java versus Python has to count.
I have no real experience with dynamic languages, so I can understand where the blog responses about dynamic languages having extra bugs come from. But they miss the important point about dynamic languages allowing for non-trivial solutions in fewer lines of code - matching that would basically need <AnyType> to be implemented in the static language, with the accompanying code bloat, under-implementation, bugginess, etc.
I think the reference to 0install’s porting is real experience of the difference between Python and OCaml. Caveat: author Thomas Leonard is a seriously expert practitioner.
Apparently, this should be possible now (and, for apps, the result would be as “usable” as Electron) thanks to WebIDL. For example, Webkit’s code to support Javascript access of browser objects is generated from a WebIDL spec. Generating support for <your_language>'s access to Webkit’s browser objects is “just work”.
Actually, https://tauri.app/ …
Enough of this tangent now!
I suspect writing cross-platform desktop/mobile apps in HTML/CSS/JS was another big pull in this direction.
Many popular languages are bad, yet JS is the one with a widely-deployed OS interface written in it (WebOS).
If free-software/open-source devs hadn’t got caught up chasing all this, there was a chance of replacing JS with other languages in the stack. HTML/CSS/your_language probably for apps initially, even making browsers support plugging in languages later. The docs say anything other than JS is not supported, so no <script type=“text/your_language”>. If only!
The first fully-developed prototype-based OO language was Self, original Javascript seems quite similar.
As a long-time toe-dipper in functional programming waters, I am yet to appreciate the gestalt of any individual language. Going by Joey Hess of Debian and Git Annex fame, #Haskell is what is most bang for the buck.
I have found, though, that the most useful aspects, in isolation or in combination, are pure functions, immutable data and pattern matching syntax. Maybe you will find them in a language you like. Personally, I am enjoying foraying into #Prolog and #Erlang (or Elixir).
I remember glancing at NodeBB (in my ignorance, I am averse to node.js). Activitypub seems to be an integration in it rather than its basis.