

Poll: Which 3 languages would you learn - Jun8

A lot of the comments to a recent post (http://news.ycombinator.com/item?id=1982903) suggested that they would like to see a similar poll for HN, so here it is. I don't want to restrict the choices and will collate the data in the replies. THREE languages per reply, please<p>Let me broaden it a little and also ask the optional question: Which <i>new</i> natural language(s) would you like to learn and why (i.e., other than your native language an the ones you are fluent in)
======
irahul
Python, C, Javascript

I am assuming you aren't talking about learning 3 new languages, but rather, 3
languages if you are to learn only 3.

Python - A practical and elegant language. It supports both one-off, throw-
away scripts and large applications. It has native libraries or bindings for
majority of tasks. You can do procedural programming, object oriented
programming, some FP, state machines....

Besides getting things done, it's a beautiful language for exploratory
programming(IPython, concise language, slime...). It has some good meta-
programming and reflective features. A lot of literature is available on
advanced python - I watched Alex Martelli's Google talk on design patterns and
I whole heartedly recommend it.

The whole ecosystem: * Superb documentation * Backed by big companies * Good
tooling - sphinx, App Engine, pip, virtualenv * Abundant, battle tested
libraries * Helpful community

makes it a good choice.

C - Insanely fast, lot of existing software and libraries written in it. Used
for implementing high performance servers, used for browser, kernels... You
can contribute to your favorite project viz. chromium(is actually c++),
kernel, python, ruby; you can rewrite slow parts of your Python application in
C.

People not conversant in C often say things pertaining to C being verbose.
That's far from truth; C is in fact a very terse language. It's the standard
library and lack of high level data structure that got it this incorrect
reputation. The libraries might seem lacking but it's only the standard
library that is small. Third party libraries are abundant and should be used,
rather than reinventing the wheel.

Javascript - It would be a practical choice to complete the stack. Python/C
for backend/desktop apps, Javascript for client side. With V8 and node.js,
Javascript has sneaked in to the backend. Coffeescript takes out the ugliness
out of Javascript, if the language quirks are bothering you.

Web is buzzing with activity now-a-days, and performant & conformant
Javascript implementations has partly ridden the wave, partly triggered the
wave.

If you are playing on web's playground, you should learn this language. If you
aren't playing on the web, you should consider it. It's a lot of fun, and who
knows, Google might acquire your startup for $ 6 billion. Even if you aren't
after the money, the web is still a superb platform for getting your products
out to a big audience. It's rewarding and a learning experience.

------
sourc3
Am I the only one who doesn't think programming language when I read natural
language?

I speak 4 at the moment; I would like to be able to read French since it was
the international language up until 200-300 years ago and maybe some Greek to
be able to read the ancient texts.

In terms of useful languages, I think Italian is the most enjoyable language
although I know it I would like to master it.

~~~
gspyrou
If you are interested in Greek Language check these Speeches from Xenophon
Zolotas <http://en.wikipedia.org/wiki/Xenophon_Zolotas>

------
mahmud
Bliss, Sisal, Mercury, ECLiPSe, Esterel.

Bliss is Wulf's baby, and I have the book; sick compiler. Purely for the sake
of idol-worship.

Sisal, very influential language. FP for scientific computing, high
performance. Would love to implement it.

Mercury .. I never really got logic programming all that well, besides some
elementary prolog. Would love to explore the domain further but hindered by
the opaque works that spill over from logic.

ECLiPSe is a constraint-logic programming package. Never used a standalone CLP
system before. Only via Mozart/Oz, AliceML and Common Lisp (via Screamer)

Esterel is a language for reactive programming: think real-time and embedded
devices. I vaguely know the language (1-2 weeks) but I haven't got the
theoretical backbone to tackle it fully. Need to study temporal logics, brush
up on process algebra, and perhaps even take up some discrete event simulation
before I can fully grok it.

------
Jun8
Java, Javascript, C++

I know this selection seems passe but here's my rationale: First, learn a
lingua franca that (almost) everybody knows and has huge libraries. That would
be Java. Java is the English of computer languages, I think.

Javascript not only has immense presence (the default selection?) in most web
development, and is gaining prominance in developing on mobile devices, e.g.
bypassing the whole Objective-C & Cocoa stuff for iPhone and iPad. I don't
know it much, but it also seems like an interesting language.

The third choice is not that clear, depends on whether you want to have an
all-powerful language (C++) or one that excels in concurrency (e.g. Erlang) or
want to expand your horizons (Scheme or Haskell, perhaps), etc. etc. I use C++
daily and if I had to do again I would still select it, but I may be biased
because I am doing image and video analysis work.

As for natural languages: If you are interested in linguistics, I think you've
got to learn Ancient Greek, to see a lot of the complexity and mechanisms that
has been lost in other IE languages (you can, of course learn Lithuanian or
Hittite for even a better grasp, but sources to those are harder to find and
the reading material would not be as exciting, I think :-). It was an eye
opener for me. As a second choice, I would go with Chinese, for the mind-
expanding aspect (did you know that Chinese speakers can roughly classify the
meaning of a word even if they don't its meaning, using radicals?) Also, you
prospects for a job get multiplied 10x.

------
alienDeveloper
Well i already know php to some extend, and the basics of C/CPP, Java, Action
Script and all..

But i really like to get my hands dirty on C/CPP(im working on a MySQL storage
engine as a hobby) and i like to learn python( i like maya[Animation], not
only that python is a very strong language) too .. Those are the 2 currently
in my list..

And if u want me to chose one more.. i say Java, because it will give me a
very strong background on some very kewl concepts which i can use in other
languages.. :)

And about my natural languages..

I definitely like to learn Sanskrit because their is a lot of knowledge hidden
in Sanskrit books which u can never find else where, then i like to learn
Chinese because i like the way its pronounced. and finaly spanish because..
well their is no because for that.. i just like to learn thats all.. :)

actually its harder than i thought it will be to reason why you learn a
natural language other than if you are going to visit the related country or
you are dating someone from that country ;) ..

------
jamii
Python, Ocaml, Erlang

Learning Korean at the moment. Mainly in order to know what I'm buying in the
supermarket.

~~~
jamii
Well, I guess that was the wrong answer.

------
chrisaycock
Haskell, Erlang, Lua

I do C++ and q/kdb+ professionally, plus I know enough Python to get by. The
three above are pretty different and would be interesting to expand my
horizons.

Bonus question: Spanish (it's the second most common language in the States)

------
lhorie
I assume you mean "learn" as in "master", not just merely pick up the syntax
to bang out the next big web app(tm) quickly, as it's fairly easy to pick up
Python/Ruby/PHP/Javascript/whatever if you already program in a mainstream
language.

Programming languages:

Haskell - Lots of interesting language features that you don't see elsewhere

Assembler - Already know some C, but would like to be working knowledge of the
inner workings of computers (especially things like cache misses etc)

R - Need to brush up on statistical analysis skills

Natural language: Already learned English... I guess I'd take Japanese or
Korean next? It'd be mostly for entertainment.

~~~
jamii
> ... working knowledge of the inner workings of computers ...

I'm a big fan of 'The Elements of Computing Systems' - takes you from NAND
gates to pong.

[http://www.amazon.co.uk/Elements-Computing-Systems-
Building-...](http://www.amazon.co.uk/Elements-Computing-Systems-Building-
Principles/dp/0262640686/ref=sr_1_1?ie=UTF8&qid=1291824873&sr=8-1)

------
ronnieCA
Clojure, C# (or more generally the .Net Framework), and Python.

As for natural languages, hands down Mandarin. I spent the summer in Hong
Kong, and while they spoke Cantonese there, it was still a fantastic
introduction to Chinese culture.

------
buster

      - C
      - Java
      - Python
    

Optional: Japanese, probably. I thought of learning a new language for some
months but am still unsure which. Maybe this thread gives some idea :)

------
jawee
C -- It's the classic. I've only learnt Java in the C-style languages, and I'm
interested in all of the code written in C.

Emacs Lisp -- I love using Emacs and I've always been interested in Lisp from
what I've heard online. Sounds like a useful way to do it.

Haskell -- The idea of a functional language intrigues me... I'd love to try
it.

And spoken languages? I'm interested in Latin and Ancient Greek because I
already read a lot of works written in those languages, in translations.
Thirdly, probably German.

------
SingAlong
Haskell, ruby, javascript

Just because Haskell has a lot of interesting features. Ruby is too easy but
vast and javascript makes cool stuff possible both in and out of the browser.

------
xiaoma
I'm already fluent in Mandarin and English and have some Japanese, Taiwanese,
and Cantonese.

If I had extra time specifically for language learning, I'd like to have the
Japanese become fluent and pick up some Spanish and Russian. Japanese because
of its enormous economic and cultural clout, Russian, because a lot of
Russians live in this part of the world, and Spanish because it's the second
most common first language on the planet after Mandarin, which I already
speak.

------
anamax
Are folks answering "three new to them" languages or "which three languages,
even if you already know one or more"?

~~~
jamii
The original question was 'If you could only learn 3 languages ..."

------
kaylarose
Python, Haskell, and actually master C

------
reinhardt
Javascript: Currently the lingua franca of the Web. In the near future, the
"bytecode" other languages (existing and new) will compile down to.

D: So far seems like "C++ - the good parts".

Scala: In case I ever have to touch the JVM again.

------
waterlesscloud
C- Fast, lingua franca of the programming world

Lisp- Just to keep my mind agile

Prolog- I've always enjoyed it as much or more than anything else.

Natural language- ancient greek, to read the classics in the original tongue

------
irfn
Haskell, Erlang, Ocaml

------
danest
Java, Ruby, Javascript

~~~
vnchr
Why? I liked your list, but I'm a novice. Would you please elaborate about why
you like this combination? Ruby and Javascript make sense to me for web
scenarios. Is Java your third because it's more enterprise accepted? Other
reasons for Java? Thanks!

~~~
btilly
The best thing about Java is how much it will make you appreciate the other
ones. :-)

------
cafard
F#, Haskell, Clojure

Chinese, Sanskrit, Spanish

------
Someone
VHDL, Haskell, Self.

Bonus question: Linear A, because it would be scientific progress, and put me
in the history books.

------
wnoise
Shell (I'm including the mini-languages like awk), C, and Haskell.

------
anon_d
C, Standard ML, and Unix shell.

Lojban, Swedish, and Japanese.

~~~
inetsee
I would love to learn Lojban. But when I'm feeling pragmatic, I think it might
be easier to to find someone to practice with if I tried to learn Esperanto.

------
egor83
take two: <http://news.ycombinator.com/item?id=1986905>

------
mtarnovan
Scala, IO, Erlang

------
mrpollo
Chinese, Spanish, Deutsch?

~~~
xiaoma
Why? The first two make sense due to sheer numbers. What's the motivation for
the third?

------
fmstephe
F# - Clojure - C

------
GrandMasterBirt
C, Java, Lisp

c - because you can always do it in c

java - because there is tons of work, and its a damn good language

lisp - because sometimes i just need a language with which i can build another
language.

