Blog Post

WWDC 2011: 5 Programming terms explained for non-programmers

With WWDC (s aapl) well underway, you might have heard a few programming terms that even Mac experts have trouble understanding, but it happens to the best of us. Once someone mentioned they had a problem with “deprecation,” and I suggested a self-esteem book. Here’s a quick glossary of the terms that gave me the most trouble:

1. Source code. Great movie, eh? But also, when a developer writes software, source code is the actual program as it is being typed into the computer, written in a programming language. Source code is usually kept secret and closely guarded by companies, although “open source” software bares its code to the world.

2. Regression. A programmer friend once mentioned that a bug was “regressed.” I had vivid images of animals regressing to primordial ooze. Software regression is a bug that makes things stop working correctly after an event that changes the operating environment, like a system update. Not to be confused with regression testing, which in the programming sense, generally means making sure updates to software don’t introduce new bugs to existing, working features, and that previously identified bugs have been fixed. So it actually has nothing to do with science fiction.

3. Deprecated. “Cheer up!” might be your first reaction to your friend who tells you a critical programming library he or she relies on has been deprecated. That actually isn’t a bad instinct, because when something is deprecated it means it’s no longer supported by the manufacturer and may disappear in the future. If your program relies on a feature Apple has deprecated, your program could “break” in new OS versions unless you update it to use newer programming libraries. Generally speaking, if something is deprecated, it means it’s still there, but is no longer supported.

4. Release Candidate. No this isn’t about politics. Many readers probably know that a “test” phase of a program is a Beta. At some point, though, a product moves past the Beta phase (and the even earlier Alpha phase) and becomes a Release Candidate, usually designated RC. It might also be referred to as a Final Candidate or FC by some. Marking a build an RC or FC is the developers’ way of saying “we think this is probably good enough to ship.” Apple often releases several Final Candidate builds, the last of which becomes the…

5. GM. No this isn’t the General Manager (my first thought!), but rather the Gold Master. The code is frozen, and the FC designated the final GM is what ships. There should be no code differences between the last FC and the GM. Having the GM installed is pretty much equivalent to having the product. It’s the master version which is turned into the product: shipped on disk, downloaded or sold via the Mac App Store. You might hear people say software has “gone gold”; this is what they’re talking about.

So to review, when someone says “After we regressed our app in the new Mac OS, we found out that a library we relied on had been deprecated, so we went back to the source code to recompile our program. Now we have a solid FC and hopefully we’ll go GM next week!” you’ll know exactly what you’re talking about.

What other programming terms have slipped you up in casual conversation, and what are some other definitions you think people might appreciate?

4 Responses to “WWDC 2011: 5 Programming terms explained for non-programmers”

  1. Although you note that software regression and regression testing are different, they are very closely related concepts.

    Couple of terms I’d add:

    Build–n. Any compiled version (test, RC, GM, etc.) of a program. v. The process of compilation.

    Refactoring–The process of improving the performance or other characteristics of a unit of code without changing its external functionality.