12/05/87: Battleline! by Delphi, | Category: Delphi - General Information | 41 comments - (Comments are closed)

Battleline!

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 …

41 comments to Battleline!

  • pucc_unknown

    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.

  • pucc_unknown

    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

  • pucc_unknown

    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 */

  • pucc_unknown

    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 ?

  • pucc_unknown

    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

  • pucc_unknown

    35830 9DEC87-2316 General Information
    RE: Battleline! (Re: Msg 35819)
    From: GREGMILLER To: EDELLERS

    Ed,
    Good point!
    – Greg

  • pucc_unknown

    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 .

  • pucc_unknown

    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)

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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.

  • pucc_unknown

    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

  • pucc_unknown

    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.

  • pucc_unknown

    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
    up, or if you are careless. thought that anyone but himself would be modifying it, so he didn”t
    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.

  • pucc_unknown

    35875 11DEC87-0114 General Information
    RE: Battleline! (Re: Msg 35855)
    From: GREGMILLER To: FREDMCD

    Fred,
    Right. That’s partially my point.
    – Greg

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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
    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. original bug at all>.

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    35957 12DEC87-2327 General Information
    RE: Battleline! (Re: Msg 35955)
    From: GREGMILLER To: REINDEER

    Jim,
    Well – thanks for such an in-depth reply!
    However ..
    .. I fall back on my original assertions ..

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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
    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 attempting
    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

  • pucc_unknown

    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
    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 .. < <>> (hehe. Notice the stress, ‘dere?) if someone isn’t
    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

  • pucc_unknown

    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
    code. However I am not an aplication writer . I personally
    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!
    code…. Then why the hell didn’t you tell anyone!!!!> I am currently
    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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

  • pucc_unknown

    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)