DEV Community

Which Programming Language To Learn?

Erhan Kılıç on November 27, 2017

Hello everyone, I'm fullstack web developer. I know php, javascript, nodejs and learned a little go lang. I want to improve myself and learn stron...
Collapse
 
kspeakman profile image
Kasey Speakman

Ocaml or a derivative (Elm, F#, maybe even Reason if you like JS syntax).

It's on my list to give Clojure a try, but I prefer strong typing for any long term projects.

Collapse
 
joshavg profile image
Josha von Gizycki

Try Lisp, any implementation.

Why, you may ask. I recommend it not only because it's functional and functional programming is all the hype. I recommend it because it takes your brain and turns it inside out. Also, it has a syntax, that doesn't require you to put semicolons at the end of each line. How neat is that?

Let me tell you about my first experiences with Clojure, a Lisp dialect running on the JVM. I started learning it by reading "Clojure for the brave and true", very funny and well written book. Reading the first few chapters I thought "easy peasy, that stuff is a bit strange, but I get it". But when it came to longer functions, I'm talking about 10 lines, a whole new world collapsed onto me. Problems are tackled by a whole different angle here. I you don't know what "data-centric" programming means, you'll know it after your first few hours of Lisp.

Now, there are many different Lisp implementations. There is GNU Lisp, Scheme, the already mentioned Clojure, Hy etc. If you want a well developed and huge set of library at your fingertips, fiddle with Clojure, since it runs on the JVM and Java interop is no problem. If you want to go more low level, GNU Lisp should be a thing for you. Hy is a Lisp implementation using Python. Here you have low start up times (looking at you Clojure), big userland from Python (Python interop) and you can certainly do low level stuff too, I think.

Collapse
 
kodierkroete profile image
Steffen Frosch • Edited

Hi,

i do think you should get it for yourself clear why you want to learn a new language. All the language you mentioned seem to be a good choice.

Do you want to increase your market "value"? Learn the boring languages

Do you want to grow and learn new ways of solving problems? Maybe look at another paradigm. All the languages you mentioned are somewhat imperative. You could choose e.g. a functional programming language like ocaml , scala, erlang etc pp. You will learn new ways of thinking about problems.

Maybe you could make it easier for you if you got a project you want to build with it. Is hardware involved? Then maybe c/c++ will be a good choice, do you need to process a lot of data like in machine learning? A language with easier concurrency (hint it's never easy) might be a good choice.

Collapse
 
erhankilic profile image
Erhan Kılıç

I want to learn new ways of thinking about problems and new ways of solving problems. I want to improve myself at programming. You know, I can't feel like I'm programming or solving problems at web development anymore. I'm just doing same things at web development.

Collapse
 
kodierkroete profile image
Steffen Frosch

A couple of years ago i started coursera.org/learn/programming-lan... this course on cousera.

It was about SML which i never heard of but it is a pure functional language and it taught me a lot of concepts, maybe it is worth to have a look.

Thread Thread
 
erhankilic profile image
Erhan Kılıç

Thanks!!

Collapse
 
pbouillon profile image
Pierre Bouillon • Edited

Malbolge :kappa:

More seriously, go with whatever you feel the most. I'm not an experienced developer but from my veeeeery little experience, everytime I tried to learn a language I wasn't into, it was way more longer.

I usually try to think about a project. When I got one that I would enjoy programming, I pick the language which suits the most to this idea. Finally, I learn through the difficulty and needs of my little project !

Rust is about security if I remember it correctly.
Go about rapidity.
Python about.. pretty much everything imho (and incredibly fast to learn).
etc.

Good luck and happy coding !

Collapse
 
alexburlacu profile image
Alex Burlacu

Haskell will bend your mind with its advanced type system and abstractions from category theory. So it's a must.
Also, any LISP will do, as mentioned by Joshua. Personally, I tried Hy and Clojure. And also Smalltalk, as far as I remember it is one of the most loved languages by the Stack Overflow community. Oh, yeah, Prolog or any logic programming language might also be interesting.

Collapse
 
dwd profile image
Dave Cridland

You say you want to learn a strong typed low level language. So C and C++ are the ones to learn. Huge amounts of code out there, and C++ in particular is undergoing rapid evolution - the compilers are straining to keep up right now, so it's hardly "old".

But as you hint, you really want to learn techniques, paradigms and concepts more than languages. C++, for example, is a multi-paradigm language - you can code declaratively in it, as well as OOP and Procedural (and indeed template programming is all declarative). You can do functional programming, too, at a bit of a push. But it's really heard to learn many of these techniques in C++.

To really learn solid functional programming, you want to learn Haskell or similar. To really get to grips with Declarative programming, I'd spend some quality time with XSL. You'll hate it, but you'll love having procedural code back when you're done. SQL is also declarative, but in many ways less interesting.

Learning how other languages then make up for missing support is also interesting - most modern C programs use OOP techniques to handle complexity, despite C having no native support for OOP.

And most modern languages - Python is a perfect case in point - often borrow cheerfully from many sources. Python and Javascript both have a vast array of borrowings from functional programming, as well as a lot from OOP. Both have native support for structured procedural programming as well.

Collapse
 
marksasp95 profile image
Marco Suárez

New way to solve problems? Strong typed? New challenge? You should totally learn Java, it's a different way of solving problems, for it's the OOP language by excellence. At first you may get very frustrated, but then you'll discover the beauty of it. You'll see what real abstraction it's about, I see it that way because I believe that we humans see the world as objects that are instances of classes.

Collapse
 
papey profile image
Jean Michel Functional Programming

Try Elixir is you want to discover functional prog, it's awesome.

Collapse
 
ravi9989 profile image
ravi teja

I suggest you python because easy syntax unlike c/c++ and easy to understand In my perspective :) I think python is also a booming language in recent days