Programming languages and Frameworks to learn in 2015

46 points by meerita ↗ HN
I can'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 :)

78 comments

[ 2.9 ms ] story [ 155 ms ] thread
+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.
Elixer and Phoneix definitely on my dabble list. Falcon (Python) definitely on my 'use in production' list.
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.

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.

(comment deleted)
Polymer
This and Web Components [1] in general are high on my list of technologies to learn.

[1] http://webcomponents.org/

Prediction: Rust is the language of 2015
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.

Rust will be nice to play with. That is all.

What the Rust devs are doing is great, but so far system programming languages only succeed when OS vendors adopt them into their SDKs. Otherwise they are just another language to write business applications.

Even if that does happen to Rust, it surely won't be in right away in 2015.

+1

However, if you don't already know Rails or Grails (or possibly Django), then that is a good place to start.

Wait, they gave OM "Trial" status and React just "Asses"? How does that work?
I agree with you but just because the typo makes a reasonable difference, it's actually "assess" :)
The fact that OpenID is on their radar makes doubt about everything else on there...
They are referring to OpenID Connect which is actually Oauth2 for login and has nothing to do with openid 2.0 which is being phased out by most authentication providers (I.e google) http://openid.net/connect/
Ah, thanks. Got to wonder why they re-used the same name.
Very nice, have never seen these Radars. Going through the history of some Platforms & Languages is very interesting.
I think reactive programming (such as RxJava) is quickly gaining on popularity these days and seems like a promising paradigm...
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.
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

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

How do you feel about Go?
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.
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.
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?
I believe Nim also has generics and macros.
I think you misunderstand Moore's law. It states nothing about speed, but about chip complexity (number of components in an integrated circuit). Moore's law has been following pretty closely since 1965 (and looks like we will maintain it until 2020 at least at this point).

What we have hit is is the max frequency the CPU can operate at. This is not something Moore claimed (as far as I'm aware). Physics got in the way when the transistors got so small that they can't operate any faster without causing problems.

EDIT: reddit discussion about MHz cap from 3 years ago: http://www.reddit.com/r/askscience/comments/ngv50/why_have_c...

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.
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.
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.
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.
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.

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.

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.

> A year ago I wrote an article trying to round up new languages since year 2000 and what I think of them by just… glancing at them, or otherwise playing with them. I ended up sifting out the 5 most interesting in my not so humble opinion - Go, Rust, Dart and Julia. Now a year has passed and…

> I discover that I missed Nim!

> Nim was born somewhere around 2006-ish and is clearly a very serious language to consider, but is going suspiciously under the radar. Having reviewed this language more closely (and still doing so) I can safely say that for me it actually easily tops this list.

http://goran.krampe.se/2014/10/20/i-missed-nim/

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?

... or the horse out of the car.
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.

No powerful IDE on Linux / OS X.
Doesn't contradict with my statement, but yes. Luckily the rest 97% of developers are covered.
Are you sure that 97% developers use Windows? From my experience developers use Linux / OS X more often than regular users.
Only if you mean web applications. Many do write desktop applications.
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.
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.

monodevelop is no visual studio but works just as well as the best other linux programming ides
IntelliJ?
Now that .NET is going open source, I wouldn't be surprised if JetBrains came up with some good cross-platform IDE for C# and the rest of the gang
I thought linux developpers didn't use IDEs...damn time have changed !
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.
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
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.

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

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/

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.