

Ask HN: What programming language are you currently learning? - khingebjerg

I would like to know what languages my fellow HN readers are currently learning/investigating, in their free time, and the criteria for choosing which language to learn next.
======
tptacek
None. I've got enough of them. What I need to get better at is maths, signal
processing, and graphics. Chiming in to reject the idea that we should spend
our careers churning through languages.

~~~
buugs
Not to say you are wrong, but if one has an interest in a new or different
language they should not think they shouldn't because they already know
enough.

Learning a new language can also be a supplement, say learning haskell in such
a way that you improve your math ability and critical thinking at the same
time. Or attempting to write a project in a new language would be far more
interesting say if you are burned out from a job in a certain programming
language. New and different things can be very refreshing!

------
dkarl
I'm learning Scala for the following three reasons (in increasing order of
importance.) These just reflect my current needs, not a prescription for other
people, and all three revolve around my need to add a practical language to my
repertoire to reduce my usage of C++ and Java.

3\. I decided to learn a language I could use on the Java platform using Java
APIs, rather than on the _nix C platform using C APIs. Partly this is a matter
of wanting to escape C's shortcomings; partly it's because I have my eye on a
couple of upcoming projects at my company for which the Java libraries will be
extremely helpful.

2\. I want to learn a language that will allow me to use functional idioms and
help me learn a more functional style, yet allow me to get the job done even
when my functional-fu falls short. I don't want to learn a language that
expands my mind but then becomes a fond memory. I hope that for many years to
come Scala will be the first language I reach for when I need to get something
done on the Java platform.

1\. I want to master a modern yet practical language with a strong static type
system. I don't do much programming that calls for a dynamic language, and I'm
pretty satisfied with Python. I write a lot of code in C++; C++ and Java are
the only statically typed languages that I have really mastered, and I'm
dissatisfied with both of them.

Runners-up:

Clojure: not statically typed. Maybe my next language after Scala -- I really
enjoyed using Common Lisp but hated the library situation.

O'Caml: great for the _nix C platform, but not for Java. Also possibly too
pure to be a "go-to" language (heh.)

~~~
jongraehl
Ocaml isn't too pure. It's just weaker in libraries (and has no threading).
It's faster than Scala in my experience, but not by more than 50%.

I like Scala quite a lot so far. The main pleasure of Haskell or Ocaml over
Scala is that they can deduce _all_ your types (even function arguments),
whereas Scala supports overloading and can't.

------
ambulatorybird
(1) Haskell, because I like functional programming, and this language seems
very promising (I first looked at it 10 years ago, but I gave up because the
implementations seemed immature. I took another look recently, and I'm amazed
by how much it's progressed since then). I especially like the way that
laziness and purity enable a concise, stream-processing paradigm through the
use of maps, folds, and various combinators.

(2) Lua, because it seems like the Scheme of imperative scripting languages,
while still being very practical and hackerish. It also has a neat game engine
(Love2d) which I'm eager to try out.

------
aristus
Javascript. I've "known" it for 10+ years, but now I think is the time to take
it seriously. The web stack is getting dumber as a lot of UI and logic moves
to JS inside the browser.

Databases got dumber in exactly the same way -- do you know or care if your
database has good stored procedure support? Eventually it won't matter much
what the server is running.

~~~
mhansen
+1. It's just getting faster and faster as it becomes the focus of the browser
wars, and it's not a bad language, really.

------
johngunderman
Haskell. I'm working through
[http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_H...](http://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours)
which is quite a good tutorial.

~~~
brl
Even though I complained about not being able to learn Haskell in another
comment, this is the tutorial that got me the furthest. I found RWH pretty
much worthless by comparison.

------
locopati
Erlang - why? after diving into threading in Java for a recent project, I
wanted to see other ways of approaching the same problem - recommendations for
other languages with powerful threading solutions?

~~~
jrockway
Haskell. Don't waste your time with Erlang.

~~~
Scriptor
Can you elaborate?

------
bazookaaa
Objective-C. Quite a big jump from Ruby. :)

------
arghnoname
I'm not learning any language right now, but have learned a fair share over
the course of the past few years.

My general criteria is not to learn a language that is conceptually similar to
something you already know unless there are professional advances to be had
there. If all you know is Python, C might be good because it's lower level.
Lisp or Haskell or O'Caml might be good because you'll have to program with
different paradigms, etc. If I were coming from Python, Ruby wouldn't be my
next choice unless I needed it for a job.

------
dsingleton
Python

~~~
granular
Ok. That covers the rest of this weekend anyway. :)

------
noblethrasher
Haxe - compiles to ActionScript, JavaScript, PHP et al. Strongly typed (with
type inference) and creates faster code than Adobe's AS3 compiler.

F#

------
Zak
Haskell. I've already written non-trivial applications in it, but there's
still so much to understand.

~~~
gaius
Haskell for me too. It's slow going, but it's already making me a better
Python programmer in my real work. OCaml/F# are on the back burner too.

~~~
paulgb
> making me a better Python programmer in my real work.

I found this too. Once I started reasoning with lazyness, Python's generators
felt a lot more natural. The itertools module is very useful.

~~~
gaius
Haskell's let... in... construct I use heavily now, I don't miss multi-line
lambdas now.

------
phugoid
ARM Assembly. I want to commune directly with the bare metal. I want to lose
my fear of those hex dumps machines spit out just before they die.

------
cema
Clojure.

~~~
charrington
I am learning Clojure because I know lots of "traditional" languages and want
to stretch my brain in new ways. I am also interested in new ways to write
parallel programs, which is becoming a bigger and bigger issue. Clojure scores
well on these two criteria. I chose Clojure over Scala and Haskell, because I
believe in dynamic typing over static typing. This is probably more an issue
of tase than anything and I also have a high opinion of those static
languages. I am very impressed with Rich Hickey's design sensibility and his
goals for Clojure align well with my own.

~~~
cema
Agree on all points.

------
ozsynergy
Baby Language

------
coconutrandom
Arc (lisp in general)

------
Shamiq
Ruby

~~~
joeycfan
Me too - oop I understand - gotta get a grip on procs and lmbadas.....

Best language I ever used and I was programming in Fortran iv on 80 column
punch cards in 1972...

~~~
jamesbritt
Cool. Be sure to ask lots of questions on the ruby-talk mailing list, and
hopefully there's useful stuff on ruby-doc.org. (If not, let me know. :) )

------
unignorant
Common Lisp -- because it has begun to change the way I think.

------
zetaloid
C++, after learning Python as a firstl anguage, going through accelerated C++
then thinking in C++

------
ianbishop
I am (very slowly) diving deeper and deeper into Ruby.

------
b0k0n0n
Python, Processing & Java. And HTML, CSS etc.....

All of them, really, for pleasure. Python because I want to learn to program,
Processing for image processing, Java to bypass CS 101 requirements, and HTML
& CSS for web design.

------
maxwin
Adobe flex. I am doing some data visualization stuff. I thought about using
HTML5 drawing syntax first. But because stupid IE still doesn't support it. I
give it up. Adobe flex is perfect for the job for the time being.

------
jacquesm
after being a coder for 3 decades I finally got around to lisp, two things
prompted me to do it, first the source code to HN, secondly a discussion with
'dtor' of the glusterfs project, a young indian coder that seems to be pretty
gifted. I audited some code there and came upon a macro that took me a long
long time to comprehend, he explained it was to give C continuations.

One thing let to another and I ended up buying a bunch of books and
downloading the mit video lectures.

------
avner
Processing

------
tybris
I haven't learned a new language for a while now. Perl/Java/C never fails me
and I'd rather learn a new trick than another way of doing an old trick. I am
learning about modern large-scale Internet service design, running hadoop
clusters, distributed logging solutions, virtualization, ad-hoc radio
networks, radio propagation, sensor fusion, intelligent transportation
systems, etc. (for startup and PhD)

------
antirez
Objective-C and the iPhone API. This is probably the first language I learn
just in the process of doing something specific (writing apps for iPhone), and
not because I really need to learn it for enhance my programming skills. Still
it is an interesting language even if designing it today from scratch could
lead to something pretty different...

------
lamnk
Stop replying in this thread and make a poll !

~~~
jamesbritt
Wouldn't that require knowing in advanace the answers people would give?

Or is a "close enough" guess at the usual suspects (with an option for
'Other') good enough?

------
Salvatore
PHP and Action Script through Adobe Flex

------
Darmani
I'm rewriting a card-game-playing environment written in Java. I originally
wanted to use one of the Java implementations of Arc, but the low activity
level of the forum (and my difficulty installing Rainbow a while back) makes
me uneasy, so I'm learning Clojure. Sorry PG.

------
mannicken
Ruby, Scheme, C++. C++ I am learning for about six years already, what a
fucking complex language :)

------
mmphosis
Scheme

~~~
jimm
I'm learning Scheme so I can program Impromptu
(<http://impromptu.moso.com.au/>) to control my MIDI setup live. I'm having a
hell of a time with macros and define-syntax; I have not yet found docs that
explain those so I can understand them. I have played around with SBCL and
Clojure, and can write macros in those languages. Don't know why I'm having
problem with Scheme.

------
mooism2
I continue to learn Haskell. A possible future side project would be a good
fit for trying out functional reactive programming.

If I ever find myself wanting to program at a low level again, I can see
myself learning D.

------
jlangenauer
Potion, _why's experimental language. It's cool to play with something
bleeding edge, though something about the language itself makes it feel like
Python. Maybe the use of colons to define functions/blocks.

------
csomar
\- Visual C# (Microsoft Dot Net)

\- Some CSS, HTML and Jquery

\- English :)

------
brl
After trying to learn Haskell on and off for a couple of years and miserably
failing to be able to write a useful program with it, I'm moving on to Scala
which pretty much rules.

------
dkarl
Scala

------
cynicalman
Playing with Erlang - I like its approach to errors and parallelization. Plus
the idea of a functional language with Prolog-like pattern matching seemed
like a cool idea.

------
DomesticMouse
Scala. Because it's the right combination of fun and pain. =)

------
sidjoshi
PHP

~~~
Scriptor
Rather surprising to see PHP so high here since I rarely see PHP-related
submissions on HN. How do people learn it? I've found that the best thing for
me was finding StumbleUpon and reading up as much as I could about best
practices in PHP and programming in general. Now I force myself to try a
different language for my own projects to get away from PHP as a "comfort
zone".

~~~
Zak
I'm a bit shocked to see any significant popularity here, as it seems to be a
language most hackers avoid. I'd like to know why people are interested in the
languages they're learning - not just PHP.

~~~
granular
The OP asked about what you are currently learning. Many folks may actually be
required to learn it for their job, rather than for professional enrichment.

------
pearle
Dabbling with Clojure and Haskell at the moment. Also reading some material
relating to clisp and Scheme.

I can never stick to one thing.

------
DanielBMarkham
F# -- OCAML has got it all: imperative, functional. Plus with F# you've got a
huge collection of ready-to-use libraries

------
anigbrowl
After Effects Expressions, a js-like scripting language for video graphics.
I'm not sure if this qualifies though...

------
mxyzptlk
Forth, because I'm to impose some creativity enhancing constraints on what I
develop my free time.

------
zaph0d
Clojure. It's fantastic. <http://clojure.org/>

------
MTayor
Bouncing around between PHP, AS3 and Python/Django. Really need to settle on
one for a bit.

------
jamongkad
A few months ago Python, decided to jump the gun to learn Common Lisp and
Scheme.

------
bantic
erlang. because somehow my install of ejabberd failed and I don't know the
first thing about how to troubleshoot it. plus I want to learn more about
languages that are good with parallelization.

------
jcapote
Erlang - nitrogenproject.com got the best of me one evening...

------
MaysonL
Newspeak, Lisp, Python, Smalltalk, Objective-C.

------
dexen
Lisp, in Pico Lisp flavor.

------
Ashishlin
Ruby at the moment

------
saurabh
Factor

------
mudge
Ruby

------
jamesbritt
Haskell.

------
giardini
Prolog

------
jacktasia
Jython

------
dogan
obj-c

------
ilkhd2
C++ = you can never stop learning darn thing, it is still growing.

