But isn't embedded programming more complex? as in, it requires a well founded understanding of CS concepts, as well as requires advanced ability in programming and math.
I imagine to an embedded developer, the web just looks like madness because there's no consistency. Parachute into a web app you've never seen before, one that might not have been developed well.
Your task is to make a button that's currently green and make it blue instead. What's the right file(s) to edit? How many layers of caching do you need to disable to see that your change actually worked? Do you need to restart anything after the change for it to be seen?
The current green color could be:
- in a css file, but one that has to go through SAAS/LESS first, or maybe not. Or maybe there's more than one entry, depending on @media screen resolution? Or maybe it's not a file at all...the css "file" is generated on the fly by some server-side framework.
- in an html file, but in <style> tags. Or maybe dynamically generated style tags via client side javascript. Or maybe server-side dynamically generated style tags? Or maybe not style tags at all? Perhaps a style attribute on the button.
- Or hey, that looks like a button, but it's not a button at all. It's an <a> tag with button styling. And it's green, but only because of a background image. Which is loaded how (static css? dynamic js style manipulation? inline <img> tag in the <a>? something else?)
Having done a bit of embedded work (I have quite a few esp8266 and esp32 dev boards programmed primarily with C and some using micropython), but also doomg a decent bit of webdev, although more server side backend than actual pure is front end...
You sir win the Internet for today.
Besides a much steeper learning curve to C, it is much easier. If you put the GPIO pull-up to high, the LED turns on. If you put it to low, the LED turns off. It is much simpler in that there isn't much abstraction really at all.
Not really. You can do a lot of embedded programming in C or Python or JavaScript or even Lua. You just need to be willing to not learn the next hot new framework and instead learn how the hardware underneath works. Checkout say a NodeCMU esp8266 with either JavaScript or Lua. It is a 32 bit tensillica CPU, and it is easy to learn. I didn't go to college for CS and have programmed dozens and dozens of them for fun and various IoS (internet of shit) sensors and relays.
Instead of spending ~100 for a MyQ smart garage opener I spent less than 20 for an Adafruit Huzzah and some sensors. Then I taught myself to program it and boom. It isn't hard if you're dedicated and have a project to learn with a clear bend goal.
I'd agree with advanced ability in programming - especially understanding things like concurrency - but probably not so much with advanced ability in maths.