
Programming languages and Frameworks to learn in 2015 - meerita
I can&#x27;t make a poll on HN, but I would like everyone to contribute with an opinion. Which languages are worth to devote learning in 2015? and what about the new frameworks? Please, be patient and open :)
======
lkrubner
If you have the slightest interest in the issue of concurrency then you should
study Erlang and Clojure. Since Moore's Law has largely faded, and we now gain
speed by putting more CPUs in each server (rather than having the individual
CPUs be faster) concurrency is an increasingly unavoidable aspect of
programming. Joe Armstrong (Erlang) and Rich Hickey (Clojure) have both spent
an enormous amount of time thinking about how to support concurrency in a
programming language. Armstrong talks about a paradigm that he calls
"Concurrency Oriented Programming". Armstrong's thesis is surprisingly
readable and I recommend it:

[http://www.erlang.org/download/armstrong_thesis_2003.pdf](http://www.erlang.org/download/armstrong_thesis_2003.pdf)

Rich Hickey's video presentation "The value of values" is also a good overview
of some concepts that are important to Functional Programming:

[https://www.youtube.com/watch?v=-6BsiVyC1kM](https://www.youtube.com/watch?v=-6BsiVyC1kM)

~~~
darthVapor
How do you feel about Go?

~~~
lkrubner
I think Go is very interesting. One thing that I like about Go is something
for which it is often criticized, which is the ability to create a binary that
holds all dependencies. Some people are critical of these "fat binaries", but
I have lost countless hours dealing with dependency issues, in various
languages, and dependency issues are my least favorite kind of computer
problem, so any language (and/or eco-system) that gives me an easy way to
solve dependency problems is interesting. Likewise, when I work in Clojure I
often go with the "uberjar" option to deploy, which often means the only
outside dependency is the JVM itself. But Go can go further, as there is no
need for some VM, like the JVM.

~~~
Cyther606
I agree, shipping the dependencies in a single binary is the easiest way to
package software. Nim is the same as Go in this respect: native code
generation via compilation to C without a VM. And for me, Nim's Pythonic
syntax is hands down more pleasant than Go's or even D's. It's the only
systems programming language I've come across where it feels like I'm coding
at the speed of thought.

~~~
darthVapor
I haven't heard much about Nim (until reading this post). I saw that someone
was comparing it to python in a way? What are your thoughts on it?

~~~
codygman
I believe Nim also has generics and macros.

------
pella
check: Technology Radar ; JANUARY 2015 ( by the ThoughtWorks Technology
Advisory Board )

[http://www.thoughtworks.com/radar/languages-and-
frameworks](http://www.thoughtworks.com/radar/languages-and-frameworks)

[http://www.thoughtworks.com/radar/tools](http://www.thoughtworks.com/radar/tools)

[http://www.thoughtworks.com/radar/techniques](http://www.thoughtworks.com/radar/techniques)

[http://www.thoughtworks.com/radar/platforms](http://www.thoughtworks.com/radar/platforms)

~~~
xiaoma
Wait, they gave OM "Trial" status and React just "Asses"? How does that work?

~~~
mcintyre1994
I agree with you but just because the typo makes a reasonable difference, it's
actually "assess" :)

------
mkhattab
I'm planning on going old school and re-learning C and Assembly for x86 and,
in particular, ARM architectures. My reason for doing is that I want to get
back into embedded systems.

I also plan on picking up Rust and somehow integrating it into my workflow
(I'm a web developer).

Ideally, for the future (2015 and beyond), I want a basket of languages I
could use for building web-scale applications. So, for example, within a
single application:

    
    
      * Erlang -- distributed messaging
      * Rust -- heavy lifting for various tasks
      * Python -- various data munging tasks and rapid development
      * Javascript -- client side applications (e.g. Ember.js)
      * C -- in those rare cases where it would be needed
    

I think I would stick with these languages for the next ~10 years and try not
be distracted by anything else.

~~~
hackerboos
I'm in the process of picking what I want to specialise in as I'm worried
about fragmenting my learning and falling into a 'jack of all trades master of
none' situation.

    
    
        * Elixir -- scalable APIs and 'realtime'
        * Rust -- still evaluating this. 
          Hoping it could replace C for me. 
          Ruby bindings is something I'm looking for in the future.
        * Swift -- Loving it compared to Objective-C so far
        * Clojure -- I like the idea of creating an app just in Clojure, Clojurescript
          using Om etc.
          Not sure how Clojure is with Android but that will be a factor

~~~
codingbinary
I can only speak about the Rust side. Seriously, pick it up. It is more than a
replacement for C. You get a total replacement of C + a loooot of extra stuff,
like no null pointers, memory safety, C compatibility for FFI, iterator and
list comprehension goodness, and just a lot of good practices. At least for
me, Rust is the perfect mix between C and Haskell. YOu get the low level stuff
of C, and the expressiveness and joy of Haskell, without all the brain-hurt
from Haskell.

Side note: I do love Haskell, but let's admit it, the learning curve is pretty
steep once you hit monads/comonads.

------
jeffmess
+1 to Elixir and Phoenix from my side. I have yet to dabble with Phoenix but
the short amount of time I've spent with Elixir has been thoroughly enjoyable.
I can't wait to rewrite chunks of code at work into small phoenix
applications.

~~~
rgacote
Elixer and Phoneix definitely on my dabble list. Falcon (Python) definitely on
my 'use in production' list.

------
_random_
C#, obviously. It's the only modern language that provides ALL of the
following:

1) Static and dynamic typing

2) OOP and functional paradigms

3) Multi-platform via single framework: WP, Android, iOS, Mac, PC, Xbox, PS4,
Linux etc.

4) Two super-powerful IDE-integrated static analysis tools to choose from:
ReSharper and Roslyn

5) Mature workflows for developing Web, mobile, enterprise apps and games.

6) High performance on WP and desktop, reasonable elsewhere.

~~~
mateuszf
No powerful IDE on Linux / OS X.

~~~
_random_
Doesn't contradict with my statement, but yes. Luckily the rest 97% of
developers are covered.

~~~
mateuszf
Are you sure that 97% developers use Windows? From my experience developers
use Linux / OS X more often than regular users.

~~~
pjmlp
Only if you mean web applications. Many do write desktop applications.

~~~
V-2
Not only web applications. There's all the iOS devs, for instance. Pretty big
market, and it's rather hard to do this job on a Windows machine.

~~~
pjmlp
Those are not on GNU/Linux systems.

As for the market size it is a matter of perspective. On my home country iOS
comes out on third place.

------
eclw
Rails has allowed me to move from being a product/programme manager to start
up owner / developer in six months. I've managed the development of products
using PHP and .NET technologies, but when it came learning to code myself,
Rails enabled me to learn and iterate quickly. Ruby is beautiful, and the
Rails community is both prolific in terms of making the gems you need and
responsive when you have problems. 12 months ago I was coldly agnostic about
frameworks, I am now a bit of a fanboy.

------
pkaler
Swift if you're gonna live in the iOS/OSX ecosystem. I've been writing Swift
everyday for the last 4 months and I'm loving it. The compiler and toolchain
are still buggy. But this is clearly the future of programming languages.

Shameless Plug, I send a weekly newsletter here:
[http://swiftnews.co](http://swiftnews.co)

------
alkonaut
F# and Rust.

Why F#

[http://fsharpforfunandprofit.com/why-use-
fsharp/](http://fsharpforfunandprofit.com/why-use-fsharp/)

Why rust

[http://www.rust-lang.org](http://www.rust-lang.org)

------
def-
Nim: [http://nim-lang.org/](http://nim-lang.org/)

[https://nim-by-example.github.io/](https://nim-by-example.github.io/)

~~~
RaecKK
I'm convinced Nim is what Python aspires to be, but it seems like putting the
cart before the horse.

Does anyone know of any interesting projects using Nim?

~~~
def-
The Nim compiler itself is written in Nim:
[https://github.com/Araq/Nim](https://github.com/Araq/Nim)

There is Jester, a framework for web applications:
[https://github.com/dom96/jester](https://github.com/dom96/jester)

HastyScribe looks pretty nice as well:
[https://h3rald.com/articles/hastyscribe/](https://h3rald.com/articles/hastyscribe/)

------
dkarapetyan
Just pick one and go with it. It really doesn't matter. Being a framework user
is useless. What you should be striving for is being a problem solver and
being a problem solver means understanding computation in general and not some
specific bastardization of it in some framework like Rails, Angular, Ember,
etc.

------
stefanix
Nim, the most elegant new language.

[http://nim-lang.org](http://nim-lang.org)

------
mpdehaan2
Depends if you want something that's marketable now, or more if you're asking
what's interesting learning for the future.

Django and Rails are still powerful in web development territory, but I don't
find them particularly exciting anymore.

I'm quite interested in seeing where Go and Rust evolve to provide developer-
productivity and performance at the same time. Previously, we've had these
kind of splits where we have Ruby/Python/other at one end, and C/C++ at the
other, and things in the middle have felt like compromises (Java, etc). I'm
thinking we can get to a nice happy medium, once their standard libraries
mature. Still, there's not a lot of job opportunities out there in these yet.
But interesting!

To me, a lot of what makes a language usable is how big the standard library,
and community libraries around it grow to be. So, for now, a lot of the cool
stuff would require more legwrok on your end to make it work for certain
applications.

On the UI side, JavaScript remains absolutely pervasive, but I wish there were
clean alternatives that didn't require something compiling down to JS. It
seems that Angular is going in the right places.

I'd be interested in people's takes on whether Scala/Clojure are no longer
gaining any interesting traction or whether I'm wrong about that - there's
still a giant ton of Java out there, obviously.

If you just want to hurt your brain in interesting and useful ways, functional
languages can be great fun.

~~~
jarcane
I've heard one recruiter specifically advise I learn Scala or Clojure, but
then I love in Finland, where the JVM it's still even more king of the jungle
than elsewhere thanks to decades of mobile engineering focus.

I'll be taking up Scala, as well as F# and Haskell, in the new year, because
I've increasingly realized that whether functional programming really it's the
new OOP or not, it's certainly the specialty I most enjoy working in. As a
Windows (and Windows Phone) user I'm especially interested in F#, and the .net
world it offers to FP. I find it fascinating that so many developers spend
their time finding any and all means to work around the reality that Windows
is what nearly all their users are actually running. We've turned web browsers
into miniature OSes, just to avoid that reality, and it's weird.

~~~
pjmlp
Same thing in Germany.

I also think F# is a better bet, because it is a first class citizen in the
.NET eco-system, whereas Scala and Clojure are third party languages on the
JVM.

In the enterprise space this little difference plays a big role when choosing
languages.

------
kasperset
I would stick with basics and try to learn programming paradigms and
underlying principles. I guess it would be really helpful in long term. Please
correct me if I am wrong.

------
davismwfl
I don't know what you already know but here are some suggestions.

node.js, express, hapi are all good to learn. Knockout (knockback), Angular
would also be good to add to that list.

golang is something I am personally working to get better at in 2015. I am not
sure which frameworks inside of Go would be best to learn but I am curious to
see what others suggest to you as well.

ansible (or puppet, chef etc). Even if you don't do devops as a job. I learned
(still am finding new uses) Ansible this past year and it helped me understand
more about the challenges of deploying what I build in an automated and
scalable way.

I have also been picking up Lua as it is pretty powerful, but I am by no way
totally proficient yet.

Also, not necessarily a language/framework to learn but something I think that
is worth learning. Lucene queries, I went the Elasticsearch route, but Solr or
others are just as viable. But between ELK and loading our data into
Elasticsearch to handle the searching needs of our application really helped
us solve things faster and easier. But at least for me, getting the query side
of Lucene down took some effort.

------
yami
Hi, I’m in my third year in a French IT School. I’ve used A LOT of C/C++
during my first years and now I’m learning bit of Java and C#. I learned Ruby
On Rails through a 6 months internship while I was in my first year and I fell
in love with the ruby world. I also used some OCaml (and this is actually
great!) and some x86_64 ASM at school.

So I’ve read all your comments and I’ve seen a lot of kind of esoteric
languages. I mean that I’ve already heard about them but I’ve never figured
out if they are really used in companies. I also love to check on new things
and look at new languages with cool syntax and fun features but is it really
useful? Are languages like Erlang, J, F#, Rust, Haskell or Nim really used in
your companies? Are they worth to learn to find a job? From what I’ve seen /
what I know node.js has grown A LOT this year. I’ve seen several job offers
asking for node.js. I think I am going to focus on this from now on.

Thanks for reading / giving your opinion in comments ;)

~~~
V-2
Erlang or Haskell - rare, but esoteric??

I don't think it's fair to lump them into the same category as Rust (which may
or may not gain popularity, it's too early to say), or Nim (now that's truly
an esoteric one).

~~~
yami
Well Erlang and Haskell aren't the most common programming languages that I
can think of. I've never seen any job offer (in my area) for those. But I
often find articles talking about what people achieve using those and I find
it fun but are they really useful in the 'grown ups' world?

~~~
codygman
They are both very useful for solving real world problems, yes.

~~~
yami
Well would you say to someone who is going to look for an IT job in a few
years to learn those languages?

~~~
codygman
For the most part yes, but it depends on the position they're trying to get.

------
carsongross
I'm still actively working on intercooler.js, which is an extension of regular
HTML to bring declarative AJAX to the web. Just released a new version
(0.4.5):

[http://intercoolerjs.org/](http://intercoolerjs.org/)

MaxCDN has donated their CDN services, so it's easier to install now.

I now have some decent non-backend specific demos up as well, using mockjax.

------
hardwaresofton
I've been doing a bunch of work with Go recently, and think it's definitely
worth taking a look at. It's growing fast and is used in some pretty awesome
up and coming services, and it's very simple, which is nice.

If you're really into system languages, then maybe also do Rust.

------
msie
From my job hunting experience, Java, JavaScript and AngularJS skills are in
high demand. That won't change any time soon. So dabble in some small
JavaScript projects and you won't have to worry about finding a job.

------
sremani
Prediction: Rust is the language of 2015

~~~
smt88
Disagree. It's not even 1.0 yet. I wouldn't be surprised if it were the
language of 2016 or 2017, though.

Languages move painfully slowly.

------
codygman
Snap/Haskell/(opaleye|esqueleto|groundhog)/postgres web applications

Elm

Netwire games - Haskell frp

Gloss - Haskell 2d graphics

Nim (generics, fast, enforce purity, macros)

Idris - Becoming more useful for real world problems.

Clojure - fun pragmatic lisp that leverages the JVM

------
RKTJKLJ
C++14

------
V-2
I think reactive programming (such as RxJava) is quickly gaining on popularity
these days and seems like a promising paradigm...

------
lazyloop
Go retro with Perl and [http://mojolicio.us](http://mojolicio.us)

------
dllthomas
I expect I'll be fleshing out my Clojure for work. I've some interest in
picking up Rust in my spare time. I also plan to venture into dependently
typed languages (Coq/Agda/Idris) at some point, but that may or may not be
2015.

------
chrisan
What are you goals?

If you want to Get Shit Done and ship a product, pick a tried and true (and
possibly boring) stack

Be wary of the Magpie! [http://blog.codinghorror.com/the-magpie-
developer/](http://blog.codinghorror.com/the-magpie-developer/)

------
drethemadrapper
I am rooting for Haxe (as a language, compiler & set of tools) and Lua (for
embedded system programming). They rock!! BTW, they are the next generation
programming languages.

~~~
klibertp
> BTW, they are the next generation programming languages.

What does this mean? You mean like those: [http://en.wikipedia.org/wiki/Fifth-
generation_programming_la...](http://en.wikipedia.org/wiki/Fifth-
generation_programming_language) ?

~~~
drethemadrapper
Yes, the 5GL. "The fifth-generation languages are designed to make the
computer solve a given problem without the programmer. This way, the
programmer only needs to worry about what problems need to be solved and what
conditions need to be met, without worrying about how to implement a routine
or algorithm to solve them".

The two languages{same as a set of tools, compilers,e.t.c} would do that.

------
MrDom
To be honest, the only language I've really taken an interest in for the past
few months has been Jonathan Blow's Jai, which isn't available yet.

------
ratsimihah
Thanks for aggregating this. I'll be heading in the opposite direction, so
that someone may be right if the majority turns out wrong. Just kidding.

------
clyfe
Polymer

~~~
McKayDavis
This and Web Components [1] in general are high on my list of technologies to
learn.

[1] [http://webcomponents.org/](http://webcomponents.org/)

~~~
meerita
I'm interested in Web Components, yet, I couldn't see the advantages.

~~~
McKayDavis
The biggest advantage I see is HTML imports [1] finally providing a common
bundling mechanism for HTML/CSS/JS. Custom elements can also finally get devs
out of <div> hell.

[1]
[http://www.html5rocks.com/en/tutorials/webcomponents/imports...](http://www.html5rocks.com/en/tutorials/webcomponents/imports/)

------
brudgers
J.

It's mind expanding.

