

Ask HN: learn a language for 2014 - markwillis82

I&#x27;ve decided to take on a whole new language for this years goal. Currently I&#x27;m a web developer (php, js, etc)<p>But want to pick up something new. I was looking at c++ (and decomposing&#x2F;assembly) as it&#x27;s compiled and not another interpreted language.<p>Any suggestions on new languages to learn that would allow me to mix up my skill set a bit more?
======
tptacek
Learn C, not C++. C++ is much harder to learn than C, not much more valuable
either in industry or at expanding your horizons, and, most importantly, you
can be productive in C++ without really understanding the most important
aspects of bare-metal programming. C++ is also full of blind alleys: you can
waste a lot of time on class design, double dispatch, arranging your header
files to optimize compilation, pImpl classes, and template metaprogramming,
none of which will really help you in the long term.

------
jfaucett
I think a lot depends on what areas of computer science you're interested in.
If you want to expand more into lower level stuff, operating systems, command
line programs, server internals, etc. then Id say go right to c and skip over
c++. But if you want to learn more about gaming or desktop apps then c++ or
java is probably a good choice. If you want to stay in the networking/web
stack but expand your horizons as far as programming theory and development
workflows I'd say give either Ruby or Golang a try both have their own unique
approaches to problems and IMHO very innovative ways of solving a lot of
programming problems.

Best of luck!

~~~
markwillis82
I want to get into something completely new, which is why I was looking at
c++.

But getting into the bare bones c could also be interesting.

~~~
amorphid
I also recommend Golang. It's nice to work with, and you may find some
practical uses for it. C and C++ aren't used much in web development these
days. Golang is, especially for systems. It's also kind of fun!

------
brudgers
The important differences among languages are in semantics and syntax.
Compilation and interpretation are implementation details which are
increasingly less relevant - Java and C# are compiled to byte code which is
interpreted which is just in time compiled to machine code which again goes
through similar processes in the hardware with modern CPU's.

The big lumps of language classification these days are related to type
systems, facilitating functional/imperative/reactive/object oriented styles,
handling concurrency etc.

------
karterk
I would suggest Scala. It's a vast, vast language and has something to offer
in both the OO and functional paradigms. It also has actors (borrowed from
Erlang), lazy evaluation, and a beautiful collections library. There is also
an experimental macro feature in the latest version. Scala's type system is
less verbose when compared to C++ and Java.

Edit: Clarify about type system.

~~~
markwillis82
Scala looks interesting especially with Lift.

Would be good to play with larger datasets too.

~~~
frowaway001
I'd recommend Play¹ instead of Lift.

If you want to explore working with larger datasets, try out Spark²!

¹ [http://www.playframework.com/](http://www.playframework.com/) ²
[http://spark.incubator.apache.org/](http://spark.incubator.apache.org/)

------
gtani
Pick a few and look around sample code, tutorials, SO, rosettacode, cheat
sheets floating on the web etc.

Rust, D, golang. scala, F#, ocaml, haskell. Clojure, racket, SBCL.

Orthogonally: study probability/stats, linear algebra and calculus thru diff
eq, basically the first 2 years of undergrad math for physics, math majors,
EE, etc.

relev:
[https://news.ycombinator.com/item?id=6464127](https://news.ycombinator.com/item?id=6464127)

[https://news.ycombinator.com/item?id=6409370](https://news.ycombinator.com/item?id=6409370)

[https://news.ycombinator.com/item?id=6953568](https://news.ycombinator.com/item?id=6953568)

------
markwillis82
Maybe a new language and data model? Could anyone suggest things like Hadoop
or other big data bits I could get my teeth into?

------
bjourne
Learn Factor. [http://factorcode.org/](http://factorcode.org/) It has a steep
learning curve (meaning you'll have to learn a lot in a short amount of time!)
which is good, because learning new things makes you smarter.

------
hemtros
golang is worth learning.

