Brad's Books and Organizations

Books

Books

Organizations

Organizations

Hi, I’m Brad Feld, a managing director at the Foundry Group who lives in Boulder, Colorado. I invest in software and Internet companies around the US, run marathons and read a lot.

« swipe left for tags/categories

swipe right to go back »

What Happened To The 4GL?

Comments (31)

On today, this day of endless blogging / talking (and hopefully downloading) of Google Chrome, I thought I’d go retro and write about my renewed hunt for the 4GL.  But first, a little context on how this came about.

This summer I spent some time playing around with Google AppEngine to try and understand it better.  It didn’t take long before I realized I needed to really understand how to program in Python to do anything.  So I spent some time reading about Python and ultimately realized that if I wanted to make any progress, I needed to spend a chunk of time actually learning Python.  Fortunately, I found a nice MIT course titled 6.00.  I took the equivalent (6.001) in 1984 when it was taught using Scheme; now it uses Python.  Oh goody – I can re-live my 18-year old student self if I want.

As I started digging around in Python, I instinctively compared it to the languages we used at my first company, Feld Technologies.  We wrote business applications in the late 1980′s and early 1990′s and our language of choice was Clarion.  We also wrote one large system using DataFlex and one with Oracle7, did plenty of work with dBase and FoxPro, ultimately adopted Microsoft Access as our 4GL of choice, struggled through some stuff on the Mac with 4th Dimension, and explored doing things with PowerBuilder right at the time that we sold the company.  Some of these applications (including some of the larger ones) are still being used.

When I was playing with Google AppEngine, I kept waiting for the 4GL "aha moment."  That’s the moment I had using Clarion, DataFlex, Access, and even FoxPro where I realized how easy it was to do certain things.  That moment never came during my exploration of Google AppEngine – the deeper I got, the more confused I got.

My plan for Google AppEngine was to write a very simply application to help me manage my art collection.  I’ve searched long and hard for a web based application to do this – the closest I’ve come is a program called Yallery written by a local friend Jennifer Ross.  Yallery is very cool and does a lot of things that I’d want to do, but like most applications it misses on a handful of very specific things I want, while adding lots of things I don’t want.  So – when AppEngine came out, I thought writing a simple art collection management system (ACMS) would be a great way to solve two problems: (1) really learn how AppEngine works and (2) get my little ACMS up and running exactly the way I wanted.

Like all good software developers, I sketched out a quick design.  Like 99% of the software I’ve written in the past, the application is table driven – there is a simple data structure underlying all of the various screens that I’d want.  I’d use the app via a few different modalities which would be accessed through a simple menu.  The screens, menu, and underlying database describe 80% of the application; the final 20% is something any run of the mill report writer should be able to handle.

The optimal time to do this was when I was in Alaska in July.  I try to take on a few new things each summer "to learn" and this seemed like a perfect one.  I carved out some two hour chunks and went after it.  However, two days in and I was completely lost. It was clear that whatever construct I had in my head about what I needed to do didn’t map in any way to how I needed to do it in AppEngine.

Now, some of it may be me.  I stopped programming around the time that people were making the shift from procedural programming to object oriented programming.  C was the language of my day; not C++.  The idea of "Object Basic" or "Object Pascal" was amusing.  So – I’ve always struggled a little with object / method syntax.  Oh – and at my core there are two languages that have influenced me the most – Basic and Scheme – which probably explains all of my weird programming predilections.

But something just seemed wrong to me.  Clearly AppEngine wasn’t the right tool to build my ACMS in.  But, I didn’t really know what the right tool was.  I know what I want – something like Clarion that works in a web-browser world.  Something that provides all the magic Ajax UI goodies for me without me having to really do anything other than specify what I want the screens to look like.  Something that knows how to bind data fields to the screens and then to a table to a database and allow me to do all kinds of data entry, sorting, and reporting on them.  Something that completely isolates error handling for me so I don’t have to think about it.  As I worked through my list of "wants" I realized I was defining what a 4GL does.

I know that there are some companies working on this.  In an attempt to be trendy, this is now called PaaS (Platform-as-a-Service).  But it’s really the reincarnation of the 4GL.  And I’m not sure I really want a PaaS – I think I just want a 4GL that works with today’s web-based environment.

  • http://zackola.com/blog/ zack

    Everything you list in your 'wants' sounds like something that Rails could take care of for you if you so desire. I'd recommend checking out scaffolds in Rails, particularly the ActiveScaffold plugin http://activescaffold.com/

    The one thing that can be a pain though is deployment, as there are 99 million ways to setup a rails app in production.

    • http://www.feld.com Brad Feld

      I did the Rails drill about 18 months ago.  At the time it was nowhere close to what I wanted.  I guess I should look again.

  • http://www.taylor-hughes.com/ Taylor Hughes

    I had a similar GAE experience: I decided to rebuild my blog using App Engine to take it for a spin and quickly discovered it was not the right platform for that sort of thing. It's a powerful platform for building scalable multiuser web apps, but it is certainly not the best tool for putting together something simple quickly. From the description of what you want, it sounds like ASP.NET, with Visual Studio's help, would probably suit your needs — although the suggestion is probably heresy. :)

  • http://zackola.com/blog/ zack

    Additionally, you could check out Django's admin site http://www.djangobook.com/en/beta/chapter06/ as it might also take care of most of your needs.

    • http://www.lindsayrgwatt.com/blog Lindsay

      Highly agree on checking out Django. They're targeting a 1.0 release in a few weeks and I'd definitely give it a go then. Fantastic way to quickly create apps.

  • John Thomas

    I am not a programmer, but built my site on the OS php app Drupal (drupal.org) . There are many clever plugins, but for customizing the items (nodes in Drupal) use CCK and Views. Drupal 5 is fairly deep and stable. Drupal 6 is up and coming (cck and views for 6 are still in beta). My site has screens that are less intuitive because I am not a programmer, but I could rebuild it in minutes if my server and backups were nuked.

  • Heather Duey

    I agree with Taylor – despite the eye-rolling sure to come, you could have this up and running using .Net within a few hours, using drag and drop (probably completely).

    • http://www.feld.com Brad Feld

      It'd take me a full day just to download and configure all the .NET tools that I'd need. Oops – no eye rolling …

      • Heather Duey

        you got me on that one…

  • rickumali

    I liked your observation about when you stopped doing active development: during “the shift from procedural programming to object oriented programming.” Me too. I feel like the “new ways” of programming (and let's face it, OO is not new anymore) still seem slippery to get a hold of. The other thing I also liked about this post: blocking out time to try and learn something new. Good stuff.

  • http://www.samidh.com Samidh Chakrabarti

    As someone who has also been influenced/molded by MIT's 6.001, I have to say that I came to the opposite conclusion in my App Engine experience. I found it to be a thing of wonder and beauty.

    We use it as the front end for everything we do here at Pluribo. What makes it a joy to use is that there is a uniform data model for every single kind of thing you put into the system (videos, strings, dates, etc…). This data is shared across all running instances of your application, so you never have to worry about scaling. You just write your app code.

    Of course, you know all of this already. In our experience, the “trick” in mastering App Engine these days is really to master Django– otherwise it's pretty hopeless to build even a simple web app. While it may not be the most elegant and unified 4GL, BigTable+Django can still get the job done quickly.

  • Doug

    I won't recommend a tool I have spent time using, and think is easy and the perfect fit for everything.
    Please tell us how you define a 4Generation Language? Should this new language be web specific, or a general purpose language.
    Someone made you a 4GL promise and did not deliver. What was the expectation?

  • Steve Bergstein

    Did you ever take 6.170, which was taught in CLU “Cluster Oriented Language” back in the stone age when we were ungrads?

    • http://www.feld.com Brad Feld

      I started taking it one semester that I had a bunch of classes, realized how much work it would be, and dropped it a few weeks in.

  • http://www.thrall.net cthrall

    Yeah, ASP.NET would be a really quick way to do this.

    The other framework I have been using is the Yahoo UI library with PHP. You still have to write something on the server-side to run queries, but YUI gives you things like a caching data table with customizable cells. It is really nice. Maybe a little more work than ASP.NET, but maybe easier to customize the UI.

  • http://www.thrall.net cthrall

    Yeah, ASP.NET would be a really quick way to do this.

    The other framework I have been using is the Yahoo UI library with PHP. You still have to write something on the server-side to run queries, but YUI gives you things like a caching data table with customizable cells. It is really nice. Maybe a little more work than ASP.NET, but maybe easier to customize the UI.

  • http://www.feld.com Brad Feld

    from an email – Just read your article and, being fairly old and having effectively stopped programming 15 years ago, understood what you were saying only too well.

    If you are happy to have a web based application, have a look at Xataface – http://framework.weblite.ca/

    I've been using it for three years or so now and it handles table based applications pretty well – with limitations, but then that is to be expected. You may need to learn a little html and php, but Steve Hannah who supports it is very responsive via the forum, and I have got reasonable applications running live with minimal knowledge.

  • http://www.ngvdriver.com Chad Nuesmeyer
  • Jonathan_Sapir

    The closest thing I have found to the old 4GLs is Coghead. It is of course still evolving, but it is moving very clearly in this direction. And even better than the old 4GLs is the fact that you don't have to worry about hardware/backup/scalability/etc. since it automatically runs on the Amazon infrastructure.

  • SM

    +1 for ASP.NET. It's exactly what you're looking for. But it'll never be AppEngine compatible but MS is supposed to be debuting their AE equivalent soon. If you want to try ASP.NET, use MS's free IDE:
    http://www.microsoft.com/express/vwd/default.aspx

    Rails, Django and friends can support what you're trying to do but none match the RAD/4GL mindset better than ASP.NET.

  • Caligula

    I'm surprised nobody's mentioned DabbleDB, although its online/etc. model may not match what you're looking for.

    http://dabbledb.com/

  • http://www.feld.com Brad Feld

    from an email – Sounds like you want a decent web framework. I use Symfony, a PHP framework that Yahoo! wrote http://www.delicious.com in, but there are 1000 others. It binds your web forms to objects and auto-implements ORM storage to the database layer by default.

  • http://www.keeneview.com ckeene

    I had John McCarthy as my undergraduate advisor so I was exposed to Lisp at a very formative age and have never been able to fully expunge it from my system :-)))

    I now have Mitchell Kertzman (of PowerBuilder fame) and Roger Sippl (of Informix 4GL fame) on the WaveMaker board, so we have the pedigree part of 4GL down!

    You put your finger on the elephant under the table in programming today – it is no longer possible for mere mortals to build basic business applications.

    Ten years ago, there were loads of ways to build client/server apps easily – PowerBuilder, MS Access, Lotus Notes, Filemaker. Today, none of those tools have made the leap to web architectures, leaving a huge market vacuum.

    It has been so long since there have been decent tools for non-expert developers that people have literally forgotten what a 4GL even looks like. The best proof of this s the many comments on this thread by people who think that coding frameworks like Ruby on Rails and Django are reasonable substitutes for a 4GL.

    This is not to slight Rails and Django, just to say that these products are targeting making hard-core developers even more productive. The underserved market here is all us poor pre-OO schmucks who just want to build a simple app without getting a PhD in Python (I prefer wine cellar management apps to art collection management apps but there you go).

    Force.com pretty much defined the 4GL in the cloud space, but is of course pretty SalesForce specific. Coghead and Bungee are definitely the leaders in the independent cloud 4GL space.

    What is missing is a good open-source IDE for the cloud that uses standard languages like Javascript and Java. Aptana has an interesting story here and WaveMaker will have something to say here soon as well!

  • Skifellows

    Ok, so I stopped programming with dBase 4, so this is all very beyond me. Except, I happen to be helping out with my 20-year B-School reunion, and the development office has set up a table-based web application for us in Quickbase, an Intuit product. It may be way too simple for what you are looking for, but it does track and report on lists and tables in a pretty slick way… Admittedly, I have not tried to build anything in it, but it doesn't look all that difficult. http://www.quickbase.com will get you there….

  • http://blog.gobansaor.com Tom Gleeson

    If you have prior experience of Oracle then you should give Oracle APEX a try (comes with the free Oracle 10g Express edition), very much in the 4GL tradition. But for lots of open source goodness, Chris Keene's WaveMaker would be my choice.

    In the non-free category, I've heard good reports of the French developed WinDev ( http://www.windev.com/).

    Tom

  • http://eugeniowgarcia.blogspot.com/ Eugenio

    May be you can give a try to GeneXus X ( http://www.genexus.com) . GeneXus is a knowledge-based software development tool, mainly oriented to enterprise-class applications for the web and Windows platforms. The developer specifies his applications in a high-level (mostly declarative) fashion, from which native code is generated for multiple environments.

  • http://xcerion.com/blog/ icloud Beta Team

    http://icloud.com (a Cloud OS and 4GL development tool combined) has a visual application designer for UIs and programs logic using a process oriented XML language, based on steps and events. It is designed for visual orchestration, very much like drawing a business process.

    icloud have been designed to be a rapid web-based 4GL development tool, where the database is provided as a virtual file system, capable of storing documents, binaries and generating meta data as Atom feeds. Instead of a table, use a folder, instead of creating a row in the table; create a document. Indexing and fast retrieval is provided by icloud. Think of it as a Lotus Notes, but were applications are described in XML and the database is a repository.

    At the core of icloud is an XML Virtual Machine, executing the applications directly on the client, without doing any server round-trips. This improves the responsiveness of “web” applications in icloud. Applications look and much more like desktop software.

    We are working on icloud’s virtual machine for more devices than the web browser. This means that any application written for icloud will work online, and elsewhere…

    icloud Beta Team

  • http://www.servoy.com Brenda Duncan

    May I humbly suggest that you take a look at Servoy? It's close to the old 4GLs – but powerful enough to run on the desktop AND the web – from one code base. There is a free community edition, so you can try it out. We convert many old “4GL-ers”. We also get lots of comments about how easy it is to deploy. http://www.servoy.com

  • Taylor Hughes

    I had a similar GAE experience: I decided to rebuild my blog using App Engine to take it for a spin and quickly discovered it was not the right platform for that sort of thing. It's a powerful platform for building scalable multiuser web apps, but it is certainly not the best tool for putting together something simple quickly. From the description of what you want, it sounds like ASP.NET, with Visual Studio's help, would probably suit your needs — although the suggestion is probably heresy. :)

  • zack

    Additionally, you could check out Django's admin site http://www.djangobook.com/en/beta/chapter06/ as it might also take care of most of your needs.

  • John Thomas

    I am not a programmer, but built my site on the OS php app Drupal (drupal.org) . There are many clever plugins, but for customizing the items (nodes in Drupal) use CCK and Views. Drupal 5 is fairly deep and stable. Drupal 6 is up and coming (cck and views for 6 are still in beta). My site has screens that are less intuitive because I am not a programmer, but I could rebuild it in minutes if my server and backups were nuked.

  • http://intensedebate.com/people/bfeld bfeld

    It'd take me a full day just to download and configure all the .NET tools that I'd need. Oops – no eye rolling …

  • http://intensedebate.com/people/heather_duey heather_duey

    I agree with Taylor – despite the eye-rolling sure to come, you could have this up and running using .Net within a few hours, using drag and drop (probably completely).

  • http://intensedebate.com/people/bfeld bfeld

    I did the Rails drill about 18 months ago.  At the time it was nowhere close to what I wanted.  I guess I should look again.

  • http://intensedebate.com/people/bfeld bfeld

    I started taking it one semester that I had a bunch of classes, realized how much work it would be, and dropped it a few weeks in.

  • http://intensedebate.com/people/rickumali rickumali

    I liked your observation about when you stopped doing active development: during "the shift from procedural programming to object oriented programming." Me too. I feel like the "new ways" of programming (and let's face it, OO is not new anymore) still seem slippery to get a hold of. The other thing I also liked about this post: blocking out time to try and learn something new. Good stuff.

  • Samidh Chakrabarti

    As someone who has also been influenced/molded by MIT's 6.001, I have to say that I came to the opposite conclusion in my App Engine experience. I found it to be a thing of wonder and beauty.

    We use it as the front end for everything we do here at Pluribo. What makes it a joy to use is that there is a uniform data model for every single kind of thing you put into the system (videos, strings, dates, etc…). This data is shared across all running instances of your application, so you never have to worry about scaling. You just write your app code.

    Of course, you know all of this already. In our experience, the "trick" in mastering App Engine these days is really to master Django– otherwise it's pretty hopeless to build even a simple web app. While it may not be the most elegant and unified 4GL, BigTable+Django can still get the job done quickly.

  • Lindsay

    Highly agree on checking out Django. They're targeting a 1.0 release in a few weeks and I'd definitely give it a go then. Fantastic way to quickly create apps.

  • http://intensedebate.com/people/bfeld bfeld

    from an email – Just read your article and, being fairly old and having effectively stopped programming 15 years ago, understood what you were saying only too well.

    If you are happy to have a web based application, have a look at Xataface – http://framework.weblite.ca/

    I've been using it for three years or so now and it handles table based applications pretty well – with limitations, but then that is to be expected. You may need to learn a little html and php, but Steve Hannah who supports it is very responsive via the forum, and I have got reasonable applications running live with minimal knowledge.

  • http://intensedebate.com/people/Jonathan_Sapir Jonathan_Sapir

    The closest thing I have found to the old 4GLs is Coghead. It is of course still evolving, but it is moving very clearly in this direction. And even better than the old 4GLs is the fact that you don't have to worry about hardware/backup/scalability/etc. since it automatically runs on the Amazon infrastructure.

  • Doug

    I won't recommend a tool I have spent time using, and think is easy and the perfect fit for everything.
    Please tell us how you define a 4Generation Language? Should this new language be web specific, or a general purpose language.
    Someone made you a 4GL promise and did not deliver. What was the expectation?

  • http://intensedebate.com/people/steve_bergs2127 steve_bergs2127

    Did you ever take 6.170, which was taught in CLU "Cluster Oriented Language" back in the stone age when we were ungrads?

  • http://intensedebate.com/people/heather_duey heather_duey

    you got me on that one…

  • SM

    +1 for ASP.NET. It's exactly what you're looking for. But it'll never be AppEngine compatible but MS is supposed to be debuting their AE equivalent soon. If you want to try ASP.NET, use MS's free IDE:
    http://www.microsoft.com/express/vwd/default.aspx

    Rails, Django and friends can support what you're trying to do but none match the RAD/4GL mindset better than ASP.NET.

  • Chad Nuesmeyer
  • http://intensedebate.com/people/bfeld bfeld

    from an email – Sounds like you want a decent web framework. I use Symfony, a PHP framework that Yahoo! wrote http://www.delicious.com in, but there are 1000 others. It binds your web forms to objects and auto-implements ORM storage to the database layer by default.

  • http://intensedebate.com/people/ckeene ckeene

    I had John McCarthy as my undergraduate advisor so I was exposed to Lisp at a very formative age and have never been able to fully expunge it from my system :-)))

    I now have Mitchell Kertzman (of PowerBuilder fame) and Roger Sippl (of Informix 4GL fame) on the WaveMaker board, so we have the pedigree part of 4GL down!

    You put your finger on the elephant under the table in programming today – it is no longer possible for mere mortals to build basic business applications.

    Ten years ago, there were loads of ways to build client/server apps easily – PowerBuilder, MS Access, Lotus Notes, Filemaker. Today, none of those tools have made the leap to web architectures, leaving a huge market vacuum.

    It has been so long since there have been decent tools for non-expert developers that people have literally forgotten what a 4GL even looks like. The best proof of this s the many comments on this thread by people who think that coding frameworks like Ruby on Rails and Django are reasonable substitutes for a 4GL.

    This is not to slight Rails and Django, just to say that these products are targeting making hard-core developers even more productive. The underserved market here is all us poor pre-OO schmucks who just want to build a simple app without getting a PhD in Python (I prefer wine cellar management apps to art collection management apps but there you go).

    Force.com pretty much defined the 4GL in the cloud space, but is of course pretty SalesForce specific. Coghead and Bungee are definitely the leaders in the independent cloud 4GL space.

    What is missing is a good open-source IDE for the cloud that uses standard languages like Javascript and Java. Aptana has an interesting story here and WaveMaker will have something to say here soon as well!

  • Skifellows

    Ok, so I stopped programming with dBase 4, so this is all very beyond me. Except, I happen to be helping out with my 20-year B-School reunion, and the development office has set up a table-based web application for us in Quickbase, an Intuit product. It may be way too simple for what you are looking for, but it does track and report on lists and tables in a pretty slick way… Admittedly, I have not tried to build anything in it, but it doesn't look all that difficult. http://www.quickbase.com will get you there….

  • Eugenio

    May be you can give a try to GeneXus X (http://www.genexus.com) . GeneXus is a knowledge-based software development tool, mainly oriented to enterprise-class applications for the web and Windows platforms. The developer specifies his applications in a high-level (mostly declarative) fashion, from which native code is generated for multiple environments.

  • icloud Beta Team

    http://icloud.com (a Cloud OS and 4GL development tool combined) has a visual application designer for UIs and programs logic using a process oriented XML language, based on steps and events. It is designed for visual orchestration, very much like drawing a business process.

    icloud have been designed to be a rapid web-based 4GL development tool, where the database is provided as a virtual file system, capable of storing documents, binaries and generating meta data as Atom feeds. Instead of a table, use a folder, instead of creating a row in the table; create a document. Indexing and fast retrieval is provided by icloud. Think of it as a Lotus Notes, but were applications are described in XML and the database is a repository.

    At the core of icloud is an XML Virtual Machine, executing the applications directly on the client, without doing any server round-trips. This improves the responsiveness of "web" applications in icloud. Applications look and much more like desktop software.

    We are working on icloud’s virtual machine for more devices than the web browser. This means that any application written for icloud will work online, and elsewhere…

    icloud Beta Team

  • Brenda Duncan

    May I humbly suggest that you take a look at Servoy? It's close to the old 4GLs – but powerful enough to run on the desktop AND the web – from one code base. There is a free community edition, so you can try it out. We convert many old "4GL-ers". We also get lots of comments about how easy it is to deploy. http://www.servoy.com

  • zack

    Everything you list in your 'wants' sounds like something that Rails could take care of for you if you so desire. I'd recommend checking out scaffolds in Rails, particularly the ActiveScaffold plugin http://activescaffold.com/

    The one thing that can be a pain though is deployment, as there are 99 million ways to setup a rails app in production.

  • Caligula

    I'm surprised nobody's mentioned DabbleDB, although its online/etc. model may not match what you're looking for.

    http://dabbledb.com/

  • Tom Gleeson

    If you have prior experience of Oracle then you should give Oracle APEX a try (comes with the free Oracle 10g Express edition), very much in the 4GL tradition. But for lots of open source goodness, Chris Keene's WaveMaker would be my choice.

    In the non-free category, I've heard good reports of the French developed WinDev ( http://www.windev.com/).

    Tom

  • James Mitchell

    If you hired me to design and code a system for you to track you art collection, I would do the following:

    1. I would do the table design in Microsoft SQL Server. I would use a hosting company that for $15 a month will give me access to a WISN (Windows Server, IIS, SQL Server, .Net) software stack, so I did not have to set any of this stuff up.

    2. I would write the app in Microsoft Access 2007. I know of no tool that allows one to design fairly sophisticated applications in less time than Access. The main downside is that it does not generate Web pages. I could probably have the system done in 1 to 2 days.

    But before you hired me, I would say,"You're kidding, right? Is your art collection that big that you need a database to track it???"

    James Mitchell

    • http://intensedebate.com/people/bfeld Brad Feld

      Yes, but I was a WEB based application that I can access via a browser from any computer. Can Access 2007 do that?

  • http://www.replica-china.net replcia handbags

    Such a good article, caught my sympathy!

  • http://www.replica-china.net replcia handbags

    Such a good article, caught my sympathy!

  • rick

    yep the rails could take care of those desires, but as zack says deployment has 99million variations and that can be tough!

    R
    Mapquest Driving Directions

Build something great with me