anders tonfeldt

You don't know what arduino is


2019-09-10 14:48

Arduino is a toolkit bundling compilers, linkers, an IDE and other assorted tools as a complete package. Arduino is also a series of development boards featuring micro-controller units (MCUs) from atmel, microchip and arm. Finally, and most importantly, arduino is a library that enables you to address features of each supported MCU in a consistent way and allows you to expect a consistent result across architectures.

Arduino is not a language, you will use c, c++ and assembler if you utilize the arduino library. Arduino is not scripting, c, c++ and assembler are all compiled languages. There is no difference between linking your executable to arduino as opposed to any other library with c-hooks. The arduino library is developed by not just the foundation but thousands of individuals across the globe, that’s a lot of eyes to audit code. Keep that in mind.

There’s a perception that arduino is somehow for beginners, yet that perception is largely held by beginners trying desperately to appear to be more experienced than they are. You see, there’s a gigantic logical fallacy in the argument that just because you’re only using the AVR supplied functionality your code will somehow be better or more advanced. Namely that you believe yourself to be a more experienced programmer than everyone who’s ever worked on arduino. The arrogance runs deep with that one. Particularly amusing considering any such functionality is one #include away.

This is the same sort of reasoning you hear from purists who refuse to use anything but assembler, despite the lag period involved with having to learn each new platform, architecture and their assorted laundry lists of quirks. It assumes your understanding right out the gate will be deeper than that of the decades of experience the c-implementors for that board possess.

Are you more experienced with every board that arduino implements than its thousands of contributors? Possibly. I doubt it though. Don’t think I’m being harsh on dropping down to inline assembly every now and then, it's a must. But on average its c-implementation is better optimized than what both you and me can accomplish. Humility will broaden your horizons to encompass the expertise of others while arrogance will chain you to a box constructed of your own ignorance. Never settle though, if your implementation is better than arduino then submit a patch and we're all richer because of it.