OOP > 4GL

During the 1990s, it seemed like the future lied in Fourth-Generation Programming Languages (4GL). They seemed like the logical progression from traditional programming languages, and they incorporated functionality that programmers like me had grown at home to speed up development (such as declarative user-interface tools). I even went so far as to learn one and attempt to develop an application in it (FOCUS, which I hated and later had to remove from my resume because so many recruiters called me about it).

The movement eventually died. The reason is that they did not fulfill the promise of reducing development time. For me and FOCUS, this was because the language created more problems than it solved, and I spent a great deal of time fighting with it. (For example, it could save time if the 4GL automatically determines how to display your data on the screen, but if it does it in a way that is not logical to the users, then you spend even more time forcing the 4GL to do it your way.)

Another reason is the rise of Object-Oriented Programming (OOP). What started out as an interesting way to think about programming turned into a necessity with GUI applications. Microsoft’s “Visual” languages, Java, and .NET guaranteed the success of OOP. A whole breed of languages followed, including Python and Ruby, and some languages like PHP evolved into something object-oriented.

However, it only recently occurred to me, as I began to learn about Laravel, that I learned how truly powerful an object-oriented language could be. Specifically, how OOP could be leveraged to fulfill the promises of 4GL. Laravel is a PHP framework, which leverages a powerful set of classes to do almost all of the work of developing a programmatic web site. Almost 100% of the functionality is declarative, just as was done with 4GLs.