
Lisping at JPL (2002) - sandinmyjoints
http://flownet.com/gat/jpl-lisp.html
======
maliker
I've read this story a couple times as it's popped up on the internet in
different places. I've enjoyed it each time because it promises that lisp is
an uber-powerful and easy (?) language.

I'm always curious though: what's the other side of the story? Why is lisp
always rejected?

I started programming seriously (for money) in 2009, and when we needed a
language we went with python because it had better math/science libraries than
Java and much more libraries in general than clojure/lisp/ocaml. I confess I
like the functional languages and like using some of their features in python.

Was the no-libraries dealbreaker for the "pure" functional languages also true
in 1999, which led google to java? Or maybe there are complex meta-programming
bugs you can generate in the functional languages (and elsewhere) that are the
dealbreaker? Or what?

~~~
closeparen
Languages like Lisp, APL, and Haskell reward extraordinary skill with
extraordinary power. If you're a researcher or an early-stage startup founder,
that's great. You _want_ your little band of geniuses to have the maximum
possible leverage.

But if you're an engineering leader at a large company, the _last_ thing you
want is an asset in your portfolio that only extraordinarily skilled people
can work on. What if they quit? What if your company's stature declines and
you can't attract such people anymore? What if a more pressing problem comes
along and you want to deploy them elsewhere?

So we get languages with short learning curves and low ceilings (Go!) instead.

Except in performance critical contexts, where it can’t be helped, but C++
already won that one.

~~~
zbentley
I don't think that extraordinary skill and power are linked at the language
level. Within a rounding error, an "extraordinarily skilled" developer can
probably be just as much of an asset to a company with an "extraordinarily
powerful" language as they could with an "ordinarily powerful" (read:
mainstream) one. Now, super-skilled folks might _like_ playing with Lisp or
Haskell or what-have-you (and if it affects your ability to retain them and
get value from them, you might want to let them), but their skilled-ness is
usually transferable to other languages if the need arises.

~~~
closeparen
Hm. Do you think that the expressiveness of the language you’re working in
doesn’t actually influence the scale of what one person can build with it?

Or that mainstream languages already have the maximum expressive power and
these are just lateral moves?

------
proximitysauce
I really feel like they should teach LISP in elementary school. It has
extremely simple rules to get started and helps people intuitively understand
programming concepts. Maybe an updated The Little Schemer style curriculum:

[https://www.amazon.com/Little-Schemer-Daniel-P-
Friedman/dp/0...](https://www.amazon.com/Little-Schemer-Daniel-P-
Friedman/dp/0262560992)

~~~
cocktailpeanuts
You don't understand why kids would want to learn programming. At least those
who do, want to learn because they can build cool things they can show off to
friends.

It's not about whether a programming language is simple or not. (I actually
think LISP is not as simple to understand as imperative languages, unlike most
nerds think) It's about what you can build with it.

For example, my first experience with programming was to build a game. If
someone had tried to force-teach me LISP, it would have actually had opposite
effect on me because then it would be no different from someone trying to
force teach me some boring subject I have no interest in. The best way to
teach something is to provide gratification. LISP is only gratifying to nerds
who marvel at its "elegance", but it has no ecosystem which has tons of cool
projects like fancy graphic engine or fancy game engine. It's just a "cool"
language to nerds.

DON'T teach your kids LISP if you want them to love programming. Teach them
JavaScript or Python, or anything they can build something tangible with which
they can show off to their friends.

~~~
invalidOrTaken
This really is true. I learned Logo in middle school, didn't want to be a
programmer, took a Java class in college because it was required for actuarial
science, then read some PG essays.

Lisp should be forbidden to young programmers, precisely so they'll go seek it
out.

~~~
YawningAngel
Yeah but they won't. JavaScript is the most popular programming language
precisely because people in general use whatever is put in front of them.

~~~
strken
JS is popular because it runs in browsers and therefore has a thriving
ecosystem with lots of educational resources, lots of opportunity to show your
work to other people, and lots of jobs, not because it's taught in schools.

Examples of educational languages would be Alice and Logo, and they're both
pretty bad at actually doing anything.

------
zwieback
LISP is weird - I used it a lot in the late 80s and enjoyed it a lot but then
moved on and, looking back, never missed it. I think it has a hypnotizing
effect on programmers brains, feeding the endorphin feedback cycle, but
ultimately there are just too many damn parens.

~~~
porknubbins
I always got a rush from solving problems in LISP but then realized I could
much more easily solve the problem in an imperative language without the
baggage of thinking through multiple levels of recursion wrapped into a
function. If that feeling of accomplishment is because you’re succeeding at
doing something clever I question the utility of the language. Maybe just down
to what I’m used to.

~~~
leetrout
I don’t hear a lot of fans of FP and friends admit this very often.

I think there are a lot of great uses of the patterns that come out of
s-expressions, for example, but I would still choose Go, Python or JS /
TypeScript as my daily driver.

~~~
flavio81
>I think there are a lot of great uses of the patterns that come out of
s-expressions, for example, but I would still choose Go, Python or JS /
TypeScript as my daily driver.

There's no God.

------
tzs
> Well, not quite -- I did write the billing system, including a pretty wizzy
> security system that keeps the credit card numbers secure even against
> dishonest employees.

Are details of this publicly available?

The topic of storing credit card numbers is one of those for which searching
returns a lot less information than one might expect. If you need to do this
yourself, as opposed to using some third party vault/tokenization system,
there doesn't seem to be a lot out there.

~~~
lisper
> Are details of this publicly available?

Yes and no. No, there was never anything published about the Google biller
encryption system. But yes, there is now a lot of information available about
encryption. The state of the art has advanced a lot in 20 years.

------
AnimalMuppet
Running a REPL on a spacecraft that is 100 million miles away? I've seen some
slow response times, but that probably takes the cake. Very cool, but
_horrible_ latency.

~~~
dreamcompiler
I saw no mention of a REPL in the story.

~~~
drongoking
Sure, just not the abbreviation. "Having a read-eval-print loop running on the
spacecraft proved invaluable in finding and fixing the problem."

I shared the reaction, "wow, must've been glacially slow"

~~~
dreamcompiler
Point taken. I missed that.

~~~
lispm
Actually the spacecraft being so far away was the reason to put some Lisp
system on it. That was one goal of that mission. The software controlled the
spacecraft and did not need detailed programs what to do. It would figure out
what to do from higher-level task descriptions and what it sensed. Basically a
spacecraft as a semi-autonomous robot. Since it was running on top of Lisp,
actually LispWorks, it could also be debugged/reprogrammed at a lower level.

------
ngcc_hk
Java is COBOL of our era. Soulless, business, a lot of typing and searching.
You just keep on fixing it. It did advance a bit but ... sigh. Clojure
invented too late I supposed.

Sad it goes to such places.

~~~
fierarul
Not sure why Java gets so much hate. I think it's some PTSD from bad corporate
jobs.

It's quite good that we have a rather performant, cross-platform, GCed
language.

I also didn't feel any epiphany while learning Clojure. I think Haskell is a
much nicer language for some tasks, but going full-Haskell seems near
impossible without a PhD in some obscure academic niche.

My perfect programming language would be a Jupyter Notebook-like thing where I
can just add sections in whatever makes sense. Write some imperative Java, put
a small Haskell block for a function that recurses nicely, put a Minizinc
block to solve a constraint... Of course, nobody except the original author
would feel comfortable with those exact choices... which explains why
companies must standardise on _something_.

~~~
rakoo
This sounds like a UNIX where you could write snippets in different languages,
have enough wrapper to let those snippets eat stdin and write on stdout, and
plumb it all with pipes, organized in a shell script. That was the original
dream anyway. Too bad the weak performance of "programs as functions" makes it
all barely usable unless you programs are long-running

~~~
fierarul
It kinda sounds like using UNIX pipes but you would also need a context of
global variables and running threads / processes. In my vision the blocks
would share memory / variables.

~~~
rakoo
That is what the shell script is for: managing the lifetime of said processes,
and storing any globals you might need.

The real issu with this approach in my opinion is that a stream of bytes is
just too generic, and the necessary (de)serialization is going to eat a lot of
CPU for not useful task

------
dleo
Interesting article. No knock on the author, but paste this in the console to
make it a bit easier to read:

    
    
      document.body.style.maxWidth = '50%';
      document.body.style.margin = '5% auto';
      document.body.style.fontSize = '120%';
      document.body.style.lineHeight = '150%';

------
Rochus
Here is another interesting article by Garret (i.e. Erann Gat):
[http://www.flownet.com/gat/papers/lisp-
java.pdf](http://www.flownet.com/gat/papers/lisp-java.pdf)

------
AceJohnny2
(2002)

Author is @lisper around here. They've mentioned this story a few times.

------
haecceity

      Me:  I'd like to talk to you about something...
      Him: Let me guess - you want to use Smalltalk.
      Me:  Er, no...
      Him: Lisp?
      Me: Right.
      Him:  No way.
    

Let's meet halfway and settle for smalltalk.

~~~
ken
Ergo, Java:

"We were not out to win over the Lisp programmers; we were after the C++
programmers. We managed to drag a lot of them about halfway to Lisp." \-- Guy
Steele

------
FpUser
I think it is not so much a testament to Lisp as to a talents of a people who
wrote the software. I've met some of those. Give them anything and they'll
still produce stunning results. Those were real doers. Can't even call them
programmers, they had something better: brains size of f..ng Manhattan.

~~~
yogthos
On the other hand, these talented people chose Lisp over other options. Maybe
their talent is also what let them recognize the value of Lisp, and that they
would have a much harder time solving those problems with anything else.

~~~
lisper
I'm the author of the OP so I can speak to this with some authority: I
discovered Lisp very early in my career and I stuck with it mainly because I'm
lazy. I can get things done in Lisp with 1/10th the effort it would take in
any other language, and it just steams my clams to have to do extra work when
I know there's a better way.

~~~
westoncb
> I can get things done in Lisp with 1/10th the effort it would take in any
> other language

Should that be read as 1/10th the effort it would take _you_ in any other
language (because of your long history with lisp), or do you suppose it would
apply to arbitrary other competent people?

Like let's say we could make a few clones of you and start them all out on
identical lives except that their early choice of language is different: one
gets Haskell, another gets Forth, another Python, Ruby, etc.

In this scenario you're saying you'd bet on the clone who went with Lisp being
most productive?

~~~
lisper
That's a good question. The honest answer is I don't know. It's hard to do
controlled experiments on this sort of thing.

I can say this though: the ability to meta-abstract the language is a HUGE
lever that no other language has. And one can also observe subsets of Common
Lisp being continually re-invented in other languages. So CL must have gotten
something right.

~~~
RodgerTheGreat
Doesn't seem that special to me. Forth has a totally different (but at least
as powerful) set of mechanisms for metaprogramming. REBOL, too. And hell,
these days even languages like Rust and D give programmers first-class
capabilities for compile-time metaprogramming.

It's disingenuous to imply that every other language is simply "reinventing
Lisp". The Lisp community itself spent decades figuring out elements that are
now considered basic, like lexical scope. Lisp is just a ball of mud that can
absorb any idea in its vicinity, and Lisp programmers like to retcon history
to make every idea theirs.

~~~
dreamcompiler
McCarthy invented conditionals. Seriously, if you've ever typed "if" into a
program you owe a debt to Lisp. Likewise garbage collection. Lisp didn't
absorb that; Lisp _invented_ it. Likewise dynamic typing, first-class
functions, recursion, etc etc.

It's not even slightly disingenuous to imply that every other language is
simply "reinventing Lisp".

~~~
RodgerTheGreat
This kind of fallacious blustering is exactly what I'm talking about.

"if" statements existed in FORTRAN (hell, even FLOW-MATIC), which preceded
Lisp. The earliest Lisp implementations didn't have garbage collection, and
while mark-and-sweep was being developed for Lisp there were other high-level
peers like APL experimenting with similar ideas. Same deal for dynamic typing.
First-class functions were explored in the Lambda Calculus decades before Lisp
programmers applied them, and mathematics has known about recursion since
antiquity. Programmers were expressing recursive algorithms in machine
language in the 50s.

None of this sprung fully-formed from the head of John McCarthy: Lisp borrowed
from a rich preceding tradition of mathematics and computer science, and the
rest of the world wasn't twiddling their thumbs while McCarthy worked on his
machine-algebra system.

~~~
dreamcompiler
The first Fortran had arithmetic IF. Fortran didn't get logical IF (the
structured if-then-else that every language uses today) until McCarthy
proposed it.

 _Of course_ recursion and first-class functions were known to mathematics.
But we were discussing programming languages, not mathematics. And
specifically high-level languages, back when there was a lot of skepticism as
to whether they were even a good idea. Fortran got there first. Lisp was
second and provided the existence proof that abstract features Fortran didn't
even attempt were nevertheless viable. And then it went on to become the
standard language of AI.

Sure, there was a lot of creativity happening back then, and Lisp didn't cause
that creativity to happen. But being the second-oldest programming language
and the first viable implementation of so many high-level features made Lisp a
crucial development in the history of computing that's still quite relevant
today.

------
ineedasername
Lisp aside, I found something tragic, or at least a terribly tragic phase to
their career: They stayed at JPL because it was a more meaningful place to
work and abhorred the possibility of Java drudgery. Fine, good.

Then they went to Google, as it appeared different from the corporate
bureaucratic programmer = widget approach, only to be charged with
implementing a massive Java project. So, irony.

But the real tragedy was that it was all for _Ad Tech_. Presumably tired of
the same JPL work, they not only end up using a hated tool, but also working
on something that seems on the opposite end of the "meaningful work" spectrum.
Adding to the tragedy, they could have taken any number of development jobs
that happened to use Java and yet pushed the needle forward on meaningful
work.

I really regret the last 20 years of the best & brightest being drawn into the
modern equivalent of Mad Men advertising firms. I do however take a fair bit
of solace in the fact that these massive companies and massive systems _have_
resulted, if only as a side effect, in excellent technology that allows
corralling and orchestrating massive amounts computational power in a way I
thought a bit too "utopian" when "utility computing" was being bandied about
in the 90's. Just kind of wish some other monetization model had emerged.
Freemium looked promising for a while, but it turned out there was still an
infinity of user acquisition friction in between "free" and "extremely cheap".
Oh well. I still have hope for the next decade or so.

~~~
xixixao
I guess it’s a suicide to point this out on HN, but not everyone thinks Ad
Tech is the opposite of meaningful work. I think it’s a very “limited
imagination” point of view if you a) can’t think of anything less meaningful
that people spend their time on, b) can’t think of any upside that Ad Tech
brings. I’m happy to elaborate, having worked on ad tech for over 3 years, in
case this comment doesn’t get downvoted into oblivion.

~~~
GoOnThenDoTell
I honestly couldn’t think of a positive thing for adtech. Do share

~~~
xixixao
1\. Ad tech is a product which ~10 million businesses and people online are
willing to pay for (over $100B/year), for several years now. It’s extremely
unlikely that it provides no positive effect to all these customers. 2\. Ad
Tech is trying to make advertising experience better (even if it might be
failing at the moment). People working on it believe that more relevant ads
are a better experience (or less annoying), than completely irrelevant ads
(which you can easily find on traditional TV or in print media). 3\. AdTech
(which GP kinda mentioned) pays for a lot of things that are available for
free and likely wouldn’t be otherwise, including open source software
development (Angular, React) and technology such as video calling or video
publishing.

~~~
andrepd
_1\. Ad tech is a product which people are willing to pay for. It’s extremely
unlikely that it provides no positive effect to all these customers._

I'm talking about positive effects to "the world" / society / the public at
large. Obviously not to the people getting their pockets filled.

 _2\. Ad Tech is trying to make advertising experience better_

No, they're trying to make more money. Whether they do so by making the
advertising "experience" (I loathe that freaking word) better or worse it's
irrelevant.

 _3\. AdTech (which GP kinda mentioned) pays for a lot of things that are
available for free and likely wouldn’t be otherwise_

Slavery pays for a lot of cheap or free things as well, so that's not a really
good argument in of itself, is it?

~~~
closeparen
>I'm talking about positive effects to "the world" / society / the public at
large. Obviously not to the people getting their pockets filled.

People buying stuff from those businesses must at least think they are
benefitting from the transactions in some way.

~~~
bentcorner
I ad-block everything I possibly can, or pay for non-ad versions of media, and
I don't think I'm missing out on anything.

Obviously I can't block _everything_ , but I'm having trouble coming up with
some kind of improvement to my life that not ad-blocking would bring me.

------
imglorp
I'm fascinated by two questions that both seem to suffer from a lack of data.
What's the best way to introduce programming is one. There should be tons of
studies and data on this, to end the discussion, no?

What to feed humans is the other.

------
molteanu
> imperative languages with poorly defined semantics like C and C++

What does he mean by this? Is this related to the C "undefined behavior" or is
the reference here to something which affects imperative languages in general?

~~~
macleginn
I guess it's mostly about many things not having any clear meaning and
depending too much on conventions. Error reporting is a celebrated example: a
C function that encountered a problem may return null or may return -1 and
write null to the pointer passed to it, or return 0, if even the basic
conventions are not followed, etc. All these things do not have any in-built
meaning. Compare this with the Go system of returning a value and an error
together. Comparing err to nil makes some intuitive sense, comparing a
returned value of a function with null is, by itself, a meaningless operation.

------
rahuldottech
Writeup is from 2002, and the year should be included in the title as per the
guidelines.

------
cbanek
This just reminds me of how many times I've been told things like "you can't
use that java code that is open source and working and does exactly what we
want - we're a python shop!" and other such nonsenses.

I'm always amazed at how people have strong feelings for the tools/languages,
rather than what they do and how they can help you. Even in this example, the
Google person didn't even ask what they wanted to use Lisp for.

People I guess just really like rewriting software in different languages?

~~~
rb808
Ugh, you haven't experience pain until you've worked on a project which has a
bunch of different languages because Johnny wanted to use Scala, Freddy loved
PERL and Sally was learning Elixir on the side. They all left and the new team
has to figure out how all these stupid languages even build.

~~~
cbanek
I didn't say "let everyone go off and learn a different language and develop
new code in it," obviously that is ridiculous, and would get out of control as
you said.

What I did say was there's a working piece of code out there that someone else
has already spent time getting to work, but we can't use it because of the
language it's written in. For example, I've had problems getting people to use
Jenkins because it's written in java. Not that they were trying to write
plugins or do anything internal to Jenkins, they just didn't like it because
the language it was written in.

~~~
mst
I despise Java but also in terms of reasons I might choose to _not_ use
Jenkins, "it's a java app" is fairly near the bottom of the list.

------
zerr
I'm glad that Lisp is not used in spacecraft control system.

~~~
exdsq
Why?

~~~
dboreham
Leave out one parenthesis and...you miss Venus?

~~~
coldtea
This isn't even worthy of Reddit

~~~
dehrmann
reddit was originally written in Lisp.

~~~
coldtea
I mean the parent comment, not TFA

