Embed Notice
HTML Code
Corresponding Notice
- Embed this notice@iska @Zerglingman @sysrq @MK2boogaloo Oh, another language argument. Against my better judgment, I'll bite again.
> :darkness: we don't talk about corpoware
That was what came before. It was all corpoware back then, anyway.
> the difference between (sort (grep x)) and grep x | sort is that the latter involves 2 program initializations and lots of copying
Lisp's entire existence has been "Look, maybe it's not fast, but it's got better capabilities." Here is a performance-based argument against Unix. The ironing. The argument was bad to begin with, for the same reason that "Recursion is slower than a for loop" is bad: it's not accurate and it misses the point. A process is very cheap in Unix anyway, or it least it was until emacs was ported.
But I can see that sentence because we are on a network of independently operating machines instead of all connected by terminal to a giant mainframe in Alaska that serves all the world's computing needs, because CSP won, and CSP won because it was inevitable. It's way less efficient to move data across a network than to have everyone living in the one massive supercomputer, but that doesn't matter, because you cannot build the one massive supercomputer.
CSP is not just a convenient notation, CSP decouples code and isolates processes. The internals don't have to conform, just the interface. If you've crammed everything into the same process space, everything has to conform. sort|grep doesn't require that sort and grep even be written in the same programming language, one of them just needs to be able to understand the other.
This is my primary frustration with most flavors of Lisp. There are languages designed around incorporation instead of integration, Common Lisp is one such language, and Unix is all the way at the other end of the spectrum: Unix is built around independent processes communicating rather than everything you want to do getting crammed into one process. If you want a monolith, sure, have a monolith. Because it has to incorporated everything instead of having a common interface to integrate with other programs, it has to share a namespace, it won't be called (sort (grep x)), it will be called (sort-strings-by-lexicographic-order 't (select-from-strings-by-regular-expression x) 'case-insensitive-search), and if it crashes, everything crashes.
Forth is a better model for monoliths than Lisp anyway.