21 ms·
Yeah, and that is a problem with the majority of programmers. They readily choose a seemingly easy path instead of something that leads to simplicity. Lisp is a
by iLemming 7y ago
Yeah, and that is a problem with the majority of programmers. They readily choose a seemingly easy path instead of something that leads to simplicity. Lisp is a fantastic idea that (even after over six decades) is still very much relevant today. Once you get used to program with a true REPL, every other (non-lispy) language starts feeling like frustratingly over-engineered, bloated, and unnecessarily complicated. Waiting for compilation cycles and annoying syntax quirks would slowly turn what once was a joy into a "just a job."
It feels incredibly liberating and joyous to be able to grab any part of your program and without any preceding ceremony just to "eval" it and see what happens.
And let me prematurely answer the comments that probably will be thrown here. No, other languages (most of them) don't have real REPLs. What they have, at best can be categorized as "interactive shells".
Younger folks who are learning, juniors, seasoned developers who for one or another reason, never had any exposure to a Lisp, please do yourselves a favor.
Try Racket, Clojure, Clojurescript, Fennel, Chez. Give Lisp an honest, heartfelt attempt to learn it.
Follow the work of people like Harold Abelson and Gerald Sussman, Matthias Felleisen, Dan Friedman, Rich Hickey, Guy Steele, Richard Gabriel, Alan Kay, and many others.
Once you attain familiarity with a Lisp to the sufficient level, perhaps then you will get it. You will see that it is indeed a lifetime investment that would allow you to reap the rewards for the entirety of your career.
I am telling you all this, not from the top of some ivory tower. I never went to CS academia. Like most of you, I am altogether a self-taught programmer. I am honestly begging you not to make the same mistake that I did. For many years I have ignored Lisp due to my self-righteous ignorance. Unknowingly, I delayed my true growth, and I sincerely regret it.
- lispm 7y ago> No, other languages (most of them) don't have real REPLs. What they have, at best can be categorized as "interactive shells". > Try Racket, Clojure, Clojurescript, Fennel, Chez. Give Lisp an honest, heartfelt attempt to learn it. Compared to actual Lisps, some of these have mostly interactive shells. https://www.youtube.com/watch?v=o4-YnLpLgtk https://www.youtube.com/watch?v=o4-YnLpLgtk
- iLemming 7y agoWe can debate for a long time if other Lisps deserve the status of "true" lisp or that title forever belongs to Common Lisp only. There are many prominent Lispers that criticized Common Lisp for being overly bloated and for butchering the sole idea of Lisp. To be honest I do feel like agreeing with them and kinda glad that Common Lisp is dying. That is why I did not include CL in that list.
- lispm 7y agoUnfortunately you are missing out on a lot of things Lisp has to offer, by working with non-core Lisp-variants. For example it would be clearer to you what interactive working with a Read-Eval-Print-Loop in Lisp actually can do - besides the simpler improvements in interactivity. There is a whole world of core Lisp which you are ignoring. You are also slightly misleading people by not mentioning core Lisp languages and language contributors to those. > or that title forever belongs to Common Lisp only. Emacs Lisp, Visual Lisp, ISLisp (an ISO standard), various Common Lisps and their variants, Interlisp, Portable Standard Lisp, ... and a bunch of others. You are setting your focus on languages which are more or less derived from those (for a reason, often with specific improvements or alternative features), but missing out on the core language implementation features. All the above have LISP in their name, which Racket, Clojure, Clojurescript, Fennel, Chez don't. There must be a reason for that. ;-) Take Clojure and ClojureScript. Without Common Lisp those would not exist. I can remember when Rich Hickey was an active Common Lisp user (he used LispWorks and we were on the same mailing lists). He developed stuff in Common Lisp, worked on Common Lisp to Java integration, wrote a first sketch of Clojure in Common Lisp and so on. Luckily he was open minded, learned a lot and created a language (with lots of lessons from Common Lisp), which a lot of people like... The language you wish is dying, was literally the one where Rich Hickey learned from..., like many people before and others, open minded, will also do in the future.
- iLemming 7y agoI don't want to criticize CL, but I feel today it's neither an introductory Lisp nor academical or pragmatic. I think advocating for Lisp by pushing newbies to CL, telling "that's the true Lisp, and others not so much" is damaging. Common Lisp today has become like a Latin of Lisps - knowing it is awesome, but practicality of that knowledge is quickly becoming irrelevant. Those who have zero exposure to Lisps can be easily intimidated by it. My own opinion about CL (why I said "I'm kinda glad it's dying"), shaped through influence of other respectable Lispers quotes: Guy L Steele notably criticized its standard for being over 1000 pages. Daniel Weinreb criticized it for being Lisp2: > ... It makes the language bigger, and that's bad in and of itself. Richard Gabriel: > “Common Lisp is a significantly ugly language. If Guy and I had been locked in a room, you can bet it wouldn't have turned out like that” Paul Graham: > A hacker's language needs powerful libraries and something to hack. Common Lisp has neither. A hacker's language is terse and hackable. Common Lisp is not. The good news is, it's not Lisp that sucks, but Common Lisp. etc.
- bitwize 7y agoMost Lisp programmers go through hype cycles within their own minds, progress along which increases with experience. You appear to be still at the Peak of Inflated Expectations phase of your personal hype cycle. You've learned enough Lisp to be dangerous, and you've seen, and been tempted by, its tremendous power. Oh, the things you could build, if only you were allowed! But be forewarned, the Trough of Disillusionment is coming, the despair that sets in when you realize that try as you might, you cannot convince industry to accept its software needs being met in Lisp. For as mighty as Lisp is on its own compared to other languages, other languages have surpassed it in the ways that matter to companies: better integration, better tooling, more support, bigger talent pools -- and lower cost for all of these. Lisp programmers tend to spend their Slope of Enlightenment and Plateau of Productivity working in other languages, applying what they learned from Lisp to Python or Ruby or Haskell or Rust -- or JavaScript. And honestly, JavaScript with Babel gets you 80% of the dynamism and metaprogramming capability Lisp has, but also better integration, tools, and libraries than any Lisp. So yeah, most people in the real world will use that.
- iLemming 7y agoAnd here you are making a classic mistake: you're confusing Lisp for a programming language - nonabstract tool, a means to an end. Which Lisp is not. Lisp is an idea, or rather a set of ideas, one of the greatest ideas in computer science, just like Curry-Howard isomorphism or Naus Backus Form. Based on the idea of Lisp, you can build programming languages. And the majority of the programming languages that in use today were influenced by Lisp. Once you comprehend that remarkable idea to the sufficient level, you do become enlightened. That is not a myth or a fairy-tale; it's not something that Lispers spread around for the sake of achieving elitist status. That has been repeated over and over again by many brilliant computer scientists and programmers (which I am not, I'm not trying to associate myself with them). And there are no "hype cycles" or "peaks of inflated expectations" as you put it. I believe many Lispers do not have any illusions about the real world; we do understand that for the majority of software developers today, Lisp has become a "hard sell," it almost vanished from the curricula of many universities. Now the industry is paying a hefty price for the decisions made a few generations of college students ago. Lisp is so universal you can find a Lisp dialect for almost any platform today. Knowing Lisp makes it easier to work with any language. For example: whenever I need to solve a problem and for whatever reason, I am not allowed to use a Lisp-dialect; I would prototype in a Lisp and then adapt that to the language that it needs to be. Although it seems to be double the work, I am still faster doing it that way. > And honestly, JavaScript with Babel gets you 80% of the dynamism and metaprogramming capability Lisp has Well, I've seen both sides. I've written quite a bit of Javascript. I have used not all; still, many popular kinds of the *script languages that transpile/compile into Javascript - I have used Coffeescript, LiveScript, Typescript, Gorillascript, IcedCoffeescript, Fay, Haste, GHJS, Babel, Traceur, Google Closure compiler, I've looked into Elm, Purescript, and Reason. And without a doubt, I can tell you: Clojurescript today is an excellent option among all these (but that's my subjective opinion based on my empirical observations, YMMV) And your notion about "better integration, tools, and libraries" is a very subjective statement, given that Cljs has a very solid FFI to JS. I can get into a rant (but I rather choose not to) of how Lisp influenced other languages (including Javascript). How destructuring, transducers, immutable data-structures, etc. first popularized in Lisp dialects and then later sought adoption in other languages. One of the recent examples: React hooks feature, which gets so much praise by JS developers. Most of them don't even know that Clojurescript devs been similarly writing code for many years already, and it is still a better way to handle state within a component. Anyway, I don't want to sound like I disagree with you completely, we seem to agree on one thing: first two sentences with which I started my previous comment.