x4GL compilers features compared
Evaluating x4GL products, vendors, and technologies
x4GL products by features tables:
4GL to Java migration services links list:
Individual products strengths & weaknesses:
One-On-One:
x4GL technology (where x stands for various vendors implementations of I-4GL product) evolved significantly from the days when I-4GL was the proprietary and legacy technology, as well as the only implementation of the I-4GL compatible language available. Significant number of x4GL vendors emerged in last 10 years, including vendors making compatible products, extending functionality, providing services including migration and conversion, and even the OpenSource project with purpose of promoting and enhancing x4GL technology was established.
This document was created to enhance the visibility of all this activity, and make it easier for a vendor to evaluate its future involvement with x4GL technology. Primary purpose is to collect in one place sufficient information about various available x4GL compatible products, vendors and services, for the reader to learn what is available and what functionality to expect. It is not to be used as a sole source of information for this purpose.
All features and other characteristics of vendors and products where evaluated from the perspective of Business Related, Database Oriented applications development environments. Naturally, needs of different developments environments, even within same organization, are different, and changing. Therefore, no scoring or other measurement method was used.
The first part, the features tables, is mostly dry facts; the following sections, however, are much more "opinionated" by necessity. Since the choice was made not to use scoring, it was the only way to emphasize and contrast various strengths or weaknesses of products. As all opinions are by definition personal, always evaluate them in the context of your specific needs and resources. Hopefully, some will be useful, some thought provoking, but some will not apply well to your environment. Cevat Emptor.
This document assumes some level of familiarity with x4GL technology, but one is not expected to be a x4GL developer to benefit from it. Almost all technical details are concentrated in "x4GL products by feature" tables, and most other information discusses business, process and management issues. Therefore, the target audience will range from corporate technology decision makers all the way to development team leaders and development project managers, and curious developers.
Disclaimer:
All reasonable effort was made to ensure that information provided was correct. However, some information had to be condensed because of limited space, to simplified answers, and some vendor claims where not verified. Information is believed to be accurate at the time if the writing (June 2005), however, no responsibility can be accepted for possible errors or omissions. Corrections will be gratefully received.
General |
Aubit
|
Hy4gl | IBM Informix 7.3 | IBM EGL (3) | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero (also marketed by IBM) | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Description | OpenSource GNU/GPL compiler with many features | Experimental GNU/GPL compiler with PostgreSQL only as database and CUI mode only. | Compiler that started it all. Character only, Informix & DB/2 DB only. | Fusion of several 4GLs, IBM's answer to Java productivity limitations and i-4GL migration path, focused on web apps development | First generation 4Js 4GL product, high compatibility and proven performance | Second generation 4Js product, current technology leader among commercial products | Strong focus on Oracle migration, many features | Focus on image processing, derived form Informix 4GL | Focus on IBM DB/2 migration, simple Java GUI client and .NET integration | 4GL compiler and 4GL CASE Tools, plus 4GL to Java source converter |
I4GL Extender and integration product, uses I-4gl or 4Js compiler
Acquired by WRQ, Inc. |
4GL to Java translation | 4GL to Java translator service | 4GL-like, "I-SQL on steroids" from company that makes Informix SE database clone. |
Source code available | ? | |||||||||||||
GNU/GPL or other OpenSource license | ||||||||||||||
Per-developer licensing | ? (Some versions are currently free) | ? | ? | ? | ? | ? | Porting service only | |||||||
Per-user (runtime) licensing | ? | ? (Some versions are currently free) | ? | ? | ? | ? | ? | |||||||
Commercial support | Out of business (confirmed) | Product no longer available (?) | ? | |||||||||||
Back to top... | ||||||||||||||
User Interface |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Character (terminal) mode | ||||||||||||||
Message based thin GUI client | In works | TCL/TK, Java | Java, ActiveX control | Java, VB | Java | |||||||||
Bitmap based thin GUI client | Using VNC, X, or other standard remote GUI display (server not integrated) | Citrix/WTS only | Citrix/WTS only | ? | ? | ? | ? | |||||||
OS independent GUI - access to widget set | GTK+ | ? | TCL/TK and Java - partial | Yes/Limited | ? | ? | Motif only | Java | Java | |||||
MS Windows native GUI widgets | ? | |||||||||||||
Java thin GUI | Using VNC or X Java clients | |||||||||||||
Java GUI as applet | Using VNC or X Java clients | N/A | ? | ? | ? | N/A | ||||||||
Full control over GUI widgets from 4GL code (Integrated - non client GUI) | N/A | N/A | ? | Limited | Client access to ActiveX and Java Beans, but not form 4gl code | ? | ? | ? | ? | N/A | ||||
UI screen format | Block (.per) & Glade | Block only (.per) | Block only (.per) | Converted .per, Java Server Faces | Block only (.per) | Block, but gets stripped to XML format that is then customizable | Block only (.per) | Block only (.per) | ||||||
HTML interface | CGI only, manual | CGI-BIN, not supported | Using servlet | |||||||||||
Emulation of 4GL UI in HTML (menu, forms...) | Planned | |||||||||||||
Adobe Acrobat (PDF) report generation | Both built-in and via transformation (LogicalReports) | Via Jasper Reports | Via XML Publication System | Via separate report transformation tool | ||||||||||
Automatic HTML reports formatting | ? | Limited | ? | ? | ||||||||||
Back to top... | ||||||||||||||
Compiler features |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Can run as CGI in web servers | Not supported | ? | ||||||||||||
Can compile as Apache module | ||||||||||||||
P-code compiler | Perl-Parrott / Native (Alpha) | Java Byte-code | ? | Using i4GL compiler | Java | Java | ||||||||
C# generation | In works | |||||||||||||
Java generation | In works | ? | ||||||||||||
Perl-code generation | (Beta) | |||||||||||||
COBOL generation | iSeries & zSeries only | |||||||||||||
C-code generation | No longer supported | ? No longer supported | ? | Using i4GL compiler | ||||||||||
Image query and processing | ||||||||||||||
XML mapping to/from 4GL arrays | ? | From, but not to | Exchange format for ThinStructure | |||||||||||
Compiler generates resources (metrics, tables used, functions declared,...) map information | ||||||||||||||
XML parsing and output support | IksEmEl, SXML and native | Output only - Separate C/S reporting tool, can take output from 4gl PRINT | ? | ? | ? | Java | Java | |||||||
Back to top... | ||||||||||||||
Middleware / interfaces |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
IM support | Jabber (and most proprietary protocols via Jabber gateways) | Via Java calls | ? | ? | ||||||||||
XML based middleware | RPC-XML via Jabber | Via Java calls | SOAP in CLI-HTML V3 - not documented | SOAP | ||||||||||
SMTP/POP3 send/receive built-in (email) | no language bindings | J2EE libraries, but no language bindings | ? | |||||||||||
IPC on Windows - DDE/OLE - from 4gl code | DDE - not compatible with DDE in MS Office after Office 98 release. | ? | Client have access to Active X which is OLE based - but not from 4gl code. | DDE | ? | OLE | ||||||||
App partitioning - Middleware | Sun RPC,CORBA(Alpha),IBM MQ and Jabber (JAM) | Via Java calls | ? | Cobra, DCE, RPC | Java | Java | ||||||||
Role separation | n-tier | 3-tier | ? | 3-tier | 3-tier | 3-tier | ? | ? | Java | Java | ||||
Platform / OS support | All with GNU C | All with GNU C | UNIX, Many | Windows, Linux, iSeries, zSeries, others planned | Many | Many | Limited | Windows only | ? | ? | All with JVM | All with JVM | ? | |
Back to top... | ||||||||||||||
Database interface |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Can load database support on the fly | ? | ? | ||||||||||||
Run-time emulation/translation of Informix proprietary RDBMS&SQL features on non-Informix databases | Oracle and others (?) | via separate server ("Multi Database Connectivity") Informix / Oracle / DB/2 | ? | |||||||||||
ODBC drivers support | Via JDBC/ODBC bridge | Beta, MS SQL server only | ? | Alpha, MS SQL server only | ? | Via JDBC bridge | ||||||||
ODBC manager support | unixODBC, iODBC, OpenLink, Windows | ? | ? | |||||||||||
Native db support | PostgreSQL, Informix, others via config files | PostgreSQL | Informix, DB/2 in works | ? | All supported - many | All supported - many | Informix, Oracle | Informix | Informix, Oracle | Informix, Oracle, DB/2 | Informix, and own SE clone | |||
Multiple databases and/or DB systems from one session | / via ODBC only | ? | ODI | ODI | ? | ? | JDBC | |||||||
Access to GPL databases | PG, others via ODBC | PostgreSQL | ? | PostgreSQL, MySQL (beta, native) | PostgreSQL, MySQL (with limitations) | JDBC | ||||||||
LDAP support | ? | ? | ? | ? | Java | |||||||||
Back to top... | ||||||||||||||
Tools |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
IDE | CUI (r4gl clone), GUI (Glade) alpha, integration with jEdit & GWD IDEs | CUI | WebSphere Studio (Eclipse) | Not supported, Java | Windows only | Win only | Integration with MS Visual studio .NET (option) | ? | ? | |||||
Debugger | via C only | C only | ? | not supported | C only - UNIX Debug in beta | ? | ? | ? | ||||||
Application Generator (from templates) | FGLGEN | ? | separate product | separate product | ||||||||||
Documentation tools | Doc4GL (Can be used with other x4GLs too) | ? | ||||||||||||
CASE tools | FGLBLD | (Rational?) | ||||||||||||
Back to top... | ||||||||||||||
Compatibility |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
I-4GL 7.2 compatibility | Converted to EGL, limited | ? | ? | |||||||||||
I-4GL 7.3 compatibility | Converted to EGL, limited | Partial | ? | ? | ? | ? | ||||||||
Plexus extensions compatibility | menu and form handlers | |||||||||||||
4Js BDL extensions compatibility | partial | Converted to EGL, limited | ||||||||||||
Enhancements to I-4GL language syntax | N/A | Not x4GL | ? | ? | ? | N/A | ||||||||
OO extensions | Alpha | ? | ? | ? | ||||||||||
Embedded C code | ? | ? | ? | ? | ? | |||||||||
Reports | "Logical Reports": text, PDF, XML, CSV transformations | text | text | Jasper Reports (XML) | text | text + PDF/XML via separate product | text | ? | ||||||
Key remapping | ? | ? | ? | |||||||||||
External C code | call C from 4GL only | ? | ? | ? | ? | |||||||||
Back to top... | ||||||||||||||
Productivity features |
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Associative arrays | ? | ? | ||||||||||||
Dynamic arrays | 4Js compatible | latest version only | Currently not translated | ? | ||||||||||
Testing hooks | Can be scripted, scripted screen dumps | ? | ||||||||||||
SQL...END SQL blocks for dialect independent SQL | ? | ? | ? | |||||||||||
Shared library function calls/Packages invoked on the fly | ? JNI | |||||||||||||
IN/Exists for 'IF' etc - not
just for use within SQL statements |
if exists (select * from sometab where company_code=lv_code)
then |
? | ||||||||||||
Multiple concurrent database connections | Multiple sessions/USE SESSION |
? | ? | |||||||||||
DEFINE constant | ? | |||||||||||||
Themable GUI output |
via gtkrc | Limited TCL/TK client only | ? | Some ActiveX based controld on Win client only | ||||||||||
IMPORT DATATYPE |
MPZ (large integer support) | ? | ||||||||||||
Linked defines |
DEFINE x LINKED TO tabname PRIMARY KEY (pkcol) |
? | ||||||||||||
Can use variable instead of string in all statements | Most, but not function and variable names [see _variable() syntax] | Only as per i-4GL specs | Only as per i-4GL specs | ? | Only as per i-4GL specs | ? | ||||||||
Form field INCLUDE list as SQL SELECT | ||||||||||||||
Moveable/Hidden windows |
||||||||||||||
"Pragma" style compiler hinting | ? | |||||||||||||
Structured cascading configuration | Global / user / directory / program / explicit /environment | ? | Global / directory / program /explicit | Global / directory / program
/explicit
|
||||||||||
Compile against extracted db meta-data without db present | ? | |||||||||||||
"perform" functionality | Separate product | |||||||||||||
"ace" reports functionality | Separate product | |||||||||||||
Convert Perform/Ace to 4GL | ||||||||||||||
Compiler regression tests available | Over 1000 automated tests | |||||||||||||
dbaccess/isql like functionality with database independence | asql | Separate product, no db independence | ||||||||||||
Tools for automated schema & data migration between databases | adbschemma | |||||||||||||
Configurable SQL translation / db features emulation behavior | ? | ? | ||||||||||||
|
Aubit | Hy4gl | Informix 7.3 | IBM EGL | 4Js BDL 3.10 / D4GL 3.10 | 4Js Genero | Querix | Plexus XDP AD32 | Supra-4GL | Etrus | SuperNova (1) | ProData proBuilder | ArtInSoft Freedom | Infoflex (2) |
Legend
Yes No ? Unknown N/A Not applicable
Strength |
Weakness |
|
|
Vendor Strengths |
Vendor Weaknesses |
|
|
Bottom line: After 10 years of promoting Java as a corporate mantra, the importance of admitting that Java cant do something (that is, deliver productivity for BRDO developers), is a step in the right direction. It marks the day when Java itself gained enough maturity and understanding, that it exited the technology hype phase. So we can finally get back to responsibly discussing strengths of different technologies on there own merits, without screams of "Legacy" from sales people. (Warning: there is a new "Java" on the block, it's called .NET, and has a lot of sales folks itching to sell it to you just because it is new. And new is always better, right?). It feels good to finally be able to say that even the biggest supporters of Java admit that there is nothing wrong with 4GL technology, and that in fact it can even be a better solution for some tasks. And it's OK to say it in public now - people will not think you are insane, incompetent or afraid of the new. And nobody got fired for thinking what IBM is thinking :-) However positive, this step unfortunately brings us less productivity then x4GL based products, but still more then plain Java/J2EE. Reading available IBM brochures and presentations, the strongest advantage of EGL is apparently that it is "modern", and "not legacy". Even a claims of higher productivity over x4GL languages where nowhere to be found. If the only motivation for making EGL was to make "not legacy" product, as far as I'm concerned, they should had not bothered. Mutant programming language syntax bring in question the very core advantage of 4GL concept - the language itself. Half-hearted implementation of meta-data will probably hurt more then help. Possibly more flexible development environment, with functionality that is still lacking in most x4GLs. But not ready for mission critical production environments for at least one more year. Lets hope for another step in the same direction soon.
|
Strengths |
Weaknesses |
|
|
Bottom line: Solid contender, proven functionality, but how much longer will a small company like Four J's support two comparable products? Expect to be "forced" to upgrade to Genero in the near future. So you should probably do your evaluation of Genero instead.
|
Strengths | Weaknesses |
|
|
Bottom line: Strong contender, rich in built-in technology options, a "looker" almost. Some aspects of large-scale production readiness are still open for debate, and most 4Js customers are still using BDL product. If you can live with the risk of your business-critical systems being in the hands of 50 people privately held company that can be gone tomorrow, technology is certainly worth at least evaluating. But remember, there will be no easy switching to other x4GL products once you start using enhanced functionality.
|
Please note: Since a significant number of features for Aubit compiler are based on the very nature of OpenSource development process, for Aubit 4GL both strengths and weaknesses are separated into product and license related
Disclaimer: Author of this document is closely involved with Aubit project
|
|
Product based Strengths | Product based Weaknesses |
|
|
License based Strengths | License based Weaknesses |
|
|
Bottom line: Most flexible and arguably most technologically advanced option, but it will suite best the environments which are prepared to (and able to benefit from) take charge of there own technology future. Managing expectations will be critical. It can provide significant savings, as well as open some unexpected enterprise integration options. But probably most importantly for a developer, you will never feel like you cannot achieve something because your tools are limited or someone is stopping you. The ultimate future-proofing has arrived. Beware: freedom always has a cost, and it requires both knowledge and determination. Lack of professional documentation illustrates this point well. Environments unfamiliar with the way OpenSource software and projects work from process perspective, may have a bit of cultural shock. Calling 24/7 support number and shouting at support guy is not an option here. [Comment by Mike Aubury:] Although commercial support contracts are available at highly competitive rates :-) (& The big difference is you get to speak to the organ grinder...) Similarly, due to the nature of OpenSource development process, occasionally you will see more nuts & bolts that you would like to; unfinished functionality that looks tempting, but is not, well, finished. Things you would not expect from commercial vendors. Not most of the time, anyway. As with all OpenSource software, vendors that will benefit from Aubit the most are the ones that know what they are doing, how to do it, have a clear plan how to benefit from it, and are prepared to share the load. Because that's what OpenSource in essence is - coopetition. "The man who trades freedom for security does not deserve nor will he ever receive either. " - Benjamin Franklin
|
Strength | Weaknesses |
|
|
Bottom line Granddaddy of them all is still with us, and going strong. As do all inventions based on real needs, clear ideas and leadership, instead on marketing, focus groups and buzzwords, it still fulfils its purpose. The fact that you hold in front of you a document comparing products inspired by I-4GL product, is a big salute to the author (Chris Moloney was the chief architect of I-4GL) If you have it, keep it, unless you can prove in no uncertain terms what will you gain by replacing it. Hint: "It's old" is not a valid argument. But if you plan new development, seriously consider other, more feature rich x4GL tools.
|
Note that focus of this chapter is to contrast differences between products. When products exhibit same or similar characteristics, they will not be mentioned here. Always view this tables together with Features Table and individual products Strengths & Weaknesses tables.
|
|
Bottom line: If you have existing x4GL code, evaluate Genero first. Look at EGL if you know how to deal with IBM, and are at least medium sized (500+) people company.
|
|
|
Bottom line: Evaluate Aubit if you feel confident about your knowledge, determination, and management support, if you do not have endless budget and if you are looking beyond a year or two. Look at EGL if you know how to deal with IBM, and are at least medium sized (500+) people company. Be aware that web browser is currently the only interface on offer.
|
|
|
Bottom line: Evaluate Aubit if you feel confident about your knowledge, determination, and management support, don't have endless budget, and are looking beyond a year or two. Make sure you don't immediately need functionality still lacking in Aubit, or that you can supplement it using another product. Evaluate Genero if dealing with commercial company is a more natural fit for your organization, or you feel uncomfortable with OpenSource nature of Aubit's development process.
|
|
|
Bottom line: Querix suite is a solid product, but its development and feature set is apparently limited by the limited resources of the company. If for no other reason, free licenses may appeal to people that whish to stay with Informix database for a while, and don't have the need for some of more current Genero features, and want more then Informix-4GL can give them. Just check first if support is available in your country - Querix is a small English company, even smaller then French based Four J's. If you care about GUI client looking pretty, or need Web Services, XML or PDF support, Genero is a way to go. It is more polished then Querix line, but still lacks maturity of the other Four J's offering (BDL) and in parts even some Querix components exhibit more maturity. Genero is GA since very recently, so things will probably only get better.
|
|
|
Bottom line: Evaluate Aubit if you feel confident about your knowledge, determination, and management support, and you are looking beyond a year or two. Make sure you don't immediately need functionality still lacking in Aubit, or that you can supplement it using another product. Evaluate Querix if dealing with commercial company is a more natural fit for your organization, and you feel uncomfortable with OpenSource nature of Aubit's development process. Make sure you fully understands and accept limitations of Querix tools.
|
|
|
Bottom line: If you need x4GL compiler now, and need it if for mission critical tasks, look at BDL/D4GL first. If you can afford to experiment a bit, and can benefit from features available only in Genero, give it a chance. Evaluate carefully if it is acceptable for you to become dependent on Four J's by using new language extensions. In both cases, do the math first, as the cost in both products might be a factor.
|
Characteristic (Note: all viewed from the perspective of Business Related Database Oriented applications development environments) |
x4GL |
x3GL (C/C++/C#/Java/VB/COBOL/ASP/PHP/JSP...) |
Productivity | Unmatched by any other BRDO tool or language. Realistically, gains between 5 and 20 times (that is, between 500% and 2000%) are expected and common. | Low at best; promise of productivity trough reusability (OOD, component assembly, RAD tools, process modeling & code generation) never materialized. After over 20 years of trying, it is hard to expect them to be achieved in foreseeable future. |
Flexibility | Limited by the purpose; do not try writing a web server with an x4GL; still, as long as efficient and transparent integration with lower level languages is available, you can benefit from both worlds, using high approach for BRDO tasks, and low level technologies when ultimate flexibility is needed. | Ultimate. There is very little not possible to achieve, but the price will be high. Same sentence can apply to Assembler, for example. If you are creating operating systems, web browser or video games, x3GL is a right tool for the job. |
Functionality | Solid; typical x4GL tool will cover some 95% of the functionality BRDO environment needs, with remaining 5% easily reachable trough integration with x3GL technologies or EAI (Enterprise Application Integration) | Unlimited; As long as you have unlimited resources. Which you probably don't. |
Integration with other enterprise level technologies | Lacking; at least historically. But if we accept that there are only 2 layers on which integration can occur (Data and Application levels), and with the emergence of the Web services as the universal standard, this gap is almost erased. | Solid, but mostly provided as separate product (with additional cost) - MS Biztalk, etc. Option of manual integration is always there, but as most things achievable with x3GL technologies, prepare to pay the cost of low productivity. |
Maturity | Depends on the product, but in general as a programming language and platform, it is a very mature one | Some x3GL technologies, like Java, have just reached maturity levels promised long, long time ago. And that statement applies only to one of Java implementations, Sun Java. Most other implementations are still IMHO unsuitable for mission critical tasks. Some other x3GL technologies, like .NET/C# are simply not there, and if a parallel with Java is a valid one, don't expect it to be there for a while (just take a look at amount of updates MS releases for .NET run-time on monthly basis). To be fair, there are mature x3GL technologies available, but most people that call x4GL technology a "legacy" technology, will call C or C++ with the same name. |
Marketability | Low; perception problems. Thankfully, it seems that IBM is the first to publicly accept productivity limitations of x3GLs, and put some weight behind EGL product. | With all largest software vendors involved in promoting x3GL on one side or the other (Microsoft vs. IBM/Sun/Oracle...) it is not a surprise many will see current market as a two horse race between .NET and J2EE platforms. Some will see it as two gorillas on the hills beating there chests, while life (and business) in the jungle continues as it always has. Your choice. |
Manageability | High; the smaller the task, less time it takes to complete, and more often the milestones are reached, more manageable the project be. In fact, most stated goals in XP (Extreme Programming) project management and development approach are the same goals x4GL technology is excelling at. In addition, the very nature of a x4GL developer is making it more manageable (see next item) | Low; every work unit takes far longer, and the results are not even presentable to end users until significant amount of application foundation is finished. Working prototypes will take much longer, and are often not reusable. It is not uncommon to see x3GL developers struggling for days and weeks with a technical problem, and when they finally resolve it, they will have hard time even to recall what was the actual business goal they where trying to achieve with this technical solution. In addition, the very nature of a x3GL developer makes him or her less manageable by definition (see next item) |
Developer's focus | Clearly on business logic. Typical x4GL developer is fluent in business logic goals and terminologies, and communicates with business management and end users well. His daily focus is on achieving business tasks, not on playing with fancy tools. Often they will come from business background, and as computer literacy is reaching high levels this days, it is not uncommon to see power users with no programming or even technology background involved in or with x4GL development teams. | Clearly on technology, with business logic as an afterthought. The unfortunate consequence is that most capable 3GL developers will be technologists, not business knowledge workers. To achieve sufficient level of technical knowledge to handle its complexity, they have to be. Another consequence is that 3GL expert programmers are self-selecting group emerging from scientific backgrounds, not business backgrounds. As people choose there professions based on personal preferences, dealing with business aspects of technology will clearly not be the first preference for most of them. All of which will in turn make it harder to establish communication between business oriented management and users, and such technology oriented professionals. Which is a reason often cited as the most common reason for failures of many business software projects. |
Skills availability | With x4GL programming language being based on English language, and with almost 50% of that programming language being SQL (Structured Query Language - which is a 4GL itself) one has to wonder how the perception of "4GL skill shortage" was created. Probably the analogy with skills needed for x3GL programmer where applied, but should have not been. Main skill a x4GL programmer needs is ability to quickly learn business logic goals, and communicate well with business people. Add to that that practically any programmer utilizing any programming language in corporate environments will have to know SQL by definition, and you already have more then 50% skills needed in x4GL programmer. My advice is never to advertise for x4GL developer - advertise for a person that understands business processes, communicates well on business subjects, and knows SQL. Any knowledge of 4GL is just a bonus, as is knowledge of your particular industry. | With IT press again invoking a "skill shortage" as a important
subject, it is again clear that just because there are many job adds for
3GL programmers, it does not mean there are that many available. The
ones you would like to hire, in any case. Crucial problem with 3GL skills availability is again the complexity of the technology itself. Anyone with determination can become "certified" Java or C# programmer, however in my experience there are no more then maybe 1000 people on the planet I would call "experts" in any given 3GL technology. Enormous size of dominant 3gl "platforms" like J2EE is a critical issue here. Knowing Java programming language itself, does not make one any more useful as a J2EE programmer, then a driver that knows how to change gears and turn the steering wheel is if he does not understand traffic signs. Add to this requirements the knowledge related to relational database design and manipulation, including SQL and its RDBMS specific dialects, and then add a requirements related to business process analysis and understanding, as well as communication skills needed to make any member of a development team productive. From the above, it is easy to see why is an really good 3GL business applications programmer a very special person, and a very rare occurrence. To compensate, typical 3GL development team will be several times larger then comparable 4GL team; as a result, the whole core issue of communication will become worse, and management of the team and the process challenging even for the best PMs. Which is possibly the most common pitfall in skills selection in 3GL development environments - because of the size of technology knowledge needed, very few of the team members are expected to cover even half of all needed skills. (Contrasting this with 4GL developers, where we expect any member of 4GL development teams to be fully capable of all tasks). Therefore, 3GL team members need to be excellent communicators, to be able to share skills between themselves. Most IT industry analysts agree, that finding combination of high level technical skills and good communication and "soft" skills is rare occurrence. |
Future-proofing | From vendor perspective, Aubit and IBM are future proof as they get. From technology perspective, any x4GL is a future proof technology, as it provides abstraction layer that can accommodate new technologies transparently. For instance, when new Microsoft UI arrives with Longhorn, as long as one x4GL vendor implements it, expect to recompile your x4GL apps and be able to use it. Additionally, expect to be able to support multiple technology implementations in same group (Database, UI, middleware) from same code base, since abstraction layer shields you from technical details of particular implementation.
|
From vendor perspective, Microsoft and IBM is as future proof as
they get. I would not bet on Sun too much. But there are also number of
OpenSource implementations of Java, C#, C, C++ and many other 3GL
languages. From technology perspective, all 3GLs are expandable, but there is no abstraction layer to shield you from manually making any changes needed to adopt or migrate to or from this technologies. For instance, when new Microsoft UI arrives with Longhorn, expect to have to spend a significant effort to migrate to it. And I did not say "use" with a reason - if you will want to use Longhorn APIs and at the same time continue using old Windows GUI, you will need to maintain two code bases, since there is no abstraction layer present to allow you to use both from same code. |
Portability | Platform portability is guaranteed; as long as there is a x4GL
compiler for your platform, your code will compile and run there. Unless
you have platform specific code in your own programs, which you should
have very little of. Database portability is very high; depending on specific x4GL product, there will be some limitations in functionality that simply cannot be translated or emulated. In practice, expect very few of those when migrating between reasonably advanced databases. Product portability is significant in most cases, and almost complete if your code is using pure I-4GL syntax. Expect to be able to compile 99% of your code out-of-the-box. And run it too. |
Platform portability will depend on your choice. Java is reasonably
portable, but still not as transparently so as is x4GL P-code. C#, and
the rest of the .NET is Windows only at the moment, with various
OpenSource implementation making a promise of portability to come. One
day. Database portability is a utopia in 3GL world. Sure, you can CONNECT to any database imaginable, but differences between SQL dialects, combined with connectivity APIs differences and different behavior of databases themselves, all mean that even if you limit yourself to ANSI SQL92 semi-standard dialect, you will still have a significant effort to actually make it all work in the real world. Product portability is very limited in 3GL world. C/C++ code written for MS VC will rarely compile any any other C compiler without extensive changes, and the same goes for Java implementations too. And compiling it is just the beginning. |
Speed of development & time-to-market | In a business world, speed of development process means not only how
much will it cost, but even more how long will it take to get with some
functionality in front of the customers, and beat the competition. In environments where IT is a "Business Supporting" or "Business Enabling" component, even if vendor has unlimited resources, arriving in the marketplace second will often mean loss of market share. Or worse. When all the gains of productivity are put together, x4GL is undisputed champion here. It is common to expect gains of several multiples of scale. Simply put it, x4GL technology can be your "secret" competitive advantage, no matter which business you are in, as long as your business depends on time-to-market figures. |
"Dismal", "hopeless", "disappointing", "unpredictable" ... are all
words I heard from developers and project managers that had precious
experience with 4GL technology performance, after working on 3GL
projects. Folks without previous 4GL experience usually are not that harsh, but I am yet to hear claims of "adequate" or even "acceptable" speed of development using 3GL technologies. The fact that this sentiment is almost universally shared between all 3GL development environments and tools, clearly shows that this is the shortcoming of 3GL technology, and not any 3GL product of language in particular. |
Interaction with business process analysts | Integrated; x4GL developers are in most cases capable of business analysis, and consider it an integral part of there daily work | Separate; 34gl developers are focused on technology, and therefore in most cases require detailed business process specification and dedicated business analysts supervision |
Purchase cost | Depends on the product; ranges from completely free, to products with both per-developer and per-user cost. | Depends on the product; ranges from completely free, to products
with both per-developer and per-user cost.
In addition, users will often have to budget for additional components like Application Servers and 3rd-party component libraries, as well as for platform and databases dependencies in some cases. |
T.C.O. over application lifetime | Depending on the product, it can be very low, or significant. The
balance can depend on the lifetime of particular application, as well as
the size of development an maintenance teams in particular environments. However, in most scenarios productivity gains will successfully offset this. |
Depending on the product, most of the Total Cost of the Ownership
will often be located in cost of large development teams, managing,
training and retaining them. Some 3GL product that appear to have low TCO will have hidden costs due to there dependencies on platform and/or databases. For instance, if your application is expected to live 5 years, and is written in .NET, expect to calculate in your TCO cost of Windows server licenses, plus all related Windows dependencies. |
Maintainability | High; partially because if its own productivity benefits, but also because x4GL is in essence "self-documenting" language (and therefore is easy to "read" even for a developer that did not write the code, and possibly do not even have a documentation for it). | Low; even assuming that application is well documented, the very
nature of currently dominating "component assembly" model means that all
components have to cooperate perfectly for anything to work at all. Add to the inherent complexity, high-level skills required of programmers, and common dislike of documentation and business process knowledge among highly technical people, and you get long update cycles and extensive re-testing after even minor changes. |
Project failure rate | I am sure some x4GL project fail too, but I am still, in 20 years of
my IT career, to hear of one even moderately significant that did. I know of few that got canceled because of changing business needs, but not because of technology limitations, significant budget or deadline overruns (significant by 3GL standards, meaning 50% or more)
|
Standish Group report aptly named ‘Chaos 2003’, which regularly diagnoses the health of IT projects in the US, states that project overruns have increased from a ‘low’ of 63% in 2000 to a staggering 82% in 2003. Over 51% of these projects are in serious trouble with 15% of them failing outright. And of those that complete, only 52% deliver on customer feature expectations. And the cost of this fiasco to the US economy? A cool 38 billion dollars in 2002. |
Learning curve | Short; it is reasonable to expect that any somewhat technical person with average knowledge of any SQL dialect is capable of becoming productive using x4GL within few weeks, and reach full productivity in several months. | Long; do not expect anything useful without several months of intense training and additional several months of assisted practice. Then, expect to maintain close supervision over there progress for a year or two. In general, an Java or C#/C++ programmer is not sufficiently independent for at least few years. Also expect him or her to spend significant time re-learning skills every few years, as 3GL technology often changes faster then average individual expected to perform in corporate environments can catch up. |
Bottom line: Decide what type of applications you want to make first. If you are making operating systems, text processors, web browsers, video games or similar, you really have no choice - you will need to use one of appropriate 3GLs. However, if you spend most of your time building and maintaining Business Related, Database Oriented (BRDO) applications, you do have a choice. The alternative has been there for a while, and it runs countless successful businesses for last 20 years. If you do need a flexibility of 3GL, remember that 3GL is for x4GL applications just an underlying technology, just as assembler is underlying technology for 3GL, and machine code is for assembler. There will always be performance sensitive parts of 3GL applications that are written in assembler. You can always make parts of your BRDO application that require flexibility of an 3GL, using appropriate 3GL language. It's not about the left or right choice, either. Everybody is talking about Services Oriented Architecture, and using, for example an x4GL to run a business process service that is accessed from UI clients written in, say, JSP and C#, sounds like a great example of it to me. Very rarely will an organization make a good choice by selecting only one tool, or tool vendor. Which is what all tools manufacturers are trying to get you to do. So think pragmatic, and remember the saying:
|
About missed opportunities: I cannot resist not to mention one product IBM has somewhere deep in there storage of "Legacy" technologies (oh the terrible word!), that has most peaces that IBM EGL does not. They got it together with the rest of the Informix family, and it's called "New Era". There is a general consensus in x4GL community that OO implementation of x4GL programming language in New Era was "Just right". What killed the product was a pathetic implementation of class libraries, that by the time it reached some level of usability, was annihilated by he notorious Informix product marketing. It's probably too late, but if anyone is listening, here's an idea: NewEra language + EGL foundation (IDE, Java, JSF, Struts) = much better EGL
About 4GL progammers: The way of minimizing the chance of anyone recognizing that IBM is backtracking of something, was that they market EGL as a "upgrade path" for both x4GL and Cobol/IBM 4GL (VisualGen) code and programmers. Therefore they push EGL as a tool that can make "developers without Java knowledge" productive in J2EE environments and "avoid the learning curve for programmers unfamiliar with OO programming", only after that mentioning it can benefit experienced OO programmers. Thing that they apparently missed, is that in last 10 years 90% of developers with any self respect learned at least one OO language. To IBM, and other x4GL vendors trying to "protect" x4GL developers: people that appreciate x4GL are not brain-dead geriatric tree-huggers. We appreciate OO as much as any other useful programming concept. Inheritance would be especially useful. We just don't want to spend days debugging "garbage collection" and similar nuts & bolts stuff so we can get it working in the first place.
About job satisfaction value: I have yet to meet a experienced x4GL developer that would prefer to be a Java/C# or other x3GL programmer. Unless they think they would get more job offers or significantly better pay (which is usually not true). Do you know of any? Why do you think that is? Could it be that they are happy with x4GL tools because they make there job easy, and give them an sense of making something useful? (See here for more on the subject)
About playing games: When 3GL programmers want to play with technology, they write code. When 4GL programmers want to do the same, they buy a PlayStation.
On being clever: Typical programmer error usually begins with programmer being too clever for his own good. Note the use of the word "programmer". That's important because x4GL users are developers, not programmers.
On Black & White trap: do you really need to choose only one tool? In same cases, it might be beneficial to, for example, utilize Aubit to create PDF/XML reports, 4JS to perform batch actions utilizing SOAP protocol, Aubit to utilize MQ series interface, and EGL to create web-based applications that would benefit from, for instance, ability to integrate 3rd party Java based products or tools. Choose your tools wisely, and do not blindly follow what vendors are telling you. When all you have is a hammer, everything starts looking like a nail.
Show me the money: Not every type of application will benefit from migration/conversion/use of different x4GL product. There is little benefit to be gained by converting existing i-4gl report-only programs. Same goes for most or all batch-type, data-driven programs that have no user interaction or need to use advanced integration technologies like Web Services. When evaluating, always ask yourself what is to be gained for YOUR particular existing and future applications. For instance, what is the benefit for you if product has strong Web browser application development functionality, if web based applications are not suitable for your environment.
About development teams size; when NASA ordered a research from MIT in 1964, to find out what number of people is the optimal number to send into space, they got only two numbers as a reply: 3 or 21. According to the research, this team sizes demonstrated significantly higher productivity and success in achieving tasks as a team. Argumentation is long, but it was only partially surprising to me that most people with significant project management experience accepted this as completely valid fact, when they where told about it. To be able to successfully address the complexity of 3GL technology, and a range of skills it dictates, a team of 3 is just a dream. OTOH, in my career I've seen countless 4GL teams of less then five, successfully running complete in-house development for companies of significant sizes, at the same time performing all the maintenance and support themselves. I have never seen a 4GL team with more then 21 people, but I did see a 141 person 3GL team. (Incidentally, that particular Java project was abandoned after 3 and a half years). The point is that regardless of how much money you have to throw at particular task, do not expect it to help, when people are involved. In most cases, the larger the team is, less chances of success it will have. By definition, 4GL teams can be significantly smaller. No prizes for guessing which projects will be more successful.
Importance of knowing why: Motivation behind IBM EGL, as I can decode it from brochures and presentations is:
OTOH, the official IBM list of "who is it for" goes like this (my notes in italics):
Other sources of information:
Andrej Falout is passionate abut x4GL technologies from the early 1980s, even before i-4gl was a product. He worked for numerous organizations in Europe, Asia Pacific and North America, in roles ranging from Developer, Team Leader and Project Manager to Product Manager, R&D Principal and Senior Technical Architect. Companies he worked for range from Deutsche Telecom, Vodafone and Fujitsu to DHL and Samsung.
He is closely involved with several OpenSource projects, in particular with Aubit and Apps4GL projects, and actively works on promoting x4GL technologies in his work environments and academic institutions by giving lectures and presentations on the subject.
Andrej currently resides in Sydney, Australia.
This document was researched and written by Andrej Falout, for "Big W" (Woolworths) Australia.
Thanks to Mehdi Afshar of Querix Ltd. for corrections & additional information about Querix products.
Thanks to Mike Aubury for additional info and notes on Aubit compiler (And his tireless work on Aubit compiler itself!)
Aubit 4gl project is hosted by: