Generics - Forum - OpenEdge Development - Progress Community
 Forum

Generics

  • I really would like the ABL to keep up with other languages progress (far far

    better OO and tools support,

    I think that there's been demonstrated progress from Progress over the past few releases to improving the language wrt OO functionality (cf. abstracts, named events, etc). And certainly Java wasn't released fully-baked with all the features/functionality it has now.

    >

    opensource libraries available,

    >

    Opensource libs don't necessarily need to be created by PSC - if you/your company/your friends & relatives/your children have some code you're willing and able to share, there are plenty of places to host that - Google Code, Sourceforge and Github spring to mind immediately (and OE Hive too, although I don't know whether that has SVN repositories available). As my other favourite opensource project (MythTv) developers say (paraphrased): if you want to do something, do it yourself, 'cos no-one else will. (aka the "scratch your own itch" principle). There are plenty of such libraries out there too - for emailing and for WebSpeed and utilities and collections and a variety of other things.

    Are you looking for/advocating/desiring a higher-level grouping of ABL opensource projects? Something like an Apache equivalent? Or just Some Damn Code?

    -- peter

  • I'm not saying there is no progress or that ABL is a poor language, I'm only saying I would not be sad to see a couple of new features added a bit faster, that's a big difference ;-)

  • I'm only saying I would not be sad to see a couple of new features added a bit faster,

    that's a big difference

    You and me both. But that's the nature of developers, I think

    (I wasn't taking your email as a knock on Progress, and I'm genuinely interested in what your thoughts on opensource libraries are).

    -- peter

  • Multi-tenancy is an issue for the application and deployment, not whether the database is SQL or not.  It is very easy to create a new OpenEdge database instance too, but that doesn't mean that one DB each is the optimum SaaS solution.

    So what if some of those products were written in Java.  The OpenEdge database server isn't written in ABL either.  But, they are now all products of PSC.

    Upward compatability is a PSC strong point, although the downside is that we now have a lot of people running systems with 25+ year old architectures.

    Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice  http://www.cintegrity.com

  • Not only does OE Hive have svn, but it has the OERA Open Source Initiative http://www.oehive.org/OERAOSI

    Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice  http://www.cintegrity.com

  • I've written a few.  From my experience, OpenEdge is too weak of a language to ever attain the massive amount of reusable libraries that other languages have.  I constantly seem to hit a roadblock that I either have to spend a lot of time dancing around (and trashing my design in the process) or am just stopped dead in my tracks because it isn't plausible.  In other words, it's a language impetus, not a programmer one.

  • That's very true - Java has improved incrementally, for instance with generics not being accepted into the specification until 2004.  Core features like garbage collection, however, were there from the get-go.

    However, I think you're glossing over the finer points of the differing contexts between Java and OpenEdge in this regard.  The Java language is an open specification; you or I could read the spec and write a compiler for the language (cf. the several popular ones out there - javac, GCJ, and ECJ; all open source).  In other words, there is no reason to wait for the JCP members to approve a new feature into the language specification before upgrading the compiler to support said new feature; the compilers can lead the way.  Contrast this with OpenEdge.  One must submit an idea to Progress Corp. for approval, then wait for it to be approved (or denied), then continue to wait for it to be implemented into the only compiler available - Progress Corp's official one.  It can be a quite a long process, and not always transparent along the way (e.g. announcing the status on a feature request in a reply to a forum post).

    On top of that, think for a second about incentives.  What does the JCP have to gain from delaying popular changes to the Java specification?  Nothing.  In fact, if they became stagnant they risk splintering the Java specification into competing versions, which could do great harm to the overall language if a clear winner didn't arise from it.

    Now, what does Progress Corp. have to gain by delaying new features?  Quite a lot.  Remember this is a closed-source, licensed product we're talking about here, so monetary incentives are in play.  So if they delay a feature until version n+1, users will want/need to buy version n+1 to get said feature.  If they release a slew of requested features with version n and there's not a whole lot to do in version n+1, users will not see a reason to upgrade.  Now this model could be a problem if users had a choice to migrate to a new platform, but let's face it - there's really no easy way for users to leave the OpenEdge platform.  It could also be a problem for wooing new users to the platform, but obviously there isn't a big OpenEdge adoption rate.  Most users are companies that have mountains of legacy code and are stuck with it.

    Just sayin'.

  • >> So if they delay a feature until version n1, users will want/need to buy version n1 to get said feature.  If they release a slew of requested features with version n and there's not a whole lot to do in version n+1, users will not see a reason to upgrade<<

    What utter drivel.

    Bzzt, Upgrades to version n+1 are free if you are on current

    maintenance .... so there is absolutely no basis for what you are

    trying to insinuate in that sentence.

    Julian

  • Way too conspiracy theory.  Let's turn this on its head.  If someone has a idea for improving Java, they have to convince a committee of people from all over the place that it is the right thing to do, probably going through many interations of proposal and alternatives before some kind of consensus arrives.  Conversely, PSC can decide to do whatever they want to do and just put it in the next release.  They had better pay some attention to what we want or they are going to have unhappy customers, but they don't need our approval in order to act.

    The big difference in the end is resources.  PSC doesn't delay new features just to string things out.  That is silly.  They pick what they think is most important and what they can get done with the resources at hand by the time of the next release.  There certainly have been cases of delaying something because they aren't yet sure what exactly they want to do ... e.g., what RIA technology to support ... but what do you want them to do if they aren't sure what is right?

    Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice  http://www.cintegrity.com

  • What utter drivel.

    Bzzt, Upgrades to version n+1 are free if you are on current

    maintenance .... so there is absolutely no basis for what you are

    trying to insinuate in that sentence.

     

    Well said.

  • Does this include whole number upgrades, for instance 10->11?  In that case I would retract my second statement.  I honestly am not too familiar with the precise licensing terms since I am just a developer.  I can only speculate (using a brain that has been corrupted by hatred for Progress).

  • OO - is just a tool, nothing more.

    I used to write code on 4GL/ABL w/o OO and i see no real reason to change my programming style.

    ABL has a great temp-table support. Temp-tables are suitable to keep and process objects. And do it faster when processing 1000-1000000 objects, a lot faster.

    And there are no memory issues.

    I saw dead OO projects, just because programmers focus on classes (a tactical tool) and forget about architecture/speed and real project goal.

    Maxim

  • Yes, it includes everything.  In fact, if you are still running version 2 and have been paying maintenance, you could update to version 11 next year without charge.

    Occasionally, there have been licensing issues, but those have to deal with changing the basis of licensing not whether there is a version change.   E.g., people with old machine-based license with unlimited users have had to do *something* when moving to a version that has only declared user counts and user based, not machine based licensing, but that has just been changing the form of the license and they have gotten full credit for what they paid for the original license.

    Hungry sales reps make mistakes in license policy, but the policy itself is not predatory.

    Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice  http://www.cintegrity.com

  • Actually, I would have to say "just a tool" suggests not really having done much to understand what OO is all about.  The language features are only the tip of the iceberg.  Good OO is all about how you think about decomposing the application and how the pieces act among each other.  It is actually a philosphy of how to program.  To be sure, one can write bad code in any paradigm and many principles that have fancy formal names in OO best practice are actually pretty good idea in traditional ABL as well, though some are harder to realize without the OO structures.  And, yes, temp-tables and PDS have a role in OO.  No one is asking you to not use something ... other than those things which are not best practice in traditional ABL either.

    Consulting in Model-Based Development, Transformation, and Object-Oriented Best Practice  http://www.cintegrity.com

  • tamhas wrote:

    Actually, I would have to say "just a tool" suggests not really having done much to understand what OO is all about.  The language features are only the tip of the iceberg.  Good OO is all about how you think about decomposing the application and how the pieces act among each other.  It is actually a philosphy of how to program.  To be sure, one can write bad code in any paradigm and many principles that have fancy formal names in OO best practice are actually pretty good idea in traditional ABL as well, though some are harder to realize without the OO structures.  And, yes, temp-tables and PDS have a role in OO.  No one is asking you to not use something ... other than those things which are not best practice in traditional ABL either.

    Nailed it.  If you don't see any reason at all to change (or at least supplement) programming style then you either straight up don't get OO or you are so overwhelmed with legacy code that you can't make it work for you.  The elegant, reusable code it produces is a true thing of beauty.

    I would maybe challenge you to write some code in a language other than OpenEdge that implements OO.  Ruby, Java, C++, SmallTalk, whatever.  It might make more sense with a clean implementation.  Once you get a firm grasp on the basics, check out some GoF design patterns.  Once you grok it, you won't go back.

    It's kind of funny that we are even debating the merits of OO in the year 2010.  It kind of saddens me.