If a project's final phase is called debugging, do we call the initial parts bugging?
A few years ago Michael Barr and I wrote Embedded Systems Dictionary . Things change quickly in this industry; new words and expressions appear seemingly every day, while the meanings of older terms evolve. So here's an update.
Ada –The programming language that promised to deliver very high-quality code at a reasonable price. In practice it was found to fulfill those promises, though at the cost of annoying programmers by making them stick to a very strict syntax. So it was all but abandoned in favor of inferior alternatives. After all, debugging is sort of fun!
Agile method –A reaction to Big Up-Front Design, the agilists purport that nothing is known, nor will anything be known until customer acceptance, and therefore you better start coding, right now.
Algorithm –A problem's solution, invented by Al Gore.
Assembly language –The only computer language that allows unlimited artistic expression, assembly was invented by FDR during the Great Depression as a jobs program.
Big Up-Front Design –The traditional approach to building programs. It relies on the proven assumptions that the customer really knows what he wants, has expressed those ideas clearly and completely in the specification document, and that the future never brings change.
Bit banging –An abusive programming technique that has sent millions of bits into therapy.
Bugging –The part of programming that includes specification, design, and coding, but that ends before any sort of testing starts. Primarily involves seeding defects into the code. See Debugging .
C –A programming language whose syntax is so loose most C compilers will happily accept the telephone directory as syntactically correct.
C++ –An object-oriented programming language that has an on-going committee whose goal is to add so many obfuscating features that no single individual really understands all of its nuances.
Capability Maturity Model –A set of practices that defines the effectiveness of a software organization. Rated in five levels, from minus 3 (Sabotage) to +1 (Chaos). Defining characteristics of a minus 3 organization: “Total neglect of own charter, conscious discrediting of peer organizations software process improvement efforts. Rewarding failure and poor performance.” (Tom Schorsch, www.stsc.hill.af.mil/crosstalk/1996/11/xt96d11h.asp)
COBOL –The only programming language that will still be around in the year 10,000 AD. See 8051 .
Clever code –“Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.” (Brian W. Kernighan)
Cost Plus Contract –The opportunity to never say “no” to a feature request, never deliver, and keep vast numbers of people on the payroll till someone in Congress (in some other congressional district) notices.
Debugging –Removing the defects so laboriously inserted during bugging.
Embedded –An adjective designating a journalist in Iraq.
Embedded system –Who knows? Once an embedded system was something using an 8051. Now they include PowerPCs and Pentiums, plus desktop operating systems like Linux and Windows. Maybe an embedded system is anything with a computer in it that's not a PC or Mac. Except those usually have many processors embedded inside.
Engineer –A person trained to solve problems. If there are no problems, he'll create a few to solve.
Estimation –The act of putting together a schedule that, if developer productivity triples and electrons can be moved faster than the speed of light, will result in funding of the project. See Clairvoyance .
FET –A vacuum tube that does not require 6.3 VAC.
Firmware –Code that is so provably correct it's burned permanently into ROM.
Firmware standard –A list of practices we should adhere to while programming but don't.
Flash memory –A technology invented so no program needs to be completed. Ship with a boot loader and eternally e-mail updates till the customer is so frustrated he gives up, long after his check has cleared.
Forth –An older language whose adherents once sent me 20,000 e-mails when I poked some fun at it, . . . ah, so, uh, Forth is the world's most popular computer language and is perfect for a wide range of applications, including all of them.
Free() –obsolete; unused. See malloc() .
Glitch –an anomaly in your program. In anyone else's program it's called a “bug.”
Hacking –The art of software development as taught in many universities.
Hard core –A microprocessor embedded in fixed cells on a programmable device like an FPGA. What . . . did you expect some other definition?
Hard real time –A sentence resulting from a felony.
Int –A data type that holds some number of bits that varies depending on the processor, compiler, and wind direction.
Kernel –An important ingredient in Taco Bell's products, consumed by developers around the world.
Linux –The golden child of operating systems. The answer to life, the universe, and everything. Most excellent example of perfection. Utterly without fault. Maintained by a band of devoted faithful whose primary mission is to strike down all favorable references to “that” other operating system, which was spawned by the devil, sold by his evil minions, and used only by clueless GUI-loving newbies. Under no circumstances see Windows .
Long –A data type that's pretty much bigger than an int, in most cases, but is definitely smaller than a breadbox.
Malloc() –A C library function used to slowly consume all system RAM. Sometimes not used on embedded systems to avoid memory leaks. Though malloc() does return an error code, most programmers know their code is perfect so never check it. Windows applications are immune from memory leaks since programmers can count on regular crashes to automatically release previously allocated RAM.
McCabe Cyclomatic Complexity –The scoring algorithm in the Great Game of Programming. The current high score is held by Eric Allman for Sendmail, though legions of developers are working hard to beat even that impressive record.
Microsoft Project –A widely-used application that creates exquisitely detailed colorful PERT and GANTT charts that no one reads or believes.
MISRA C –A set of guidelines meant to stifle the artistic freedom of fun-loving C developers worldwide.
Multicore processor –Moore's Law taken to the limit. A device that no one knows how to use and for which no tools exist.
Multitasking –The art of putting on one's makeup while eating a donut, drinking a cup of coffee, and chatting on the cell phone, at 70 MPH.
OOP –Acronym for Outrageously Obfuscated Programming. See Procedural programming .
Procedural programming –The opposite of OOP, procedural programming is the art of exposing one's data to the entire system to facilitate easy interaction between components. Commonly used on systems bid on a cost-plus basis.
Recursion –See Recursion .
Reestimation –The process that follows the boss's shriek of rage when presented with a project's schedule. Also widely used by the first wave of consultants hired to save a doomed project.
Schedule –See Lie , Mendacity , Deceit , Distortion , Fantasy , Fraud , and Deception .
Security –The art of ^H^H%6*((((buffer overflow PRIZE AWARD!!! THE INTERNATIONAL AWARENESS PROMOTION DEPARTMENT WISHES TO CONGRITULAET YOUR EXCELLCENIE'S LUCK IN WINNING $1,200,000 (ONE MILLON TWO HUNDERD THOUSAND). PLEASE FORWARD YOU COMPLEAT DETAILS URGENTLY.
Soft core –A marketing manager's dream product. Priced at stratospheric levels, the vendor delivers, well, really nothing to the customer. No FedEx package, nothing that can sport an inventory tag. Just some bits. Some soft cores have extensible ISAs, so the customer must design his own instruction set, which, ironically, is what the vendor had promised to deliver in the first place. See Enron .
Soft real time –An event that doesn't really have to be done within a certain timeframe but that requires service, well, pretty fast. In a timely manner. Uh, like, don't make the user wait too long. So Linux, may its name be forever blessed, is soft real-time, but Windows isn't. Got it?
Syntax error –The absurd behavior of a compiler when it encounters the almost legitimate C code that worked fine on Manx C version 0.9 in the early '80s.
SystemC –A technology that gives hardware developers all of the evils of software engineering.
UML –Acronym for Unified Modeling Language, a technique for making pretty pictures no one understands.
Warning –A message emitted by a compiler to try and convince the programmer that some program construct is likely confusing, wrong, or dangerous. Because of the serious nature of warnings, most compilers have a provision to turn most of them off. The rest typically go to /dev/null .
Watchdog timer –The hardware and software used to reboot crashed code. Not used by developers who believe their code is perfect (see Delusional ).
Windows –The golden child of operating systems. The answer to life, the universe, and everything. Most excellent example of perfection. Utterly without fault. Maintained by a band of devoted faithful whose primary mission is to strike down all favorable references to “that” other operating system, which was spawned by the devil, promoted by his evil minions, and used only by clueless Slashdot-reading newbies. Under no circumstances see Linux .
Y2K –The first end of the world. Stay tuned for the Unix version in 2038.
8051 –The universal microcontroller architecture, which was obsolete minutes after being introduced. In the year 10,000 AD someone, somewhere, will be writing 8051 code. Probably in COBOL.
Jack Ganssle () is a lecturer and consultant specializing in embedded systems' development issues. For more information about Jack .
Come on Jack – you know the 10,000AD 8051 code will be written in assembly. Thanks for this bit, it is laugh out loud funny.
– Jim McGrew
I thought UML was an acronym for Universally Misunderstood Language.
And, by the way, acronym is itself an acronym: Alphabetic Combination, Randomly Ordered, Not Yielding Meaning.
– Paul Tiplady
This was so funny I had tears in my eyes. Thanks for posting so I can share with other ex-coworkers.
– David Wooldridge
You helped me spread much joy at work today. ^_^ I'm still giggling…
– Diana Robinson