
Home at Last, or, The Last Programming Language I Will Ever Learn - fogus
http://colinsteele.org/2010/10/home-at-last-or-the-last-programming-language-i-will-ever-learn-lisp-clojure/
======
wccrawford
So you've decided to give up programming, then? Because otherwise, it's not.

~~~
swannodette
Considering the glacial place at which the industry adopts new languages and
paradigms and the trend for weaker languages to tend towards Lisp in terms of
features over time, I dunno ... it may be the last interesting production
language he learns in his lifetime (Lisp is 50 years old after all and many
people are still just now really discovering it).

For me the only other trending language that seems to offer dramatically new
ideas for production oriented projects is Haskell. And quite of few of its
great ideas have been folded into Clojure.

~~~
thwarted
Who is this "industry" you speak of and why are you limited to what it
dictates you use?

But seriously, I know what you mean. Certain, enterprisey shops will always
prefer things like Java because they have this perception that it's a "save"
language because it is established, meaning they'll always be able to find
someone to bang on their Java code. These places, in terms of the technology
they use, are largely uninteresting in this context, however. _If something
comes along and is better, start using it and spreading the word, and help
lessen the influence of the legacy on new projects._ Eventually Java, etc
programmers will be in high demand to maintain old, legacy projects and to
help fix the Y2.1K bug or something of the sort.

~~~
thwarted
Oops, I meant "safe" rather than "save" there. Past the limit to edit.

------
bluesnowmonkey
> Because, you see, as soon as I saw Java, I knew I hated it. I have never
> written even a single line of Java code, not for money, and definitely not
> for fun. I think that I already knew, deep down, that it would change me, as
> a coder. For the worse.

That's just like how I've never been to Argentina, but I saw a picture of it
in a magazine and knew for sure that I would hate the country. I had a feeling
deep down.

/sarcasm

~~~
tiles
Except Java has a poor reputation (on the "fun to program in" scale) and not
much in the way of intellectual growth for a programmer (in terms of new,
effective paradigms for coding). This is a generalization of the opinions I've
read about it, in addition to my own experience.

It's like hearing all your friends saying how much they hated Argentina, and
how you would too. They might be wrong, or not, but you still trust them
because they think the same way as you.

~~~
aaronblohowiak
Java as a language is quite boring. Java as an ecosystem is interesting; its
tooling, libraries, and business-centric culture are worthy of respect and
some thought, even for us rubyistas. Some of the most generic software has
been written in Java. In the flexibility vs expressivity spectrum, many Java
libraries pick flexibility and it is neat to see how that is accomplished.

------
Rantenki
So. Torn.

Lisp is awesome, kudos for realizing this and falling in love with it.

A bit weird to write a story about the awesome new language you learned, and
focus on how hard you can slam the doors on ever learning again.

------
cageface
This is exactly the kind of cultish triumphalism that put me off Common Lisp.
The inability of many lispers to see lisp, like all languages, as a collection
of design tradeoffs instead of the _one true way_ just clashed too sharply
with reality for my tastes.

It's certainly true that lisp has been an important testbed for many concepts
that have later made their way into the programming mainstream, but I suspect
that many of the traits that make a good research language may actually be
undesirable in a production language.

~~~
tomjen3
Then I urge you to look at it again - who cares what the users believe? What
matters is what you get out of it.

~~~
cageface
I hacked a lot of CL back in 2002-2003 and I've dabbled in Clojure lately.
Clojure has a lot of promise but I'm waiting for some of the rough edges to
get smoothed out (stacktraces in particular).

~~~
gphil
I agree about Clojure's rough edges. I'm a beginner, and when something goes
wrong it is very opaque to me what happened. That said, I do enjoy the
language--especially the baked-in data structures.

------
leif
I had guessed this was about clojure before I followed the link, somehow, I
think because in part, I feel the same way. Is this common? Anyone else feel
like clojure is, or is on the path to becoming, the perfect language?

I won't say I'll never need anything else or will stop learning new languages,
but it feels...complete. I still use C for algorithmically simple, memory- and
time-sensitive tasks, and I still use perl and awk for line-oriented text
munging, but I feel like all the other languages I used to use for less
specific tasks have fallen by the wayside. Java, C++, Python, Ruby...I don't
really have a reason to touch these anymore. Am I the only one?

(all this aside, I swear, one of these days I am going to get my f __*ing head
around type systems and get a workable understanding of haskell and scala)

~~~
strlen
You don't need to fully understand Scala's type system to write working code
in it. The features like Higher Kindred seem intimidating, but you only have
to deal with them as a library implementer (and in many cases the syntactic
sugar e.g., %> helps gloss over a lot of it).

Unlike with Haskell, type classes ("Higher-Kindred types" in Scala) are just
_one_ way to have a certain kind of polymorphism, you also have a more
traditional type of polymorphism through traits and sub-classing.

------
BarkMore
It's probably not the last language that he will ever learn. If he's going to
build a major project in Clojure, then he's going to need learn about Java.

------
harold
I think the phrase should be: "The last programming language I will ever learn
- until the next one comes along."

------
mikeryan
hmmm ... kind of a long road to a small house.

~~~
unoti
Yeah. A more detailed post on the same topic for those interested:
<http://thecleancoder.blogspot.com/2010/08/why-clojure.html>

------
swombat
A bit light on detail?

How is that worth posting?

~~~
sz
Sometimes the value is in the discussion it generates.

------
noglorp
That Paul Graham quote \- “Programming languages are not merely technologies,
but habits of mind as well.”

Reminds me of an excellent Dijkstra quote, from A Discipline of Programming \-
"A most important, but also a most elusive, aspect of any tool is its
influence on the habits of those who train themselves in its use."

~~~
jforman
Spoken languages affect our thought patterns:

<http://www.newsweek.com/2009/07/08/what-s-in-a-word.html>

It seems a natural extension that computing languages affect our logical
thought patterns.

In college, I took a class on intelligence testing (I gave a lot of IQ tests
that semester). The prof told me that his experience was that computer
programmers score noticeably higher on the Verbal IQ scale, moreso than on the
Performance IQ scale (these are the two scales the WAIS is divided into).

------
jodrellblank
Why does it seem that people find LISP first, and then do post-hoc
justification by spoken language analogy?

------
mark_l_watson
I am old enough (late 50s) that settling down on just one programming language
would not be a bad strategy if I was not a consultant. Maybe.

Over the last several years, I have been hoping to mostly just use Ruby for
future work, but in the last 5 years almost half of my consulting jobs used a
Lisp language (Common Lisp or Clojure) and the rest mostly Ruby, with some
Java.

The Clojure language and libraries are very nice, and I am sure that problems
with the development experience like poor stack traces (good work already in
progress), etc. will get ironed out soon.

If you are an entrepreneur with your own product or web services based
company, then pick one great language and use it until a better great language
comes along.

For those of us who enjoy consulting, we will mostly use what best fits
customers' needs.

------
kunjaan
Wait what was it about Clojure that he really liked?

------
Goladus
strongly recommend not stopping with clojure. Find other languages outside
your comfort zone, that require you to learn about different technologies and
different ways of thinking.

You should know at least one language with a strong type system that's closely
modelled on the hardware environment. (eg C or Java)

Databases and SQL.

OS-level tracing/debugging languages like Dtrace or SystemTap.

Puppet/system administration

Javascript/Browsers

Mobile/? (I don't know much about phones)

An ML-style language.

------
cinch
similar situation here. except i picked Common LISP.

for a couple of reasons: speed of your app; SLIME is great; more documentation
(books); a long history :)

~~~
bitsai
Just wanted to point out that you can use slime with clojure as well:

<http://github.com/technomancy/swank-clojure>

------
johnmw
>And LISP, as it turns out, isn’t a programming language. LISP is a way of
mind.

I wish could find a good post that doesn't just say this, it really makes me
_get it_. Any suggestions?

Edit: Thanks unoti - <http://news.ycombinator.com/item?id=1845104> , I'm going
to be reading this next <http://mitpress.mit.edu/sicp/>

~~~
cylinder714
I like to refer people to The Road to Lisp Survey Highlight Film
(<http://wiki.alu.org/rtl_highlight_film>). If it's down, Google for the
cached version.

------
bdesham
Like many, I've been meaning to learn [some kind of] LISP since I first heard
of it. I use OS X, though, and it seems Apple has decided that Java is on its
way out. Should I be worried about Java-related incompatibilities or hassles
in the future if I start writing a lot of Clojure code?

------
chailatte
The punchline is...."So about six weeks ago I picked up Cloure" - If you're
linkbaiting your article, you should always spellcheck.

~~~
ynniv
_flag_. Not something that I generally do, but (a) clojure won't be in any
spellchecker, and (b) your snark adds nothing to the discussion. If you wanted
to say "and that language was clojure", you could have left it at that.

~~~
ghotli
Not sure why this is being down voted. It was a comment that added absolutely
nothing to do the discussion.

------
TheSOB88
Poetic, but not particularly informative.

------
sgt
Great article!

------
the-b
Obligatory to post: <http://xkcd.com/297/> (Lisp Cycles)

~~~
silentbicycle
Looks like you're new to HN.

xkcd is _never_ obligatory.

------
qoobster
Of course this would make its way to the front page of PG's website...

------
mmphosis
_My mentor_ (Art Mellor – scumpa.com) _at Cayman Systems gave me two pieces of
advice that have stayed with me to this day:

• When you start your company, start it by doing consulting. (See, he already
knew I’d caught the Bug.) Get paid to learn the space and develop for your
customers, using their expertise and funding, and then turn all that into a
product.

• Learn LISP._

------
pavel_lishin
"When you start your company, start it by doing consulting. (See, he already
knew I’d caught the Bug.)"

Maybe I watched too much Wire, but when I read "caught the Bug", I assume he
means HIV.

