

What programming language has made you the happiest? - blanketman
http://thomasalwyndavis.com/2010/10/what-programming-language-has-made-you-the-happiest/

======
SpaceHobo
Before I explain my answer, the reader must understand that I'm a pretty
satisfied Python programmer now who wouldn't go back. But in terms of actually
bringing happiness to me in one brilliant burst of energy, there's only one
language in my history that achieved this:

Perl.

Oh sure I detest Perl, now. It provides you with too many ways to make code
that fails to express the problem clearly to another programmer, and I'm long
past believing that code can survive having only a single mind contemplate it.
But it came at a perfect moment for me.

I had spent my childhood dreaming of science fiction futures and tinkering
with electronics and computers and always feeling like I was missing some last
little a-ha that could make it click and put all the facts in my head together
toward acts of creation. I hung out on BBSes with cocky BBS software authors
and hackers and really wanted to be part of that crowd. I figured I would take
a course at some point and they'd lead me by the nose and by some sort of
socratic process I'd suddenly snap and be just like these folks.

So at this point C was being poo-poo'd in favor of C++, and C++ was rapidly on
the rise as the premier industry OOP language par excellence. So I tried to
learn it. I enrolled in a CS program that taught C++, and made some small
progress, but not enough to work on the projects I found interesting. I raced
ahead in the assignments and read ahead in the book and found myself in an
inevitable slide down the terrible valley Louis Brandy once wrote about:

[http://lbrandy.com/blog/2010/03/never-trust-a-programmer-
who...](http://lbrandy.com/blog/2010/03/never-trust-a-programmer-who-says-he-
knows-c/)

Further, no one had ever explained to me the true role of libraries in
programming. I saw an entire empty field ahead of me, thinking I'd have to
write my own pixel display routines and modem drivers and input handlers in
C++ just to get to a point where I could BEGIN to express the problems I was
trying to solve. All the textbooks bragged about how I could do my bone-stupid
corporate spreadsheet applications in C++ and have them run on PCs and
"mainframes" alike, and not one said "chillax bro, there's a bunch of
libraries for the low-level stuff."

I entered into a serious depression, partly because this utterly absurd and
inconsistent language just felt like something I'd never truly understand, and
partly because working in it made me feel like I actually didn't have it in me
to stomach coding.

At my university there was an install disk that wiped a PC and flattened it
with a new OS image off of an NFS share or some such. I asked the author how
he wrote it and he explained it wasn't hard bit-banging work but just making
use of Unix's features, mostly emulated by the Perl 4 interpreter he'd
included on the DOS boot disk. I looked into it.

Going from C++ to Perl was the single greatest ramp-up in ability I've ever
had. Suddenly I was writing system scripts, games, Internet-connected BBSes,
library database programs, and all sorts of things just to solve any problem I
encountered. The two Perl books at the time, camel and llama, had great prose,
great examples, and a catalogue of library functions that reassured any fears
I had of having to re-invent the wheel. Even today I feel like those books do
better than most for teaching new programmers.

Dynamic typing was one thing, rich core libraries yet another, but the goofy
second-guessing nature of Perl syntax kept the house lights low long enough
that I never felt incapable or insecure. It wasn't too long before I felt
cocky and disdainful of C++. It just didn't feel expressive enough to me.

I think I must have stuck with Perl for five years before slowly jumping ship.
On the bottom I was getting better at bourne shell and awk, and on the top I
was getting better at Python. I was also finding my brain able to accept more
novel systems like Lisp and Forth and Prolog.

I'll never use Perl again if I can help it, but I have it to thank for getting
me out of a real crisis in my youth. That nutty Jackson Pollock painting of a
language is responsible for all the programming happiness I've had since!

~~~
silentbicycle
My experience is almost identical to yours. Taught myself BASIC from library
books as a kid, then C++ as a teenager. When I started using Linux and
discovered Perl, it was an _amazing_ spike in productivity. I eventually
switched to Python (and then a bunch of other languages), but Perl got me out
of a C++ rut.

Nowadays I'd rather use C than C++ (typically with Lua), and have learned
quite a bit from Lisp, Prolog, Forth, ML, etc. as well, but the sheer
_immediacy_ of Perl and vi was a revelation to a kid used to Borland Turbo C++
and its IDE.

------
zbanks
Haskell, but not programming in it.

Haskell really drilled in the concept of functional programming. As much as I
struggle to write 'normal' code in it, the computational aspects are really
fun to write.

 _However,_ after a while, I began to incorporate functional programming
concepts into other languages, notably python & javascript.

Python already has functional elements built-in, such as map, reduce, filter,
lambdas and list comprehensions. Its cool to replace for loops with long "one-
liners"; it creates a different perspective of a list.

Javascript, on the other hand, is less blessed than python. Closures do help,
however. Although JS 1.6 & beyond support Array.map, folds, and filters, it's
hard to rely on them. After writing my own libraries enough times, I started
using ( <http://documentcloud.github.com/underscore/> ) Underscore.js, if not
JQuery, in every project. By its very nature, looping over DOM elements lends
itself very very well to functional style programming.

------
Homunculiheaded
I know that since 'the good parts' it's almost become the ironic t-shirt of
the programming world, but I really love JavaScript, here's some of my
reasoning:

1\. By now everyone knows of JavaScript's functional features, which I must
admit are awesome, but many other languages share these. But what few
languages share regarding these is they're a very common part of standard js
programming. A lot of new python and even ruby programmers have never touched
the functional features of the language, but even a copy & paste js
'programmer' has probably written a lambda function, used a first class
function, and maybe even used a closure.

2\. It's fundamentally different than most other other languages. I love
Haskell and it's awesome type system, but I also love JavaScript and it's true
rejection of a type system, even throwing out classed based inheritance for
prototypical. It's also a world where events and asynchronous computing are
completely commonplace. What's interesting about this is that it is related to
number 1, in other words it is an extremely practical application of
principles of functional programming. Having written my share of parallel C
code, writing concurrent/parallel code is much more of a pain without basic
features of a functional language. On top of this being able to easily
implement things like currying is actually pretty amazing. At the same time
the language is very, very simple at it's core.

3\. The above 2 reasons are things I would expect from a less popular and
therefore harder to distribute language. Common Lisp is definitely more
interesting of a language than JavaScript, but if I want to share something
I've done in Common Lisp with someone, they better also be a fan of the
language. On the other hand if I make something really cool in JS I can easy
share it with anyone, even people who think IE is the 'internet'. Also I'm
pretty sure that more people of varying skill levels can read JavaScript than
any other language. So if I want to demonstrate something, for a very general
audience JavaScript is much better than C, and for demonstrating functional
programming techniques it's worlds better than Lisp or ML.

~~~
zbanks
Javascript also has an incredibly built-in yet rich interface for GUIs that
most languages don't have. You can easily use HTML to make an interface. With
most other languages (exception: VB, ha), it takes significant effort to marry
the frontend with the backend.

------
wccrawford
All of them.

Sometimes I feel like I'm the only person who is pretty happy with any
language. They all have little quirks I don't like, and they all have things
that I think makes them better than other languages.

For a while, I had a few languages I thought I hated. But as I learned them
better, I came to appreciate them, too.

------
masterponomo
IBM/370 Assembler with command-level CICS, probably because I used it early in
my career on an app where every program had to be small and fast. Nothing
since then has approached the sheer fun of all that bit-diddling.

~~~
hsmyers
Same for me, except it was a 360 :) That, coffee, an 8 foot manual rack along
with a copy of Stern's book on Assembly kept me going until the wee hours...

~~~
masterponomo
Actually my first small, fast program used only the 360 command set because
that's what my tech school had taught me. It had lots of moves of variable
length data, but my "mentor" at work didn't clue me in about MVCL so I rolled
my own variable moves by modifying code in flight. Yikes. Before writing the
2nd program I read more code and more books and learned the right way to do
it. Both programs are still actively maintained 25 years later, and that first
gets a lot of WTF responses when a new guy lays eyes on it:-)

------
iskander
QBASIC: I had a coding friend in elementary school and on the weekends we had
QBASIC sleepovers. We stayed up til 3 or 4am making barely playable games and
fake imitations of operating systems. I remember the vivid rush of excitement
when something actually ran: almost unbeatable (only skydiving, burning man,
camping, and some fun time spent naked have compared since).

Much more recently, learning OCaml after many years spent coding C++ was like
a long drink of cool refreshing water.

------
dpcan
The one I'm using that's making me the most money.

At the moment, I'm into Java for creating Android apps and having a good time
with it. Before that, it was PHP. At one time it was ASP. Once it was
Delphi/Pascal. When I was a kid, BASIC.

I don't think the language makes me happy, I think my situation makes me
happy, so by association, I'm happy with the language I'm coding in at the
time I'm happy. Or something like that.

~~~
kapilkaisare
Well, I think of it this way:

I recently moved from a Python+Javascript project to a Java+GWT one, and while
the project has been interesting, I must say I know that I will not be
voluntarily using Java post this project - unless it happens to be something
like Android, which I haven't yet taken on.

Python and Javascript are by far the languages that have pleased me the most:
Python for its simplicity and terseness, and Javascript for the absolute fun
stuff you can do with it(closures, prototypal inheritance).

Java comes off as being more boilerplate - not just the generated code, but
the IDE my colleagues claim you need in order to minimize writing the
scaffolding yourself. Not sure if this holds true - I keep hearing myths about
how Emacs is a good Java editor and all that.

I generally get a kick of out writing tight code, and Java seems bloated by
design. YMMV, and it obviously does.

------
mxavier
Ruby has by far made me the happiest because I understand it the best and can
get the most done in an elegant way. However, I do get bouts of language
jealousy. For example, I am enamored with the way Haskell deals with looping
constructs and lists but I don't understand IO well enough to get something
very useful accomplished with it. That is much more my fault than the
language's.

------
maximilianburke
Most of the time it seems like it's whatever language I'm not using at that
moment. :)

I work daily with Python, various build script languages, C++, assembly (in
various flavors and dialects), and C#, and at the end of the day it isn't the
language that makes me happy but the libraries and ecosystem available. These
days it's C# and .NET+XNA that makes me happiest.

------
Lunchy
I've had pretty much the same experience as you regarding Perl. I started with
C in high school but never really got anywhere. Once I found Perl a few years
later, I was finally able to do the things that I wanted to do in C. I stuck
with it for several years and got quite good with it. Having this knowledge
and experience made it MUCH easier to learn other languages and finally I was
able grasp C/C++ (though, not as well as Perl though) and do some cool stuff.
Like you, I feel that I owe...well, pretty much my whole programming career to
Perl. Like you, I don't use it these days, but it's definitely the language I
look upon most fondly.

------
elviejo
Logo as a kid looking at that turtle draw was freaking incredibly it is the
closest I've seen to magic ever since.

Now it means Smalltalk and Seaside.

The one that has made the most money is PHP

~~~
gaius
Yeah - I still get a little thrill whenever I type a command and the tape
library arm whirrs into moton :-)

------
ralphc
Clojure. I've been a professional Java programmer for 10 years, and in that
time I've dabbled in Haskell, OCaml, Python, and Common Lisp, being happiest
with Common Lisp but irritated with the lack of standard modern libraries, the
usual complaints. My 26 years of professional programming feels like a long
journey to Clojure.

------
esspem
At the moment - Scala. Previously - Python.

------
davidw
Whatever lets me do more with less code in a fairly clean way, which, at the
moment, means Ruby.

------
ifesdjeen
I'd say, Scala and Ruby (primarily JRuby, i'd say). Most of time I'm working
with Java libraries, and I do enjoy Java a lot, but it's not quite as powerful
as Scala or Ruby. So, reusing Java libs is awesome, since there's a whole lot
of them laying around.

------
sibsibsib
I find it's less about the language you're coding in and more about the
project. Find something engaging and interesting to work on and derive
happiness from that.

Of course, liking the tool you're using can help, but it shouldn't be the
defining factor.

------
arohann
Python. I moved from Java to Python and absolutely love it (this is my short
answer)

