DEV Community

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

Muhammad Wasif on December 13, 2019

I'm a front end developer. Now, moving to cloud native and nodejs but I want to learn a new programming language. Which one should I learn?
I would like to explore field of Robotics and AI. So, please suggest!

Collapse
 
tetri profile image
Tetri Mesquita

python 🐍

Collapse
 
nestedsoftware profile image
Nested Software

Yup. I think for things like AI and machine learning, Python is the way to go. I don't know much about robotics. I would expect that you can probably use Python libraries for that too, thought you may wind up having to learn some C at some point as well for lower-level stuff.

Collapse
 
tsturzl profile image
Travis Sturzl • Edited

I work at a robotics company. All the control systems are written in C++, and then the robotics code is a mix of python and C++. Used to work at an ML company and all the data scientists used python.

Collapse
 
isaacfink profile image
isaacfink

You could definitely use python to control a microcontroller like Arduino and as far as low level stuff python allows for c extensions to be included so it's definitely a good choice

Thread Thread
 
budprager profile image
BudPrager • Edited

MicroPython might be the answer here, it has support for ESP8266 Aarduino) and ESP32 (Arduino with built in WiFi) chipsets.

So having learnt python OP would be able to leverage the ai and machine learning libraries or use off the shelf microcontrollers.

Edit: docs : docs.micropython.org/en/latest/

Collapse
 
jamesthomson profile image
James Thomson

This is next on my list to learn as well. From the little bits that I've read it has a lot of similar concepts as JS which helps with the learning curve.

Collapse
 
manan30 profile image
Manan Joshi

I would suggest Haskell. It is a functional programming language and will completely change the way you think about programming.

Collapse
 
mateiadrielrafael profile image
Matei Adriel

Finally a nice suggestion

Collapse
 
dough654 profile image
douggerhardt

Agreed. Try it. You'll never be the same.

Collapse
 
kajoseph profile image
kajoseph

As a Node dev myself, my choice would be Rust, but in your shoes I'd stick with Node with Typescript a little while longer. I'm already familiar with C#, C/C++, Go, and Python, though. Rust tries to be a safe C, where C is the king of speed and flexibility at the expense of safety. Basically, C# = Java but with Microsoft backing. I like .NET Core and think it would be a good framework choice to learn with. However, if I were in your shoes (coming from the FE), I'd stick with Node for a while longer and start using Typescript. Get used to classes with public, private, protected, abstract, etc. permission properties. Use buffers, streams, cryptography, process, asserts, and fs which will help you get more familiar with back end function, organization, and optimization. Node and Typescript offers a lot of capability and flexibility where you can still build cool things without getting bogged down by new syntax, idiosyncrasies, and strict typing. Node is highly supported and you can find libraries and docs for nearly everything. You can use Johnny-Five for IOT and robotics, plus I think most popular ML libraries are available for Node. Once you feel comfortable with all that, I'd introduce a whole new language.

Collapse
 
thewasif profile image
Muhammad Wasif

Thank you. That was helpful

Collapse
 
arshadnadeem9 profile image
ArshadNadeem9

For front end
HTML 5
Css3
JavaScript es6 es7 es8
React.js
Angular js
Vue.js
And
Back end
PHP
Php oop
Mvc framework
Sql for data base with xampp server
Node.js
Express.js framework of node. Js
Nosql with mongo db

Php is for business apps and WordPress developer

Node.js is for mean && mern developer
If you want be full stack web developer then you needed follow these skills

Thread Thread
 
tracker1 profile image
Michael J. Ryan

You can go well beyond mean and mern with node. I use it for most of my scripting needs as it's easier to deal cross platform much if the time. There's also iot and ai (Tensorflow) options.

I think Python is probably a better long term option if going iot or ai though as there's more support there.

Collapse
 
arshadnadeem9 profile image
ArshadNadeem9

For ai developer
Python
Python with machine learning && deep learning
Tensor flow
Pytorch
Apache spark
Neural network

Collapse
 
mateiadrielrafael profile image
Matei Adriel

Any functional language (haskell, f#, elm etc)

Collapse
 
shrpereira profile image
Silvio Pereira

Clojure!

Collapse
 
mateiadrielrafael profile image
Matei Adriel

The deal breaker for me was the dynamic typing, I just can't live without the safety type systems give me...

Collapse
 
hokutosei profile image
jeanepaul

Erlang, scala, or elixir

Collapse
 
euler2718 profile image
John Corley

I see a lot of suggestion for python for obvious reasons. But why not Julia? Syntactically this language is pretty beautiful with native data structures python doesn't have without libraries. Plus it's fast, and easily works across your cores.

Haskell is also a great choice in theory...

I think if your goal is to learn a new lang and think differently, these are probably great choices.

Collapse
 
nozil profile image
Nicolas Zilli

Cloud Native => Go.
Otherwise I had a great time discovering Elixir.
You should try exercism.io/ for finding some exercises and mentors there is a lot of languages supported ;)

Collapse
 
theraggon profile image
Theraggon

You may want to check ML.NET and F#. Also .NET core is getting more and more awesome for a lot of things like web, iot, and probably robotics too (therobotreport.com/misty-robotics-...)

Collapse
 
juancarlospaco profile image
Juan Carlos

Nim lang πŸ‘‘ Python like syntax, C like speed, Rust like safety.

Compile and interoperate with C, C++, JavaScript, NodeJS, Python, ObjetiveC, NimScript, Assembly, WebAssembly, LLVM IR, Backend and Frontend, and more.

Collapse
 
ghost profile image
Ghost

depends on what you want to do, "Robotics" is somewhat broad; to program microcontrollers nowdays is C, you can do it in Python but is too heavy, limits you too much; Rust in the future, has the power for it but the embedded ecosystem is not very mature yet; you can do robotics with more horsepower tho, farther from Arduinos and closer to Raspberry Pi. As far as I've seen from afar, Python is the way to go for AI and ML.

For general purpose I'm beting for Rust; learning it for a while and loving it. But is very new, and although have very mature libraries, sometimes you find lack of libraries of some specific area.

Collapse
 
daniel13rady profile image
Daniel Brady

If you want to tie your decision to a language that a lot of people use for similar purposes, I find StackOverflow's annual developer survey to be a useful resource when considering this question.

For AI, machine learning, and data science, Python is the reigning monarch of programming languages at the moment, and has been for awhile.

For robotics, I don't have much experience to draw from. But I was told while at university to start by looking at languages often used in embedded systems and rule-based systems; to me, that means some variant of C, Rust, and Lisp (my personal favorite Lisps are Racket, Clojure, and Scala).

If you're mainly interested in personal growth, rather than how applicable a tool might be to your programming practice, I recommend designing/choosing a project and then doing that project in a language vastly different from the one(s) you're comfortable with in some way. (For me, this would probably be something with strict typing and/or DIY memory management.)

I see this a bit like traveling to a place with a vastly different culture from your own: the things you take for granted will start slapping you in the face, your world views about "the way something is done and why" will be turned upside down more than once, and you'll come back home with a valuably different point of view.

Collapse
 
rfaulhaber profile image
Ryan Faulhaber

Rust. It's just a cool language.

Collapse
 
lucbarr profile image
Luciano Barreira

It depends on what you want to do. I participated in robot soccer competitions for years and never heard of anyone using python successfully at it, mostly because in my specific use case the game is very dynamic and multi agent so AI has to run very fast.

I suggest you to research on what are people using for what you want to do and don't care too much about the programming languages, the concepts that comes before the code arrives are more important. I suggest to grasp into any little project and learn the language as you go. Since you must have some programming experience, if the language shares paradigms with what you already know, your efforts will be merely to translate your thoughts into that specific language.

Collapse
 
toordog profile image
toordog

Java is great, growing more every day, in fact the market for java programmers to hire just for replacing python code is crazy, kotlin isnt bad too learn also, but its definitely not on a level like java. I know 12 different languages, and for the salary out of the gate if you're into money (I'm not) isn't too bad, top dollar on replacing python code for enterprise design is all over the market now with all the kids from college scripting up a lot of bad python and other languages.

Collapse
 
kumarvarun1987 profile image
kumarvarun1987

Hi
I am working last 2 years in RPA(Robotic process Automation) and AI domain, personally I suggest start learning on RPA and ML.
Below are the new RPA and ML language
Workfusion: if you know Java easy to learn
Uipath :
Blueprism
Pega
Blockchain

Collapse
 
th3pwn3r profile image
Th3Pwn3r

Please forgive my English.
Python will greatly expand what you can do, even backend with things like django, also there are amazing frameworks like tensorflow for IA, magenta for IA and music, you can automatize boring stuff ( which by the way, if you use Linux or Mac adds another layer of possibilities to get things done fast and efficiently). If you really want to understand how things work at low level, learn c++ it also will give you the tools to learn any language faster since most of them inherit from c it's sintax.
I had a lot of trouble learning front end coming from c, so it might be hard to learn it first for you, in that case, python should be first.

Collapse
 
th3pwn3r profile image
Th3Pwn3r

Also, a question for you op, I really love using vanilla js since it seems to me I can do everything I need without things like jquery, is any reason to use it aside from the fact that the lines of code gets massively shorter? Maybe it is kind of a dumb question I'm such a n00b xD

Collapse
 
kryptonchain profile image
kryptonchain • Edited
Collapse
 
bretthancox profile image
bretthancox

Arduino is the usual starting point for embedded software and that means a subset of C++.

Python is also possible through circuitPython/microPython, though your board options are different.

If you plan on using something like a raspberry pi, then the world is much more open. Many major languages have libraries for accessing the RPi GPIO pins and the board obviously has enough power for more advanced robotics than Arduino.

Many languages claim to support embedded development, but the boards/chips and the corresponding development tools are more problematic for a person learning. I'd look at the hardware and see what you like, then see what it supports.

Collapse
 
avera360it profile image
Avera360IT

Hello Muhammad,
Before I started my company I was looking for a new job. A lot of the the jobs I was offered were looking for JavaScript and C++ developers.
I also think you’re right to explore AI. It is the fastest growing job market in terms of salary.

Collapse
 
thepeoplesbourgeois profile image
Josh • Edited

A bit astonished (but proud that I'm the first 😊) that nobody has suggested picking up a LisP yet. While nothing you pick up from this language superset is inherently tailored to the problems you'd work on within robotics or AI, the skills and patterns you'll acquire are paramount to workflows of the fabled 10x Developer class.

And, while more accessible than Haskell, it has the appearance of being more esoteric and impenetrable. I attribute this to the parentheses. They're great.

Collapse
 
matthewharwood profile image
matthew harwood

Rust

Collapse
 
my profile image
Mindaugas Sharskus • Edited

It is my sugestion too. If you want to learn NEW language I dont know what else to recomend. Obviously Rust is not for everyone and it is changing, but:
"Language which doesn't teach you anything new, not worth of learning"
What I like most is friendly comunity, running speed, safety, sintex, error messages are super helpful. Rust is perfect for WebAssembley and I believe in that technology. What I least enjoy is compile times and lack in some libraries (crates in Rust land), but even there Rust making improvement. But I would recommend Rust only as new language, for first language... It depends on your interest, but generally Java 8+. Is not super fun or easy language, but shares many similarities with other languages so it will be easier to learn other one later. Plus it is still very popular in industry.

Collapse
 
gekod profile image
Helder Araujo Carneiro

Kotlin

Collapse
 
codenutt profile image
Jared

Kotlin is dope.

Collapse
 
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.
Collapse
 
aelentel profile image
Aelentel

Cobol, Ada and maybe fortran 77.

Haha joking. Maybe Java, Seems counter intuitive but all in all it's a robust language for backend. dotNet for going Microsoft shop. Cpp if you want to do pointer everywhere and memory management. Else if you want to get arcanic Lisp, Logo, Prolog, Forth, Lambda. The rest either lack a bit of stability or is just the Nth attempt at being different.

Else just take the one that is getting you a bit outside the frontend world πŸ¦„

exploring-data.com/vis/programming...

Collapse
 
mikaturk profile image
mikat

For AI, definitely learn python but C++ is also really good because that helps with the understanding of how a computer does it's work and it's a language that you can use with webassembly and nodejs native modules to get some nice speedup in JavaScript apps

Collapse
 
chillyvanilly77 profile image
Chilly_Vanilly

Well, when I hear robotics, I think of embedded-like programming...and btw AI can be written in any language so... Hh
But I assume C wont really be a favourite, so why not going with Rust?
It is EXTREMELY versatile, powerful, can ve used even for the web with native WASM-compiler target support and the compiler really helps u out a lot when there is something messed up in your code, which should be a great hepl when learning the lingo ^

Cheers!

Collapse
 
mixmastoras profile image
mixmastoras

Like most people mentioned, Python appears the most used for AI and maybe C/C++ for robotics.

One favorite of mine that is used a lot in science stuff is Julia. I really like the community and the quality packages for Math, machine learning, optimization. But it tries, just like python to work on a higher level.

There are cool new languages under development/growing like Rust (backed by Mozilla) that target C performance.

I've also heard people in many startups adopt Go for microservices.

Erlang was used to build CouchDB, and many cool stuff that we use daily. I know only a few things about this language but you should take a look deeper if you're curious.

Collapse
 
nestedsoftware profile image
Nested Software • Edited

Arduino and Raspberry Pi are well-known technologies for tinkering with DIY robotics projects. There is a less well-known company, Phidgets, that you might want to look into as well. They have a really dead-simple, standardized programming interface for all of their devices. The interface also works with a wide variety of programming languages, including Python, Java, JavaScript. If you want to build something that works, I think it's faster and easier than Arduino/Raspberry Pi.

Collapse
 
rokath profile image
Thomas HΓΆhenleitner

Go is an universal language, very productive, has understandable modern concepts, uses composition instead of inheritance for objects, is typed and as compiled language fast in execution. Not running on very small microcontrollers but easy to learn.

Collapse
 
kchawla_pi profile image
Kshitij Chawla

Since you haven't decided your niche yet, Python. It opens doors to the backend and APIs, and all data and automation related stuff.
A lot of companies use Flask to build their backend and APIs and add queuing, then deploying new or pretrained ML models in Docker containers orchestrated by Kubernetes.And this often starts at a company from Python.
JS is primarily a frontend thing and will remain so for several years. The benefits of nodejs are a specific niche,most servers don't get extra benefit from it.

Collapse
 
injectedfusion profile image
Gabriel Rodriguez

Golang

Pays the most amount of money right now, is more performant than python. There is such a hot demand for it.

Collapse
 
srinivasav22 profile image
Srinivasa V

Hi
If you're Interested in Robotics then you have to take Raspberry pi along with python programming then start for AI

Collapse
 
arshadnadeem9 profile image
ArshadNadeem9

Thanks

Collapse
 
paurakhsharma profile image
Paurakh Sharma Humagain

Python is a no brainier here 😊

Collapse
 
tracker1 profile image
Michael J. Ryan

Python, Node.JS for server side, Go and/or Rust would be my suggested... Though C/C++ are also a good idea and C# is pretty nice as well. Not a fan of Java myself.

Collapse
 
omicron666 profile image
Omicron • Edited

Typescript
+ C# and/or Java

Collapse
 
dag72 profile image
Dave Gordon

Python is a good choice that you can leverage for Robotics and AI! Python is used across diverse fields from web development to machine learning and AI and it is easy to learn!

Collapse
 
kingtomi profile image
Ayodabo Oluwatomisin

Python is the right choice for you

Collapse
 
ma3yta profile image
Andrii Maksymets
Collapse
 
mostajeranmohammad profile image
Mohammad Mostajeran

Just one
Go is awesome

Collapse
 
particulated profile image
Brian Berry

Kotlin

Collapse
 
jhooks profile image
Joel Hooks 🌩

Python is never a bad decision. I’d generally recommend exploring broadly and see what resonates and suits your needs.

Collapse
 
eakteam profile image
Emin Kokalari

Start with searching in Google is my suggestion...

Collapse
 
sivakumar8179 profile image
sivakumar chunduru

Julia, python

Collapse
 
woodybriggs profile image
woodybriggs

C with some C++ features.

Handmade Hero video series will point you in the write direction.

Collapse
 
prodigit80 profile image
ProDigit

Python, HTML, Java are the easiest.
C is much harder, and makes sense where microseconds make a difference.

Collapse
 
wagslane profile image
Lane Wagner

Go

Collapse
 
thewasif profile image
Muhammad Wasif

Where?? πŸ˜‚
Just kidding.

Collapse
 
carnegiejunior profile image
Carnegie Junior

Accually, for microcontollers, the ideal os c,c++ anda assembly..

Python is puretly academia ones..

If you are looking for something more generaly.. use Java

Collapse
 
fultonbrowne profile image
Fulton Browne

Kotlin and java are a great combo (they are both for JVM) they can do both those things well, along with EVERYTHING else

Collapse
 
x1k profile image
Asaju Enitan

Python
it's best for AI, ML, Data Science and Robotics

Collapse
 
tomaz_on profile image
Tomaz, Osvaldo Neto

ML.NET and F# / Python ...

Collapse
 
pascal360 profile image
Pascal360

Python can help you alot

Collapse
 
marknicoli profile image
Mark Nicoli

Look into python or c++. It can be used with ROS for some interesting robotics projects!

Collapse
 
startupsandcode profile image
John Mann

Python. No doubt.

Collapse
 
wahabshah23 profile image
Abdul Wahab Shah

Python.. And you will also be exploring AI and robotics so python is going to be pretty beneficial.

Collapse
 
thewasif profile image
Muhammad Wasif • Edited

Does it work in iot as well?

Collapse
 
calyce8 profile image
Calyce

Somewhat, search for micropython.

Collapse
 
mrzviad profile image
Zviad Gabroshvili

Python and C/C++

Collapse
 
kchawla_pi profile image
Kshitij Chawla • Edited

A lot of suggestions here for Rust β™₯️ and Haskell and they are great. For professional use, first master Python, Docker, Kubernetes for a few years.Then learn Rust or Haskell.

Collapse
 
gideon_ngk profile image
Gideon Kamau

Simple answer, Golang

Collapse
 
hellyworld profile image
hellyworld

Go with Python

Collapse
 
michaeljota profile image
Michael De Abreu

Why two languages?

Collapse
 
kurrekruts profile image
kurre

Cobol

Collapse
 
ehsanyar1991 profile image
Ehsan Yar

I think python can be best choice.