Arduino IDE and the Ugly Truth

Thread Starter

Ya’akov

Joined Jan 27, 2019
10,263
I’d like to make an observation.

Threads such as these feed into the myth that Arduinos are garbage. While I totally understand your post, it’s about a small subset of the Arduino IDE’s capability.

Noobies probably miss this point. I get it.
Unless they only read the title of the thread, I think it will be hard to understand what I am saying is that the Arduino ecosystem is bad. As you know, I'm not. As I said:
But, with the Arduino bootloader and IDE, it was suddenly possible to do some pretty amazing stuff while concentrating mostly on the code. All of that other stuff… is still there, but the user doesn’t even know it exists. They don’t have to. It all happens like magic.
The Arduino and the community it spawned has done far more good for the general population of "makers" than harm to professionals. The ugly details under the hood exist because they must, not because the makers who built and maintain Arduino did or are doing a bad job.

The world of embedded programming was inaccessible to the average hobbyist before Arduino. After, there is more opportunity than any one person can take advantage of. It's created a way to get embedded programming into schools, into the arts, and even into the hands of diehard electrical engineers who saw embedded processors as "something for someone else to do" because they didn't have programming and computer science backgrounds.

So, the content of what I said, and what was said in the thread don't seem to provide fodder for Arduino-bashers, but I agree, for people who won't really read the thread, or actually comprehend the posts in it, could come away with their negative views reinforced, and that's something to consider.

However, you've raised it and people can see that. And I have replied here to make my position clear on it. I am no authority people will quote, I have no following. Were I a "public figure" I might be more circumspect, but my influence is limited to people who actually read my stuff and interact with me. Even if I had negative things to say about Arduino, it would be just one vote, or even a fractional vote, and so I don't feel I have to limit or qualify my conversation for fear it might be taken wrong.

That said, you have a point, and I would explain to any Arduino detractor, in no uncertain terms, that if they think they can use what I am saying here as evidence that Arduino is a net negative, they are badly mistaken.

[EDIT: Formatting only]
 

dl324

Joined Mar 30, 2015
18,416
Arduino made it easy to use the Atmel microcontrollers. If it wasn't for them, I probably wouldn't be using them.

The IDE has its blemishes, but it, and others who have written code for just about everything, have done most of the heavy lifting.
 

DickCappels

Joined Aug 21, 2008
10,661
Unfortunately the presence of the Arduino will prevent many newcomers from learning Assembly language or C. I don't remember seeing job openings for Arduino programmers.
 

Thread Starter

Ya’akov

Joined Jan 27, 2019
10,263
Unfortunately the presence of the Arduino will prevent many newcomers from learning Assembly language or C. I don't remember seeing job openings for Arduino programmers.
Well, the Arduino IDE uses C++, so anyone seriously pursuing development via the IDE will have learned C++ which is transferable knowledge to C. As far as assembler goes, it is my impression that nowadays that is a separate discipline, something like the difference between application and kernel programmers.

The sophistication and complexity of the toolchain today means there are people who will specialize at different levels of it. There will, of course, be generalists but much like programmers who get employment by knowing certain frameworks, the embedded world know has higher and lower level workers.

I know of businesses that depend on the Arduino ecosystem for product development. They are not large corporations, but they are going concerns, and they employ people gainfully. Also, the Arduino ecosystem itself offers many opportunities.

A serious student of engineering will find the Arduino a stepping off point to other things, like assembler and other non-bootloader coding, and the person who isn't interested in internals can still produce useful work.
 

Sensacell

Joined Jun 19, 2012
3,786
Unfortunately the presence of the Arduino will prevent many newcomers from learning Assembly language or C. I don't remember seeing job openings for Arduino programmers.
That's an interesting point.

I have never had issues switching languages, learning the gestalt of programming is the idea, no matter what the language is.
After 20 years of assembly, C was a nice change.
 

dl324

Joined Mar 30, 2015
18,416
Unfortunately the presence of the Arduino will prevent many newcomers from learning Assembly language or C. I don't remember seeing job openings for Arduino programmers.
The demand for high level language programmers is much greater than the demand for assembly language programmers. I spent most of my career programming and none of my colleagues or I ever needed to use assembly language. Even the original Unix Kernel was 90% C (after Dennis Ritchie invented the language) and 10% assembly language.

I never had a need, or desire, to learn C++, so my Arduino sketches look more like C.
 

drjohsmith

Joined Dec 13, 2021
1,623
Arduino

What a large pile of
amazing stuff.

The fact that a "program" in arduino can run on so many different micros without any changes is amazing

I would suggest that you don't see jobs advertised for Arduinos,
as they are not difficult,

I see them and Rasp Pies every where holding many different real systems together
and used for test and evaluation of hardware,

The "hassle" with C and C++ , is not the language,
its getting a boot loader etc to run on a micro,
and once you have it running on one micro,
then changing to a new micro is often a re write.

The arduino is very C++ like, and C++ can be used

I would not like to be in a lift controlled by an Arduino or Pi ,
but I would be happy if the engineer had hooked up some Arduinos to hammer the "bell push" buttons in a test environment,

The hassle I see , is when "real" programmers are asked to use an Arduino,
and the "insist" on Using there favourite boot loader , and spend all the time making a special, and complaining how hard it is to use, IMHO as they are fighting the tools.

I have had sw people been assigned to projects to make similar to above lift suggestion,
after a month they wanted a PC / GPIO cards, et all,
we in an afternoon had already knocked up some Arduinos,
and the GPIO / GUI was so slow , we were testing 100 more random combinations per hour than the GPIO was.

Having said that
as has been noted, there are many many "bad supported" arduino processor put there,
We stick to the "real" Arduino boards, mainly the Teensey range from Paul and the rugged-circuits ones.
 
Last edited:

PeterSmit

Joined Feb 12, 2022
1
Hi all, a random google search dropped me here. I have been programming in Python for years, so I thought I might help debugging.

First thing I notice in the upload.py code snippet from post #4 on line 11-13 is that the error information from Python is actually thrown away, and replaced with this error message. There is a possibility something else caused the error. Try this:

Python:
except e:
    sys.stderr.write(e)
    raise
This will print the actual (but maybe more cryptic) error message from python in stderr, and then give the calling function a chance to handle the error (which probably won't handle it, and the program will exit with non-zero status just like before).

Small pythoninc syntax tip for post #14: You can loop over lists directly, without modifying it (popping a list empties it)

Python:
for el in sys.path:  # el is short for element, an often used abbreviation
    sys.stderr.write(el+ "\n")
Now for the actual problem of the script not being able to import the library files. My first guess is that there is no __init__.py file in those directories. This file can be empty, but it is a way for python to know that that library directory contains scripts. (More information about package structure: https://docs.python.org/3/reference/import.html#regular-packages)

I hope this helps!
 

Thread Starter

Ya’akov

Joined Jan 27, 2019
10,263
Hi all, a random google search dropped me here. I have been programming in Python for years, so I thought I might help debugging.

First thing I notice in the upload.py code snippet from post #4 on line 11-13 is that the error information from Python is actually thrown away, and replaced with this error message. There is a possibility something else caused the error. Try this:

Python:
except e:
    sys.stderr.write(e)
    raise
This will print the actual (but maybe more cryptic) error message from python in stderr, and then give the calling function a chance to handle the error (which probably won't handle it, and the program will exit with non-zero status just like before).

Small pythoninc syntax tip for post #14: You can loop over lists directly, without modifying it (popping a list empties it)

Python:
for el in sys.path:  # el is short for element, an often used abbreviation
    sys.stderr.write(el+ "\n")
Now for the actual problem of the script not being able to import the library files. My first guess is that there is no __init__.py file in those directories. This file can be empty, but it is a way for python to know that that library directory contains scripts. (More information about package structure: https://docs.python.org/3/reference/import.html#regular-packages)

I hope this helps!
Welcome to AAC.

Thanks, though I have resolved the problem by bypassing the use of the local directories and using the system directories. I expect this solution to be general and pretty robust but if I encounter this again with another board support directory I will keep your advice in mind.
 
Top