What are the risingest new programming languages?
June 11, 2015 6:29 AM   Subscribe

If I were a hobby programmer and looking to learn a new language both for self-education in new areas and to get skills that could be marketable in the future, what should I look at?

I've read this recent thread which gives good advice about what to look at with an absolute focus on employability, and something like Scala certainly qualifies. But what about the Swifts, RUSTs, Gos, etc of this world? Or the Haskells, Rs, and other nichier ones? The self-education aspect means that the more removed a language is from the existing mainstream models, the more interesting it is (part of me still wants to learn Lisp!). Analytics, concurrency, IoT, test automation, gaming: I might wish to explore one of these areas through learning an appropriate language, but which is going to be around for a while?

Do any of the current new breed have a chance of becoming truly significant on the scale of the undisputed greats, or (as I suspect) have those won the Throne of General Purpose and will never relinquish it?

Disclosure: this is part of my research for a commission, as well as being of personal interest. It's not a 'please do my homework assignment' question; I would really value opinions from those more deeply immersed in this world than I.
posted by Devonian to Computers & Internet (22 answers total) 30 users marked this as a favorite
 
R is exploding as the language of data analysis, statistics, and "Data Science." It is also quite approachable- not at approachable as Python, but easy to learn nonetheless.
posted by rockindata at 6:34 AM on June 11, 2015 [3 favorites]


If you haven't seen the 2015 Stack Overflow Developer Survey, you may want to take a look.

My personal, jaded opinion is that someone who can kick ass with SQL will never go wanting for employment.

As for the "new kids on the block", my gut feeling is that node.js (which is server-side Javascript) will be a keeper.
posted by doctor tough love at 6:38 AM on June 11, 2015 [7 favorites]


In my (server/web-based) corner of the programming world, everything is going to various js libraries and mobile. jQuery is huge; angular and node are picking up. A lot of people starting to use the Bootstrap framework too.
posted by specialagentwebb at 6:49 AM on June 11, 2015 [1 favorite]


Swift is the next big thing.
posted by bensherman at 6:55 AM on June 11, 2015


Response by poster: (I'm saving up substantial replies until later, but thanks v much to Dr Tough Love for the Stack Overflow dev survey link, which is right on the nose)
posted by Devonian at 7:03 AM on June 11, 2015 [1 favorite]


I think part of the answer to this question is "what kind of programming would you want to do"? People use different languages for different things.

As you've already realized, the popularity of a language isn't the whole story on its marketability. If a language is more popular, there are more jobs, but also more qualified job seekers. A language can also be really popular for a given application or in a given niche, but then disappear when the application or niche goes away.

I don't believe that you're credible as a professional programmer if you only know one programming language. You have to be able to work at least a little in multiple languages, and if you really want to advance you have to know how everything fits together and how to pick the right tools for a job.

I don't think that the present general purpose languages are unseatable. Most of them kind of suck, actually, particularly in their ability to help you produce *quality* code. Which is something I keep hoping people will start to care about.

On languages, including those already mentioned...

If you want to expand your mind, Haskell is a beautiful language (prettier than LISP in my opinion). But that's a crapshoot on marketability... you have to find a niche, and, as somebody said about Scala and Clojure in the other thread, you might also have to build a personal reputation.

If you want to write operating systems or embedded code, you need to know C. But I hope you'll be able to actually write most of your code in Rust or Go or something, because C is a dangerous language. The trick is guessing which one(s) will actually get traction.

I have no idea what people write games in. C++? Anyway, games and the sorts of concurrency things you mention about are natural targets for Rust/Go/Swift if you don't write them in C.

Swift is Property of Apple, and Apple didn't manage to get anybody other than Apple interested in Objective-C. Also, you have to use Apple stuff. Ew.

With SQL, you can be a DBA, or part of a Web app development group. You can't write a whole program in SQL, though... and it's entirely possible to learn all there is to learn about SQL, and be "done". You'd get to brush up on a few new features for a couple of weeks whenever there was a major release... and then probably still choose not to use them. Which some people might not like. I would die of boredom.

With node.js, you're mostly going to be developing Web apps, and maybe a few other random things. And JavaScript as a language is almost PHP levels of evil(TM), and on a personal interest level I suspect you'll find it has nothing interesting to say that other languages haven't said better. Admittedly, though, "Web apps" covers a helluva lot of ground these days.

I'm personally hoping JavaScript ends up as a target environment for compiled code, rather than a language that people actually write in directly. If it doesn't, I believe it will end up being a platform for boring applications written by programmers who are largely interchangeable with one another.

Which is actually the reputation COBOL had when I started in this business.

I do not agree at all about spending time learning stuff like jQuery. jQuery was a hack to deal with inadequacies of the basic JavaScript DOM... which have now been remedied. jQuery is running on momentum.

With something like R, you'd have more chances to do things that I, personally would think were interesting, albeit only in a relatively limited application domain.

Be careful not to mistake this year's trend for a career, anyway.
posted by Hizonner at 7:18 AM on June 11, 2015 [7 favorites]


I have recently started learning Go. The Go community touts simplicity as a top level feature.

Another language that has piqued my interest is Rust. It looks like a nice replacement for C++ for low level system level code. Here's a podcast episode that explains a lot of the features: Rust with Steve Klabnik and Yehuda Katz
posted by braveterry at 7:19 AM on June 11, 2015 [2 favorites]


I work with a lot of developers and consultants, and their favorite up-and-coming languages are Scala, Akka, AngularJS, NodeJS, and Go. I've also heard that Erlang developers can make a lot of money, but I don't know how widespread Erlang use is.
posted by neushoorn at 7:20 AM on June 11, 2015


bensherman: "Swift is the next big thing."

I'd couch that slightly-- Swift has the opportunity to be big on servers and by open sourcing it Apple's given it the opportunity to move that way. But the core of the language is the easy part-- the hard part is the ecosystem that grows up around that core, the third-party libraries that make the magic happen. It's going to be interesting to see if that ecosystem grows, and that will quickly define whether it's going to be a language that's going to make a larger impact then just coding Apple apps.
posted by Static Vagabond at 7:20 AM on June 11, 2015 [3 favorites]


Oops. I sort of made a mistake there. As in saying exactly the opposite of what I meant. I wrote:
I don't think that the present general purpose languages are unseatable.
I meant that I think they are unseatable (for new applications), or at least that they're not unchallengeable. There'll definitely be work in them for a long time, but they're not the last word.
posted by Hizonner at 7:28 AM on June 11, 2015


Came in to tout Groovy, which doesn't get enough love IMHO. I know real live devs who are using it heavily ... and it is great for a hobbyist.
posted by Sheydem-tants at 7:29 AM on June 11, 2015


If my younger self came up to me today and asked me what to learn, I'd recommend:

- Learn Python, it's ubiquitous, easy to learn and crazy-powerful. Focus on web-frameworks (I'm partial to Flask) and in particular focus on building nice API's using it, rather then just generating templates to serve to a browser.

- Then learn React.js (and the stuff that supports it)-- I honestly think they're onto something with it, if it doesn't survive, something that evolves from it's ideas will. If you picture yourself as a front-end dev, then spend more time on it, if you prefer the back-end work, just get comfortable with it talking to your API's. I wish that javascript will die a death at some point, but it looks like we're stuck with it, get on the train now, or you'll be running a lot to catch up later.

When you get comfortable with the above, start dipping your toes into Rust or Swift (or both!), see which feels nicer to you. Swift will be really big on the Apple side, but it's still dependent on the community to see if it'll get big on the server-side.

Functional languages strike me as a language that you'll know you need to learn, rather then one you seek out to learn, if that makes sense? So just wait for that day to come.
posted by Static Vagabond at 8:05 AM on June 11, 2015 [5 favorites]


I've also heard that Erlang developers can make a lot of money, but I don't know how widespread Erlang use is.

Erlang has crossed the doorstep two or three times recently where I work. So far, it's been something that's "come along for the ride" with another product or technology, not something that's been chosen for use directly.

So I was curious as to whether there might be any value in learning it, whether there are jobs available that mention it, and so on. When I checked last year, there were zero jobs in Minnesota that mentioned Erlang at all in the posted job description. Nationwide searches through several sources turned up maybe three or four hits, all of them in Seattle or California.

The impression I got was: valuable niche language in some industries, somebody's probably making money off it, maybe even very good money, but not many people, and locations with jobs were much less diverse than with other languages.
posted by gimonca at 8:25 AM on June 11, 2015 [1 favorite]


> I don't believe that you're credible as a professional programmer if
> you only know one programming language.


Absolutely. But I believe the OP knows multiple languages - he just wants some idea of what new languages are 'hot' (along with their capabilities) so he can decide where to focus his learning efforts.

(personally I'd go for Swift or Haskell or - weird though may sound - MATLAB)
posted by doctor tough love at 8:28 AM on June 11, 2015


It would be helpful here to know what kind of programmer you currently are.

Scala seems to be gaining a lot of traction among more developers who are traditionally rooted in languages like C# and Java, who are looking for a more streamlined environment but see languages like Ruby as not-quite-serious-enough.

With SQL, you can be a DBA, or part of a Web app development group. You can't write a whole program in SQL, though... and it's entirely possible to learn all there is to learn about SQL, and be "done". You'd get to brush up on a few new features for a couple of weeks whenever there was a major release... and then probably still choose not to use them. Which some people might not like. I would die of boredom.

SQL is actually going away as part of the web developer's toolkit, thanks to the growing maturity of ORM tools. I run SQL queries to manually check data or do ad-hoc queries, but I can't recall the last time I wrote a stored procedure or anything like that.

Javascript is everywhere now, and it's really starting to suck less as a language. AngularJS is wildly popular right now. jQuery is on the decline, but there are a ton of libraries that still need to be rewritten in other frameworks. Underscore and Lodash are great tools that simplify working with collections.

If you're interested in iOS development, learn Swift. Ignore all the "OMG Apple" cries, it's where the industry is going. It's also a pretty cool language.
posted by mkultra at 10:29 AM on June 11, 2015


> SQL is actually going away as part of the web developer's toolkit ...

I won't argue with you there. Especially people who work on the Front End of a system, they really shouldn't be touching SQL at all.

But the billions of lines of legacy SQL code in all of those back-end systems that feed the front end? That stuff is probably gonna be around for awhile.
posted by doctor tough love at 11:20 AM on June 11, 2015


Swift has the opportunity to be big on servers and by open sourcing it Apple's given it the opportunity to move that way. But the core of the language is the easy part-- the hard part is the ecosystem that grows up around that core, the third-party libraries that make the magic happen

Until we see what exactly Apple releases and what particular license they pick, one can't be certain, but unless they actively screws that part up (possible), my guess is that Swift is going to explode in the same way that JavaScript has -- it has a captive audience for a *very* popular client platform, which means there is going to be a thriving community. And the developers in that community are almost inevitably going to be curious about where else they can use it... like, say, for the server-side of the apps they're writing in Swift on the client side.

AngularJS is wildly popular right now. jQuery is on the decline, but there are a ton of libraries that still need to be rewritten in other frameworks. Underscore and Lodash are great tools that simplify working with collections.

If your interest is just that you really want to be as qualified as possible for as many front-end jobs appearing on the market now as posible, learning AngularJS is very good advice.

As someone who has worked with a large Angular app in the last year, though, my advice is to skip it.

Angular has some decent ideas but as a whole it could well be an avatar for a certain variety of tool in the industry that tends to create its own problems and demand you focus on them instead of the problem you originally set out to solve; I think its popularity is a consequence of a deeply entrenched set of sicknesses in the industry.

Learn something else: Backbone is old hat but it's legible, actually sane, and more likely to get you jobs working with people who do more thinking about their actual needs when considering adopting a framework approach; Ember is the big-framework alternative to Angular, it's written by people who are more native to JS than Angular (which is essentially imported from Java-land), and they showed a lot of thought/care in keeping backward compatibility along with recent improvements; and if you must chase fashion, React and similar functional-reactive virtual dom-diffing libraries appear to be the new hotness that are going to threaten Angular's fashionable status -- though I suspect Angular's enterprise-y feel is going to give it staying power in enterprise-y markets for some time anyway.
posted by weston at 11:24 AM on June 11, 2015


I think your question could be interpreted in a number of different ways, with different answers.

(1) You're interested in applying computer programming skills to new areas (Analytics, concurrency, IoT, etc). Try picking up a generalist language with good library support for lots of things (eg python, with the Anaconda distribution to minimize installation hassle). This way if it turns out that, eg, your analysis requires pulling in a bunch of data from a spreadsheet, you type conda install xlrd on the command line, read a couple of paragraphs of docs, type import xlrd in your code, and you can get on to the serious business of processing the data you've pulled in, rather than having to spend ages messing around trying to massage things so your obscure indie language can understand them, or be understood by other stuff. I like python for this because if I find myself thinking "surely somebody has done this tedious stuff before", somebody probably has and has published their code, and because their code is probably quite readable if I want to go through it and understand how it works. It's also pretty flexible about which programming model (imperative/OO/functional/reactive/whatever) you use.

(2) You want to have a better understanding of CS or how programming works, or you want to know cool funky stuff, or you just plain want to learn lisp. Learn lisp, then - it won't be wasted time. Try Racket, set it up to look like Scheme, and work through SICP. Lisp will probably be around for a long while in one form or another, and it's also pretty good for writing other languages in - one of the exercises in SICP is writing a Scheme interpreter in Scheme. Even if you don't wind up writing a lot of lisp, you'll probably find yourself using lispy tricks in other languages.

(3) You've heard about new languages like Swift/Rust/Go and want to try them out, but which one? Read through some tutorials and pick the one that seems the most fun. It's really hard to predict what language will win out or why - if you told someone ten years ago that Javascript (Javascript!!) would be a serious contender for server-side code they'd have laughed in your face. Even if the language you pick doesn't turn out to be The Big One, chances are you'll have picked up enough skills that moving language will be less of an issue anyway - the more languages you learn the easier it is to pick up new ones.
posted by doop at 1:25 PM on June 11, 2015 [2 favorites]


What's important is APIs and platforms, not languages. If you want to do server devops, for instance, knowing Hadoop and Amazon Web Services is way more important than whether you prefer Scala or Java. Web front end work and React is the big new thing. Mobile is where a lot of growth is now, and learning Android and/or iOS would be a smart career move.

As for languages themselves: Swift, Javascript, and Go are the new hotness. Java and/or Scala still do a lot of productive server work but are no longer new and hot. Python is still the scripting work horse.
posted by Nelson at 1:38 PM on June 11, 2015


Response by poster: OK - to be more precise, I'm not planning on learning a new language myself, unless I come of up with a project that would benefit from such a move, but I've been asked for an overview of where the new hotness is for those who are.

My personal interest is in keeping up to speed on this area, as I'm curious about the general development of coding (having had some mild involvement in language development in the past, and just being that sort of chap.)
posted by Devonian at 2:35 PM on June 11, 2015


I think its really hard to predict which if any of the new languages will become as popular as Java or Javascript or even Python.

I mean, as doop says "if you told someone ten years ago that Javascript (Javascript!!) would be a serious contender for server-side code they'd have laughed in your face" --- and I still am amazed that anyone uses Javascript for server-side code, despite knowing it happens for some reason.

Of the truly "new" languages, I'd probably say Go or Swift would be the most interesting.

But I don't use any programming languages that were invented this century (my work is in C++, Java, Javascript, and Python) so thats based more on buzz (which seems like maybe what you want?).
posted by thefoxgod at 8:22 PM on June 11, 2015 [2 favorites]


Response by poster: Ok , thanks everyone. Some very useful insights.

Yes, I'm interested in the languages that have the most buzz about them, either because they illustrate some new thinking or because they're peculiarly good at solving some new problem. The target audience for the commission I've been given is people who are intellectually involved with exploring programming, some (but not all) of whom will either be working or planning to work as coders. (I'm in the first group, but not the second.) A secondary consideration is whether they'll be hugely successful in the long run, although they should have a good chance of being relevant in five years. It's all good context.

I'm steering away from frameworks like node.js, not because they're not relevant or interesting but because that's a different story! I'll deal with that and the whole Javascript issue separately, as well as why you should at least get Java/someCvariant/Python under your belt before striking out for deeper waters.

Swift, Go, Rust will probably be my picks for the mainstream side, and MATLAB (good call!), R and Haskell for the wilder shores. Or some combination thereof. Or perhaps Scala instead of Haskell. Time to do more research.

(I'm not going to pick a best answer for this thread, as they've been uniformly informative. MeFites FTW!)
posted by Devonian at 6:45 AM on June 12, 2015


« Older Moving mom up to MA   |   Long term camping in hot hot weather. What should... Newer »
This thread is closed to new comments.