Progress OpenEdge a Review by a Developer
Ok. After about 6 months of using Progress OpenEdge (This includes SEVERAL products and languages all kind of balled up into one) I will attempt to take a moment to review what I think so far. Let me start off with something that kind of blew my mind. Progress is a Database system as well as several programing interfaces all balled up in to one. So when you are writing a program, progress is your language and your database and your user interface at the same time... no connections to manage no queries to worry about.
A completely different way of thinking if you come from a standard programmer's point of view.
Start off with an understanding of WHAT Progress is.
It takes a while grasp, but Progress has a myriad of software pieces all tied together, that can be used independently or together. Making it difficult to get a good picture of how it all fits. Progress HAS a Relational Database, Character based programing interface, GUI based programing interface, it can run interpreted OR compiled into intermediate code. (The intermediate codes is still interpreted.) It also has Brokers, agents, appservers, not to mention its own flavor of a scripted web language called Webspeed. The entire package is based on the database aspects of the language so when you use ANY of these component they work directly on databases. Progress uses servers, agents, and brokers to manage connections an and load balance, and all of this is ONE package even though it can be spread out over numbers of systems and configured a myriad of ways.
Thoughts about the Language itself:
The language is considered a 4GL (4th Generation Language). It is much closer to English syntax than many of the languages I have used. This is a double edged sword, it makes it easier for developers to think and understand the language, however complex scenarios can be interesting to try to write clearly.
The language is pretty straight forward, it has has a built in frame work which is massive. The learning curve on getting into the language is pretty high. The reference manual just containing the list of commands and options is over two thousand two hundred pages long, and it does not include examples of many of the more advanced commands (it does however provide a description of all of them I think...)
The language can be run in three ways. Compiled into an external binary (Windows only), compiled into a form of optimized code for the interpreter to read, or it can run completely interpreted.
My complaints are:
- EVERY block statement can terminate in an "end." statement. Making it very difficult to keep track of especially in deeply nested projects.
- The language is also NOT CASE SENSITIVE, which is good and bad, but it is a major difference between a lot of other languages.
- Every variable is treated as if it were a database entry. (You have to manually tell it to not maintain "transactions" for variables.)
- It also seems to lack good expandable array support, the closest solution to an expandable/collapsible array is a comma delimited list. (They claim array support however you must statically define your array and its elements.)
- It does not always give useful errors and does not have extensive debug tools. (Tracking down problems is sometimes problematic.)
Some of the advantages are:
- It is your programing/database/user interface programing language all in one. The framework they provide means when you write a program you have access to the database and user interface all at once without having to manage a connection to a database or connect to external libraries (although you can if you want too....).
- You have direct access to their user output commands which at times can be quite handy. Many of the common things you would do as a programmer are defined and easy to implement (if you can remember the command and all the parameters it requires.)
- The entire database is maintained in RAM and if properly configured/maintained (a big task) can be incredibly fast.
Progress ABL works in Linux/Unix as well as Windows, but so far as I can tell doesn't support Mac very well. The setup is very interesting and has more options than I can explain in this quick look at the language. It can be run in Apache, or connect via Java (via JDBC), or as a fully compiled binary program, or a command terminal as a console program. The setup for the un-initiated is a bit overwhelming, but works nicely once it is setup.
Progress provides the following:
There is a command line editor... I wish they never invented. While it works... I would not give it any more credit than that, no advanced features (even for a command line editor), you just type in it... and run programs directly or you can compile from there. (it is limited to a standard console width of 80 characters and height of 24... no matter how big you can actually make your terminal.) It is a beast to use.
There is what is called the Procedure Editor... This is definitely an improvement over the command line editor... It does offer syntax highlighting, code completion, and even context sensitive help. I would also say for a GUI tool... it is lacking many of the tools I find in common IDE's. I prefer using notepad or gedit to this application. (And it is a MS Windows ONLY tool, while I have got it to work in Linux it was in a windows emulator.)
They also provide an IDE I believe it is called OpenEdge Architect, that uses Eclipse, which is supposed to have all the advanced features I am looking for. However, even though it is on the cross platform Java program Eclipse, it has a number of plug-ins that are specific to MS Window, rendering it un-usable in Linux or Mac. So I have not yet used it.
They also have a GUI application builder (similar to Visual Basic). However I have not used it, but I have been told it is quite nice.
What if I want to use my own IDE or editor?
Well you can (I do) but I have not found any syntax highlighting that works with this language outside of the software they offer. I have tried lots of them Komodo, Eclipse (without the plug-ins), Netbeans, Notpad++, gedit, VIM, gVIM, Python IDE, Geney and even jEdit. All of them function to some extent, but none of them can seem to get a handle on the language. And so far as I can tell you cannot compile from any of them (except possibly VIM, I'm still trying to figure that one out.) So far VIM, Komodo, and JEdit have worked the best for me. But unfortunately I still need the other editors to compile or run quick and dirty programs.
Progress is a very odd beast to say the least. The database can be remarkably fast for well written code... but if you call a bad index and it will crawl (Just like every other DB on Earth I think). I feel that it is heavy on the setup and programing side, however if it is leveraged properly this can make it perform better than some other languages. If it is not leveraged properly, it can be as slow as any of the rest.
User Community and Support
I have seen very little if any support other than the manuals I have been given. There is a user community which sometimes is wonderful and other times is very lacking. I have received the basic message RTFM from a number of people... when my question was asking for clarification about what the manual said... and other times that I have received wonderful and useful help within minutes. So I would say it is a pretty mixed bag.
So in summary, after 6 months of using the language, I feel it's lexical structure is a bit easier to understand since it is structured more like English. However, It is heavy on setup and configuration. The development environments definitely need improvement especially on the Linux and Mac platforms. The language includes a comprehensive framework that has a lot of features built in. Because the framework is so large and inclusive finding the feature or options you are looking for can some times be down right frustrating. Taking advantage of all the features that make Progress advanced is a very complicated process, however when done properly it can outperform many of its competitors.
3.5 Stars out of 5.
The points making it lose stars hear are: Lack of a good Linux or Mac IDE. The requirement of the IDE to connect to a database server in order to compile and the intense learning curve all detract from the language in my opinion. Also the lack of good debug tools hurt it a bit as well. If they could tie into Eclipse (cross platform) and provide better debug tools I feel this would be a wonderful language to develop in.
Web Development Rating:
2.5 out of 5.
To raise this score they would need (as mentioned before) better IDE tools, debugging, and a more integrated compile/testing process. For web development I discovered Komodo Edit and VIM to be the best overall.
4.5 out of 5
When properly configured it is capable of some pretty amazing speed, however due to the complexity of the configuring and maintaining, it is losing half a star.
I have tried to layout the pro's and con's of the language from my perspective. Over all I consider this a pretty good language, but requires a pretty hefty up front investment in hardware, and learning curve. Its only two weak points are the lack of what I would consider a good IDE and it's web aspects. At the time of this writing I have been using OpenEdge 10.2b.
- Tags: Progress OpenEdge, Progress ABL, SpeedScript, WebScript, Character, Gui, OpenEdge Architect
- Description: This is a revew of Progress OpenEdge by a developer.