Sometimes newer software has a tendency to be larger, or to use larger amounts of system resources than previous versions of the same software. Such software is often called bloatware and is caused by code bloat, in which code becomes undesirably long, slow, or wasteful of resources.
When the software industry evolved in the 1970s, there were significant limitations on the amount of disk space and memory available. Developers exhausted considerable effort making programs efficient by fitting them into available resources. The situation in the new millennium is completely reversed. The rapid advancement of technology has made entities such as memory and processors plentiful and inexpensive. In 1995, Niklaus Wirth summed up this situation in Wirth’s Law , “Software gets slower faster than hardware gets faster”. Some of this bloat may be due to inefficiencies in programming practices, lack of optimization, or the overuse of features.
A good example of software bloat is that associated with operating systems. Microsoft Windows ballooned from 15 million LOC in Windows95 to somewhere close to 50 million LOC for Vista in 2007. Apple OSX Tiger (10.4) contained 86 million LOC, whilst the Linux kernel has grown from 5,929,913 LOC in 2003 (2.6.0) to 14,998,651 LOC in 2012 (3.2). Let’s put that into context. A million lines of code printed out would be approximately 18,000 pages. So in the case of OSX Tiger, 1,548,000 pages, or to visualize it better, roughly 4994 copies of the original edition of The Hobbit. Code complexity cannot be completely described by merely citing lines of code (LOC), but it is somewhat revealing. The more code a program has, the greater the complexity, and the greater the likelihood that the code will become slower. There is also danger in reduced reliability – the more code, the more potential for erroneous code.
Sometimes it seems as though software bloat is inversely proportional to the size of a device. So as an electronic device decreases in size, the size of its software increases. Android OS used in mobile devices has over 3 million LOC. The software that runs Paris Metro Line 14: 87,000 LOC. It controls the line’s train traffic, regulates the train speed, manages several alarm devices and allows for traffic of both automatic and non-automatic trains on the same line.
One small piece of code controls moving trains, one huge piece of code controls a mobile device.
Food for thought.