6 ms·
Everything has been said by Richard Gabriel long ago - Lisp is too good, and "packers" don't need or even appreciate refinement and excellence, like most of fol
by dschiptsov 10y ago
Everything has been said by Richard Gabriel long ago - Lisp is too good, and "packers" don't need or even appreciate refinement and excellence, like most of folks don't appreciate beauty of DNA and related machinery.
For them PHP or Java are tools for getting shit done. There are huge piles they have produced, like Hadoop or whatever it is.
The last great Lisp was ZetaLisp from Symbolics (just read the docs!). Common Lisp is already a bloatware suffered from the kitchen sink syndrome, nevertheless it is way better than anything else (multi-paradigm, mostly functional, strongly-typed (type-safe enough) meta-language that compiles to native code with pattern-matching, OO and other fancies as DSLs).
But who cares if one is satisfied with writing
RepetitiveStupidityFactory myStupidityFactory = new RepetiriveStupidityFactory;
for living.
- incepted 10y ago> For them PHP or Java are tools for getting shit done. ... as opposed to Lisp?
- dschiptsov 10y agoYes, Lisp is a distinct, different culture (think of Aryans versus tribes in ancient India). The difference is as it is between craftsmen (who are artists) and assembly-line workers. Look, read Gabriel or Graham or early Norvig (his Lisp style and anti-design-patterns essay), not me. There is something behind their insights.
- pka 10y agoYea, understanding macros and writing your own DSLs doesn't make you some sort of aryan ubermensch programming craftsman. Macros really aren't that hard to get, and mostly not necessary when you have more coherent constructs at your disposal.
- sklogic 10y agoYes, macros are not hard to get - they're far simpler than anything else imaginable. No, they are necessary. There is no better way of doing things than macros.
- incepted 10y ago> There is no better way of doing things than macros. We have invented plenty of better ways since Lisp. Much better ones.
- sklogic 10y agoMind naming a single one? I do not believe such a thing exist. Macros are the ultimate solution.
- ldjb 10y agoThere is much that can be done with regular, bog-standard functions. Yes, macros can be useful in certain cases, but it's often more straightforward to use the Lisp language as it comes. As always, it's important to use the right tool for the job.
- sklogic 10y ago> There is much that can be done with regular, bog-standard functions. You cannot implement simple, modular, debuggable, composable DSLs with functions alone. And you cannot tackle complexity without DSLs. > Yes, macros can be useful in certain cases In most cases. Cannot think of anything beyond "Hello, world" that does not deserve a DSL implementation.
- pka 10y agoFree monads would like to have a word with you about simple, modular, debuggable, composable DSLs. On the other hand macros are anything but composable or modular. Debuggable for some far off definition of debuggable, maybe.
- incepted 10y ago> The difference is as it is between craftsmen (who are artists) and assembly-line workers. It's a bit harsh to call Lisp programmers assembly-line workers. I think the language has value and pioneered some language concepts that we find across a lot of languages today, but Lisp is very dated by 21st century standards.
- incepted 10y ago> RepetitiveStupidityFactory myStupidityFactory = new RepetiriveStupidityFactory; Yeah because (let v (make-instance 'RepetitiveStupidFactory)) is so obviously superior, right?
- dschiptsov 10y agoObviously. Less repetitive, less verbose. And, most importantly, one could hide all the irrelevant details inside a macro which is equivalent to extending a language with a new control structure.
- incepted 10y agoThe Lisp version is less verbose because it's dynamically typed (in other words, it's less verbose because it contains less information that would allow this code to be proven correct). By the way, these days, we write things like val l = ArrayList<String>() If verbosity is your number one criterion to write your code, just skip all error checking and your code will become super concise.
- eschaton 10y agoI'd suggest the last great Lisp wasn't ZetaLisp, but (prefix-syntax) Dylan, which was designed by many of the same people. It's essentially a Scheme plus CLOS "all the way down," with a cleaned up subset of the core of Common Lisp. Find the book from 1991-1992, it's worth reading.
- dschiptsov 10y agoIn that case it is PLOT3 by David Moon (Google it).
- eschaton 10y agoNope. Moon apparently bought into the "people don't like Lisp because of the parentheses, so we should make a Lisp that looks more like ALGOL and people will like it" line like the rest of the Dylan core team. IMO if it doesn't have homoiconicity, it's not a Lisp, and macros will be much more difficult.