I transcribed this from a talk given by Fred Brooks, Jr. on the 40th year 
anniversary of the System 360. This is a wonderful talk given by the people who 
were involved in the original design, recorded at the Computer History Museum. 
This is what Fred Brooks said about JCL: 

I tell my students, OS/360 Job Control Language is the worst programming 
language ever designed anywhere by anybody for any purpose and it was done 
under my management. Why is it? Well, I think there is an important take home 
lesson for us all in it. One is, it is one job control language for all six of 
these programming languages. Whereas what you really want is a schedule time 
operation in whatever language you're working in. Just like you have compile 
time operations in whatever language you're working in. Then at the very time 
we were moving the whole world to high level languages, such that at our 
computing center at Chapel Hill the year after the 360s were operating, only 1 
percent of the jobs that ran were assembler, 99 percent were in high level 
languages, but the JCL was modeled on assembler rather than any of the high 
level languages. But it wasn't exactly like the assembler. And it was card 
column dependent. Column 73 was magic. And for years afterwards you sit do!
 wn to a terminal and you wonder why column 73. Well it had to do with the fact 
that the cards on a 701 read in two sets of 36 bits and that used 72 columns. 
And JCL still preserves this column dependence. JCL was designed to have only 
six verbs. Well it turns out a schedule time language needs more than six 
verbs. But it was an article of faith that we were only going to have six verbs 
and so we put all the verby things into declarations. The DD cards do all the 
verby things, and parameters. The language has awkward, possible but awkward 
branching. It has no clean iteration, no for statement. No clean subroutine 
call. It is not really a good programming language. In fact it is the worst 
programming language. Now, how did a smart bunch of people get into this mess? 
This is where the lesson is: We did not see it as a programming language. From 
the beginning it was seen as a few control cards that would go in front of your 
deck. Anybody seen a JCL deck recently? They are norma!
 lly known as a "dusty" deck. Why is it a dusty deck? Because you get s
omeone else's and you darst not change it. Why is it a deck? Because there are 
a lot of control cards by the time you get all these DD's and declarations and 
verby things in. But we didn't see it as a programming language. We saw it as a 
few control cards. And the other thing is, that it wasn't designed -- we had 
very good programming language designers, and they designed some very good 
programming languages, Fortran 6, Fortran H, PL/1, an improved RPG, various 
other improved programming languages -- but this was not tackled that way. 
Instead it just grew a parameter here, and a parameter there. So many things 
were done so right, and every now and then something was really royally messed 
up with superb competence.

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

Reply via email to