I can manage your company's books if I have enough chalk and sidewalk space. Just because I can, doesn't make it a good idea. Likewise, I can write and manage complex software with just the things I can write myself. When you get tired of creating your own tools for everything — all the time, every time — you might want to step up to a Fourth Generation Language (4GL).
Unlike a framework, a 4GL usually includes a combination of code and an Integrated Design Environment (IDE). That means that while a framework connects your code to existing code, the 4GL also helps you write code.
I used to work with an amazing developer named Roy Gordon. Back in the '80s, he developed a programming language called Stick Language which compiled into mvBASIC. To write a program in Stick Language required mastery of fifteen hundred parameters. Obviously, nobody — other than me and Roy — was going to do that. The rest of the team used a 4GL, also developed by Roy, which allowed you to drag-and-drop fields, and fill in a few details, to generate the code without writing any.
Stick Language worked, in part, because we were only trying to build one type of software. Developing a more generalized 4GL usually involves providing hooks for 3GL code in specific place. As we roll through the various software offerings in this series, you'll get some clear examples of how 3GL and 4GL intertwine.
IDE, Do You DE?
To understand what an IDE is, I'll give you an example of a fairly robust — but still entry-level — IDE: Notepad++. If you've ever used it, you'll be aware that it has language-specific templates which provide color-coding, indentation guides, and code-completion. While it does not come with an mvBASIC option, there are a good ones available, including two here: http://www.pickwiki.com/index.php/NotepadPlusPlus.
Notepad++ does fail the test of a truly robust IDE in one important way. A full IDE would also include an easy method for parametric entry.
I Strongly Object
4GLs don't have to be object-oriented, but that's the way to bet. Just as the 4GL is a natural evolution of a framework, sets of objects are the natural evolution of libraries. Where a library is a collection of routines, an object is a collection of routines plus a context.
For example, in a language like Delphi or C# you might find an object which encapsulates all the routines and graphical aspects of a button, combining the code which manage the state of the object, the events it triggers, its graphical appearance, and the graphical changes it can have.
Parts > Whole
A modern 4GL is going to provide some level of all of these things: libraries, sets of objects, a method for describing a program without resorting to hand coding, surgically-placed areas where hand-code can be added, and an IDE to guide you through.
The rest of the articles in this series will introduce you to how all of those things are presented, and balanced, in software like OpenInsight, Evoke, Nucleus, and others. As they say in Australia: Horses for courses. Different horses run better and worse on different tracks. Different design paradigms work better and worse for different projects. This isn't about picking the best one ; it's about picking the best one for your particular needs .