[HN Gopher] Lisp as an Alternative to Java (2000)
       ___________________________________________________________________
        
       Lisp as an Alternative to Java (2000)
        
       Author : susam
       Score  : 114 points
       Date   : 2021-08-02 14:07 UTC (8 hours ago)
        
 (HTM) web link (www.norvig.com)
 (TXT) w3m dump (www.norvig.com)
        
       | mark_l_watson wrote:
       | He wrote this around the same time that he kindly reviewed and
       | gave me comments on the first edition of my Java AI book. A year
       | later we had lunch: I was using Common Lisp and Java for my work
       | and I think that Peter was mostly using Python by then.
       | 
       | Which programming language you choose really doesn't matter very
       | much. Since 1982 Common Lisp has been my favorite language, but I
       | have recently learned to also love Swift.
        
       | abhinav22 wrote:
       | Lisp is a wonderful language (Common Lisp in particular, but I am
       | dabbling in Scheme now too), and absolutely fantastic for web
       | development - seriously people should give it a chance in that
       | space, I would totally develop any SPA in Lisp[1].
       | 
       | QuickLisp is simply a joy to use, and the language is very
       | portable with a fantastic specification and many top notch
       | compilers.
       | 
       | IMO, what holds it back is a lack of a top notch IDE. It took me
       | a year of love & hate with Emacs, I can now make pretty good use
       | of the amazing software that is Emacs (where everything can be
       | changed), but honestly at times I want a simple point & click
       | free IDE which is polished and does most things well and out of
       | the box. Portacle is a step in the right direction, but the Emacs
       | dependency IMO does make the language a bit more niche and lose
       | out to other languages for beginners. If some big corporation can
       | mix sublime with slime with paredit with some of the customize
       | ability of Emacs, then Common Lisp could explode in popularity.
       | 
       | Don't get me wrong - I LOVE Emacs and everything about Emacs & CL
       | combined, but it took me a year to get to this point.
       | 
       | [1] For those interested, I wrote this article covering the
       | basics: https://ashok-khanna.medium.com/lisp-the-web-4c00c88d11f9
        
         | neilv wrote:
         | BTW, there's a small small-world coincidence, between a desire
         | for an Emacs-based super IDE, and the original article...
         | 
         | The desire for an Emacs-based out-of-box power-user IDE was how
         | we got Lucid Emacs, aka XEmacs (which was one of the two big
         | forks of GNU Emacs with GUI innovations that GNU took a while
         | to catch up with)...
         | 
         | ...from JWZ, et al.'s work on the Lucid Energize IDE for C++...
         | 
         | ...and JWZ worked for Norvig early on...
         | 
         | ...and Norvig was at Harlequin...
         | 
         | ...and Harlequin acquired at least some of Lucid's IP.
        
       | 37ef_ced3 wrote:
       | I want to see an article:
       | 
       | "Go as an Alternative to C"
        
       | coliveira wrote:
       | I think the whole issue of having a great programming language is
       | a mute point in the current software industry, because average
       | programmers don't know how to use it. That's why the winners have
       | always be languages that appeal to the minimum common
       | denominator, just the bare enough for people to write programers
       | in the simple way they know. Lisp provide a lot of flexibility
       | and power, but if programmers don't know how to use it, it is
       | instead viewed as a liability.
        
       | eric4smith wrote:
       | No way. The ecosystem is just not there.
       | 
       | All the libraries - both open source and commercial that do a
       | million things - do not exist in the Lisp ecosystem.
       | 
       | Even in 2000
        
         | eatonphil wrote:
         | Armed Bear Common Lisp (Common Lisp on the JVM) may be the most
         | obvious choice if you prioritize ecosystem above all else
         | (which isn't a bad thing).
         | 
         | https://abcl.org/trac/
        
         | gumby wrote:
         | So true, but this class of comment always amuses me as in the
         | 1980s one of the (many) criticisms leveled at Common Lisp was
         | that its library support was _too big_.
        
         | lmilcin wrote:
         | The ecosystem is a function of popularity.
         | 
         | Lisp isn't very popular because, at least in my opinion, it
         | requires a relatively high level of maturity and experience to
         | be used effectively on nontrivial projects.
         | 
         | Every single project in Lisp (Common Lisp, Clojure) that I have
         | observed ended in a disaster mostly because developers could
         | not figure out what the strengths of Lisp are to realize the
         | benefits and then killed themselves with too much freedom.
         | 
         | Absent large enough number of success stories companies will
         | default on Java because it is good enough language to be able
         | to effectively realize typical enterprise application and dumb
         | enough to be used by a beginner dev, even at the cost of
         | boilerplate.
         | 
         | At least that's the official story. It is really difficult to
         | explain to business that you could do whatever they want with
         | 1/5th or 1/50th of the amount of code if you just used a good
         | language for it.
        
           | coliveira wrote:
           | I think it is a matter of education. Software developers
           | learn to program in traditional languages, and Lisp is just
           | an add on. So they really don't know how to use Lisp well.
           | Languages like Python and Java benefit from all the formal
           | education programmers have received in the concepts they use.
        
             | mypalmike wrote:
             | I think it's more fundamental than that. Reading and
             | writing Lisp means turning your brain into an AST analyzer.
             | Some programmers love this. Most don't.
        
         | dimitar wrote:
         | Now you have Clojure which runs on the JVM and interops nicely
        
           | Scarbutt wrote:
           | I wouldn't call it "nicely", there is lot of stuff that makes
           | it really tedious.
           | 
           | The bigger issue though is wasting time wrapping Java
           | libraries and most comments I see about Clojure interop talk
           | as if there is no cost to it.
           | 
           | Clojure has good foundations but the ecosystem never really
           | developed.
        
             | dimitar wrote:
             | You are not forced by the language to wrap libraries. In
             | fact "Programming Clojure" by some of the authors says the
             | following:
             | 
             | "Clojure embraces java and its libraries. Idiomatic Clojure
             | code calls Java libraries directly and doesn't try to wrap
             | everything under the sun to look like Lisp. This surprises
             | make new Clojure developers but is very pragmatic. Where
             | Java isn't broken, Clojure doesn't fix it"
             | 
             | So the ecosystem is a superset of the Java and JS
             | ecosystems, which are pretty developed.
             | 
             | I do agree that the cost of required to know 2 or 3
             | languages is real though.
        
             | finalfantasia wrote:
             | > The bigger issue though is wasting time wrapping Java
             | libraries and most comments I see about Clojure interop
             | talk as if there is no cost to it.
             | 
             | You are not forced to "waste time" wrapping Java libraries.
             | As a matter of fact, thanks to the interop features that
             | are well thought out, using Java libraries directly via the
             | interop is encouraged and preferred to wrappers (Java Time
             | API is a good example.) You may _choose_ to write wrappers
             | for Java libraries if they make consuming these libraries
             | in your code a bit nicer.
             | 
             | > Clojure has good foundations but the ecosystem never
             | really developed.
             | 
             | There's no separate ecosystem for Clojure(Script). The
             | established ecosystems such as JVM, .NET, and JavaScript
             | _are_ the Clojure ecosystem. The creator of Clojure(Script)
             | realized that it would be practically impossible to build
             | an ecosystem from scratch without significant investment
             | (Sun spent billions of marketing dollars alone in Java) and
             | thus deliberately chose to make Clojure(Script) a language
             | hosted on well-developed platforms such as JVM, .NET, and
             | JavaScript. Also because of this focus on being a hosted
             | language, he went to great lengths to ensure the interop
             | with its hosting platforms is as seamless as possible. If
             | you need an example for awkward interop with Java, try
             | Scala.
        
             | adamc wrote:
             | Thank you for articulating my (limited) experience. It was
             | a very leaky abstraction. I remember thinking "If this is
             | it, Python wins."
        
           | elwell wrote:
           | And ClojureScript to interop with JS ecosystem.
        
         | antonvs wrote:
         | The year after he wrote this, Norvig joined Google and decided
         | that Python was a good enough alternative. He posted a web page
         | about it, but I can't find it rn. However, here's a comment of
         | his on HN about it:
         | 
         | https://news.ycombinator.com/item?id=1803815
        
           | Jtsummers wrote:
           | https://norvig.com/python-lisp.html
           | 
           | This essay starts with the context of his choosing Python to
           | express what was formerly pseudocode.
        
         | dreamcompiler wrote:
         | 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
        
           | [deleted]
        
           | [deleted]
        
           | throw_m239339 wrote:
           | > 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 wrote:
             | I 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".
        
           | coliveira wrote:
           | But 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 wrote:
             | This 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.
        
           | AnimalMuppet wrote:
           | Sure, 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 wrote:
           | > 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 wrote:
             | Writing your own library also has the disadvantage that
             | 100% of the new hires have never seen how to use that
             | library.
        
               | jhgb wrote:
               | As 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?
        
           | ashtonkem wrote:
           | > 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 wrote:
             | > 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".)
        
               | ashtonkem wrote:
               | > I'm pretty sure that this was a criticism of NPM rather
               | than of any language.
               | 
               | > You're expected to know how to program if you use lisp.
               | 
               | Why would they say this if they weren't implying that NPM
               | users can't program?
               | 
               | > 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?
               | 
               | They don't, not directly. But it's the community for that
               | language that makes and supports these things, and
               | comparisons between these communities (and the libraries
               | they share) is a fair area of analysis.
               | 
               | > Except for retries which I would have thought were much
               | better integrated into CL then they could be in Java,
               | given resumable conditions.
               | 
               | They could, but they have not to my knowledge. In my
               | opinion the language's capability is far less important
               | than a community that values creating and maintaining
               | these libraries.
               | 
               | (I also think functional programming aficionados
               | drastically underrate how much Java has changed. There
               | are still issues I personally whine about, but they've
               | fixed a _lot_ of warts since the 1.6 days)
               | 
               | Retries in particular are one of those things that seem
               | obviously standalone, but are not. Having my retries
               | automatically expose micrometer counters has been a
               | godsend for monitoring. I'd like to see them
               | automatically expose opentracing information too, which
               | is an obvious area of opportunity for r4j.
               | 
               | > Is this a thing that something like asdf-system-
               | connections would solve in Lisp?
               | 
               | The technical ability to make libraries auto-configure
               | together is meaningless if the community doesn't have the
               | will to take regular advantage of it.
               | 
               | Frankly, Java the language is incredibly weak for this
               | kind of stuff, yet the Java _community_ is busy doing it
               | anyways. I'll remain unimpressed by interoperability
               | improvements to CL so long as the culture of "roll your
               | own libraries!" remains in place.
        
               | jhgb wrote:
               | > Why would they say this if they weren't implying that
               | NPM users can't program?
               | 
               | I'm pretty sure that numerous Quicklisp users can't
               | program either, but Quicklisp is manually curated while
               | NPM (AFAIK?) isn't so their code won't end up in
               | Quicklisp.
               | 
               | > You tell me.
               | 
               | I'm not sure what there is to say. The ASDF extension in
               | question allows you to write systems that get loaded when
               | a specific combination of other systems gets loaded, so
               | when there's some room for collaboration of multiple
               | systems, all such code naturally belongs into that
               | autoloaded system. It can assume the presence of all
               | required systems and hook them up together. Is this
               | something like what you're describing? Except for the
               | "discovered Micrometer on my class path" part of course
               | since you're not concerning yourself with any paths here
               | (that feels a bit brittle to me) but the notion of doing
               | something special when combining specific multiple
               | libraries is supported on system loading level.
        
               | ashtonkem wrote:
               | > I'm pretty sure that numerous Quicklisp users can't
               | program either, but Quicklisp is manually curated while
               | NPM (AFAIK?) isn't so their code won't end up in
               | Quicklisp.
               | 
               | This interpretation of GP's comments strains credulity.
               | 
               | As for the rest, I edited and expanded my unnecessarily
               | glib response. The technical ability you mentioned is
               | nice, but I will remain unimpressed until it sees wider
               | use. This is a shortcoming in the CL community, not a
               | shortcoming in the CL language.
               | 
               | I'll change my opinion once I see evidence of the CL
               | community coming together to value shared, reusable code
               | to accomplish common tasks.
        
               | jhgb wrote:
               | I guess I'm just a very credulous person, then.
               | 
               | Regarding asdf-system-connections, it would probably help
               | if this were core functionality of ASDF. I don't get why
               | it isn't yet, since it perfectly fits Lisp's overarching
               | concept of independently defined things cooperating (cf.
               | classes and generic functions, or multimethods). I might
               | want to ask some people about that.
        
               | ashtonkem wrote:
               | It might, but I doubt it will. "Roll your own libraries"
               | is so core to the CL community's self identity, that I
               | doubt it will ever change within my lifetime.
               | 
               | Honestly, if you want a modern Lisp experience, I'd
               | recommend Clojure. Clojure doesn't philosophically align
               | with my own preferences, but that community is very
               | active and very invested in solving common problems as a
               | community.
        
               | jhgb wrote:
               | I find Clojure awful both conceptually _and_
               | implementation-wise (the imposition of lowest common
               | denominators by JVM dependency really sucks here,
               | starting with lack of tail calls, but not ending there),
               | so that 's most likely not going to happen. I don't see
               | why the good things in Clojure should be impossible to
               | achieve in CL as libraries. You might argue that CL
               | community should be working on those, and you'd be
               | completely right.
        
               | ashtonkem wrote:
               | > I find Clojure awful both conceptually and
               | implementation-wise (the imposition of lowest common
               | denominators by JVM dependency really sucks here,
               | starting with lack of tail calls, but not ending there),
               | so that's most likely not going to happen.
               | 
               | You do you, but I personally would do some thinking on
               | why Clojure has eaten CL's lunch, despite your belief in
               | its inferior design and implementation.
               | 
               | (Edit: for the record I've worked professionally in CL,
               | Clojure, Java, and some others. I think Java is best, but
               | I think that your argument about Clojure being inferior
               | to CL is incorrect).
               | 
               | Also, tail calls? Really? Genuinely can't remember the
               | last time that mattered to me.
               | 
               | > I don't see why the good things in Clojure should be
               | impossible to achieve in CL as libraries.
               | 
               | I don't see why "impossible" would be a factor here. It's
               | not technology that's holding CL back here, but rather
               | what the community values and spends its collective time
               | on.
        
               | jhgb wrote:
               | > but I personally would do some thinking on why Clojure
               | has eaten CL's lunch, despite your belief in its inferior
               | design and implementation.
               | 
               | It's largely a similar reason why Java has eaten
               | Smalltalk's lunch (upfront environment costs have been
               | disastrous in the past for both Smalltalk and CL, and in
               | many ways they continue to be - Allegro, LispWorks,
               | VisualWorks are still expensive), plus the fact how
               | Clojure latched itself onto Java's large ecosystem. For a
               | large user base, inferior design and implementation don't
               | matter as much, as PHP has demonstrated amply, so why
               | should they matter here for a similarly large number of
               | people? They won't mind, although some other might.
               | 
               | > Also, tail calls? Really? Genuinely can't remember the
               | last time that mattered to me.
               | 
               | It's not the only thing deficient in Clojure, but I've
               | noticed that many fairly common patterns get
               | significantly more convoluted without them. If there's no
               | drawback to having them, why not have them? Oh, wait, I
               | forgot, JVM does not support them...
        
             | dkarl wrote:
             | > 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!
             | 
             | This was a bug in the Common Lisp community in the early
             | 2000s when I was getting started with it and looking to the
             | community for help identifying libraries for common
             | functionality. People were friendly and helpful, but they
             | gently pushed me to accept that reaching for libraries was
             | a habit I was bringing from other languages, and in Lisp I
             | could (and should) write my own implementations for things
             | like logging and date formatting. Sharing code was for big
             | hard stuff, not easy stuff.
             | 
             | Since then, it seems like people have put a lot of work
             | into moving the community forward from that romantic
             | approach to a more pragmatic one, but if I wanted to use
             | Lisp now, I would scrutinize that aspect of Common Lisp
             | very closely before getting back into it. I would lean
             | heavily towards Clojure instead.
        
           | nerdponx wrote:
           | > 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.
        
         | lisper wrote:
         | Actually they pretty much do, much more so now than in 2000.
         | QuickLisp has been a real game-changer.
        
           | nabla9 wrote:
           | How many of those 1500 QuickLisp libraries work together
           | without extra work?
           | 
           | I seriously tried to use Common Lisp for numerical
           | programming 10 years ago. It was faster and would have been
           | better platform for numerical programming than Python, R or
           | Julia. Just a great language. (Ross Ihaka had plans to port R
           | into Common Lisp to make R fast at one point)
           | 
           | The real problem was the lack of convergence of data
           | structures and conventions above the language standard.
           | 
           | Python has pandas tables and numpy arrays. R has Data frame.
           | Every numerical library for CL had their own conventions, and
           | ways to implement the basic data structure, Some used lists,
           | some just arrays, some had list of vectors, classes, structs,
           | property lists.
           | 
           | The impedance mismatch was not worth it. Either implement
           | numpy equivalent on your own or half of your code is data
           | massaging data between libraries.
           | 
           | --
           | 
           | Perlis epigram: "9. It is better to have 100 functions
           | operate on one data structure than 10 functions on 10 data
           | structures."
        
             | jhgb wrote:
             | > How many of those 1500 QuickLisp libraries work together
             | without extra work?
             | 
             | I'm pretty sure that due to the curated nature of code in
             | QuickLisp, there's really no problem with that. If
             | something doesn't load properly, it's a bug that you should
             | report.
        
             | varjag wrote:
             | > How many of those 1500 QuickLisp libraries work together
             | without extra work?
             | 
             | I'm not sure what kind of question is that. A whole bunch
             | of them? Certainly not worse ratio than many contemporary
             | or even modern languages. There's a lot less friction to
             | get any random GitHub CL project working than say a Swift
             | one.
        
             | dreamcompiler wrote:
             | >Either implement numpy equivalent on your own or half of
             | your code is data massaging data between libraries
             | 
             | I haven't tested this but here you go:
             | 
             | https://github.com/numcl/numcl
        
         | agumonkey wrote:
         | There was an article in the 2000s from a dude looking at a
         | graph library, java had 3 major players, non of them did what
         | he needed (generics issues or similar). He ended up rolling his
         | own.
         | 
         | Things are not so simple
        
       | neilv wrote:
       | > _the directions said to code as you would professionally, and
       | that means I should comment my work._
       | 
       | Were this a "professional" component/service, in perhaps the
       | majority of situations today, he'd probably separate his docs
       | into _two_ kinds of documentation: the committed interface /API
       | _what_ , and the internal maintenance _how_.
       | 
       | The docstring for `print-translations`, for example, conflate
       | these two kinds.
       | 
       | Incidentally, by 2000, Java had emphasized reuse API
       | documentation for a few years, with how it presented Javadoc for
       | both the core Java API and layered development, from the start.
       | 
       | By contrast, Lisp environments that exposed docstrings in IDE
       | hypertext, like Emacs did, did some doc things better than Java
       | for decades before, and are still really well-suited to army-of-
       | one genetically-enhanced supersoldier Lisp hackers.
       | 
       | Enterprise development, SaaSes, microservices, large systems with
       | multiple teams, etc., were arguably better off heading in the
       | more software engineering direction that Java was going.
       | 
       | (Which is not to say that Lisps can't do the what&how docs
       | separation. I've done a few embedded API docs things for Scheme
       | and Racket that initially were inspired by Javadoc, Perl, and
       | some of the less-commonly-used embedded docs setups for other
       | languages. And have worked on a couple large Lisp systems that
       | arguably wouldn't have been possible in a language without some
       | of the Lisp family's other still-unusual strengths, nor without
       | the highly-skilled developers that Lisps seem to attract
       | disproportionately.)
        
       | dang wrote:
       | Some past threads:
       | 
       |  _Lisp as an alternative to Java (2000)_ -
       | https://news.ycombinator.com/item?id=26720403 - April 2021 (94
       | comments)
       | 
       |  _Lisp as an Alternative to Java - Faster, More Productive_ -
       | https://news.ycombinator.com/item?id=21899854 - Dec 2019 (1
       | comment)
       | 
       |  _Lisp as an Alternative to Java (1999)_ -
       | https://news.ycombinator.com/item?id=12197131 - July 2016 (103
       | comments)
       | 
       |  _Lisp as an Alternative to Java (2000) [pdf]_ -
       | https://news.ycombinator.com/item?id=9045574 - Feb 2015 (21
       | comments)
       | 
       |  _Lisp as an alternative to Java (2000) [pdf]_ -
       | https://news.ycombinator.com/item?id=8446368 - Oct 2014 (55
       | comments)
       | 
       |  _Lisp as an Alternative to Java_ -
       | https://news.ycombinator.com/item?id=3447101 - Jan 2012 (37
       | comments)
       | 
       |  _Lisp as an Alternative to Java [PDF]_ -
       | https://news.ycombinator.com/item?id=61320 - Sept 2007 (9
       | comments)
        
         | sophacles wrote:
         | Thanks dang - i appreciate when you post these, particularly on
         | perennial topics: it's interesting to look back and see how the
         | crowd's wisdom has(n't) changed.
        
           | [deleted]
        
       ___________________________________________________________________
       (page generated 2021-08-02 23:01 UTC)