3 ms·
One of the biggest challenges with electronics is that the abstractions are leaky. We see this as well sometimes in software. You may be writing a project in C+
by chongli 3y ago
One of the biggest challenges with electronics is that the abstractions are leaky. We see this as well sometimes in software. You may be writing a project in C++ and you keep getting segmentation faults and other memory errors, so you need to know something about assembly language and the computer's memory architecture if you want to be most effective at troubleshooting these issues.
At another level of abstraction, say Python programming, you're much less likely to have to deal with this issue because memory is managed for you. You can get a lot done with Python without ever needing to know anything about the lower levels. Python is a much more solid abstraction than C++, which is leaky.
Electronics is even worse than C++. All of the rules and formulas with lumped matter abstractions change when you move into the realm of high frequency signals. A circuit you build to operate at low frequency may fail utterly at high frequency due to transmission line effects. The Arduino/Adafruit communities try to get around these issues by largely operating at low speeds and confining much of the high speed stuff (radios) to built-in modem circuits and antennas.
But even at low speeds, you still have issues with things like impedance, current, etc. Beginners hoping to run an electric motor on the IO pins of their Arduino are going to be confused and frustrated when it doesn't work. Not only that, but experimentation in electronics can result in electric shocks and even fires if users don't know what they're doing. This is one area where software has a big advantage: it's pretty hard to do physical damage to your property (or your health) with a Python script.
- peteforde 3y agoI've really enjoyed this exchange. I come to HN to have my thoughts provoked. Thank you. One of the most shocking things (no pun initially intended) about learning electronics [as someone who has spent absurd amounts of time tweaking the user experience of interacting with text input elements] is the cold realization that you have to manually handle switch bounce. Because physics. Wait, I have to think about how tiny bits of widget bounce when they come into contact with each other? Every button and every encoder? You'be got to be kidding me. And so you set out on the dark road as you first wonder WTF is going on with your counter, then you start tracking the time between pulses. Then you learn about hardware interrupts and state machines and oscilloscopes. Then you learn about RC and Schottky diodes and soon, hex inverters. Would I benefit from a two hour lecture about the math behind RC calculations? It might be interesting, but at some point if you pull enough yarn out of the sweater, it stops keeping you warm. I have always really enjoyed clever and/or obsessive answers to "describe what happens when you type a URL into your browser". If someone starts with the mechanical behaviour of a cherry switch before talking about the USB protocol, is this not the free jazz of computer science? Is it not our "The Aristocrats"?