Embed Notice
HTML Code
Corresponding Notice
- Embed this notice
pistolero :thispersondoesnotexist: (p@freespeechextremist.com)'s status on Friday, 10-Nov-2023 01:17:20 JSTpistolero :thispersondoesnotexist: @amerika @Pawlicker @kirby @mint "Consistent" is not on the list of adjectives that spring to mind when I think of Perl. Perl's like the C++ of scripting languages: a massive agglomeration of everything the designer had ever heard of. You don't have to take my word for it, you can take Larry's: https://www.perl.com/pub/1999/03/pm.html/ .
(This is also why Perl's best feature is Larry Wall. :larrypowers:)
Putting everything into a single language is not necessarily desirable: you have pipes and allowing two different programs to communicate turns out to be more useful than any single language feature. The second Ken put pipes into Unix, every other system's fate was sealed. And here we are on the internet: just to get from where I am to where you are, there're at least eight languages¹ in use, and Pleroma has a pretty simple stack.
As a trivial example, it's hard to touch sed for concision if you are editing strings and it's equally hard to touch dc or k for calculations. All three of those languages are brutally concise (single-character identifiers and operations are about as concise as you can get) but very expressive and convenient, and the implementations can be really simple. If you have a reference card, you can probably clone 90% of sed or dc in a day, but making a single language that satisfies both sed users and dc users is nearly intractable, to say nothing of trying to satisfy both sed and k users or dc and k users. (Add something that would make SQL users happy too and we're way off in theoretical territory.) Same reason "λ" will mean different things if the context is physics versus computer science, or "θ" will mean several things just in different branches of math.
So just have both: give these languages a means to toss data back and forth between each other and you've solved the problem without complicating them. This is what makes Common Lisp feel crusty: no pipes, everything was monolithic back then.
¹ There's a bunch of C/assembly for all the OSs, there's this (terrible) browser that uses C++ [1] and JavaScript [2], then the page uses JavaScript, and it hits bloatfe (Go [3]), which then talks to nginx (C) and then Pleroma (Elixir [4] and some Erlang [5] on a VM written in C [6]), which talks to Postgres (C), and all of this on a box that is managed by a mess of bash[7]/awk[8]/etc. that I wrote. The uploads/avatars/etc. were served for most of FSE's life through a chunk of software I wrote in Ruby that spoke HTTP on one end and then consulted Redis (C) to figure out what arguments to pass to the venti (C) client programs but are now served by some Go software I wrote that is itself managed by rc and bash scripts.