Wednesday, April 25, 2007

Drought in Programming

Software development is a short-lived industry that experienced much breakthrough. In the old days people were programming with punch cards and fought with bytes of memory. Programming methodology has grown from sphaghetti style to structured programming to object oriented programming. Programming tools have jumped from plain editors to full blown IDEs. Gaming have gone from Pong to ultra realistic cool games. Yet it has been a long drought for new real breakthroughs in (non-gaming) programming.

Let's take a time warp and go back to the DOS days. You can still experience 80x25 screen in a command prompt (Start->Run, type 'cmd') Use Alt-Enter to make it full screen. Yes, people ONLY had that in the older days. Boy how that has changed with mouse and windows. If you have not programmed things like interrupts on DOS, you don't know how to appreciate the modern programming tools. We are talking late 1980s.

Then there is Windows programming. If you programmed in raw C in Windows you know how difficult it was. Visual Basic and other tools such as Delphi revolutionized it. No longer you have handle the individual messages and you focus on functionality instead of the nuts and bolts. Programmers want to emphasize on functionality, not nuts and bolts of the underlying system. We are talking early 1990s.

Languages itself has matured from 'goto' codes to better things such as structured programming. A real breakthrough was object oriented programming. It lets you organize your entities. Programming suddently become some sort of art work. Of course, it can also be misused so you may see ulta difficult mess of objects too. The most popular language for OOP was C++, and gosh it has just too many advanced (or arcane) features that can be confusing and easily misused.

Then, the web and HTTP catch on like wild fire. People are content with simple forms and submit buttons. No longer do we focus on heavyweight client side code. Simple forms will do. People focused on parsing HTTP responses with little programs.

Enter Java. Now that's a real preferred language over psuedo languages such as Visual Basic. It has great libraries and had the promise of cross platform. Unfortunately Java applets does not have the graphic capability like Flash, so it is pretty much dead. Only the server side Java remains viable. We are talking middle 1990s and early 2000s.

Then the world is hyped on XML. Create-your-own-tags and the arcane DTD syntax became a big hit. People are obsessed with popular tags that there is a transformation language (XSL) that looks like a programming language, and guess what, it is itself an XML. There are all sorts of libraries and tools for this hype.

People then focus on frameworks, or using a set of library functions. People make use of custom tags which pretty much defined their own JSP and gone wild with wild XML configurations with particular frameworks.

It has been a long drought. Nothing really revolutionary come in. Until a rediscovery of AJAX.

AJAX is actually nothing new, was with us since IE5. People finally tired of simple HTML forms and demand some interactions. Wow, look at what this simple idea can do. See for yourself in google map vs old yahoo map. This is a rather exciting new change, but basically same technology. Note that the BACK button no longer works with AJAX, because your actions with AJAX is not logged like pages loaded.

People are hungry for new paradigms after OOP. Enter aspect-oriented programming. It tries to append functionality. So you write a bank app, and write some logging for debugging. Then your banking app will be littered with debug statements. How about adding debug statements afterwards. Ugly syntax to make this happen. We have abandoned easy-to-follow codes with wild ideas like this. Is that revolutionary? No.

Then there are little new languages like Ruby on Rails. Ooh make a new webapp fast, with our LISP like pseduo language. ASP apps are easy enough. There is no need for new psuedo tools. Not so revolutionary.

Flash is cool but it really isn't a programming language in the sense of code-compile-build. It is a totally different animal.

Besides AJAX, it has been a rather long drought in regular programming.

No comments: