DEV Community

Muhammad Wasif
Muhammad Wasif

Posted on

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

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!

Top comments (86)

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
 
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
 
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.

Some comments may only be visible to logged-in visitors. Sign in to view all comments.