5 ms·
The philosophy of Lisp encourages writing your own libraries because it's so easy to do. You're expected to know how to program if you use Lisp; not to depend o
by dreamcompiler 5y ago
The philosophy of Lisp encourages writing your own libraries because it's so easy to do. You're expected to know how to program if you use Lisp; not to depend on tiny prewritten functions in the npm universe that may or may not solve your problem, that may or may not be written in a secure or efficient fashion, and that possibly pull in a million transitive dependencies you don't need.
That said, Common Lisp itself includes many of the more useful but difficult-to-write features like hash tables, sort/merge, bignums, complex numbers, etc.
The most-used stuff that's not in Common Lisp itself like multithreading and sockets are well-covered by external libraries. The lesser-needed stuff is also quite well covered by the quicklisp library infrastructure [0] as well.
So the statement "libraries...do not exist in the Lisp ecosystem" is plainly false and it marks the speaker as someone not very familiar with Lisp.
[0] https://www.quicklisp.org/beta/releases.html https://www.quicklisp.org/beta/releases.html
- throw_m239339 5y ago> The philosophy of Lisp encourages writing your own libraries because it's so easy to do That statement could be said of any language the programmer is comfortable with. It's no more a LISP philosophy than a C++ one. The difference is that way more people are working with C++ (or Java) thus opensourcing their libraries for others to be used.
- jhgb 5y agoI think the argument there was that lots of things were so much easier to do in Lisp that people wrote their own implementation, then they thought "what's the big deal about it?", and then they didn't share their library because they didn't think they've accomplished something meaningful to share. So you end up with people doing things in C++ and Java and publishing it and getting their code reused because 1) the authors of the code were more likely to think of publishing their code as a useful thing, and 2) due to some things being harder in those languages, other people were more likely to shop for libraries rather than to think "I can do this myself".
- AnimalMuppet 5y agoSure, libraries exist in Lisp. The claim that they don't was a fairly ridiculous statement. But... Do libraries exist in Lisp on the same scale as they exist in Java? Especially, do they exist with the same level of quality, professionalism, and maintenance as they exist in Java? I'm guessing that the answer is no.
- tralarpa 5y ago> So the statement "libraries...do not exist in the Lisp ecosystem" is plainly false and it marks the speaker as someone not very familiar with Lisp. Sorry to be so blunt but this is ridiculous. You are mentioning hash tables and multithreading to prove your point. I am pretty sure this is not what parent meant when they wrote "The ecosystem is just not there". And what does "writing your own libraries because it's so easy to do" even mean? You still have to do it and it takes a lot of time and money. A library that talks a specific protocol to a medical devices. A library that writes some obscure data format used by some government somewhere on earth. This is the real world.
- andi999 5y agoWriting your own library also has the disadvantage that 100% of the new hires have never seen how to use that library.
- jhgb 5y agoAs opposed to "a library that talks a specific protocol to a medical devices" or "a library that writes some obscure data format used by some government somewhere on earth" which new hires wouldn't know how to use either because only a hundred people on Earth have ever used either of those?
- andi999 5y agoActually yes. While there are a lot of different medical devices if you have an engineer who worked with that specific device before (not unlikely if you hire for that) will most likely have worked with the vendor library, but not with yours.
- jhgb 5y agoIn that case, should you choose to write your application in Lisp for whatever reason, it's very likely that you'd be able to use that library from Lisp with a more-or-less isomorphic API and recycle that knowledge.
- ashtonkem 5y ago> The philosophy of Lisp encourages writing your own libraries because it's so easy to do. Having professionally worked in CL and Java, this is true and completely misses the point. Of course you can write your own libraries, the question isn’t whether you can but whether or not that’s a wise usage of your time and energy. Java gives me a ton of fantastic libraries out of the box that let me focus on my domain, which is a good thing! > You're expected to know how to program if you use Lisp; not to depend on tiny prewritten functions in the npm universe that may or may not solve your problem, that may or may not be written in a secure or efficient fashion, and that possibly pull in a million transitive dependencies you don't need. Sneering at people who use different languages is both a bad look, and a bad way to convince people that you’re right. I’d recommend staying way clear of any suggestion that your peers don’t know how to program. > The most-used stuff that's not in Common Lisp itself like multithreading and sockets are well-covered by external libraries. The lesser-needed stuff is also quite well covered by the quicklisp library infrastructure [0] as well. This is a pretty drastic understatement of how far behind Java CL is. Forget multithreading, think more about metrics, logs, configuration, A/B testing, retries/bulkheads/circuit-breakers, feature flags, and secrets management. All of this stuff I get for free out of Java libraries, often in automatically self configuring ways. Configuring a Kafka reader in my app and seeing that it automatically discovered Micrometer on my class path and started emitting metrics is a lovely experience. Switching metrics servers from InfluxDB to Datadog with a single code change was damn near nirvana. If CL wants to be a compelling alternative to Java for industrial use, it’s got to catch up on all this stuff.
- jhgb 5y ago> Sneering at people who use different languages is both a bad look, and a bad way to convince people that you’re right. I'm pretty sure that this was a criticism of NPM rather than of any language. > Forget multithreading, think more about metrics, logs, configuration, A/B testing, retries/bulkheads/circuit-breakers, feature flags, and secrets management. I could understand logs and secrets management (if it's what I think you mean by that), but how do the other things relate to the language? Except for retries which I would have thought were much better integrated into CL then they could be in Java, given resumable conditions. > Configuring a Kafka reader in my app and seeing that it automatically discovered Micrometer on my class path and started emitting metrics is a lovely experience. Is this a thing that something like asdf-system-connections would solve in Lisp? (IMO also much more elegantly than by "discovering X on my class path".)
- deleted 5y ago[deleted]
- nerdponx 5y ago> The philosophy of Lisp encourages writing your own libraries because it's so easy to do. You're expected to know how to program if you use Lisp; not to depend on tiny prewritten functions in the npm universe that may or may not solve your problem, that may or may not be written in a secure or efficient fashion, and that possibly pull in a million transitive dependencies you don't need. Some people love to point out how stupid JS programmers are because of the left-pad incident. The reality is that, in almost every domain, there are many things which are either difficult and/or time-consuming to implement, or common across several projects and tasks. Do you really want to waste your own time and the time of your teammates reimplementing these things for every project if you don't need to? Even if the underlying implementation is "easy", having a handful of well-tested libraries with thoughtfully-designed APIs is important for productivity in many (most?) programming tasks. Yes, there might always be a specific case when you can't use the popular library for X, but that's the exception and not the norm. "It's easy to write your own libraries" is true in any professional-grade language. Arguably it's one of the things that makes a professional-grade language professional-grade. It's not a justification for having a bad library ecosystem, it's a rationalization. As a side note, I think the Lisp library ecosystem in 2021 is pretty good, considering how unpopular it is in industry.
- mbrodersen 5y agoAgree. I find it super easy to write my own libraries in C++/Java/Haskell/… but it is silly to do that when somebody else have already spent years creating a great library you can just drop in and use in a few minutes.
- deleted 5y ago[deleted]
- hellbannedguy 5y agoYou know your Lisp. If you are every in need of a subject to write about--I might even pay for a walkthrough of the code that built Hackernews. I don't think I'm alone either.
- coliveira 5y agoBut you just touched on the reason programmers don't like Lisp: they prefer a language that has a lot of little bits of available functionality that they can mix and match, without having to do any real programming. Programming, as we knew it, is a dead art, modern developers only want to reuse some library that was created by someone else. Languages like Python and Java are bad to program, but ideal for this kind of lego-based development.
- stormking 5y agoThis is ridiculous! When you want to write a book or just take some notes, do you want to make your own paper all the time? Mix your own ink? I see the appeal to do this once or from time to time, but if I have to scribble something down, I'm glad these are ready-made for me. Guess I'm just a lego-based author.
- coliveira 5y agoThis is not a good comparison at all. The better way to describe it is this: when you want to write a book, do you write paragraphs or you just write quotes from other authors? Writing your own text is similar to write your own code. On the other hand, pasting quotes from other people is not a good way to convey your ideas, but it is much quicker for those who don't want to write themselves.
- stormking 5y agoNo, it's a perfect comparison. If I do an art project, I might want to start from the very basics and want to do everything on my own. If I have work to do, a budget and a deadline, I use existing building blocks wherever possible. I just imagine telling my boss I could do the job in a week in Python ... or I could use this amazing forgotten language that requires me to implement almost everything from scratch. But it will be totally worth it, some day, I swear!
- da39a3ee 5y agoThere have been several idiotic comments by lisp proponents in this thread and this is one of the stupidest. You appear to be criticizing all programmers that use libraries. You, and your peers, are coming off as arrogant and ignorant hobbyists, but the people you're talking to are largely professional programmers solving real world problems. Of course, one solves the problems that remain to be solved, and reuse good and proven solutions where these exist.
- oalae5niMiel7qu 5y agoIt's not a library unless it's 80% as hard to use it as it would be to implement its functionality from scratch.
- mbrodersen 5y ago> You're expected to know how to program if you use Lisp I am pretty sure you are expected to know how to program if you use any programming language. And writing everything from scratch, instead of taking advantage of the work done by thousands of other skilled developers, is just silly. With that attitude, no wonders the world runs on C/C++ and not Lisp.