4 ms·
But Lisp and Haskell are arguably the best in their categories, namely programming in lists and programming in functions. Those two abstractions are several ti
by innguest 12y ago
But Lisp and Haskell are arguably the best in their categories, namely programming in lists and programming in functions.
Those two abstractions are several times more powerful than the overly constrained abstractions imposed by OOP. The power of lisp is that it is homoiconic, and it asks what it means to write programs that write programs. The power of Haskell is that it is algebraic, and it asks what it means to execute a mathematical proof.
Both therefore have the power to really abstract away from things in any way you want. They do not constrain the programmer with an abstraction that is too high and not composable, as are (mathematical) functions and macros (which are composable with hygiene). The prevailing paradigm offers poor substitutes for composability and can simulate very poorly abstractions that are lower than Objects (thereby needing design patterns to make up for starting so high in the abstraction tower).
- AnimalMuppet 12y agoBut see, now you're just replacing a one-axis view with a two-axis view. I could equally well have said that a Fortran programmer looks down on both Haskell and Lisp because they don't even have a decent matrix package. Or that a C++ programmer looks down on them because they don't let you really control the details. (Despite the power of abstraction, there are plenty of situations where real control is at least as important. What do I mean by real control? Size of a variable. The ability to manipulate individual bits. Control of individual memory allocations. Et cetera.) Program power is not one dimensional, and not two dimensional. There are more "best" languages than Lisp and Haskell. There are more categories that matter than just programming in lists and programming in functions.
- innguest 12y agoYes of course, I did not mean to imply there are only those two (that would be weird for the two to be "lists" and "functions" out of all things). What I mean is the current mainstream languages are not the best of any category, like Haskell is up there for functional programming and lisp is up there for s-expressions. C++ is not the best for controlling details (see Rust, D, etc), in fact it's quite a broken language. I doubt Fortran is better at matrices than APL (in fact APL is arguably the best in the matrix category) and so on. That's the problem. These languages that are best in their categories are many many times better than the mainstream languages of today, which aren't the best in any category they represent.