Joel Spolsky’s How Microsoft Lost the API War is a good read. I think he is spot on about managed-memory languages. Thats a job that computers are better at than people and our computers are fast enough to handle it.
GUI development in the early 90s/late 80s was a nightmare. It felt like coding through molasses. The simplest things seemed to take forever. Tools like MFC, Visual Basic and Delphi were a definite step forward. They abstracted the windows API to varying degrees and took over the event loop. But still, GUI applications seemed to take longer to develop than character applications. There was less more sizzle in the app, but less bang for the buck.
When I started to do some web development with PHP, I was reminded of what got me interested in programming in the first place. Writing a web application in 2000 felt to me like writing a character based application in 1985. And I liked that feeling. The very primitiveness of the web interface was liberating in that it allowed the focus to return to the functionality of the application.
Web development has its own drawbacks. The farther you stray from primitive, the bigger your test suite of browsers has to be.
But we now sit at the same point with web development that we were at with GUI development in the early 90s. Frameworks such as dotNet, and Java Server Faces have come along, building on collective experience. They abstract the API to the web server and take over the “HTTP event loop” and bring web development in line with GUI development model.
Unfortunately, web apps are only as rich as their client, and many times only as rich as the lowest common denominator of clients. With a Microsoft monopoly on browser market share, progress has been slow.