On 4/19/2010 6:31 PM, Jon Paris wrote:
For one either typeless parameters or overloading (or both if I'm
greedy!)
One things I've learned from the constant "RPG should be OO"
conversations on Midrange.com is that when you dig deeper, you find out
that most people don't really want OO. They want some feature that an
OO language they've used (such as Java) happened to have. And it really
had nothing to do with OO, it was just something that the language
happened to have.
You ask for overloading and typeless parameters...
Overloading is a common thing in OO programming -- you *might* even say
that if RPG was OO, it'd have overloading. (But that'd be a stretch,
since it could certainly be made OO without overloading. Still,
virtually every OO language has overloading, so maybe you could expect
that.)
But "typeless" (or "variant") parameters are not a common feature of OO
languages at all.
My opinion: I'd rather have "typeless" parameters than overloading.
That would be far more useful, IMHO...
Even better would be "sizeless" variables/parameters. I can achieve
something similar to typelessness by defining my parameters as
character, and simply using BIFs to convert it on the fly. But
sizeless? Very hard to work around that.
By sizeless, I mean that you don't have to define the length of a
variable at compile-time. The system manages the memory for the
variable under the cover, starting with a small amount of memory, and
automatically expanding it as necessary.
Right now I spend a lot of time mucking about with how to efficiently
pass parameters and return values with VARYING, *VARSIZE, and CONST to
enable some level of size-independence. And I find myself spending a
fair amount of time figuring out "maximum possible sizes" or writing
both "long and short" versions of procedures to help cope with the
performance issues of long parameters. IBM must've seen this too, based
on the new RTNPARM keyword.
But eliminating the need to know the size of strings or arrays at
compile-time would certainly make my life easier.
For two - the first is no help unless you also get this - and this is
the hard one. PCML needs to be updated to support all datatypes and so
do operational descriptors.
PCML doesn't even need to exist, IMHO. It's an overblown,
overengineered, overcomplicated way to do things. Simple embedded
signatures would be much more efficient than kludgy, limited, XML documents.
Embed a binary (machine-readable) version of the PI's into the *MODULE
object, and carry it forward to the *PGM and *SRVPGM objects. Callers
shouldn't have to re-define the prototype, the compiler should be able
to read it efficiently from the object.
If you need PCML for slow, cumbersome languages like Java, then have it
convert the binary object to PCML on-the-fly... it shouldn't be that hard.
But having the compiler parse XML for every thing I call would really
slow things down, and what advantage would it offer?
I know XML was very much a buzz-word a few years ago. But haven't we
yet learned that it's not the answer to all problems?
Open Access shows that Rochester are at long last prepared to think
about supporting RPG oriented initiatives BUT Rational have also
demonstrated with OA that they expect to get $s for their efforts. So
something like OO features for RPG that have little user demand and
would cost substantial amounts don't seem to fit a model where there
needs to be revenue associated with any new feature.
Open Access gives us very little we didn't have before. It, at best, is
a stepping stone to a better solution down the road. And a tool to make
it easier for vendors to write their screen scrapers.
I certainly understand and agree with the value of being able to
separate the business logic from the display logic, print logic, and
database logic. I certainly understand and agree that it's valuable to
separate them and be able to plug in new back-ends as desired.
However, what it doesn't give us is encapsulation. Doing things
properly, the caller shouldn't know or care how the UI works.
Unfortunately, Open Access doesn't give us that. From the callers
perspective, the UI *must* work exactly like a display file. It must
have DDS source, all the proper indicators, etc. Under the covers,
the handler is taking that "display file data" and converting it to
something else -- the prgoram is designed for a display file, and the
handler is "tricking it" by outputting another way.
In other words... it's a screen scraper. It's a temporary stop-gap
solution to help us make progress until we rewrite our programs to use
the proper paradigm. At least, it *can* be a stop-gap solution like that
-- provided we pay for it, and we also pay for a 3rd party handler. By
itself, open access doesn't even give us THAT much.
If you think open access gives RPG a future -- I'd say you're high. It
pushes RPG more and more into the ranks of being a legacy language. And
it provides once and for all that IBM doesn't care about RPG enough to
give us a real solution.
A real solution will be event-driven. When a user clicks a button, or
makes a selection, etc, etc, it will hook into our code. In a
client-server GUI application, this is the normal way. Ever written a
program in Visual Basic? Visual C++? This is what happens... You have
a drag & drop interface where you drag buttons, list boxes, text boxes,
and other widgets to create a nice GUI panel. At run time, when a user
clicks a button, it calls a "subprocedure" with information about what
was clicked. In the newer, web wway of doing things it pretty much
results in the same thing, except that you use AJAX with a framework or
two. After the plumbing, though, it amounts in the same thing. You
click a button, it runs a procedure in a program on the server that does
some processing that comes back and affects the output. There's really
no way to incorporate this model in the RPG Open Access approach
directly. (Though, you could do this through subprocedure calls without OA)
Open Access does have it's uses. Sometimes I think I'm getting too
negative about it. There are places where it's very useful. But, as
far as modernizing the user interface, it's really just a stop-gap measure.
But the fact that IBM is charging extra for it, and even with that
extra, you aren't getting a solution, just plumbing that can be used for
a 3rd-party vendor to provide a solution... I just don't see this
getting very high adoption.
And without high adoption... without it being a core part of the
language... without those things it really doesn't solve the problems.
We already have lots of ways to bring RPG code to the web. What we
don't have is a single, common, regular interface that everyone uses
across the board that's "part of" RPG. And Open Access is making
absolutely NO effort to provide this.
Sorry, I've gotten way off topic. :)
As an Amazon Associate we earn from qualifying purchases.