35716 5DEC87-2139 General Information
Battleline!
From: GREGMILLER To: ALL
BattleLine!
———–
Our October/November Battleline topic turned out to be a wonderful
success!
For our December topic, we’re going to turn a closer into the aspect
of programming -
“If you are incapable of writing a program, you are incapable of
successfully modifying it.”
Like the last Battleline topic, we will discuss this topic in FORUM
for 2 or 3 weeks, and then hold a Battleline COnference (to be announced
roughly one week before the CO), and then wrap things up in FORUM
in a last week or so of ‘debating’.
I’ll present ONE side of the argument following …
35819 9DEC87-1242 General Information
RE: Battleline! (Re: Msg 35716)
From: EDELLERS To: GREGMILLER
I definitely agree with that, and I’d add that, even if you ARE capable of
writing a program, you might not be able to make changes to a program written
by someone else — simply because you might not be able to determine exactly
how that program works. An awful lot of work has been wasted in businesses
by programmers trying to “maintain” (i.e. fix and modify) programs written by
people who were no longer with the company and who hadn’t left documentation
behind describing their code. There’s a tale circulating about how MicroPro
had a bad time trying to update WordStar, since its author was no longer there
and the people who were couldn’t decipher the code.
Of course, well-documented and easy-to-modify programs can have their
disadvantages;
one would be the possibility of undesirable parties obtaining the documentation
and using a program’s techniques to compete against that program. Another is
that many of the techniques used to make some programs work better tend to make
them look like coded diplomatic telegrams. I suspect that this arguement will
be raging for a long time to come.
35896 11DEC87-1919 General Information
RE: Battleline! (Re: Msg 35716)
From: REINDEER To: GREGMILLER
Greg,
You touch my heart with this BattleLine topic. Fixing other people’s trash
programs is how I earn my daily bread. I have many times repaired programs
and exterminated bugs when I didn’t know the language (C in particular) or
all I had was object code with no source available. Debugging object code
is my particular specialty and has caused me to become a rather versatile
assembly language hacker. I still can’t write an integrated database
program suite in C but I can still fix ‘em when they don’t work.
(Gawd! that sounds conceited! Well we all gots ta have one thing we do well)
My comment on this topic: No, you don’t have to be able to write the
program to be able to modify it, but you better know how to read the docs
and manuals and be creative and thorough when you do it.
Jim Johnson
36116 16DEC87-0225 General Information
RE: Battleline! (Re: Msg 35716)
From: MINSTREL To: GREGMILLER
Opened a real can ‘o worms with this Battleline
topic, didn’ja? From your Forum combats to date
(12/16/87) I gather: 1)No one is “qualified” to
hack code ‘less they understand the WHOLE thang in
some omnipotent sense; 2)Most of the programmers
in the world are fairly incompetent ’cause they
obviously ain’t qualified to do what they been
doin’ with large and small success since there
became programmin’ to be done.
Now I can’t recall ‘xactly how many times I’ve
stared at a chunk of code (a program, if you will)
without havin’ the slightest notion as to an
overview or such of the entirety, ’cause I didn’t
write it. Nevertheless it’s written in a language
I know like the proverbial back of my hand (C or
BASIC for instance) for a class of machine (CPU) I first learned ML on and slips
in and out of the
high level control code to ML level device driver
mode as if one always knew exactly where the stack
pointer was. Or maybe I is truly unlucky to be
meandering through a raw disassembly. Now your
theory is that I’m not to chop these bytes ’cause Iain’t got some big picture in
mind? NONSENSE!
Some twit can always come up with sumpthin’ weird
like reading PC offset instructions as “data” for
some sort of copy protection scheme, whatever;
hackin’ that’s surely a disaster for ANYBODY…it’sgot nothin’ to do with the
quality or capability ofany real human programmer nor is it the way things
is done with any reasonable expectation. And
perhaps I argue from a lofty vantage point since I
could just as well have designed the hardware the
prog executes upon, and I’m likely to pull out a
real logic analyzer if’n I gets miffed.
Your hypothesis is still reduced to “you didn’t
write it (probably couldn’t have, oweing to
incompetence), didn’t memorize the source code
(always available, yuk), and weren’t smart ‘nough
to trace all the calling routines, so you don’t
dare touch”.
Gee, I must’ve been in deep defecation on those
systems I DIDN’T fully understand, all along and
didn’t know it. Or perhaps you would dismiss all
of this simply by stating I obviously could have
written the stuff I’m cuttin’ on, but I say that
calls into question the definition of “can do”;
intellectually I know I could, but since I have
neither the inclination or man-hours to devote to
much of that, then I equally well could not have.
Most of us can, do, and will continue to muck the
hell out of them programs that need it, as we see
fit.
Suggested next Battleline scenario: If we can’t
cut on each other’s programs, what’s to keep
StarWars from comin’ down on OUR heads? Just WHO
has the grand overview of nuclear missiles and
laser cannons in ADA?
I agree with most of GREGL’s & JimJohnson’s replies. /* Stan */
36176 17DEC87-1831 General Information
RE: Battleline! (Re: Msg 35716)
From: HARBIE To: GREGMILLER
SORRY BUT I THINK YOU ARE DEAD WRONG HERE .
YOU DO NOT HAVE TO BE ABLE TO WRITE THE >>ENTIRE< < PROGRAM TO BE ABLE TO PATCH
IT . ALL YOU NEED IS TO UNDERSTAND HOW THE ROUTINE WORKS AND HOW IT RELATES TO
THE
REST OF THE PROGRAM .
AS AN EXAMPLE , I AM CERTAINLY NOT ABLE TO WRITE A PROGRAM OF THE MAGNITUDE OF
COCOMAX 1 , 2 OR COLORMAX 3 BUT I HAD NO PROBLEM (WELL ALMOST) PATCHING THEM TO
WORK WITH THE XPAD . ALL I HAD TO DO WAS TO FIND THE JOYSTICK AND BUTTON
ROUTINES AND REPLACE THEM WITH EQUIVALENT ROUTINES .
YOU KNOW WHAT I THINK ? I THINK YOU ARE GRINDING A PERSONNAL AXE HERE . AS THE
AUTHOR OF A VERY POPULAR SHAREWARE PROGRAM , I’M SURE YOU’VE HAD TO DEAL WITH
ALL KIND OF BUGS INTRODUCED BY VARIOUS PATCHES AND THAT GOT YOU AGGRAVATED
AGAINST THE ‘HACKER TYPE’ .
EVEN THEN , YOUR COMMENT ABOUT THOSE WAS UNFAIR , A LOT OF THE TIME , THE PATCH
IS GIVEN TO FRIENDS WHO PASS IT ALONG WITHOUT GIVING CREDIT TO IT’S AUTHOR .
EVEN IN THE CASE WHERE THE AUTHOR IS CLEARLY VISIBLE (LIKE THAT PATCH TO A
POPULAR
PROGRAM (ITSELF A PATCH) I UPLOADED) PEOPLES CALLED THE ORIGINAL AUTHOR GETTING
HIM PRETTY UPSET AT THE PATCH , ME AND A WHOLE LOT OF PEOPLES AROUND . I
PERSONNALLY AND I’M SURE MOST HACKERS WOULD TAKE RESPONSABILITY FOR THE
PROBLEMS CAUSED .
I AM CONSIDERING IF I EVER GIVE OUT A PATCH AGAIN TO INCLUDE IN IT A TITLE
SCREEN THAT WOULD CLEARLY STATE WHO TO CALL IN CASE OF TROUBLE .
ALSO , LOOK AT IT THIS WAY , IF A LOT OF PEOPLE PATCH THEIR COMMUNICATION
PROGRAM TO WORK AT 40 TRACK , SHOULDN’T THE AUTHOR GET A HINT AND ADD THAT
OPTION TO THE CUSTOMISER ?
SO IN A WAY , THIS IS FEEDBACK FROM THE USERS TO TELL YOU THE AUTHORS WHAT
THEY’D LIKE TO SEE . IF A LOT OF PEOPLE AGREE ON IT THEN MAY BE THEY SHOULD
HAVE IT ? DESPITE ALL THE THOUGH YOU AUTHORS PUT INTO A PROGRAM IF THE USER
DON’T
LIKE IT , IT’S LITTLE SATISFACTION TO KNOW THAT ‘THAT’S THE RIGHT WAY TO DO IT
‘ NO ?
36179 17DEC87-2048 General Information
RE: Battleline! (Re: Msg 36176)
From: GREGMILLER To: HARBIE
Roger,
Oho! You’ve a somewhat valid point.. I think I’ve gtotta give in to
the point that understanding a SUBROUTINE, and EXACTLY how it associates
with it’s calling program…
As for patchers taking resposibility ..
Well… They might WISH to, but things never work out that way. The
original author WILL get blamed. You’d be suprised at how some people
can get NASTY when a FREEWARE program doesn’t meet up to their expectations..
I guess my point is that the author, whether he wants it or not, holds
a measure of responsibility for his programs – responsibility that, in the
eyes of the users, covers the WHOLE program (even if it’s a patched-up
mess), whether or not he wrote it.
(it=the program, as it stands)
– Greg
35830 9DEC87-2316 General Information
RE: Battleline! (Re: Msg 35819)
From: GREGMILLER To: EDELLERS
Ed,
Good point!
– Greg
35919 12DEC87-0722 General Information
RE: Battleline! (Re: Msg 35819)
From: HARBIE To: EDELLERS
e they obviously lost their only valid programmer .
as a counter example , the company i work for sells minicomputers systems with
their own i/o so we had to modify the OS . that was done by a sinle person who
disssassembled /
the whole original OS patched it to our devices and improved on it with more
patches (the original for example kept the ddisk error handler on ddisk so
tthat if you got a solid ddisk ffault it’d try to load the handler , get an
error , try to load
the handler for it , get an error , etc)
but then the guy wwas a self tough programmer who started this project with
the basic reference card (he had to write the dissassembler in basic) and the
machi anything about ml programming , let alone OS) , not a professional
pprogrammer .
35844 10DEC87-1932 General Information
RE: Battleline! (Re: Msg 35830)
From: COCOXT To: GREGMILLER
I disagree in part with the idea that it is impossible to modify a program
that you couldn’t write.
I think that is *IS* impossible to successfully modify a program that you
cannot understand! A well structured program should be modifyable by
anyone who understands the modules that are to be modified. If all modules
present a “black box” interface, and there are no “side effects” in the
modules (e.g. updates a mysterious global variable), then only the interface
need be modified.
Here is an example: I do not know XMODEM protocol, but I can successfully
modify the operator interface of a terminal program that supports XMODEM
protocol.
As a side note, remember all of the complaints about BASIC09 not having
global variables? Well, this restriction *does* make side effects very
hard to create, thus leading to more portable, easilly modified programs.
When I say “understand” a program, I mean understanding the interface to
the modules that are to be modified.
Another example, keying off of last month’s BattleLine, is that it is
possible to successfully defeat the copy protection of a program that
you could not have written yourself. If this were not so, there would
be little incentive (or glory) for pirates!
Chris Burke (COCOXT)
35847 10DEC87-1940 General Information
RE: Battleline! (Re: Msg 35844)
From: GREGMILLER To: COCOXT
Chris,
I agree, to some points ..
.. But what about ML programs? I mean, whether or not a program is designed
well begins to have little impact when you’re dealing with object code.
As an example, you may be able to use a pre-created subroutine that performs,
say, an XMODEM transfer, but that’s not modifying code – that’s WRITING co.
Don’tcha think?
– Greg
35848 10DEC87-1941 General Information
RE: Battleline! (Re: Msg 35844)
From: COCOXT To: COCOXT
I just re-read that, and decided it wasn’t very clear. . .
If the module interface is understood, then you can do anything you want to
the module as long as you do *NOT* modify the interface — I said it backwards
before.
CJB
35857 10DEC87-2118 General Information
RE: Battleline! (Re: Msg 35844)
From: RFITZHUGH To: COCOXT
Chris,
I had agreed with the current battleline up until your note-you are correct!
Isn’t that part of the idea of structured pgming? I can take advantage of std
modules and subroutines, while not writing them myself, or even being ABLE to
write them…
I do not believe this point was taken into consideration when the topic was
decied on… I believe it was brought about because certain authors have been
PO’d by people hacking up their “art” and getting it a bad name… that IS a
bad thing, in my hu
mble opinion…
:::RFITZHUGH
35850 10DEC87-1947 General Information
RE: Battleline! (Re: Msg 35847)
From: COCOXT To: GREGMILLER
The “goodness” of a program is visible even at the object code level.
In the strictest sense I suppose a person who successfully modifies
a program could probably have written that program given enough time
and reference material. But, I have modified programs without taking
the time to understand the entire thing — I only understand the part
that I want to modify.
Here’s another example: you can modify TSEDIT to run in any OS9 window,
without understanding how TSEDIT manipulates the text buffers. All you
need to know is how TSEDIT manipulates the screen! But you *do*, as you
say, need to understand what you are modifying. In many cases, this is
not the entire program, though.
35851 10DEC87-2001 General Information
RE: Battleline! (Re: Msg 35850)
From: GREGMILLER To: COCOXT
Chris,
Ah! But, by simply understanding PART of the program, you’re “blind” against
the rest of it. My point is that if you only understand a PORTION of the
program, aren’t you taking the DEFINATE risk of “mucking up” something
. some PART of the program, accidently?
Now, I grant you that “quality code” is apparent at many levels, BUT ..
When you hit low-level ML, regardless of the how well a program was laid-out,
anything less than a COMPLETE understanding of a program is inadequate.
– Greg
35855 10DEC87-2032 General Information
RE: Battleline! (Re: Msg 35851)
From: FREDMCD To: GREGMILLER
ON THE SUBJECT OF EDITING A PROGRAM THAT YOU
DID NOT WRITE; 8 YEARS AGO, WHEN I WAS
HIRED TO RUN A COMPUTER FOR A SEWER PLANT,
THE GUY PUTING THE COMPUTER IN SERVICE ALSO
SHOWED US THE WAY TO RUN THE COMPUTER.
I, AND SOME OTHERS, WERE ALREADY PROGRAMERS.
ANY WAY….. ONE DAY, THE GUY PUTING THE
COMPUTER ON LINE WAS HAVING TROUBLE WITH
ONE OF THE PROGRAMS. IT WORKED FINE.
BUT, ONE OF THE DISPLAYS WAS ALWAYS
MISS-LABLED. HE HAD WROTE THE PROGRAM
HIMSELF, BUT, HE COULD NOT FIND WHAT
WAS WRONG WITH IT. ABOUT 10 MINUTES
AFTER I GOT A HOLD OF A PRINT-OUT OF
THE PROGRAM, I FOUND THE TROUBLE.
(ONE VARIABLE HAD A BAD MATH MARK.)
WHEN I TOLD THE PROGRAMER, HE DID NOT
BELIEVE ME, BUT FINALLY, I GOT HIM TO
EDIT THE PROGRAM……AND IT WORKED.
THIS GOES TO SHOW THAT..AS LONG AS
YOU UNDERSTAND WHAT THE PROGRAM IS
TRYING TO DO, ANYONE CAN CORRECT THE
ERRORS IN IT.
35879 11DEC87-0134 General Information
RE: Battleline! (Re: Msg 35851)
From: COCOXT To: GREGMILLER
You will only muck it up if the guy who wrote the original program screwed thought that anyone but himself would be modifying it, so he didn”t
up, or if you are careless.
make your life easy>
There is a popular concept in software development, known as data
abstraction. It essentially says that you only tell other people
working on your project what they need to know — you define an interface.
They don’t need to care (for example) HOW you sort records, just that you
do so and leave the result in a particular place. A program designed in
this manner can be modified in parts — I agree that not all programs
are designed this way, however.
35875 11DEC87-0114 General Information
RE: Battleline! (Re: Msg 35855)
From: GREGMILLER To: FREDMCD
Fred,
Right. That’s partially my point.
– Greg
35880 11DEC87-0139 General Information
RE: Battleline! (Re: Msg 35857)
From: COCOXT To: RFITZHUGH
To be sure, there ARE incompetent people running around hacking up others’
programs — a case in point is CER-COMP’s BASIC compiler, which was so
badly broken by the person defeating the copy protection that people who
pirated it off of BBS’s generally thought the program was awful. The
REAL program wasn’t at all awful — just the hacked version that was
avaialable to the “general public”.
I agree that well written software IS an art form. You can screw up
software in the same way that you can screw up art restoration. The
man who restores your artwork must have a “feel” for the original
artist’s style, and mimic it. The equivalent in software is the
module interface, which must be mimiced. No style = no art. No
interface = no art.
Chris Burke
35907 12DEC87-0125 General Information
RE: Battleline! (Re: Msg 35879)
From: GREGMILLER To: COCOXT
Chris,
Ah – but I think you’ve missed the point! How can someone modify something
that they don’t fully understand? By guesswork? If so, that’s “mucking”.
– Greg
35909 12DEC87-0128 General Information
RE: Battleline! (Re: Msg 35896)
From: GREGMILLER To: REINDEER
Jim
Ah.. But are you capable of WRITING the stuff that you’ve patched? It sure
sounds like you ARE capable, and that, in itself, makes you darned
capable of patching it!
– Greg
35912 12DEC87-0440 General Information
RE: Battleline! (Re: Msg 35909)
From: GREGL To: GREGMILLER
I disagree with that. I have been aquainted with a few people that spend their
lives patching, modifying, and overall mucking with programs. These people
are paid to find and fix programming errors, bugs, etc. on a day to day
basis. At the same time, these people cannot, no matter how hard they may
try, produce a single applications program. While they are “experts” in the
arts of debugging, disassembling, and maintaining software, they are, by no
means, programmers.
Not to dig those working for the government, but the U.S. Government often
hires these types of non-progrogrammers to maintain software written by
others. There is a definite line, a fine one no doubt, between a programmer
and a software maintanance engineer. In my opinion, this fine line exists
in the art of writing as well. Just because you are an editor doesn’t
necessarily mean you can write a book. (No offense Jim, not aimed at any
particular person, just in general.) Also, just because you fix computers
doesn’t mean that you can design them from scratch.
So, as for the topic of “You can’t fix it if you can’t write it”, I feel that
it totally just NOT true. Take a look at the CoCo community as a specific
example. Many people here, in this very Sig, learned to program by taking
a pre-packaged piece of software and taking it apart bit by bit and then
putting it back together with whatever modifications they desired. No names
here, but one such person did so and at the time he/she couldn’t tell the
difference between a LDA and a USA.
— Greg
35940 12DEC87-1619 General Information
RE: Battleline! (Re: Msg 35909)
From: REINDEER To: GREGMILLER
Greg,
I thought I at least implied that I couldn’t write the particular integrated original bug at all>.
database system I was referring to. I have only one professional program
that was actually delivered to a customer and that was written in
Z80 assembler. The database was written in C and was a nightmare
to work with (especially since I didn’t know C at the time. I still only
consider myself a beginner C programmer). One utility aquired a bug
between releases that would cause the program to abort and core dump.
This was a sorted alphabetical listing of the contents of a certain file
type defined in a data dictionary descriptor. Since my company had
legally purchased the source for this utility, I dug thru until I found
where the program had left out a test for this particular file type.
With my trusty “UNDERSTANDING C” book by my side I added another test
in the decision tree that set the proper parameters to send to the next
chunk of code. I still do not know how the program works in entirety
but I found that the patch I phoned in to the original maufacturer was
implemented in the next release of the code.
And to answer your speculation that I could have written the program,
no way, Jose. First I don’t the language (C). Second, I am not an
application writer nor do I have the knowledge to design an integrated
data base. Third, ah… let me see.. I had one a minute ago…
Anyway ask me again in 4 or 5 years and maybe the answer will be yes.
Right now I write system level code mainly and specialize in real time
I/O controllers(that’s device drivers to you OS9 fanatics).
BTW, the last time I heard statistics on the subject, only 5% of the
programmers out there work in this area, i.e. full time bug chasers
that work mainly the hardware specific interface to real world.
I once had a heated argument with a “programmer” who really believed
that he could write efficient high level code device drivers. HA!
Jim Johnson
35929 12DEC87-1145 General Information
RE: Battleline! (Re: Msg 35912)
From: GREGMILLER To: GREGL
Greg,
Hmmmm. Welllll.. I see your explanation, but have to fall back on the
original statement ..
.. by saying – If they can’t write it, they don’t understand it. And, as
an analogy .. Would you want somebody who’s never even SEEN a (for arguments
sake!) Porche 944, ‘trying’ to fix it? They have to idea where this tube
‘#$# the frammazat is, but they just keeping tinkering,
and hope that they get things going.
I certainly wouldn’t want someone like that working on my car. Or a program
that I’m going to depend on.
– Greg
35945 12DEC87-1907 General Information
RE: Battleline! (Re: Msg 35940)
From: GREGMILLER To: REINDEER
Jim,
Now I really AM confused! You say that you patched a program, and didn’t
even understand the LANGUAGE?
– Greg
35955 12DEC87-2306 General Information
RE: Battleline! (Re: Msg 35945)
From: REINDEER To: GREGMILLER
Don’t be confused, Greg. I reserve that condition for everytime I work a
new software problem. Yes, when I worked that problem I did not know C
beyond recognizing that it was C. That’s why people write books and manuals
for computer languages. I simply analyzed the code with the book open to
translate the C statements into English to see what they were doing. When
I diagnosed the problem (which was a logic error, not a language error) I
looked up how to include a patch in proper C syntax. I learned more than I
ever cared to about passing arguments by pointer or by value depending on
how the code segment was written. This is common out in the software
troubleshooting world. I have had to fix code in FORTRAN, C, RPGII, 360/370
assembly, Z80 assembler, 9900 assembler, PDP8 assembler, 68000 assembler,
VAX DCL, IBM JCL, M204 procedure language, and probably some I am happier
at having forgotten! Oh, yes, 6809 assembler of course. Of all these
goodies I am probably only proficient at Z80 and 6809 assembler but I am
trying to improve my skill at C. This is a talent I learned on the hardware
side of the world when I had to apply my background in electronics to be
able to analyze any piece of equipment that crossed my bench and repair &
calibrate it whether I had the manual on it or not. It’s a matter of having
the basic concepts of how it should work (theoretical knowledge) and then
applying the general procedure for doing the work (practical experience).
Needless to say, I have been doing this type of work for MANY years and
still feel way behind the power curve in keeping up with both theoretical
and practical experience necessary to tackle some of these new innovations
in programming style. (There seems to be a new way to do something every
time someone writes a master’s thesis or doctoral dissertation!!!)
This is why I say one does not need to know how to program it to fix it.).
But, then again, I DO realize that the majority of people never have to
work problems at the same level I am required to. Try tracing a problem
of multiply nested interrupt routines and find which sequence of conditions
will leave the interrupt masked out and the system dead as a doornail.
I may not be able to write that complex of an interrupt driven system but
all it took was plain ole logic to fix it. (Plus about 30 test versions
before I got it right
Jim Johnson
35957 12DEC87-2327 General Information
RE: Battleline! (Re: Msg 35955)
From: GREGMILLER To: REINDEER
Jim, fall back on my original assertions ..
Well – thanks for such an in-depth reply!
However ..
.. I
You say that you patched it, with “book open”. Although you may have gotten
it working (which I don’t think is the issue here at all.. Enough monkeys at
enough computers, for long enough, and the same result will appear) – you
had very little idea what you were doing .. And therefore, EXTREMELY likely
to make mistakes (which can, quite honestly, be “fatal” mistakes), and
accidently damage another part of the program.
Now, PLEASE note – I’m not saying that programmers should be without
documentation at ALL, here (h**l, this room is FILLED with documentation -
I spend an ENORMOUS amount of time programming checking docs, etc.) ..
I hate to use another analogy, but I’d be scared s**tless to have a surgeon
operating on me, textbook in hand, scratching his head, mumbling “I wonder
what the heck THIS organ is for?? Let’s find out. Scapel. ” …
So – w/o an understanding of what you were doing (heck, even the language),
you may darned well have gotten it working, but you very certainly (in my
opinion, that is) weren’t, at that time, qualified to modify that code.
– Greg
35987 13DEC87-1606 General Information
RE: Battleline! (Re: Msg 35957)
From: REINDEER To: GREGMILLER
Greg,
If you are in to analogies, then consider this. Doctors have a good general
idea of what they are looking for when they cut into a patient. They rely
on their skill and experience to have a good chance to predict the patient
will survive the operation with minimal complications. But the human body
delights in ocassionally refusing to agree with any text on how it is put
together. Are you saying that a surgeon is not competent to operate just
because he ran into an anomoly (say a nerve bundle along the spine that
is not supposed to be there)? Since the surgeon has now run into something
that a neurosurgeon might more properly deal with, should he throw up his
hands and say “I’m not qualified to work with this. Let’s close”?
I guess the point I’m trying to make is that it is not important (to me)
what language the program was wriitten in. Programming is an exercise
in logic. Just because someone wrote the thing in C doesn’t mean that
straghtfoward logical program flow cannot be applied. A language is only
the written expression of the logic behind the program design. I get
*SO* tired of language snobs who think their particular language or
operating system is the end all and be all and everyone else just writes
in a vacuum. I have run up against a great deal of resistance with
so-called “professional” programmers who think I am not qualified to
have an opinion about their work. The most common thing I have observed
is that the strongest opposition comes from the people who can’t even
describe the logical flow of their own program! I can usually work with
the folks who will admit that they are having problems with logic problems.
I can respect your opinion even if I don’t agree with it. My company
apparently doesn’t agree with you either since they pay me to (and expect
me) to work on anything and everything that needs debugging, whether I
know the operating system or language or not. Just who are you aiming at
when you say “people who can’t”? What people? Or are you including
software engineers and systems analysts? Or are you referring to Fly by
Night software Piracy, inc?
Jim Johnson
35990 13DEC87-1644 General Information
RE: Battleline! (Re: Msg 35929)
From: GREGL To: GREGMILLER
Greg,
But aren’t all cars basically the same? Even so, cars are in a totally
different ballgame than software. As I said before, I don’t know squat
about parsing, yet I’ve repaired a few parsers. Just because you don’t
know how to write a particular program, or sections of it doesn’t mean that
you can’t fix it! If you have a basic idea of what should be happening then
you’ve got a good idea how to fix it. For example, you might not know
exactly how to write a parser, but you know the input should be some kind
of ASCII string with a token output. I even learned most of what I know
about the various random access disk methods by debugging the suckers and
fixing them. Same for linked lists.
I will agree that if you can’t write the basic parts of a particular
program then you will usually have a hard time with the more esoteric
sections. But the basic argument just isn’t true. I usually even supplu
the source code to my work for others to look over and see how I did it.
Somebody else may find a better way and then they will usually upload that
and then I can see how they did it, learn from it, ad infinitum. Take the
specific example of CRC generation for xmodem. I uploaded what I had, which
was kludgy, but it was all that I had and I didn’t have much time to figure
out any better ways of doing it. Then somebody else submitted a table
driven method and then somebody else uploaded an even better version using
bit shifts and such. The idea of code sharing is great for learning from.
Given the will, then even somebody like Mr. Nonprogrammer can learn by
examining the code in question and then ultimately fix it.
Indeed, this is the exact way I learned to program in C. I picked up a
lot of source code, modified it just to see what would happen, and asked a lot
of questions. In the end I had made a lot of programs better, etc. There
again, there were some that I ultimately screwed up but that was part of
the learning process.
— Greg
35993 13DEC87-1731 General Information
RE: Battleline! (Re: Msg 35987)
From: GREGMILLER To: REINDEER
Jim,
Thanks again for the reply.
Your logic, however, is horribly flawed! I agree that programming is an
exercise in logical thinking, but I STILL stand by my analogy!
As I tried to make disgustingly clear, I have no argument WHATSOEVER against attempting
documentation. If anything, I’m totally FOR that. HOWEVER – you cannot
present me with the analogy of a surgeon referencing a manual for specific
oddities in the human body. That is, by FAR, much different than a surgeon
operating DIRECTLY out of a textbook (or, say, a veternarian
to operate on a human being. They simply aren’t FAMILIAR with the subject!
Albeit, their previous experience may get them by, but it’s a heckuva chance
that it won’t!)..
You give respectible references why you have the opinion that you do. But,
I, too, am a paid programmer, and simply do NOT agree. Let’s be honest..
We’re not (at least I’m not) arguing that, given time, effort, and thought,
an unfamiliar, and (in my opinion) unqualified programmer can actually
patch a program that he’s unfamiliar with, and get the sucker to work. That’s
darned possible, and happens VERY often (I used to poke around in code that
I had NO understanding of, whatever. I’d just see something that looked
“important”, change ~_it, and watch what happened… or, I’d make an
‘educated’ guess as to what something is for…)….
I think the end argument here, is whether a specific programmer is
QUALIFIED to patch something. I’ve, honestly, in the past, been in a LOT
of programs that I wasn’t qualified to ‘screw around’ with. Although I knew
that I didn’t understand the program, EVENTUALLY I’d happen across the
RIGHT code, and get what I wanted, done. The point is – I was ‘walking on
thin ice’, and quite likely to destroy code at that time, w/o having the
slightest inclination of doing it.
Thanks again, Jim!
– Greg
35994 13DEC87-1738 General Information
RE: Battleline! (Re: Msg 35990)
From: GREGMILLER To: GREGL
Greg,
Oho! After reading your response, I think I’ve figured out why I’ve
received such an ‘interesting’ response from some people. I’m not arguing, in
the least, against LEARNING from other peoples code, or even trying. I’m
more or less, trying to make a statement, that in most instances, (bluntly!)
if can’t figger it out, you’re darned likely to muck it up.
As for the cars/similarity argument – sure. I can associate that easily, and>> (hehe. Notice the stress, ‘dere?) if someone isn’t
take tha analogy back to programming. BUT, the point isn’t whether the
mechanic can, (after hours of head scratching, and ‘experimenting’) get the
darned foreign car working – heck, given a book and a few months, could
get it working… It’s actually whether he’s QUALIFIED to get it working.
There’s a point where people, companies, and organizations hire someone for
a specific job because they are QUALIFIED to perform said job. I tend to be,
in almost every case,
a firm believer that just about EVERYONE is capable of doing just about
ANYTHING .. < <
capable of doing something, and the ‘something’ is of any greater importance
than ‘trivial’, I certainly am NOT going to hire them. No sir.
– Greg
35998 13DEC87-1855 General Information
RE: Battleline! (Re: Msg 35993)
From: REINDEER To: GREGMILLER
Greg,
OK, we’ll throw away analogies since they are inherently inaccurate. You
are, however, in error that I did not know how the program worked. Fortunately
the programmer who originally wrote the program ACTUALLY documented the
program well enough to explain what he was trying to do. The core dump
contained the contents of the sort buffer which showed me exactly what the
error was that crashed the program. Now I knew what was wrong and had a
good suspicion of where to look for it. Tthe only thing I didn’t know was
the language (which I didn’t need to know to find the problem in this case).
To fix the problem I interpreted the C language statemnets and then
generated an apropriate statement to test for the proper file type. It
took about 8 hours to find and fix and a week of testing showed no new
problems with the patch.
Now let’s talk about qualifications. I am confused about what criteria
you go by when you rate someone qualified to do something. Perhaps
you might list your criteria for all of us.
Perhaps you are correct to say that I might be able to write the original. I personally
code…. Then why the hell didn’t you tell anyone!!!!> I am currently
code. However I am not an aplication writer
find writing applications a crashing bore. It’s even more frustrating
when a large team tries to write one. Half the time you are trying to
find out why the code you wrote and tested last week doesn’t work today!
trapped in just this situation which involves 3 or 4 subcontractors and
a management staff that doesn’t know FORTRAN from SERUTAN.
Just having never written a certain type of program does not mean you.
aren’t qualified to write one or debug it. Not knowing the language
(in my opinion) is a handicap but still doesn’t necessarily disqualify
the person. You are saying that if a person has never written a program
in a particular language he is not capable of working in that language.
Come on now! A programmer that can only work one language or O/S is
too narrow these days for the commercial world. He ought to go into
management where he doesn’t have to worry about cross-crafting in the
software world. (As long as he doesn’t manage me, that is). Single
language programmers are the next group that will be on the endangered
species list
Please define for all of us what you consider an unqualified person.
Jim Johnson
36035 14DEC87-0427 General Information
RE: Battleline! (Re: Msg 35993)
From: GREGL To: GREGMILLER
Qualified for? Sheesh, them’s big words! So what if you’re qualified or
not… heck, if I had to be ** qualified ** when I worked at Burroughs then
I’d have only spent 2 hours in 5 years doing anything besides sitting on my
duff. Very often I had to repair systems that I had never seen before,
with or without documentation. Is software so much different? I don’t thiknk
so, particularly as many companies do expect hardware/software maintenance
types to repair IT, irregardless of whether or not you know what you are
doing. Indeed, the attitude is fix it or quit. You go tell a company that
you’re not ** QUALIFIED ** to work on something and see how long it takes
to receive a pink slip.
That statement is particularly true of companies such as Unisys where they
ultimately believe that the employee is a robot that will do all sorts of
demeaning tasks for little to no pay… Qualifications ain’t the issue here.
It don’t make a horses patoot if you’re qualified or not. Heck, given the
need even ole Marty could fix it – qualfied or not. After all, he didn’t
become the resident “CoCo Genius” by taking seminars, training courses, and
other such gobbly gook that only teach your relatives; there just ain’t no
substitute for good ole trial and error. In most cases you can learn more
by trial and error in 30 minutes than 30 days of “classroom” training.
Given the time, it can be fixed; qualified programmer or not. You want to
argue about time spent fixing it? It’s gonna take time whether you are
qualified or not. Heck, even QUALIFIED programmers make mistakes, and some
nasty ones at that. If that weren’t true then ole Jim Johnson would be
out of a job in 2 seconds flat.
— Greg
36006 13DEC87-2136 General Information
RE: Battleline! (Re: Msg 35998)
From: GREGMILLER To: REINDEER
Jim,
I think you’re moving off on a tangent here, and quite possibly taking this
subject as a personal attack on yourself, and you capabilities. I assure
you that it is meant as NEITHER, and is simply a public discussion.
I don’t believe that I’ve EVER stipulated, in any sort, a list of
qualities that makes one a qualified or unqualified programmer, although you
seem to think that I had (or was implying such). I am stating something,
however,
OVER and OVER again…. (forgive any typos here.. my local Telenet node is
down, and I’m being forced to call via Tymnet. Yuck.)
There’s a WORLD of difference between being ‘qualified’ to write something, and
hacking it out. I have NEVER said that an ‘unqualified’ person is incapable
of getting a patch to perform as they intend. Never, Jim. I have, however,
said that the patch, itself, is inherently a ‘hack’. That is, it’s not as
‘stable’ as one written by someone who ‘knows what tthey’re doing’ (eg: someone
who is CAPABLE < -- semi-definition, there, Jim.)
What do I consider makes someone ‘unqualified’? That’s VERY simple, Jim – and
it’s
stated both in my leading messages, and partially in the BLine topic
definition. I consider someone who doesn’t understand the code that they
are modifying (in at LEAST a large sense) unqualified. I view things this
way, because if they do not understand the code, as a whole, I cannot
possibly see any way to modify the proram, either than a ‘trial/error’/'potshot’
method.
– Greg
36037 14DEC87-0447 General Information
RE: Battleline! (Re: Msg 36006)
From: GREGL To: GREGMILLER
Oh boy, I don’t believe you actually said that! An “unqualified” person can’t
make a patch to a program that is as “stable” as a qualified person can do.
Apparently that may appear to be true on the surface, but ultimately it is
totally false. If it works and doesn’t have any side effects then it is,
as you state it, “stable”. I assume your conception of that term to
indicate a patch that does not induce other bugs, side effects, etc. Sheesh,
sounds like someone is living in a nightmare.
I will agree that some people in this world are not intended to be
programmers, no matter how hard they try. Indeed, some programmers only put
in just enough effort to get a program working and then dump it into a
finished pile without ever smoothing out the rough edges. It all boils down
to, NOT whether or not a person is CAPABLE, but whether or not said person
has enough determination. If he doesn’t have the drive to fix it, then he
won’t fix it. If he really, and ultimately, wants to figure it out and
modify it then he/she can do so with just as much “skill” as a programmer,
and perhaps even better.
Who knows a particular program better, the programmer or the debugger?
In 9 times out of 10 it’s the debugger. The programmer writes it and then
doesn’t have to look at it very much after that. The debugger often spends
a lot more time in the code trying to figure it out. Of course, in the
home market place that usually isn’t true as the programmer/debugger are one
in the same. Sorry, but I still disagree with your arguments.
— Greg
36054 14DEC87-2020 General Information
RE: Battleline! (Re: Msg 36006)
From: REINDEER To: GREGMILLER
Greg,
If the battleline topic was “If a person doesn’t understand a program, etc..”
I would agree in a second. However you adhere to the belief that if a
programmer doesn’t have the ability to write that particular program, he is
incapable of modifying it. I hope I got that right. That is the topic we
are discussing, I think. Well, I want to say that I am not taking it
as a personal attack on me, but I will respond as one of the group of people
who make a living doing what you feel is not possible to be done other by
“hacking” code.
One thing I want to bring out is that our job wouldn’t be so tough if there
were fewer incompetant, sloppy programmers. Analyzing another persons code
can be an *EXTREMELY* frustrating experience. I usually get involved when
the programmer has throw up his hands because he can’t find the bug. It is
much easier to fix code if the programmer is available to work with, but
unfortunately this is often not the case.
In your message 35993 you mentioned that you had “poked around in code” and
“eventually….got what you wanted, done”. Well congratulations. You just
made it into the ranks of a programm debugger. Your experience doing that
might just give you an inkling of what we go thru when we work a problem.
And your feeling that you were not qualified to do that is a misconception
on your part. The fact that you were able to analyze the code well enough
to find the problem, and your research that found the solution just made
you qualified to “muck” around in the code. It don’t get no better than
that. I’m sure you checked to find out if your patch affected the rest
of the program. I agree with GREGL that if your patch works without
side effects then it is as stable as it will ever get.
The only criteria I use to “qualify” a person is that he is willing to
search for the bug, that he is capable of analyzing the program well
enough to find the bug, and that he makes sure the patch doesn’t wreck
the rest of the program functionality. Guess what? You qualify.
I also agree in part with GREGL that a debugger may know about the program
than the original writer. A debugger (who’s any good) may end up testing
a program’s limits on what it can handle much more thoroughly than the
original programmer ever did. (The programmer had a hot date that night
and didn’t bother to do worst case analysis.) A programmer may ignore
handling trivial branches on decision statements (because he had to meet
a deadline). The debugger must go back and determine whether input will
ever take the neglected program path and pass indeterminate or incorrect
data. I believe this is where GregL was headed when he claimed the
debugger “knew” more than the programmer. In many cases this is true.
Unfortunate, but true. Too many programmers are just plain sloppy!
As I said, I agree that the person must understand the program to modify
it, but he didn’t need to know how to write it up front. If he’s good
enough at what he does, then he will know how to program it when he’s done
fixing it. This is the learning experience that makes programmers
better and debuggers more proficient at their trade.
Jim Johnson
36044 14DEC87-1826 General Information
RE: Battleline! (Re: Msg 36035)
From: GREGMILLER To: GREGL
Greg,
So, roughly what you’re saying is that there’s very little importance if
someone knows what they’re doing or not? That’s a LARK, Greg, and you
darned well know it. You’ve also moved WAY off on a tangent as well.
Regardless of how NIFTY trial-and-error may be, it just ISN’T any sort of
contender for simple, common, and blunt KNOWLEDGE of what the heck you’re
doing.~r If that wasn’t true, then there’d be no such thing as training,
as it’d obviously be worthless.
Nope. Time spent? Be SERIOUS, Greg. As an example, you could find a bug
in a C program hundreds of times faster than I ever could. If I was a bank,
and there was a bug in our ‘database’, I’d sure hire you before
someone like myself. You’d know what you’re doing, and wouldn’t
be pouring over it, line by line, scratching your head.
– Greg
36045 14DEC87-1836 General Information
RE: Battleline! (Re: Msg 36037)
From: GREGMILLER To: GREGL
Greg,
That argument is badly flawed. You claim that the ‘debugger’ knows much
more about a program than the programmer. That’s baloney, and you
certainly know it! I cannot possibly picture ANY situation, with the
possible expection of someone havingno idea what the heck they’re doing,
in which the debugger understands something BETTER than the person who
WROTE it to begin with. (Although the debugger may like to BELIEVE that,
that just isn’t true!)
Sheesh.
– Greg
36047 14DEC87-1849 General Information
RE: Battleline! (Re: Msg 36045)
From: GREGMILLER To: GREGL
Greg,)
Oh, btw.. I never made any accusations that someone who LEARNED about
programming through trial-and-error don’t know what they’re doing. Heck -
most programmers I know have benefitted MOSTLY from that type of learning!
My point is that if they don’t know what they’re doing, I’d never let ‘em
touch MY code. (You are welcome to release your code to the masses for
those much needed improvements!
– Greg
36061 14DEC87-2208 General Information
RE: Battleline! (Re: Msg 36054)
From: GREGMILLER To: REINDEER
Jim,
Well said! I can agree with you partway – much of the problems lie in
the hands of the original programmer, and each situation is very different.
I subsequent analysis of your message, I think our disagreements center
around my belief that if you can understand it, you could probably write it.
Good message, Jim!
– Greg
36133 16DEC87-1856 General Information
RE: Battleline! (Re: Msg 36116)
From: GREGMILLER To: MINSTREL
Stan,
No – you’ve missed the point. For example – a device driver can be, (and
certainly is, in almost every circumstance) a seperate and entire program
in it’s own right. Would you jump into debugging a terminal program without
knowing how the terminal’s device driver worked? If you would, I’d classify
you as awfully self-assured, and somewhat wacky (grin). And – simply because
you don’t write a program isn’t my argument. It’s being ABLE to write it. For
instance, if GREGL were to dump a nice big C program in my lap, and declare
that a single bug exists in the program, and that I should find it, I would
eventually, from experimenting and trial-and-error find and repair the bug.
BUT – since I don’t understand the program (or really the language), I might
end up (inadvertenly) fixing say .. a program with a math problem, that
when it calculates 1 + 1, it should reply 2, but in this buggy program, replies
3. Since I have no idea about the whole run of the program, I might (not
smugly, or intentionally) fix the sucker by adding a line that says
IF number=1 and Number2=1 and operation=ADD, then answer=2.
That’s OBVIOUSLY an incorrect way to fix a program, but might arise when
I don’t know what the #((‘# I’m doing.
– Greg
36382 23DEC87-2218 General Information
RE: Battleline! (Re: Msg 36179)
From: DICKWHITE To: GREGMILLER
I decided to read the Battleline to see why there were no Polls coming out
of it. Now I know. Makes the Intermediate Range Missle Treaty negotiations
look simple.
There appear to be two frames of reference at work here. You are looking at
problems arising from production and support of software for a limited
microcomputer
market while others appear to be trying to deal with industrial software
creation and support.
It sounds all well and good to preach about qualified people to do tasks, but
where are they to be found?
Do they grow on trees somewhere. How do they become qualified without mucking
a bunch of things up learning the ropes?
Why am I developing such a dim view of programmers? Maybe I am an optimist to
expect things to work before the tenth try. However,
it is disappointing to say the least to lay out in clear terms why a system
cannot meet a functional specification and then wait six months while the
programmers try their things that don’t work until the figure out that maybe
the client did have some idea how he wanted his system to work.
Much of what is being done still in areas involving computers is cutting new
ground. How is one qualified to do something “the first time”?
What it all comes down to is that jobs have to be done with the people who are
available WHETHER THEY ARE “QUALIFIED” or NOT. Many times there are no other
options.
How is Jim’s company going to get their software fixed if they don’t have Jim
do it? To their eyes he is more qualified that anyone else because his fixes
work.
Their view of programmers is probably people who write stuff that they have to
have Jim fix. No institutes, accredidation, recommendations etc are going to
are going to overcome that rap.
So maybe it is time to look hard at what are some reasonable qualities, not
qualifications that one would look for in a persone to “work on software”.
Where I stand now is lets port that code that works in the computer simulation
over into the control software so I can keep the programmer’s hand off it.
Dick
36393 24DEC87-0425 General Information
RE: Battleline! (Re: Msg 36382)
From: MINSTREL To: DICKWHITE
I like that attitude…..”lets’s (wrest control of the software) before the
programmers get their paws on it! /* Stan */ (NSTREL)