5 ms·
after decades of programming, lisp has always been that thing that intrigues me endlessly, but I haven't had a chance to actually wield it myself. but so many p
by netcraft 3y ago
after decades of programming, lisp has always been that thing that intrigues me endlessly, but I haven't had a chance to actually wield it myself. but so many people whose opinions I respect love lisps, and not just for a little while. Clojure especially. Other ideas like datomic and xtdb are also high on my list of things I need to experience. I think im going to have to make an intentional effort to find a lisp job next time.
- epgui 3y agoDoing Clojure at CircleCI, a few years ago, redefined who I was as an engineer… FWIW. It’s an incredible language. Today I work with python (sigh) and every day I long for Clojure.
- behnamoh 3y agoI keep hearing sentiments like this but then I wonder, if Clojure or <another awesome Lisp> is so much better than Python <or some other mainstream language>, then why are we still writing in those languages? If it's because of libraries, then the question is: Why do people write libraries for these languages and not the Lisp ones?
- galaxyLogic 3y agoBecause of habit. There is always a cost in trying to learn something new, to the level you are on with some other language and it's tooling and libraries. Programmers who program in some language for a few years realize they are still learning more about it, all the time. Therefore they know if they switched to another language it would also take them a few years to attain the same level of mastery. And then there is similar inertia with an organization that has lots of code in some specific language already.
- colingw 3y agoYes, it's more than just about the language itself, as I describe here: https://www.fosskers.ca/en/blog/software-dev-langs https://www.fosskers.ca/en/blog/software-dev-langs For some people, community signals are very important. Massive conferences or raw number of libraries, etc., indicate some inner quality of that language's ecosystem that they value.
- galaxyLogic 3y agoNice link, holistic viewpoint!
- Zambyte 3y agoSocial forces and economics. Lisps were winning in academia for a while. Unix started winning in the engineering world before Lisp systems really got their feet under them. Engineers made a lot of money, and academia shifted focus to the systems that were making money. Now everyone programs for Unix instead of Lisp.
- epgui 3y agoFor the same reason people can't change their well-established habits and opinions, particularly those that have network effects. Language popularity has little to do with how well languages are designed or how simple they actually are. Most popular languages are popular for historical reasons.
- tikhonj 3y agoAt the end of the day, things get popular through social processes, so it's far more a matter of social factors—some of which are practically random—than any intrinsic qualities of the thing itself.
- deleted 3y ago[deleted]
- ParetoOptimal 3y agoI can say at least that Haskell is this way for me.
- epgui 3y agoI think you'd rewire your brain "equally well" with either Haskell or Clojure. I prefer Haskell's type system, but Clojure has better syntax IMO.
- crote 3y agoBecause it's weird enough to be off-putting, and it doesn't solve a real-world problem. If you look at the arguments in favor of Lisp, they'll often boil down to it being "beautiful", "elegant", "flexible", or even "magical". It's a very minimal language which allows you to do absolutely anything - a lot of which would be an absolute nightmare in most other languages. You could implement just about any programming paradigm in Lisp if you want to. I believe this makes it very appealing to computer scientists, or other people with a more mathematical background. However, this flexibility is also a massive footgun: if you're not careful your junior developer might end up reinventing the wheel a dozen times, and writing completely unmaintainable code in the process. On the other hand, most other programming languages look kind-of the same. They are all quite opinionated about how stuff is supposed to work, with a lot of hardware details leaking into the language. However, they are very easy to learn: most of it is just "do a bunch of operations in succession" taken to the extreme. Anyone who knows C# will be able to pick up a basic understanding of C, Python, or JavaScript well within a day, and a lot of people new to programming will be able to write not-completely-terrible code within a month or two when given the right guidance. They don't need to know about all the abstractions and technical details to be a functioning member of your team. When you're running a business, you don't care about any of that beauty or flexibility. You want code which is quick and easy to write, trivial to read, and understandable by even the worst programmer in your company. In practice that means in your comparison you'll be choosing Python over Lisp. Heck, Go was developed entirely around this principle, cutting out as many language features as possible. And because all the other companies are making the same choice there will also be way more libraries for Python, making the gap even larger. So yeah, in a stroke of irony Lisp isn't more popular because it is better.
- evdubs 3y ago> Because it's weird enough to be off-putting, and it doesn't solve a real-world problem. Nonsense. Quoth Wikipedia, "Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, the self-hosting compiler, and the read–eval–print loop." These are all solutions to real world problems. So many languages borrow features that were originally developed in Lisp. > However, this flexibility is also a massive footgun: if you're not careful your junior developer might end up reinventing the wheel a dozen times, and writing completely unmaintainable code in the process. Plenty of code written in Lisp looks just like your Python, Ruby, JavaScript, Java, et al programs where you're defining structures or classes, writing and calling functions, importing useful libraries, etc. Plenty of this Lisp code is just as maintainable as the non-S-expression code. > Anyone who knows C# will be able to pick up a basic understanding of C, Python, or JavaScript well within a day Same with Lisp. It's just: (function arg1 arg2) Instead of function(arg1, arg2) > You want code which is quick and easy to write, trivial to read, and understandable by even the worst programmer in your company. There is plenty of "lowest common denominator" code like this written in Lisp. Much Lisp code is not buried under inscrutable macros, just like not all Java code is buried under layers of inscrutable classes.
- __MatrixMan__ 3y agoMost Python users aren't software engineers. They're students, scientists, business analysts... We're lucky that we were able to drag them away from Excel. Asking them to learn yet another programming language might be a bit much. And if they did, it wouldn't probably be a lisp (it would probably be among: C, Javascript, Julia, Go, Nim). I want to move on from Python, but there are so many more people that I can help if I stay.
- tugberkk 3y agoI have the same problem. It is a good language to teach to non-cs majors. If you want to build something out of the box, use Python. However, GPT is coming and maybe we won't even use Python anymore for simpler tasks.
- kazinator 3y ago> Why do people write libraries for these languages and not the Lisp ones? 1. They want their names to be widely recognized, so they find a popular bandwagon to hop onto. 2. Raw numbers? More people using Python means more people trying to make libraries for Python, means more libraries remaining in the race after you eliminate the crap from people who don't know how to write libraries. Note that Python is, by now, an old language. It wasn't instantly popular, and you wouldn't have predicted it. In, say, 1999, you had to be some GNU/Linux person to even know what Python is. It was far from obvious that, of all things, it would get so popular. That Eric Raymond article in the Linux Journal around that time probably gave it a bit of a boost. Python definitely rode on the coattails of increasing GNU/Linux popularity, too. More people using Linux started asking questions how to script this and that, and going "gack!" at shell or perl programming. It seems Python might appeal to survivors of VisualBasic shifting gears into GNU/Linux stuff.
- roenxi 3y agoI don't think anyone is saying Clojure is better than Python in the abstract. Clojure has a different style from Python and that style can be more fun and is better for some specific tasks like application programming and anything that wants to use multiple CPU cores. Tends to have better long term prospects too, old Python code doesn't work in my experience but things on the JVM have cockroach powers. As for why things are and aren't popular, who knows? It is quite possible that people just don't like the look of the parenthesis, or there are a couple of key libraries that aren't good but nobody vocal has put there finger on which ones. The error messaging isn't quite up to a standard that people want to deal with. Or maybe popularity is really just about pure random chance, at most 4 languages get to have >20% market share, by definition.
- epgui 3y ago> I don't think anyone is saying Clojure is better than Python in the abstract Actually, I will make that claim without hesitation.
- crq-yml 3y agoLisps are "wizard" languages: the runtime semantic is kept close to the syntax, which also means that you can rapidly extend the syntax to solve a problem. This quality is true of Forth as well, and shares some energy with APL and its "one symbol for one behavior" flavor. With respect to their metaprogramming, the syntactical approach hands you a great foot-gun in that you can design syntax that is very confusing and specific to your project, which nobody else will be able to ramp up on. But Algols, including Python, are "bureaucrat" languages: rather than condensing the syntax to be the exact specification of the program, they define a right way to form the expression, and then the little man inside the compiler rubber stamps it when you press the run button. In other words, they favor defining a semantics and then adding a syntax around that, which means that they need more syntax, it's harder to explain the behavior of a syntactical construction, and it's harder to extend to have new syntax. But by being consistent in a certain form-filling way, they enable a team to collaborate and hand off relatively more code. IMHO, a perfectly reasonable approach I'm exploring now for personal work is to have a Lisp(or something that comes close enough in size, dynamic behavior, and convenience, like Lua) targeting a Forth. The Forth is there to be a stack machine with a REPL. You can extend the Forth upwards a little bit because it can metaprogram, or downwards to access the machine. It is better for development than a generic bytecode VM because it ships in a bootstrappable form, with everything you need for debugging and extension - it is there to be the layer that talks to the machine, as directly as possible, so nothing is hidden behind a specialized protocol. And you can use the Lisp to be the compiler, to add the rubber-stamping semantics, work through resource tracking issues, do garbage collection and complicated string parsing, and generate "dumb" Forth code where it's called for. That creates a nice mixture of legibility and configurability, where you can address the software in a nuts-and-bolts way or with "I want an algorithm generating this functionality".
- Karrot_Kream 3y ago> IMHO, a perfectly reasonable approach I'm exploring now for personal work is to have a Lisp(or something that comes close enough in size, dynamic behavior, and convenience, like Lua) targeting a Forth. I've had this idea for a while now but never got around to actually executing it. I'd love to follow your progress if you're doing it publicly.
- coldtea 3y ago>If it's because of libraries, then the question is: Why do people write libraries for these languages and not the Lisp ones? Because libraries already exist for those languages, as well as support, vendors, and a big ecosystem, familiar syntax, and jobs. So they write libraries for languages that are already popular. If you meant, "but why wasn't some Lisp the one that gain popularity back in the day, when C, C++, Python, and Java didn't exist or where still fresh?" I think because: 1) it was too advanced for the procedural mindset at the time, 2) it was not sufficiently efficient in those primitive 16 bit machines 3) fragmentation and most importantly, no killer app and major vendor backing or OS first-class support (like C had for UNIX, C++ for Windows, and Java got from SUN).
- eduction 3y agoThis is a great talk on exactly this topic from a Clojure conference, if you want a long answer. It focuses on the “functional” feature of Clojure but all of it applies to the whole language (and probably any good lisp) IMO. https://youtu.be/QyJZzq0v7Z4?si=y3hhYaInMkRLBCJK https://youtu.be/QyJZzq0v7Z4?si=y3hhYaInMkRLBCJK My brief text answer (focused on Clojure): -python has been around about 20 more years than Clojure -the advantages of Clojure vs python/etc probably aren’t nearly as big as python vs a non memory managed, compiled, static language like C. That whole generation of “scripting” languages had the wind at their backs in a way Clojure and its contemporaries never quite will (though Clojure et al tend to be much better at concurrency and parallelism and this will help a lot) -unfamiliar syntax (not Algol like) and paradigm (not oop)- and the truth is many programmers back away slowly when a thing is too alien -hasn’t found a niche as big as data science or scientific computing or CRUD website building - I think python has aggregated some great academic niches, at least one of which (ML/data science) exploded in popularity. Ruby had the rails community. Clojure seems to have some popularity in fintech but has no big single niche yet that it dominates.
- karmakaze 3y agoMy take on Lisp after going (partway) through SICP, is that it's a syntax and not so much a language. The language is what you build up for the particular kinds of things you need to do. This is both the strength and weakness of Lisp, with a tight-knit competent team, everything is elegantly achievable. However on a small/understaffed team or one with high turnover, each member has to onboard onto that team's language built using Lisp. Imagine the best and worst DSLs that you've had to use. Joining a Lisp team would be somewhere on that spectrum though I hope their homegrown/app language is far better than the average/bad DSL. Clojure is much better in that it has many 'batteries included' and opinions on things to make different codebases less different than with other Lisps.
- bcrosby95 3y agoMy take on Lisps is that people overblow the DSL aspect of it. I just write functions that call other functions, as opposed to methods that call other methods.
- pfdietz 3y agoThat's a fine thing to do in Common Lisp. If you ever change your mind, it's very easy to change a function into a generic function and split off the body into one or more methods.
- deleted 3y ago[deleted]
- nerdponx 3y agoIf it's any help, SICP is the wrong place to start for actually learning Scheme as a practical language. It's for learning about "the structure and interpretation of computer programs", which is not the same thing as "writing useful computer programs".
- tmtvl 3y agoSICP is a great, wonderful book. But it's even better when balanced with Seibel's Practical Common Lisp. It's like the Dean Martin to SICP's Jerry Lewis.
- horeszko 3y ago> I think im going to have to make an intentional effort to find a lisp job next time. Does anyone have any tips on where to find a lisp job?
- reikonomusha 3y agoLisp jobs are sometimes advertised in Who's Hiring threads, Reddit's r/lisp, etc. There's a Lisp job advertised on Reddit [1,2] right now even. Another good source is to check out the companies in [3] and see if they have any openings on their website (or cold-emailing). [1] https://www.reddit.com/r/ProgrammingLanguages/s/AZmouaoARl https://www.reddit.com/r/ProgrammingLanguages/s/AZmouaoARl [2] https://jobs.lever.co/dodmg/af802f7f-4e44-4457-9e49-14bc47bd8b31 https://jobs.lever.co/dodmg/af802f7f-4e44-4457-9e49-14bc47bd... [3] https://github.com/azzamsa/awesome-lisp-companies https://github.com/azzamsa/awesome-lisp-companies
- john-shaffer 3y agohttps://jobs.braveclojure.com/ https://jobs.braveclojure.com/