SlideShare a Scribd company logo
1 of 86
COBOL and Computer
Science
Andrew Turley (@casio_juarez)
Papers We Love NYC
April 12, 2017
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
The Relationship Between COBOL And Comp Sci
Relationship Status ...
Computer
Science
COBOL
The Relationship Between COBOL And Comp Sci
Shneiderman presents three perspectives
● Historical
● Technical
● Social/Psychological
History
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”
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
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
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)”
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
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.
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
History -- December 1960
Same program runs on two different computers.
First real cross-platform language!
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
History -- May 1962
Communications of the ACM issue dedicated to COBOL
● 13 articles about COBOL
● Only 4 have references
Technology
Technology
Goals:
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
Technology
Goals:
● Solve business problems
● Cross-platform (“common”)
PROGRAM.CBL
OUTPUT.DAT
Technology
Goals:
● Solve business problems
● Cross-platform (“common”)
● English-like language
PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA.
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”
Technology
COBOL program
● Divisions (IDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE)
○ Sections
■ Paragraphs
● Sentences
○ Statements
Technology
IDENTIFICATION DIVISION.
* program name
ENVIRONMENT DIVISION.
* environment-dependent stuff
DATA DIVISION.
* define record (data) structure
PROCEDURE DIVISION.
* define operations
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.
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.
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 |
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
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
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
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.
Technology
At first there was only one string processing command (INSPECT) and it was
pretty weak
Technology
Every sentence could end with “AND GO TO …”
🍝
Technology
No local variables, no real procedure calls
Psychology
Psychology
Data processing was not seen as an interesting problem
Psychology
Professors were not interested in running “trade schools”
Psychology
English seemed “unscientific”
Conclusions
Conclusions
COBOL ignored academic computer science (for better or worse)
Conclusions
COBOL was widely adopted and used
Conclusions
COBOL was a flawed language
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!
A Brief Introduction to COBOL
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)
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
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.
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.
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 |
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.
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
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
“The Relationship Between COBOL and
Computer Science”
Ben Shneiderman, 1985
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
Historical Perspective
Historical Perspective
“academic computer scientists did not participate in the design team”
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
Historical Perspective
“the COBOL developers apparently had little interest in the academic or scientific
aspects of their work”
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.
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”
Historical Perspective
“the decision of the developers to not use the Backus-Naur Form notation as the
metalanguage to describe COBOL”
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
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
Historical Perspective
“A fourth concern is the process of describing COBOL to the academic and
industrial community”
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”
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”
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
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
Technical Perspective
Successes
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 |
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
Technical Perspectives - Successes
Diverse set of control structures
● IF-THEN-ELSE
● PERFORM
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
Technical Perspectives - Successes
ENVIRONMENT Division
● specify machine or compiler dependencies
Technical Perspectives - Successes
Portability and standardization
● first truly cross-platform language
Technical Perspective
Failures
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
Technical Perspectives - Failures
English-like languages
● supposed to be readable by managers
● “too wordy”, “somehow unscientific”
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.
Technical Perspectives - Failures
Poor string handling
● EXAMINE, TALLYING, REPLACING
● in 1974 added INSPECT, STRING, UNSTRING
Social/Psychological Perspective
Social/Psychological Perspective
“fundamental differences between the computer science and business data
processing communities”
Social/Psychological Perspective
“fundamental differences between the computer science and business data
processing communities”
● dismissed the complexity of the problem of data processing
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
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”

More Related Content

Similar to COBOL and Computer Science

Computer,history,generations,and its types.
Computer,history,generations,and its types.Computer,history,generations,and its types.
Computer,history,generations,and its types.roshan ali
 
Interaction Design History
Interaction Design HistoryInteraction Design History
Interaction Design HistoryMarc Rettig
 
Trading cards of database pioneers - incomplete *DRAFT*
Trading cards of database pioneers - incomplete *DRAFT*Trading cards of database pioneers - incomplete *DRAFT*
Trading cards of database pioneers - incomplete *DRAFT*Damian T. Gordon
 
The History of IBM PC
The History of IBM PCThe History of IBM PC
The History of IBM PCguesta43964
 
History of F#, and the ML family of languages.
History of F#, and the ML family of languages. History of F#, and the ML family of languages.
History of F#, and the ML family of languages. Rachel Reese
 
1.1 Introduction to Operating System .pptx
1.1 Introduction to Operating System .pptx1.1 Introduction to Operating System .pptx
1.1 Introduction to Operating System .pptxSudarshanSharma43
 
Third generation computers (hardware and software)
Third generation computers (hardware and software)Third generation computers (hardware and software)
Third generation computers (hardware and software)La Laland
 
The world's most famous programmers
The world's most famous programmersThe world's most famous programmers
The world's most famous programmersArno Huetter
 
CIKM 2011 Keynote
CIKM 2011 KeynoteCIKM 2011 Keynote
CIKM 2011 Keynotekarger
 
Internet history
Internet historyInternet history
Internet historyhilawrence
 
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdf
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdfAtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdf
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdfquickfix043
 
Computing History Part 1
Computing History  Part 1Computing History  Part 1
Computing History Part 1Ritesh Nayak
 
Intel Compute stick documentation
Intel Compute stick documentationIntel Compute stick documentation
Intel Compute stick documentationGeorgekutty Francis
 
Life and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentLife and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentPersistent Systems Ltd.
 
Final Draft of IT 402 Presentation
Final Draft of IT 402 PresentationFinal Draft of IT 402 Presentation
Final Draft of IT 402 Presentationmonacofamily
 

Similar to COBOL and Computer Science (20)

Computer,history,generations,and its types.
Computer,history,generations,and its types.Computer,history,generations,and its types.
Computer,history,generations,and its types.
 
Interaction Design History
Interaction Design HistoryInteraction Design History
Interaction Design History
 
Trading cards of database pioneers - incomplete *DRAFT*
Trading cards of database pioneers - incomplete *DRAFT*Trading cards of database pioneers - incomplete *DRAFT*
Trading cards of database pioneers - incomplete *DRAFT*
 
The History of IBM PC
The History of IBM PCThe History of IBM PC
The History of IBM PC
 
History of F#, and the ML family of languages.
History of F#, and the ML family of languages. History of F#, and the ML family of languages.
History of F#, and the ML family of languages.
 
1.1 Introduction to Operating System .pptx
1.1 Introduction to Operating System .pptx1.1 Introduction to Operating System .pptx
1.1 Introduction to Operating System .pptx
 
Third generation computers (hardware and software)
Third generation computers (hardware and software)Third generation computers (hardware and software)
Third generation computers (hardware and software)
 
Raspberry-pi-report
Raspberry-pi-reportRaspberry-pi-report
Raspberry-pi-report
 
Ece raspberry-pi-report
Ece raspberry-pi-reportEce raspberry-pi-report
Ece raspberry-pi-report
 
Tech-tonic
Tech-tonicTech-tonic
Tech-tonic
 
The world's most famous programmers
The world's most famous programmersThe world's most famous programmers
The world's most famous programmers
 
CIKM 2011 Keynote
CIKM 2011 KeynoteCIKM 2011 Keynote
CIKM 2011 Keynote
 
Invention Of Computer Essay
Invention Of Computer EssayInvention Of Computer Essay
Invention Of Computer Essay
 
Internet history
Internet historyInternet history
Internet history
 
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdf
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdfAtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdf
AtkinFVFsonDFDFFDFDFDFDFFADASADADADADAS.pdf
 
Computing History Part 1
Computing History  Part 1Computing History  Part 1
Computing History Part 1
 
Intel Compute stick documentation
Intel Compute stick documentationIntel Compute stick documentation
Intel Compute stick documentation
 
Life and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@PersistentLife and work of E.F. (Ted) Codd | Turing100@Persistent
Life and work of E.F. (Ted) Codd | Turing100@Persistent
 
Final Draft of IT 402 Presentation
Final Draft of IT 402 PresentationFinal Draft of IT 402 Presentation
Final Draft of IT 402 Presentation
 
Historyofcomputers
HistoryofcomputersHistoryofcomputers
Historyofcomputers
 

Recently uploaded

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 

Recently uploaded (20)

Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 

COBOL and Computer Science

  • 1. COBOL and Computer Science Andrew Turley (@casio_juarez) Papers We Love NYC April 12, 2017
  • 2. 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
  • 3. The Relationship Between COBOL And Comp Sci Relationship Status ... Computer Science COBOL
  • 4. The Relationship Between COBOL And Comp Sci Shneiderman presents three perspectives ● Historical ● Technical ● Social/Psychological
  • 6. 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”
  • 7. 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
  • 8. 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
  • 9. 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)”
  • 10. 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
  • 11. 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.
  • 12. 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
  • 13. History -- December 1960 Same program runs on two different computers. First real cross-platform language!
  • 14. 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
  • 15. History -- May 1962 Communications of the ACM issue dedicated to COBOL ● 13 articles about COBOL ● Only 4 have references
  • 18. 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
  • 19. Technology Goals: ● Solve business problems ● Cross-platform (“common”) PROGRAM.CBL OUTPUT.DAT
  • 20. Technology Goals: ● Solve business problems ● Cross-platform (“common”) ● English-like language PERFORM REPORT-GENERATION UNTIL END-SAMPLE-DATA.
  • 21. 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”
  • 22. Technology COBOL program ● Divisions (IDENTIFICATION, ENVIRONMENT, DATA, PROCEDURE) ○ Sections ■ Paragraphs ● Sentences ○ Statements
  • 23. Technology IDENTIFICATION DIVISION. * program name ENVIRONMENT DIVISION. * environment-dependent stuff DATA DIVISION. * define record (data) structure PROCEDURE DIVISION. * define operations
  • 24. 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.
  • 25. 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.
  • 26. 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 |
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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.
  • 31. Technology At first there was only one string processing command (INSPECT) and it was pretty weak
  • 32. Technology Every sentence could end with “AND GO TO …” 🍝
  • 33. Technology No local variables, no real procedure calls
  • 35. Psychology Data processing was not seen as an interesting problem
  • 36. Psychology Professors were not interested in running “trade schools”
  • 39. Conclusions COBOL ignored academic computer science (for better or worse)
  • 40. Conclusions COBOL was widely adopted and used
  • 41. Conclusions COBOL was a flawed language
  • 42. 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!
  • 43.
  • 44.
  • 46. 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)
  • 47. 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
  • 48. 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.
  • 49. 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.
  • 50. 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 |
  • 51. 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.
  • 52. 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
  • 53. 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
  • 54. “The Relationship Between COBOL and Computer Science” Ben Shneiderman, 1985
  • 55. 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
  • 57. Historical Perspective “academic computer scientists did not participate in the design team”
  • 58. 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
  • 59. Historical Perspective “the COBOL developers apparently had little interest in the academic or scientific aspects of their work”
  • 60. 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.
  • 61. 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”
  • 62. Historical Perspective “the decision of the developers to not use the Backus-Naur Form notation as the metalanguage to describe COBOL”
  • 63. 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
  • 64. 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
  • 65. Historical Perspective “A fourth concern is the process of describing COBOL to the academic and industrial community”
  • 66. 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”
  • 67. 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”
  • 68. 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
  • 69. 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
  • 71. 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 |
  • 72. 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
  • 73. Technical Perspectives - Successes Diverse set of control structures ● IF-THEN-ELSE ● PERFORM
  • 74. 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
  • 75. Technical Perspectives - Successes ENVIRONMENT Division ● specify machine or compiler dependencies
  • 76. Technical Perspectives - Successes Portability and standardization ● first truly cross-platform language
  • 78. 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
  • 79. Technical Perspectives - Failures English-like languages ● supposed to be readable by managers ● “too wordy”, “somehow unscientific”
  • 80. 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.
  • 81. Technical Perspectives - Failures Poor string handling ● EXAMINE, TALLYING, REPLACING ● in 1974 added INSPECT, STRING, UNSTRING
  • 83. Social/Psychological Perspective “fundamental differences between the computer science and business data processing communities”
  • 84. Social/Psychological Perspective “fundamental differences between the computer science and business data processing communities” ● dismissed the complexity of the problem of data processing
  • 85. 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
  • 86. 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”

Editor's Notes

  1. Hi, my name is Andrew Turley, and today I want to talk to you about COBOL.
  2. This talk is based on a paper called “The Relationship Between COBOL and Computer Science” by Ben Shneiderman. But it is also strongly influenced by Jean Sammet’s “The Early History of COBOL”.
  3. Let’s get this out of the way: the relationship between COBOL and academia has been and still is … frosty.
  4. Shneiderman’s paper presents three perspectives on why. Historical. Technical. And Social/Psychological. The purpose of this talk is to give you some background about COBOL so that you can understand what Sheiderman is talking about.
  5. First, let’s talk about the early history of COBOL
  6. April, 1959. At a meeting of “computer people” at the University of Pennsylvania Computer Center there was a discussion of the need for a machine independent common language.
  7. May 1959. A followup meeting is held to further discuss the need for a common business language. Participants included government and industry employees and consultants. Academia was not well represented.
  8. At the meeting it was decided that there should be three committees that would investigate the creation of a common business language. The committees drew members from these organizations. There were no traditional accademic institutions.
  9. June through December 1959, the short-range committee explored language options to recommend a short-range composite approach that would guide the work of larger committee for the next year or two.
  10. The short-range committee believed their work would be used by the intermediate-range committee, which would have time to develop a really good language.
  11. Unfortunately, that never happened. The recommendations of the short-range committee pretty much turned into COBOL.
  12. Sammet notes that had the short-range committee realized just how long it’s work would be used, they would have gone about their task quite differently.
  13. December 1960. The same program runs on two different computers. COBOL is the this first real cross platform language.
  14. August 1961. “COBOL: A Sample Problem” appears in the Communications of the ACM. It is 7 pages long, consisting of 2 and a half pages of flow charts, 3 pages of code, and no references to other work.
  15. May, 1962. The Communications of the ACM puts out the COBOL issue. There are 13 articles about COBOL. Only 4 have references to other work.
  16. Now let’s talk about COBOL as a technology
  17. In order to understand COBOL, it helps to understand that goals that led to its creation
  18. People wanted a language that could be used to solve business problems. In many cases, this meant reading records from files, combining information from those records, and writing new data out to new files.
  19. People wanted a cross-platform language, so that the same code could run on many different computers. WRITE ONCE, RUN ANYWHERE!
  20. There was a desire to have an English-like language, because it was thought that this would help broaden the group of people who could describe problems to computers. Here’s a PERFORM statement. Notice that you can almost read this as an imperative sentence.
  21. The COBOL committee decided to create a verb-based language that had “few verbs with many options rather than a large number of verbs with a few options”. This meant that there were a smaller number of verbs to remember, but it also meant the syntax for using each verb was less uniform.
  22. COBOL Programs are hierarchical. There are four required divisions. Divisions can have sections. Sections can have paragraphs. Paragraphs can have sentences and sentences are made up of statements.
  23. Here are the parts of a COBOL program. As mentioned, there is an IDENTIFICATION DIVISION, an ENVIRONMENT DIVISION, a DATA DIVISION, and a PROCEDURE DIVISION.
  24. The IDENTIFICATION DIVISION is where the programmer specifies the program name. It can also hold information about things like the programmer’s name and the date on which the program was created.
  25. The ENVIRONMENT DIVISION contains environment-specific information for the program. The idea was that all of the things that were not portable between platforms could be isolated into this section.
  26. The DATA DIVISION defines the structure of the input and output records in the FILE SECTION. Records are hierarchical, so SAMPLE-NAME can be used to refer to the part of the record that contains both the first and last name. The WORKING-STORAGE section defines variables and constants. All variables are global.
  27. The PROCEDURE DIVISION contains the logic of the program. This particular program reads input records with names and birthdates, and prints out records of names and the generation that the person is from.
  28. The program is broken up into two paragraphs, one called BEGIN and the other called REPORT-GENERATION. The sentences in a paragraph are indented.
  29. The PERFORM verb is effectively a subroutine call. The UNTIL modifier means that it acts like a while statement, repeatedly transferring control to the REPORT-GENERATION paragraph until the sentinel value END-SAMPLE-DATA is set to TRUE.
  30. Check out this nested if-else statement. One thing about early COBOL was that the period ended the entire sentence. In this case, if you left off the period then the next line, the one that begins with DISPLAY, would be part of the ELSE clause. It was easy to forget a period, and easy to miss it when reading code, so this kind of bug was common. Later version of COBOL added an END-IF.
  31. There were some common technical complaints about the language. Early version of the language only had one string processing verb, INSPECT, which could only be used to count the number of occurrences of a substring, and do simple find and replace.
  32. Every sentence could end with “AND GO TO”, which led to code that was hard to follow.
  33. All variables were global. This made it important to coordinate work between programmers who were working on the same program. There were no parameterized procedure calls, only subroutine calls via PERFORM. Recursion was not supported. A mathematical notation of function calls was discussed early in the design of the language, but rejected as being too hard for non-mathematicians to understand.
  34. Shneiderman proposes a number of what he calls social and psychological reasons for the rejection of cobol by the computer science community.
  35. Data processing was not seen as an interesting problem. It was considered quite simple, compared to things like physical simulation and systems modeling.
  36. Professors felt that teaching COBOL, a language widely used in industry, would reduce their universities to “trade schools” that simply prepared students for jobs.
  37. COBOL’s english-like syntax seemed imprecise and unscientific.
  38. In the end, what can we say?
  39. COBOL was created with almost no input from academic computer science. In many ways, such as the decision to not include functions, it actively rejected an academic orientation.
  40. COBOL was widely adopted and used. It was a good enough language, and it had the backing of some of the biggest and most powerful organizations in the country. In some ways, this popularity hurt COBOL in the eyes of academics.
  41. COBOL was a flawed language. Jean Sammet and others involved in its development have spoken over the years about things that they might have done differently. However, it is important to remember that many of the decisions that were made seemed very reasonable at the time, and better alternatives were not discovered until later.
  42. Thank you very much for being here. I’d like to thank the Papers We Love crew for inviting me here, and William Byrd for not running in horror when he heard i was speaking before him. If you’re interested in learning more about COBOL’s history, here are a few places you can start.