The Cost of Modern Software Development

Geek.com is running an opinion piece on the extensive reliance of programmers today on languages like Java and .NET. The author lambastes the performance penalties that are associated with running code inside virtualised environments, like Java‘s and .NET‘s. “It increases the compute burden on the CPU because in order to do something that should only require 1 million instructions (note that on modern CPUs 1 million instructions executes in about one two-thousandths (1/2000) of a second) now takes 200 million instructions. Literally. And while 200 million instructions can execute in about 1/10th of a second, it is still that much slower.” The author poses an interesting challenge at the end of his piece – a challenge most OSNews readers will have already taken on. Note: Please note that many OSNews items now have a “read more” where the article in question is discussed in more detail.The author claims that by relying so heavily on these modern, more resource intensive programming environments, we’re losing “something significant”. In order to realise what that significant something is, the author poses the following challenge to his readers:

I challenge everybody out there to dig up an old copy of Windows 95 or Windows 98, and install it on your machine and note how much faster that user interface operates than the modern ones today. I also advise grabbing some older software written in the late 1990s for those operating systems and see just how fast they are today on modern equipment.

There are a few interesting elements to this challenge. What the author is neglecting to mention is the fact that the operating systems of those days (like Windows 95 and 98) might feel a lot faster on today’s systems – but let’s face it, they do a lot less too. Today, people have higher expectations of the basic functionality that an operating system should provide than they had ten years ago. Today, people expect the operating system to include photo management tools, music management applications, security applications, multi-user capabilities; Windows 95 did not have these things (initially) and Windows 98 only a few.

In addition, I am not exactly sure myself if I would mention the Windows 9x line as examples of proper coding techniques. The Windows 9x line was still a shell running on top of MS-DOS, and it was very prone to crashes and kernel panics (blue screens). Whether this had something to do with lack of quality code or simply a bad design is irrelevant – proper design is as much a part of programming as the actual implementation of said design.

Now, that does not mean the author does not have a point. As most of you will already know, running older operating systems can be a very stimulating experience, and many of us will have longings for the days of yore when operating systems seemed better coded and leaner, slimmer, and faster – I know I do whenever I boot into BeOS. Sadly, that moment of longing is soon shattered whenever I, yet again, run into some limitation that forces me to boot into XP or Linux, or to get my PowerBook.

Appealing to the human tendency of glorifying the past is relatively easy. However, I can’t help but wonder: if BeOS (or the Amiga, or whatever) had been allowed to continue its development, reaching feature parity with the likes of XP/Vista and Mac OS X – would it still be as lean, slim, and fast like we remember it now?

I doubt it.

97 Comments

  1. primelight@live.com 2008-04-20 4:17 pm EST
    • bryanv 2008-04-21 4:06 pm EST
  2. sukru 2008-04-20 4:25 pm EST
    • alban 2008-04-20 5:00 pm EST
    • phoehne 2008-04-20 10:09 pm EST
      • timefortea 2008-04-21 1:38 pm EST
      • headius 2008-04-23 3:32 am EST
    • rhyder 2008-04-20 11:11 pm EST
      • sbergman27 2008-04-20 11:45 pm EST
        • Matt Giacomini 2008-04-21 4:46 am EST
      • BTrey 2008-04-21 1:30 pm EST
    • danieldk 2008-04-21 2:45 pm EST
    • khaledh 2008-04-22 2:28 am EST
  3. darkstego 2008-04-20 4:42 pm EST
    • kaiwai 2008-04-20 4:56 pm EST
      • renhoek 2008-04-20 9:39 pm EST
      • Matt Giacomini 2008-04-21 4:48 am EST
        • Doc Pain 2008-04-21 6:04 pm EST
  4. sonic2000gr 2008-04-20 4:43 pm EST
    • Counsel 2008-04-25 8:16 pm EST
  5. elrod 2008-04-20 4:53 pm EST
  6. tristan 2008-04-20 5:08 pm EST
    • AndrewDubya 2008-04-20 6:04 pm EST
    • dagw 2008-04-20 10:06 pm EST
      • gilboa 2008-04-21 3:02 pm EST
        • dagw 2008-04-21 4:37 pm EST
          • gilboa 2008-04-22 5:30 am EST
    • siimo 2008-04-20 11:07 pm EST
      • SomeGuy 2008-04-21 3:23 am EST
        • draethus 2008-04-21 8:36 am EST
  7. laserface 2008-04-20 5:25 pm EST
  8. evangs 2008-04-20 5:28 pm EST
    • gilboa 2008-04-22 5:54 am EST
      • sanders 2008-04-22 8:08 am EST
        • gilboa 2008-04-23 10:07 am EST
  9. unoengborg 2008-04-20 5:30 pm EST
    • theTSF 2008-04-20 6:33 pm EST
  10. Flatland_Spider 2008-04-20 5:48 pm EST
  11. JonathanBThompson 2008-04-20 6:04 pm EST
    • biffuz 2008-04-20 6:14 pm EST
    • edwdig 2008-04-21 3:14 am EST
  12. NicolasRoard 2008-04-20 6:05 pm EST
  13. vtolkov 2008-04-20 6:35 pm EST
  14. sergio 2008-04-20 6:51 pm EST
  15. -APT- 2008-04-20 6:57 pm EST
  16. rajj 2008-04-20 6:58 pm EST
  17. StaubSaugerNZ 2008-04-20 7:26 pm EST
    • Tom K 2008-04-20 8:09 pm EST
      • StaubSaugerNZ 2008-04-20 8:16 pm EST
        • Tom K 2008-04-21 7:29 pm EST
          • StaubSaugerNZ 2008-04-21 8:15 pm EST
        • tomcat 2008-04-22 5:47 am EST
          • StaubSaugerNZ 2008-04-22 8:26 pm EST
          • tomcat 2008-04-22 8:49 pm EST
          • sbergman27 2008-04-22 8:53 pm EST
          • StaubSaugerNZ 2008-04-22 9:27 pm EST
  18. stestagg 2008-04-20 7:29 pm EST
    • StaubSaugerNZ 2008-04-20 8:12 pm EST
      • stestagg 2008-04-20 8:30 pm EST
        • StaubSaugerNZ 2008-04-20 8:56 pm EST
          • jlarocco 2008-04-21 8:19 am EST
  19. Yamin 2008-04-20 7:57 pm EST
  20. suryad 2008-04-20 8:04 pm EST
  21. trenchsol 2008-04-20 10:06 pm EST
  22. TheUnfocusedOne 2008-04-20 10:40 pm EST
  23. samad 2008-04-20 10:40 pm EST
  24. phoehne 2008-04-20 10:52 pm EST
  25. shermamic 2008-04-21 1:00 am EST
    • suryad 2008-04-21 4:06 am EST
      • kmarius 2008-04-21 6:14 pm EST
    • evangs 2008-04-21 5:56 am EST
  26. google_ninja 2008-04-21 2:32 am EST
  27. Soulbender 2008-04-21 3:21 am EST
  28. arkeo 2008-04-21 6:02 am EST
  29. snorkel2 2008-04-21 6:20 am EST
    • WereCatf 2008-04-21 6:35 am EST
      • elrod 2008-04-21 9:06 am EST
  30. tyrione 2008-04-21 7:05 am EST
    • arkeo 2008-04-21 7:41 am EST
      • tyrione 2008-04-21 9:16 am EST
  31. l3v1 2008-04-21 8:50 am EST
  32. TBPrince 2008-04-21 10:13 am EST
    • REM2000 2008-04-21 10:46 am EST
    • rcsteiner 2008-04-21 9:06 pm EST
      • TBPrince 2008-04-21 9:45 pm EST
  33. Anacardo 2008-04-21 10:15 am EST
  34. ciplogic 2008-04-21 12:29 pm EST
  35. major86 2008-04-21 3:15 pm EST
  36. Rugxulo 2008-04-21 4:40 pm EST
    • major86 2008-04-21 5:16 pm EST
    • major86 2008-04-21 5:58 pm EST
    • ciplogic 2008-04-21 6:16 pm EST
    • evangs 2008-04-21 6:29 pm EST
      • rcsteiner 2008-04-21 9:07 pm EST
  37. rcsteiner 2008-04-21 8:59 pm EST
  38. middleware 2008-04-22 2:24 am EST
  39. Touvan 2008-04-22 3:48 pm EST