DEV Community

Discussion on: How many languages should I learn

Collapse
 
tadman profile image
Scott Tadman • Edited

It's not how many languages you learn that matters, what's important is the kind of languages you learn.

At a very high level, Java, C++ and C# are all fairly similar. If you learn one your knowledge will be fairly portable to the others, but learning another won't really improve your understanding on the whole. They all approach problems in largely the same ways.

You need to get way out of your comfort zone before things get interesting. Consider Ruby, one of the Smalltalk languages, which is considerably different from how statically typed languages like Java work. Even though it's object-oriented, there's a philosophy at work as to how to apply that which leads to simple, elegant solutions you'd never think to try in Java.

Try a logical language like Prolog where you don't so much program as you specify rules for how your program should behave. This is in contrast to imperative languages like Java where you must communicate in specific terms exactly what steps to perform.

Experiment with hardware-design languages like Verilog where you're working with blocks of code that end up making circuits, not instructions that a CPU executes, and solutions are expressed as a series of gates all working in parallel.

Then there's tools that aren't exactly a programming language, but aren't not programming languages either, like Mathematica, a very powerful math toolkit. It's a method for expressing mathematical operations in ways that the computer can understand and compute, giving you very powerful tools for working with data.

You may also want to try functional programming languages like Haskell or Erlang because of their often wildly different structure from conventional object-oriented Java code. Interestingly some of the approaches that these languages prefer do translate to Java and can give you new tools for solving problems in your Java work.

From an academic perspective the most important thing is for your next language is as different as possible from what you're used to.