Get More Stuff

13 rare and underrated programming skills

There are so many programming languages to learn; hundreds of front-end and back-end languages, their frameworks, building applications using them, and so on. If you are majoring in computer science, you will have picked up C or C++, but if you program for a living, it is more likely that Java, Python, Perl, and Ruby are the ones on your hot-list.

But what about those programming languages that are rare yet quite singular, those that aren’t very popular yet worth checking out? They may be non-mainstream, and they may be esoteric languages you have probably never heard of, but come on, if you are a programming zealot, you know that your head can hold more than two languages!

Here’s a small list to interest a hobbyist or hacker.

Rust

Sponsored by Mozilla Research, Rust focuses on “type safety, memory safety, concurrency, and performance." You can use Rust for distributed client/server applications and reliable system-level programming. Perhaps its newness is why fewer people queuing up to learn it. Going by this post, it doesn’t look like Rust will be on this list for long. Rust seems to have much brighter future.

Hack

Facebook created this programming language, a dialect of PHP, for the Hip-Hop Virtual Machine (HHVM). Using Hack, developers can build complex websites really fast; it runs without compiling. This is a statically typed language which also allows coders to use dynamic coding like in PHP. Despite an impressive début on the most popular social network, Hack hasn’t found as much adoption since.

Ada

Ada has many great features, such as the flexibility to “scale-up to meet needs, avoidance of namespace pollution, data abstraction and information hiding semantics, reusability, concurrency support, methodology neutrality, real-time support, and safety-critical support.” But then why is it not popular? Some programmers have a slew of reasons that you can check out here.

Haskell

Haskell is a “purely functional” programming language that is lazy, statically typed, and has typed inference. Besides its simple and elegant amazing syntax, Haskell’s speed may amaze and surprise you. Its adherents swear by its novelty, power, and fun factor. It is more popular than you think. For example, ABN AMRO uses it for investment banking and Bluespec, an ASIC and FPGA design software vendor, uses it to develop products. You can go here to read about Haskell in industry.

Erlang

The language, developed by Ericsson Computer Sciences Lab, will be well-known to all those who have ever come up with a problem of concurrency. Freely available as open source, Erlang allows multithreading and uses a virtual machine like Java but unlike the latter, it is meant for embedded systems and very robust servers. Some very interesting applications have been developed using Erlang including Facebook chat. Its weird syntax, according to some, keeps new users away. Like any programming language, Erlang is good for some tasks, while not so efficient for others. Read this post if you want to know more.

Racket

Racket is a multi-paradigm language based on the rudiments of Lisp/Scheme. One of its design goals is to serve as a platform for language creation, design, and implementation. (Wikipedia) The Racket guide is one of the clearest and most well-organized documentation available for any programming language today. Its grammar is simple; it is untyped, and has teaching-centric libraries and languages. I’m not exactly sure why Racket is not popular; could it be that more people than we think hate parentheses?

IO

It is a relatively new programming language. It has a prototype-based object model like the ones in Self and NewtonScript (Wikipedia). Its best features are its simplicity and minimal syntax which can be learned quickly. Adherents say it is a great language for general purpose programming. Once again, perhaps its newness is stopping it from becoming more popular. Read more here.

Groovy

Apache Groovy is a dynamic language, which is optionally typed, for the Java platform. This object-oriented language can be used as a scripting language or in compiled way. People even call it a “superset of Java.” Its features include a flat learning curve; compact syntax; support for unit testing, dynamic typing, and domain-specific languages; powerful processing initiatives; and ease of web app development. The lack of marketing and skillsets could be factors for the language not getting enough users. But TIOBE index says its two times more popular than Scala.

Scratch

For those who want to catch them young, this programming language from MIT Media Lab is designed for children between the ages 8 and 16. Scratch has no typical syntax. “Make it more tinkerable, more meaningful, and more social than other programming languages,” says the development team. It is free, it is visual, and it is great for games and animation.

Dart

At one time, Google’s dart was all set to dethrone JavaScript as the language of choice for web development. Unfortunately, Dart got left behind by JS and the tech giant remodeled it along the lines of CoffeeScript (Dart-to-JavaScript compiler). Customer-facing web applications of AdSense and AdWords use Dart. Dart has users outside Google, such as Blossoms and Workiva. Despite its strong hold within Google, Dart will have to be sold to outside developers.

Q

Q programming was developed by Kx Systems, a data analytics vendor. It offers multiple approaches to solve a problem, making it versatile. It is the query language for kdb+, a disk based and in-memory, column-based database (Wikipedia). As a functional programming language, it has issues with predictable performance, which could be due to laziness and “a higher reliance on garbage collection.”

Clojure

Clojure, designed for concurrency, is a variation of the Lisp programming language. It runs on the Java Virtual Machine; you also get Java interoperability for free, in a more “Lispy” flavor. Unlike other lists, it comes with extra additions, multi-methods, and many pre-built data structures like vectors, maps, etc. Clojure hasn’t faced as much criticism as some other variants of Lisps have. Read this Quora thread to see why people think it is awesome.

Lua

Despite its simplicity, Lua is considered a multi-paradigm language supporting imperative, functional, and object-oriented approaches. Lua code tends to be executed faster than other interpreted languages. Lua has so many uses!

There are thousands of languages, their frameworks, applications etc. It's very difficult to make a list like this. I’m sure you want to put some other languages, such as REBOL, Squeak, OCaml, and Whitespace, here or replace some of these. Some like Chef and Omgrofl are plain bizarre.

But really, a programming language is just a tool to get your job done, what matters is you master the tool you know properly. Then again, you never know when knowing a bit of these underrated languages could help you, do you? If you’d like to get your arsenal stocked with the must-know programming languages for 2017, go here.