On 8 March 2017 at 23:19, Jon Paris <jon.paris@xxxxxxxxxxxxxx> wrote:
Sadly though many RPGers still live in RPG III land and do not exploit the new features and consequently never notice the SEU issues.
tl;dr SEU was holding me back.
It's no surprise that when I used a primitive editor, my code was
primitive. STRSEU QRPGLESRC NEWMBR. That's right, open a completely
empty screen. Now start working on your code. It's so hard to do
that with SEU that almost no one does that. We all copy existing
code. Which, by definition, is code written in a past time. Older
code. Which was copied from even older code all the way back to the
time when someone punched the code in off of coding sheets. The
result is a system chock full of old code, and more importantly, old
ideas. Repeated over and over. For these developers, SEU really is
perfectly usable: all they need is CC..CC B with a few Ds sprinkled
in.
This isn't a rant on SEU and it isn't a rant on RPG developers. I was
exactly that person, and I'm in no position to throw stones from the
top of my glass house. Shed. Hut. Rather, it's an attempt to note
the ways that RDi has allowed me to become a better developer.
I often start a new function by adding a new member in RSE. Which
opens a totally blank screen. Into which I start typing. I used to
remember everything about RPG, and why not? There were only a handful
of operations. Today, I get turned around trying to remember the
exact syntax for DCL-PR, or where I specify the overflow indicator on
a DEV(PRINTER) file spec. With RDi, I get the manual full time, and I
don't have to scrounge through the whole thing; RDi takes me to the
exact section I need to be in (mostly). Which by itself encourages me
to experiment, because finding a new widget is easy.
More than that though, RDi has wizards that will actually stub out a
sub-procedure for me. I don't need to remember any of the typie typie
details; the IDE handles that and lets me focus on the thinking part
of programming. Typing... it's a necessary evil, but it isn't
/programming/. That's the value RDi gives to me: it lightens my
mental workload. I'm not buried in administrivia; I'm in flow.
I love RDi for the wizards, the manuals, the snippets, and even the
plug-ins which I can (cough cough) write to extend the base
functionality. But even if RDi had /none/ of those things, it would
be head and shoulders above SEU for one amazing reason: Ctrl-Z.
That's right, the lowly 'Undo' key is the best part of RDi. I would
miss the pink annotations (annotations now!) gently explaining that
the compiler will simply not work with DCL-OR no matter how many times
I type it. But when I'm in flow, and trying X vs Y vs Z, I can try
something, test it (oh how I love RPGUnit!), AND THROW IT AWAY if it's
not quite what I want. The ability to discard code is exactly what's
missing from SEU, and I don't mean DD..DD. Imagine working in a
sub-procedure. Pop in the comments describing what you're about to
do. Add several DCL-S lines, some calculations. Change a couple of
other lines and delete one. All told, you've typed 100 characters
scattered across two dozen lines of code. In SEU, you'd have to a)
remember each and every one of those keystrokes, and b) manually, one
by one, re-type them back to their original form. SEU twists your arm
to make copies, do minimal changes, and have multiple versions of a
source member which are virtually impossible to distinguish from each
other as to the state of progress toward the end goal. It's no wonder
that so many of my SEU brothers and sisters are still in RPG III
chains. In RDi, I Ctrl-Z a few times and I'm ready to try a new idea.
And I do. Often. OK, always.
Earlier, Jon made a comment to the effect that SEU stopped being
enhanced in the 6.1 time frame. I respectfully note that SEU hasn't
been /enhanced/ since the 1980s. It's been kept up with new RPG
syntax. Functionally, it provides exactly the same programmer
assistance today that it did when I first used it back before the
dinosaurs were turned into oil. RDi spent a long time being enhanced
for the web people, but recently, oh recently we RPGers got some
refactoring and it's marvelous. Now I can rename variables as I need;
it's not a chore to manually plod through the code. As RDi gets
older, it removes more and more of the mental minutiae from my
workflow - this is huge!
A couple of days ago I had a bit of indigestion over a test script I
was working on. I really wanted to generate a sequence of
spreadsheets noting exceptions in my test database. But it was hard
to see how to convert my thousands of lines of SQL script into a CLP /
RPG / CPYTOIMPF utility, so I opened up a new, empty member in QCLSRC
and I started typing. In a minute I had a shell of a CLP that fired
off a Python script, which I needed. So I opened that in RDi.
Ctrl-F6 back and forth to get the parameter lists just so, a whole lot
of Ctrl-Z and the working first pass was done before lunch was over.
I used the PyDev plug-in to help me with the Python and it was
shocking how easily it all went, given that the best anyone can say
about me is that I'm a very poor Python programmer. I didn't
copy/paste a single line of code from an old program - it's all new.
New idea, new code. This is key: I didn't stuff, fold, spindle, or
mutilate some existing code in order to sort of, kind of, almost do
what I wanted. I can't imagine doing this in SEU, and I have a really
good imagination.
So anyway, I think that SEU is a real factor in keeping the midrange
ecosystem stuck in a rut. If RPG programmers had been using Code/400
in the 90s, who knows how advanced the state of our art would be? I
can't rewrite the past, but I can write the future, and that's why I
continue to plump for RDi at every opportunity. It's why I don't
complain about goofy sales channels, inscrutable cost decisions,
oddball installers. I work on an eccentric platform, and an IDE with
a bounce in its step fits right in. I'm very grateful that I was able
to use the IDE much earlier than most. RDi has absolutely made me a
better programmer.
--buck
As an Amazon Associate we earn from qualifying purchases.