Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7850669
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 2, 20262026-06-02T18:56:13+00:00 2026-06-02T18:56:13+00:00

I understand the pros and cons of using object oriented programming as a concept.

  • 0

I understand the pros and cons of using object oriented programming as a concept. What I’m looking for are the pros and cons of using oo in progress/openedge specifically. Are there challenges that I need to take into account? Are there parts of the language that don’t mesh well with oo? Stuff like that.

Edit: using 10.2b

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-02T18:56:14+00:00Added an answer on June 2, 2026 at 6:56 pm

    I’ll give you my opinion, but be forewarned that I’m probably the biggest Progress hater out there. 😉 That said, I have written several medium-sized projects in OOABL so I have some experience in the area. These are some things I wrote, just so you know I’m not talking out of my hat:

    • STOMP protocol framework for clients and servers
    • a simple ORM mimicking ActiveRecord
    • an ABL compiler interface for the organization I was at (backend and frontend)
    • a library for building up Excel and Word documents (serializing them using the MS Office 2003 XML schemas; none of that silly COM stuff)
    • an email client that could send emails using multiple strategies

    OOABL Pros:

    • If you absolutely must write Progress code, it is a great option for creating reusable code.
    • Great way to clean up an existing procedural codebase

    OOABL Cons:

    • Class hierarchies are limited; you can’t create inherited (sub-)
      interfaces in 10.2B (I think this was going to be added in 11). Older
      versions of OpenEdge have other limitations like lack of abstract
      classes. This limits your ability to create clean OO design and will
      hurt you
      when you start building non-trivial things.
    • Error handling sucks – CATCH/THROW doesn’t let you throw your custom
      errors and force callers to catch them. Backwards compatibility
      prevents this from evolving further so I doubt it will ever improve.
    • Object memory footprint is large, and there are no AVM debugging
      tools to track down why (gotta love these closed systems!)
    • Garbage collection wasn’t existent ‘til 10.2A, and still
      has some bugs even in 11 (see official OE forum for some examples)
    • Network programming (with sockets) is a PITA – you have to run a
      separate persistent procedure to manage the socket. I think evented
      programming in OOABL was a PITA in general; I remember getting a lot
      of errors about “windowed environments” or something to that effect
      when trying to use them. PUBLISH/SUBSCRIBE didn’t work either,
      if memory serves.
    • Depending on your environment, code reviews may be difficult as most
      Progress developers don’t do OOABL so may not understand your code
    • If above point is true, you may face active resistance from
      entrenched developers who feel threatened by having to learn new
      things

    OO is all about building small, reusable pieces that can be combined to make a greater whole. A big problem with OOABL is that the “ABL” part drags you down with its coarse data structures and lack of enumerators, which prevent you from really being able to build truly beautiful things with it. Unfortunately, since it is a closed language you can’t just sidestep the hand you’re dealt and create your own new data or control structures for it externally.

    Now, it is theoretically possible to try and build some of these things using MEMPTRs, fixed arrays (EXTENT), and maybe WORK-TABLEs. However, I had attempted this in 10.1C and the design fell apart due to the lack of interface inheritance and abstract classes, and as I expected, performance was quite bad. The latter part may just be due to my poor ability, but I suspect it’s an implementation limitation that would be nigh impossible to surmount.

    The bottom line is use OOABL if you absolutely must be coding in OpenEdge – it’s better than procedural ABL and the rough edges get slightly smoother after each iterative release of OpenEdge. However, it will never be a beautiful language (OO or otherwise).

    If you want to learn proper object-oriented programming and aren’t constricted to ABL, I would highly recommend looking at a language that treats objects as a first-class citizen such as Ruby or Smalltalk.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I understand the pros of using namespaces within the actual application layers but when
What are the pros/cons of using less server side vs client side in a
What are the pros & cons of using Entity Framework 4.1 Code-first over Model/Database-first
What are the pros and cons of using Criteria or HQL ? The Criteria
I understand that if I instantiate a SqlConnection object, I am really grabbing a
What are the pros and cons of using MSI and MSP in using them
I've been reading online about the pros and cons of using static methods for
I understand that Web Site Projects compile source on-the-fly, and Web Application Projects pre-compile
I understand that CoCreateInstance finds the COM server for the given class id, creates
I understand that in MVVM: the View knows about the ViewModel the ViewModel knows

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.