views:

69

answers:

2

Back in 1985, when I was a Product Planner for AT&T-IS Labs (Unix Product Management), one of my primary duties was to evaluate emerging 4GL/RDBMS products, submit product plans and recommend whether AT&T should pursue a co-marketing or co-labeling agreement with the vendor or just test/certify it as compatible on our 3B-series systems. Some notable products I submitted plans for were: Informix-4GL 1.1, Microfocus VS/COBOL Workbench, etc.

One particular sexy product which captivated my attention was Progress. Although, at that time, it didn't have SQL support, its features/functionality, integrated RDBMS engine and integrated debugging editor, which allowed me to quickly execute interpreted code and compile it once it was debugged, appealed so much to me that I recommended AT&T pursue a co-marketing agreement with the condition that SQL support be added to it.

Well, 25 years later and SQL support added, I'm looking again at Progress as an option to re-write my INFORMIX-SQL based, single-user, pawnshop management app for Windows and UNIX platforms.

I don't require networking or multi-user capabilities at this time, but that could easily change and would like that option as an add-on/upgrade option, which Progress offers. The personal (single-user) RDBMS engine costs only $246/Windows computer and the 4GL (character and GUI-based) development system costs about $2,600 (one-time charge).

Anyone here in SO have development experience, exposure with or have comments about Progress?

I'm in the process of obtaining an eval copy and would appreciate any input.

A: 

It's a wonderful environment. I love it.

Tom Bascom
@Tom- Can you elaborate some more as to what you like about it?.. What's the most robust forum for Progress developers?.. Seems like Stackoverflow doesn't have much posting for this wonderful product.
Frank Computer
I find it to be a very "natural" programming environment. It is a good fit for the way *I* think about coding business apps. Of course everyone is different and there are certainly other views on the matter ;)
Tom Bascom
Yeah, stackoverflow is pretty weak as a source of support when it comes to less popular platforms -- you get a lot of sneers from holier than thou types if you aren't using something "cool". But that really isn't very surprising and there are plenty of other good reasons to hang out here.
Tom Bascom
There are several good Progress oriented sites -- it depends largely on your personal "style" and the sorts of questions you are going to ask. The grand-daddy of them all is PEG, the Progress E-mail Group. http://www.peg.com. ProgressTalk is a "web forum" type of site http://progresstalk.com. Progress Software runs "PSDN Communities" at http://communities.progress.com/pcom/index.jspa
Tom Bascom
+1  A: 

I am currently programming Progress (now actually known as OpenEdge ABL) for a living. I have been doing so full-time for a full year; I will be at this job for another year and will be very happy to leave.

Progress is simply a horrible language for general purpose programming. Its strength, as you mention, is the integrated RDBMS system and the ability to do querying directly within the language. This was, I'm sure, pretty amazing in 1985. However, for anything beyond easily generating some printed reports (a popular thing to do in 1985 I'm sure), it is really not that powerful. For instance, even with the 'strength' of the integrated DBMS, Progress doesn't even have a concept of primary key / foreign key relationships between tables. The closest you can come is to name your fields the exact same in separate tables, then you can do a query like

FOR EACH order-line OF order ...

but that is the only way. This can lead to maintenance nightmares when you have hundreds of tables and no ability to generate an entity-relationship diagram between them because the geniuses who designed the system 20 years ago didn't understand the severe limitations of the core DBMS. This is an enormous weakness for a language that's supposed strength is in the DB area.

As far as general purpose (non-trivial) programming, you basically have to rely on Progress to write methods that are integrated into the core ABL system for you, because the language is simply not flexible enough to extend on your own (believe me, I've pushed it to it's limits). They take the approach of "let Daddy do that for you", which was probably awesome in 1985, but today languages are all about extensibility (for obvious reasons).

If I were you, I would explore something like Java or Ruby using MySQL as the DBMS (all 100% free). I have recently been doing some hobby programming using object-relational mapping in both languages (JPA2 in Java, and DataMapper in Ruby). To me, being able to persist objects almost transparently is much, much more natural than trying to balance hundreds of tables without any PK/FK support and infinitely easier to maintain farther down the road.

AbeVoelker
So Progress' DB engine is not relational SQL-based, but SQL statements are supported?.. Is DB CODASYL? I'm looking for a 4GL/IDE/RDS which can allow me to quickly: prototype an app, transform it into a production system and easily make modifications to it. I'm also looking at Oracle App Express and RadVolution. Do you have any other recommendations?.. My apps currently written with Informix-SQL Perform CRUD screens, ACE report writer and SQL scripts. The logical upgrade would be I4GL, but if I have to do extensive re-writting of my app, I'm exploring all alternatives.
Frank Computer
Progress' DB engine is relational, but not "SQL-based". It supports running a "SQL engine" concurrent to its own OpenEdge engine, which provides the ability to execute SQL statements to *query* data within Progress ABL, as well as externally through Java (or interpreters running atop Java like JRuby or Groovy) by using a licensed JDBC driver. However, the data is still *stored* in the OpenEdge database, which does not support any PK/FK relationships (viewing a database from the JDBC connection will show that there truly are no PKs or FKs!).
AbeVoelker
I am not familiar with any of the alternatives you mentioned. However, I can say from experience that if you continue with Progress, you will hit a brick wall when it comes time to advance beyond CRUD operations into "real programming" (e.g. new data structures, process threading/forking, non-trivial algorithms ...).
AbeVoelker
Most modern programming languages allow you to accomplish your goals ("prototype/produce/modify") using concepts like test-driven development in an integrated development environment (which include step-by-step debugging using breakpoints). Some popular IDEs are Netbeans and Eclipse; you can do unit testing in Java using the JUnit library. I haven't done any unit testing in Ruby but I know there is support for it. As for data access - as mentioned I am a strong proponent of object-relational mapping (if you do object-oriented programming), which is a hot-button topic.
AbeVoelker
I guess the main suggestion I have is to beware of any 4GL language, and in general, any language you have to purchase. They are usually closed languages, where you have to wait for the publisher to create new features and then buy the newest language/interpreter revision to get the new capabilities. The open/free languages are simply extensible by nature, and you get the latest and greatest for free. The 4GL languages need to just hurry up and die.Let me know if you have any further questions regarding Progress.
AbeVoelker
OK, I lied a little about the primary key thing. If you have a table that has a PRIMARY *and* UNIQUE index, then it will show up as a primary key in the SQL. This is essentially a moot point, however, as the lack of foreign keys is the real weakness.
AbeVoelker
IMHO the existence of foreign keys would be a bigger weakness and OF is a huge maintenance headache. Requiring programmers to explicitly state the relationships between tables by detailing the WHERE criteria is a superior approach.
Tom Bascom
True -- Progress 4GL does not support multi-threading. That's unfortunate.
Tom Bascom