Howard Brazee wrote:
On 13 May 2008 08:57:14 -0700, [EMAIL PROTECTED] (Michael Poil)
wrote:

Give me Assembler and a hand-held uninterpreted card punch any day. Real programmers don't use/need HLL's!

Assembler?   Real programmers don't need assembler!

This reminds me of a humorous -- and quite memorable -- Dec 2005 post on ASSEMBLER-LIST, by Michael Stack, interjected into a discussion about structured HLASM programming, after the "Luddites" started getting a little out of hand:

<Mike Stack's Humorous Post>

[Disclaimer for the sensitive: this is intended as humor!!]

This discussion arrived at just the right time, in the middle of my updating some presentations I'll be giving at the March SHARE meeting in Seattle. I was particularly taken with Steve's comment that a program which uses the structured programming macros "... hardly looks like Assembler."

So, there I am, working on a talk about the USING instruction, and in front of me is an example (please pardon the length):

         STM   14,12,12(13)      Save all registers in caller's area
         LA    14,24(,15)        Get address of a new save area
         ST    13,4(,14)         Connect new save area to old
         ST    14,8(,13)          and old to new
         LR    13,14             Copy addr of new save area to R13
         BALR  12,0              Set R12 to addr of next instruction
         BC    15,76(,12)        Branch around save area
         DC    18F'-1'           New save area
         LA    1,104(,12)        Get address of first table
         BAL   14,272(,12)       Go to INIT routine with first table
         LA    1,188(,12)        Get address of second table
         BAL   14,272(,12)       Go initialize second table
         L     13,4(,13)         Restore addr of previous save area
         LM    14,12,12(13)      Restore caller's register contents
         SR    15,15             Set return code to zero
         BCR   15,14             Return to caller
         DC    (3*28)X'55'       First table (three 28-byte entries)
         DC    (3*28)X'55'       Second table
         SR    0,0               INIT: set initial age in R0
         LA    10,3              Get counter for table entries
         LR    11,1              Get addr of first entry to R11
         MVC   0(22,11),300(12)  Set initial NAME (22 blanks)
         ST    0,24(,11)         Set initial AGE
         LA    11,28(,11)        Set R11 to next table entry
         BCT   10,280(,12)       Count number of entries
         BCR   15,14             Return to MAIN when table done
         DC    CL22' '           Initial value for NAME
         END

Now, I claim that THIS is REAL assembler language. Without labels, the true nature of the program shows through: base registers, displacements, nearly all the elements of machine-level programming are visible. If I had wanted to use labels, I should have written it in COBOL, because with labels [I know you were waiting for it] , it hardly looks like assembler.

</Mike Stack's Humorous Post>

And, I was ROTFLMAO when I read his later follow-up, after Raymon House suggested that the original was far too well commented to be a "real" assembler language program:

<Mike Stack's Humorous Follow-up Post>

Agreed. Here's an improvement, with almost no distractions:

         DC    X'90ECD00C'
         DC    F'1105260568'
         DC    X'50D0E004'
         DC    X'50E0D008'
         DC    X'18DE'
         DC    X'05C0'
         DC    X'47F0C04C'
         DC    72X'FF'
         DC    X'4110C068'
         DC    X'45E0C110'
         DC    X'4110C0BC'
         DC    X'45E0C110'
         DC    X'58D0D004'
         DC    X'98ECD00C'
         DC    X'1BFF'
         DC    X'07FE'
         DC    168X'55'
         DC    X'1B00'
         DC    X'41A00003'
         DC    X'18B1'
         DC    X'D215B000C12C'
         DC    X'5000B018'
         DC    X'41B0B01C'
         DC    X'46A0C118'
         DC    X'07FE'
         DC    22X'40'
         END

</Mike Stack's Humorous Follow-up Post>


Now, that's REAL programming! :-D

--
Edward E Jaffe
Phoenix Software International, Inc
5200 W Century Blvd, Suite 800
Los Angeles, CA 90045
310-338-0400 x318
[EMAIL PROTECTED]
http://www.phoenixsoftware.com/

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [EMAIL PROTECTED] with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to