4 ms·
10K global variables sounds insane, until i realize "oh, huh, we have that too, we just call it _config_". Almost every place we would have a constant (tuning
by finnh 5y ago
10K global variables sounds insane, until i realize "oh, huh, we have that too, we just call it _config_".
Almost every place we would have a constant (tuning parameters, etc) we instead have a configurable value with the likely default declared in code, but all overridable in config. Managing config can be a hassle, but the number of times we've merely had to tweak a value rather than roll a new build pays for itself every day.
We have thousands of such "global variables"... of course they are read-only, so aren't used to share state.
If Toyota is doing that: nbd. If they are using them to share state ... god have mercy on their souls.
- tremon 5y agoI always interpreted the "10K global variables" to mean 10K directly accessible, heap-allocated symbols. It's a code reek. If you use a configuration object or other abstraction, the number of accessible variables may not change, but their scope and access method does. It's a matter of interpretation I guess, but I would not classify a wrapper object (like .Net's ConfigurationManager singleton) as "10K global variables" even if the accompanying config contained 10K items, or if the ConfigurationManager backing store was preallocated in the data section of the binary.
- delfinom 5y ago>I always interpreted the "10K global variables" to mean 10K directly accessible, heap-allocated symbols. It's a code reek. Which to me on an old _accelerator_ design is suspect because that's alot of heap for the micros that would have been used back in the day. This isn't a Linux system. It was at best a micro with like 8KB of RAM. (I'm not actually sure what it is but there's no way it was impressive).
- deleted 5y ago[deleted]
- rightbyte 5y agoIf they used Simulink, the model output and input, aswell as state, are global variables when generated to C in some settings.
- rectang 5y agoFrom the article referenced in that earliser discussion: https://www.safetyresearch.net/toyota-unintended-acceleration-and-the-big-bowl-of-spaghetti-code/ https://www.safetyresearch.net/toyota-unintended-acceleratio... > Other egregious deviations from standard practice were the number of global variables in the system. (A variable is a location in memory that has a number in it. A global variable is any piece of software anywhere in the system can get to that number and read it or write it.) However, that was from the article author explaining the testimony, and not the testimony itself. It's not totally clear whether the variables were writable. I would have guessed they were statically allocated rather than heap allocated, but what really matters is whether they were `const` — and they probably weren't `const` because otherwise this testimony wouldn't have rung true: > "And in practice, five, ten, okay, fine. 10,000, no, we’re done. It is not safe, and I don’t need to see all 10,000 global variables to know that that is a problem," Koopman testified.