> Should I start with Common Lisp, or some popular dialect (Clojure?)<p>Clojure is not a dialect of Common Lisp. That would be like saying that C#, Go, Kotlin or Scala are dialects of Java. They are both Lisps, but neither is a dialect of one another.<p>I use Clojure at work and recreationally, and I learned Lisps first from it, so I am a bit biased, but I do think Clojure is a good Lisp to learn in 2020. I'd say Racket is a close second.<p>So my rec would be to learn Clojure, and this is my curriculum of choice:<p>1. Read through: <a href="https://kimh.github.io/clojure-by-example/#about" rel="nofollow">https://kimh.github.io/clojure-by-example/#about</a>
2. Then read through: <a href="https://aphyr.com/posts/301-clojure-from-the-ground-up-welcome" rel="nofollow">https://aphyr.com/posts/301-clojure-from-the-ground-up-welco...</a>
3. Then read through: <a href="https://clojure.org/reference/reader" rel="nofollow">https://clojure.org/reference/reader</a>
4. Now start referring to the Cheatsheet: <a href="https://clojure.org/api/cheatsheet" rel="nofollow">https://clojure.org/api/cheatsheet</a> and <a href="https://clojuredocs.org" rel="nofollow">https://clojuredocs.org</a> and <a href="https://cljdoc.org" rel="nofollow">https://cljdoc.org</a>. Bookmark them.
5. Finally, read through guides here: <a href="https://clojure.org/guides/getting_started" rel="nofollow">https://clojure.org/guides/getting_started</a>
6. Now go to: <a href="https://4clojure.org" rel="nofollow">https://4clojure.org</a> and go through the exercises, start with elementary and easy. Even better, get the Android app, so you can practice on the go, the bus, the bathroom. Also for some reason the order of exercise in the Android app is the best, so I'd try and follow that. You don't need to go through them all, you can probably stop after easy or medium.
7. Once that's done, get Clojure Cookbook and go through the recipes.
8. Oh and, always go to the Clojure slack beginner channel and don't hesitate to ask questions and for help. Maybe always have it open in a tab: <a href="https://clojurians.slack.com/?redir=%2Fmessages%2Fbeginners%2F" rel="nofollow">https://clojurians.slack.com/?redir=%2Fmessages%2Fbeginners%...</a>
9. Now try to build something from scratch, like try to write a tic-tac-toe game, or write a search engine, or whatever you prefer.<p>> What is easier to do Lisp than is missing from functional languages like Python?<p>There are two kinds of Functional language. There are those who rely on first-class functions as their unit of abstraction. In those, functions close over their environment, and can be passed around as values. Python has support for this type of functional programming, but it is somewhat mediocre compared to most Lisps. Python still relies a lot on Classes and Objects, and there are some constraints with the way its functions are first-class especially around anonymous functions and partial application. Scheme and Racket are pros at this when it comes to Lisps.<p>And then there are those where data is immutable, and most functions are pure. In those, everything will be an expression that returns a value, instead of a statement which returns nothing. Recursion will be used for looping, because data can't mutate, so it must be passed along. Records will be value based, instead of identity based, because they are immutable. Clojure is the king here when it comes to Lisps.<p>Nothing will be easier to do, especially to you, someone unfamiliar with Lisps, and learning it. But it should be more fun and more rewarding. The development process is more interactive, Lisp languages tend to have every feature under the sun for you to learn and mess around with. Performance should be better than Python, especially if you go for Clojure, Chez Scheme, or SBCL. Also expressiveness is really high, that means anything a little boilerplate, or requiring too much typing or contortioning can be factored out by a Macro. And structural editing is quite productive once you learn how to use it properly.<p>And once you know a Lisp, you can start exploring Emacs, and understanding how Emacs work, and how to modify it to your liking, which is a very fun new world of possibilities.<p>> What are some big projects built in Lisp (other than this site)?<p>There's Emacs. I know that Walmart was(still is?) using Clojure for their backend listings I think. I use it at my work for secret stuff ;), but it's handling backend micro-services processing thousands of requests per second. Circle CI pretty sure have a mostly Clojure based stack. Consumer Reports online is apparently built in Clojure. Apparently Atlassian have some Clojure backends. Boeing apparently runs some Clojure based in-flight diagnostic. ITA apparently uses CL for searching for airfares. And AutoCad uses CL it seems. NuBank is entirely written in Clojure, a pretty big fintech bank in Brazil of 5000 devs. AdZerk an ad serving company, and NextJournal, an awesome data-science notebook offering both have full on Clojure stacks. Apparently Cisco has a product called Threat Grid which is implemented in Clojure. Clojure/Script really dominates in that area compared to other Lisp from what I know here.<p>> If it's so good, why isn't it more popular?<p>Because everyone that could learn it, like you, back out because they ask this question :p Chicken and Egg is the answer really. Though I'd say, Lisp is tailored to experts, it doesn't make things easy and obvious, it kind of gives you infinite flexibility and customization. It has the opposite mantra of Python, the one and only one way, Lisp is like all and every possible way. So imagine a language that gives you infinite flexibility and customization, and every possible way to do anything and everything, yet is dynamic and without static type to help guide you in any of it, and has a syntax that isn't like anything you've learned in school, not like the math you know, not like the English you speak. That kind of language can't be wielded by just anybody.