Which language is better option for learning IOT for beginners?
Which language is better option for learning IOT for beginners?
The recent Embedded/Firmware interviews I have been involved with have been mostly focused on C++; specifically C++11 and C++14.
This is an interesting topic since IoT is a very relative term.
As far as which language is best, IMHO, it really depends on what part of the stack your are looking at. At a lower level, closer to the metal, C and more recently C++ would be best as well as some sort of RTOS like FreeRTOS. But the further up the stack you get, you could be looking at Javascript, Python, Rust and even Flask on an OS like Linux or Windows 10 IoT.
Michael Barr put out an interesting post a few months back titled "The Rise of the Full Stack Developers" based an observation he made regarding the skill folks list on their LinkedIn page. Myself have seen Firmware positions that listed Javascript, Python and even Go as a requirement for the position.
https://embeddedgurus.com/barr-code/2018/05/the-rise-of-the-full-stack-developers/
I would not pigeon hole myself into a single language and rather learn how to use multiple in a connected manner.
jomoenginer , yes. And it's mainly the capacity of the controller/processor and resources - and the energy needs in some cases - that determine the language options.
unlimited processor umph, unlimited power, no energy restrictions (there are IOT devices that are tied to the power grid and have the resources of a decent server): any language can be used.
When you step down from that, the language options get narrower.
My point was more inline to understanding the full stack of an IoT deployment. Smaller memory and processor constrained devices will have their limitations, but getting that data from the sensor to a database, or web browser or even something like AWS or Azure takes multiple layers and different development environments. Looking at a good middle ground, Python is a language that fits nicely in the middle and is often used as the glue to get that sensor data to the cloud.
Sorry, but the thought of an an IoT device tied to a power grid seems like something just waiting for trouble.
jomoenginer wrote:
Sorry, but the thought of an an IoT device tied to a power grid seems like something just waiting for trouble.
IoT edge devices typically are powered from mains.
I would second that. C is a foundation language for a lot of technology. Yes, you may end up in Python or some other language, but the foundation you get from C will help you to quickly pickup other languages/skill. Once you know C, it is easier to grow into to C++, .Net, and others.
Actually the idea that learning C will assist in learning C++ is a myth that has been carried over from long ago. The two languages have enough differences that learning C may hampers one move to C++. These days, learning Python before C++ would be an easier path to C++.
However, to focus on C is to just focus on the Thing in IoT, which C certainly dominates; at least for the time being
From most of the surveys I have seen, Java tops as the most popular Language used in IoT projects. C comes in second since there are more things in the Internet of Things and is still the dominate language used. The thing I do not know is if these surveys cover folks actually working on shippable IoT products or just anyone interest in IoT that has an Arduino on their dinner table.
Jon, thanks for that clarification and for highlighting my age LOL, I did find a good attribution that discusses this @ https://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B.that being said, My experience is that most embedded solutions are developed in C (but I've also used c++ and assembly when necessary) so I'm not saying that Python or Java isn't used, I've just not seen or experienced it myself. That is interesting about C vs. C++ though.
LOL, I thought that but didn't say it. Most IoT devices I've implemented were battery powered.
I don't believe I mentioned anything about your age. There are folks in Universities that promote the same C / C++ myths thus new grads continue down the same path.
But again, you are focusing on the Thing with regards to the use of C in IoT. IoT is more than just the Thing. My point is that there are a number of other languages are used in the IoT stack where the use of C is not an option; or is not an easy option. And when you say Embedded, I suspect you mean Bare Metal Embedded. However, there are the so called Embedded OS devices that use operating systems such as Linux and some sort of Windows flavor where something like Java might be a solution as well.