Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Andrew Turley on The Relationship Between COBOL...

Andrew Turley on The Relationship Between COBOL and Computer Science by Ben Schneiderman

In 1960, two different computers compiled and ran the same COBOL program. Twenty-five years later COBOL was considered a grand success in industry and was barely mentioned, except critically, in academia. Shneiderman looks at COBOL's relationship to industry and academia, discusses COBOL's strengths and weaknesses, and describes the contributions that it made to the fields of computer science and computer engineering.

This paper draws heavily from Jean Sammet's "An Early History of COBOL" (http://dl.acm.org/citation.cfm?id=1198367). Reading Sammet's paper is not required to understand what Shneiderman is talking about, but it does provide a great deal of additional background information.

Papers_We_Love

April 12, 2017
Tweet

More Decks by Papers_We_Love

Other Decks in Programming

Transcript

  1. The paper ... “The Relationship Between COBOL and Computer Science”

    Ben Shneiderman Annals of the History of Computing ( Volume: 7, Issue: 4, Oct.-Dec. 1985 ) But also: “The Early History of COBOL” by Jean Sammet
  2. The Relationship Between COBOL And Comp Sci Shneiderman presents three

    perspectives • Historical • Technical • Social/Psychological
  3. History -- April 1959 At a meeting of “computer people”

    at the University of Pennsylvania Computer Center there is a discussion of the need for a “machine independent common language”
  4. History -- May 1959 Meeting held at the Pentagon to

    discuss the need for a common business language About 40 participants: • 15 from government • 11 users and consultants • 15 representatives of manufacturers
  5. History -- May 1959 (continued) Three committees were created to

    develop a programming language (executive, short-range, long-range) with members from … • David Taylor Model Basin • Sylvania Electric Products • Sperry Rand • US Steel • DuPont • Air Materiel Command • NCR • USA - Signal Corps ADPS School • National Bureau of Standards • Department of the Navy • IBM • US Air Force • Honeywell • RCA • Burroughs
  6. History -- June - December 1959 The short-range committee explores

    language options “to recommend a short-range composite approach (good for at least the next year or two)”
  7. History -- June - December 1959 “It was definitely felt

    that the Intermediate-Range Committee would have the time and resources to develop a really good business data processing language.” -- Sammet
  8. History -- June - December 1959 “It was definitely felt

    that the Intermediate-Range Committee would have the time and resources to develop a really good business data processing language.” -- Sammet Narrator Voice: They didn’t.
  9. History -- June - December 1959 “I am certainly convinced

    in my own mind that had the Short-Range Committee realized at the outset that the language it created was going to be in use for such a long period of time, it would have gone about the task quite differently.” -- Sammet
  10. History -- December 1960 Same program runs on two different

    computers. First real cross-platform language!
  11. History -- August 1961 “COBOL: A Sample Problem” appears in

    Communications of the ACM 7 pages long: • 2.5 pages of flow charts • 3 pages of code • 0 references
  12. History -- May 1962 Communications of the ACM issue dedicated

    to COBOL • 13 articles about COBOL • Only 4 have references
  13. Technology Goals: • Solve business problems EMPLOYEES.DAT JOHN SMITH 13

    SALLY JONES 42 ROCK MANLY 42 ... PROJECTS.DAT DEATH-RAY 13 SHARK-BOMB 42 KITTEN-TOES 78 ... PROJECT-HEADCOUNT.DAT DEATH-RAY 01 SHARK-BOMB 02 KITTEN-TOES 00 ... CREATE- PROJECT- HEADCOUNT. CBL
  14. Technology Goals: • Solve business problems • Cross-platform (“common”) •

    English-like language PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA.
  15. Technology Goals: • Solve business problems • Cross-platform (“common”) •

    English-like language • Verb-base language, “few verbs with many options rather than a large number of verbs with a few options”
  16. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations
  17. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE. AUTHOR. CASIO JUAREZ. DATE-WRITTEN. 04/06/17.
  18. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SAMPLE-FILE ASSIGN TO "S.DAT" ORGANIZATION IS LINE SEQUENTIAL.
  19. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations DATA DIVISION. FILE SECTION. FD SAMPLE-FILE. 01 SAMPLE-DATA. 88 END-SAMPLE-DATA VALUE HIGH-VALUES. 02 SAMPLE-NAME. 03 FIRST-NAME PIC X(8). 03 LAST-NAME PIC X(8). 02 DATE-OF-BIRTH. 03 YOB PIC 9(4). 03 MOB PIC 9(2). 03 DOB PIC 9(2). WORKING-STORAGE SECTION. 01 GENERATION PIC X(10). 01 BOOMER PIC X(10) VALUE "boomer". 01 GEN-X PIC X(10) VALUE "gen X". 01 MILLENNIAL PIC X(10) VALUE "millennial". 01 UNKNOWN PIC X(10) VALUE "???". * define record (data) structure Input Record Format (SAMPLE-DATA): |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _|_ _ _ _|_ _|_ _| | FIRST-NAME | LAST-NAME | YOB |MOB|DOB| | SAMPLE-NAME | DATE-OF-BIRTH | | SAMPLE-DATA |
  20. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X ELSE SET GENERATION TO UNKNOWN. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. Input Record Format (SAMPLE-DATA): |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _|_ _ _ _|_ _|_ _| | FIRST-NAME | LAST-NAME | YOB |MOB|DOB| John Smith 19500210 Stacy Jones 19781015 Kendra Manning 19840323
  21. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * machine-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X ELSE SET GENERATION TO UNKNOWN. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. Paragraphs Significant whitespace
  22. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * machine-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X ELSE SET GENERATION TO UNKNOWN. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM
  23. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * machine-dependent

    stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X ELSE SET GENERATION TO UNKNOWN. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE.
  24. Thanks! Further Reading • “The Relationship Between COBOL and Computer

    Science” Ben Shneiderman • “The Early History of COBOL” Jean Sammet • “Learning To Program In Structured COBOL: Parts 1 & 2” Yourdon et al • Communications of the ACM, May 1962 • Micro Focus (microfocus.com) -- Go to a COBOL Dev Day!
  25. A Brief Introduction to COBOL COmmon → write once, run

    anywhere! Business Oriented → record processing, extract-transform-load (ETL) Language → English-like syntax (verbs, nouns, sentences, paragraphs)
  26. A Brief Introduction to COBOL -- Code IDENTIFICATION DIVISION. *

    program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations
  27. A Brief Introduction to COBOL -- Code IDENTIFICATION DIVISION. *

    program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations IDENTIFICATION DIVISION. PROGRAM-ID. SAMPLE.
  28. A Brief Introduction to COBOL -- Code IDENTIFICATION DIVISION. *

    program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT SAMPLE-FILE ASSIGN TO "S.DAT" ORGANIZATION IS LINE SEQUENTIAL.
  29. A Brief Introduction to COBOL -- Code IDENTIFICATION DIVISION. *

    program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations DATA DIVISION. FILE SECTION. FD SAMPLE-FILE. 01 SAMPLE-DATA. 88 END-SAMPLE-DATA VALUE HIGH-VALUES. 02 SAMPLE-NAME. 03 FIRST-NAME PIC X(8). 03 LAST-NAME PIC X(8). 02 DATE-OF-BIRTH. 03 YOB PIC 9(4). 03 MOB PIC 9(2). 03 DOB PIC 9(2). WORKING-STORAGE SECTION. 01 GENERATION PIC X(10). 01 BOOMER PIC X(10) VALUE "boomer". 01 GEN-X PIC X(10) VALUE "gen X". 01 MILLENNIAL PIC X(10) VALUE "millennial". 01 UNKNOWN PIC X(10) VALUE "???". * define record (data) structure Input Record Format (SAMPLE-DATA): |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _|_ _ _ _|_ _|_ _| | FIRST-NAME | LAST-NAME | YOB |MOB|DOB| | SAMPLE-NAME | DATE-OF-BIRTH | | SAMPLE-DATA |
  30. A Brief Introduction to COBOL -- Code IDENTIFICATION DIVISION. *

    program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. SET GENERATION TO UNKNOWN. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE.
  31. A Brief Introduction to COBOL -- Historical Position Steve Russell

    writes the first implementation of LISP → (early? late?) 1959 Discussion of developing “a problem-oriented but machine independent common language for business problems” → UPenn April, 1959 “Recursive Functions of Symbolic Expressions And Their Computation By Machine” → CACM April, 1960 “Essentially the same COBOL program was run on [two computers]” → December 1960 “COBOL: a sample problem” → CACM August, 1961 The COBOL issue → CACM May, 1962
  32. A Brief Introduction to COBOL -- Assumptions Technical • business

    users want to read records from files, process them, and write new records to other files • records have a fixed number of fixed-size fields • files are generally stored on separate storage media (like tapes) Non-Technical • “managers” (non-technical people) should be able to read and write code • making a programming language similar to a “real” language will make it easier to read and write • mathematical notation is off-putting
  33. The Relationship Between COBOL and Comp Sci “For a computer

    scientist to write sympathetically about COBOL is an act bordering on heresy.” Historical Perspective Technical Perspective Social/Psychological Perspective
  34. Historical Perspective “academic computer scientists did not participate in the

    design team” COBOL contributors came from: US Air Force Honeywell RCA Burroughs Corporation David Taylor Model Basin Sylvania Electric Products IBM Speary Rand Bureau of Ships US Steel Corporation DuPont Company Air Materiel Command NCR USA - Signal Corps
  35. Historical Perspective “the COBOL developers apparently had little interest in

    the academic or scientific aspects of their work”
  36. Historical Perspective “the COBOL developers apparently had little interest in

    the academic or scientific aspects of their work” CACM of May 1962 was dedicated to COBOL, only four papers had any references.
  37. Historical Perspective “the COBOL developers apparently had little interest in

    the academic or scientific aspects of their work” CACM of May 1962 was dedicated to COBOL, only four papers had any references. But … “Thus, of 15 papers presented at an Office of Naval Research (ONR) symposium on automatic programming for digital computers in May 1954 [2], only two have separate acknowledgements and none refers to other papers.” -- Backus, “Programming in America in the 1950s- Some Personal Impressions”
  38. Historical Perspective “the decision of the developers to not use

    the Backus-Naur Form notation as the metalanguage to describe COBOL”
  39. Historical Perspective “the decision of the developers to not use

    the Backus-Naur Form notation as the metalanguage to describe COBOL” COBOL Committee invented their own specification language
  40. Historical Perspective “the decision of the developers to not use

    the Backus-Naur Form notation as the metalanguage to describe COBOL” COBOL Committee invented their own specification language BNF first used to describe ALGOL 60 “Specification Languages for Mechanical Languages And Their Processors …” includes BNF, along with others → Gorn, ACM December, 1961
  41. Historical Perspective “A fourth concern is the process of describing

    COBOL to the academic and industrial community”
  42. Historical Perspective “A fourth concern is the process of describing

    COBOL to the academic and industrial community” Translation: For a long time there were no good books “emphasizing the conceptual foundations of COBOL”
  43. Historical Perspective “the people who might have accepted the title

    of computer scientist in 1960 were not interested in the problem domain of COBOL programs”
  44. Historical Perspective “the people who might have accepted the title

    of computer scientist in 1960 were not interested in the problem domain of COBOL programs” COBOL was good at: • data processing
  45. Historical Perspective “the people who might have accepted the title

    of computer scientist in 1960 were not interested in the problem domain of COBOL programs” COBOL was good at: • data processing Computer scientists were interested in: • numerical analysis • physics • engineering • systems programming
  46. Technical Perspectives - Successes Record Structure • aggregation of dissimilar

    items • hierarchy of names for fields DATA DIVISION. FILE SECTION. FD SAMPLE-FILE. 01 SAMPLE-DATA. 88 END-SAMPLE-DATA VALUE HIGH-VALUES. 02 SAMPLE-NAME. 03 FIRST-NAME PIC X(8). 03 LAST-NAME PIC X(8). 02 DATE-OF-BIRTH. 03 YOB PIC 9(4). 03 MOB PIC 9(2). 03 DOB PIC 9(2). WORKING-STORAGE SECTION. 01 GENERATION PIC X(10). 01 BOOMER PIC X(10) VALUE "boomer". 01 GEN-X PIC X(10) VALUE "gen X". 01 MILLENNIAL PIC X(10) VALUE "millennial". 01 UNKNOWN PIC X(10) VALUE "???". * define record (data) structure Input Record Format (SAMPLE-DATA): |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _|_ _ _ _|_ _|_ _| | FIRST-NAME | LAST-NAME | YOB |MOB|DOB| | SAMPLE-NAME | DATE-OF-BIRTH | | SAMPLE-DATA |
  47. Technical Perspectives - Successes “[S]eparation of data definition from procedural

    aspects” IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * machine-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations
  48. Technical Perspectives - Successes COPY keyword (kind of like “include”,

    copied content of a file into a program) • organizational standards were easily enforced • improved cooperation • encouraged code reuse
  49. Technical Perspectives - Failures No local variables • required careful

    coordination of collaborators • in 1974 CALL-USING was added, permitted parameters and runtime creation of procedure names
  50. Technical Perspectives - Failures English-like languages • supposed to be

    readable by managers • “too wordy”, “somehow unscientific”
  51. Technical Perspectives - Failures Poor control flow readability • originally,

    IF blocks were terminated with a period (“.”), which was easily missed when reading code PROCEDURE DIVISION. BEGIN. OPEN INPUT SAMPLE-FILE. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE. PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA. CLOSE SAMPLE-FILE. STOP RUN. REPORT-GENERATION. SET GENERATION TO UNKNOWN. IF YOB >= 1980 SET GENERATION TO MILLENNIAL ELSE IF YOB >= 1946 AND YOB < 1965 SET GENERATION TO BOOMER ELSE IF YOB >= 1965 AND YOB < 1980 SET GENERATION TO GEN-X. DISPLAY FIRST-NAME SPACE LAST-NAME SPACE GENERATION. READ SAMPLE-FILE AT END SET END-SAMPLE-DATA TO TRUE.
  52. Technical Perspectives - Failures Poor string handling • EXAMINE, TALLYING,

    REPLACING • in 1974 added INSPECT, STRING, UNSTRING
  53. Social/Psychological Perspective “fundamental differences between the computer science and business

    data processing communities” • dismissed the complexity of the problem of data processing
  54. Social/Psychological Perspective “fundamental differences between the computer science and business

    data processing communities” • dismissed the complexity of the problem of data processing • had difficulty describing data processing problems with their theories
  55. Social/Psychological Perspective “fundamental differences between the computer science and business

    data processing communities” • dismissed the complexity of the problem of data processing • had difficulty describing data processing problems with their theories • “university professors did not like dealing with current practice”