Welcome Guest | My Membership | Login

Spotlight: 4GL


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).

When we write code a line at a time, we are using a Third Generation Language (3GL). Examples include: mvBASIC, everything in the C-family, Python, and PHP. The natural step-up from a 3GL is a framework. jQuery for JavaScript and and JSTL for Java are examples of frameworks. MultiValue environments are, arguably, also frameworks because they supply built-in tools for interacting with your data. While adding a framework is a powerful approach to accelerating programming speed and expanding your toolkit, you may want to go even further and advance to a 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.

Stick Language

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.

If you've used Eclipse, you might want to check this out: http://www.u2logic.com/tools.html . And there's also a stand-alone IDE here: http://www.mvdeveloper.com/pages/mvdeveloper.htm .

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 .


# # #          # # #          # # #


Related Articles

  • From the Inside January/February 2018

    Company: International Spectrum

    By now, you have probably heard all about the major bugs in Intel, ARM, and AMD processors. Since this vulnerability affects just about all processor types, you will probably need to update your phone, your tablet, your PC, and all of your servers in the coming weeks. Why and how does it affect everything?

  • Using OWIN Security with MultiValue Data - Part 1

    OWIN is the latest iteration of Identity Management for .NET. It can be a powerful tool for MutliValue developers, not just for web applications, but for all .NET projects. This is Part 1 in a series of articles which will guide you through a detailed example of adapting Owin to your projects.

  • Business Tech: UI/UX Part V

    Company: HDWP

    In the final part of our series on UI/UX, we examine ways to extend the concepts beyond software and into other aspects of your work.

  • Compressing Traffic for UniObjects

    Company: Brian Leach Consulting, ltd

    Modern technology solutions are often a matter of cobbling together bits and pieces that weren't originally designed to fit together. Compression is easy. Data transmission is easy. Making UniVerse's data transmittable as a compressed stream which can be used by some other system, that's easy - or hard - depending on the entire tech stack on each end. The addition of Python to U2 as created new options for completing complex tasks.

Return to top