DEV Community


Discussion on: I want to learn a new programming language. What should I learn?

ahferroin7 profile image
Austin S. Hemmelgarn

Immediate thoughts that come to mind include:

  • Python: Easy to learn, lots of tutorials and other resources, plus very good support for both machine learning and robotics. The downsides are that it's pretty seriously limited when it comes to true concurrency, and it puts a huge emphasis on object-oriented programming in many places that don't necessarily need it.
  • Lua: Also easy to learn. Lua is a super-lightweight language designed to be embedded in other programs (a lot of games use it for UI or AI scripting), but it's also insanely portable (you can run Lua on almost anything that has a working ANSI C toolchain, people have even ported it to the old LEGO Mindstorms NXT platform). However, it's not a great option for machine learning, and it's got a pretty limited ecosystem.
  • Elixir/Erlang: If I were actively looking at getting into robotics, I'd probably be looking at working in either Elixir or Erlang whenever I could. The underlying BEAM runtime environment used by both is designed for high-concurrency distributed systems with insane levels of reliability (Erlang was designed by Ericsson for use in telecommunications system). Elixir is a bunch of macros and syntactic sugar on top of Erlang, and both are trivially interoperable. Like Lua, there's limited ecosystem, though both are seriously marketable skills (a lot of big name companies that offer network services with high reliability requirements (for example, Discord or Nintendo) use Elixir or Erlang for their backend systems).
  • C++: Mostly because this is what the Arduino platform uses. C++ itself is a pretty marketable skill, though it's not as popular as it used to be. The language itself is not exactly easy to learn, but you can find lots of good resources online for it.