Blub
From DocForge
Blub is a name used when comparing general-purpose programming languages to refer to a hypothetical middle-of-the-road, industry-standard programming language. It's a language that's compiled, runs fast enough to justify minor inconveniences, emphasizes object oriented programming, attempts to protect programmers from causing too much damage to a working system, and has significant support from at least one large corporation. Blub is the language PHBs tend to mandate based on hype and the ready availability of existing Blub programmers. In a word, Blub is overrated.
The contrast to Blub is any powerful but moderately obscure or underrated language - for example, Lisp, Smalltalk, Python, Ruby, or OCaml.
Noted blogger and programming language designer Paul Graham originally used the term in his essay Beating the Averages. Paul argues that "industry standard" is exactly what a startup needs to avoid in a programming language: designing your software product in Blub means your product will be average, and the average startup will go under with a fairly high degree of certainty. Pick the best language you can for your product, and you'll at least have a chance at success, says Paul.
[edit] Which language is Blub?
Blub is C++ or Java, depending on your industry. Recently, C# has been making inroads into Blub territory, but its performance is still too weak to replace Blub in enterprise software development.
Visual Basic and JavaScript also share the Blub-like trait of being popular with the unthinking masses, but neither carries the trembling, dogmatic respect that Blub does. C and Fortran also have a Blub factor in high performance computing, but in that case it's actually justified -- they really are the fastest, in an area where speed is the most important aspect of a language. (But see OCaml or D for a counterargument.)
In general, the requirements for any language who would be Blub are:
- A stable, corporation-backed implementation
- Encapsulation is strongly encouraged
- Static typing
- Explicit type declaration
- Good performance
- Compilation
- C-like syntax (curly braces)
- Tight restrictions on metaprogramming and self-modifying code
- Powerful IDE (integrated debugger, compiler, GUI designer, refactoring tools, etc.)
- Libraries for everything
- Megaframeworks (e.g. J2EE)
[edit] Why do we use Blub?
Marketing is an amazing thing. That's not the only reason, though, just the main one.
In favor of Blub, the following can be said:
- Mediocre programmers can still get work done.
- If you already know an earlier form of Blub (e.g. C, C++), the new Blub is easy to learn.
- Code usually isn't too clever to figure out (less true of C++).
- The library support is quite good.
- Although the syntax is verbose, refactoring tools make it manageable.
- Forced encapsulation means another programmer can't break your part of the program.
- Explicit type declarations make it easier to figure out what a function does
- Lots of Blub code already exists.
- It's easy to find new Blub programmers. (Harder to sort the good from the bad, but see the first point.)
- The GUI design tools are easy to use.
- Nobody ever got fired for choosing Blub.

