cobol, lisp, and python
DESCRIPTION
COBOL, LISP, and Python. Joseph Hoeppner. COBOL Background. Released in 1959 Grace Hopper Industry, universities, and government collaboration Cold War pressures 80% of business transactions 65% of all code is in COBOL. COBOL – Why?. Software Lifecycle Cheaper to maintain Y2K - PowerPoint PPT PresentationTRANSCRIPT
COBOL, LISP, and Python
Joseph Hoeppner
COBOL Background
Released in 1959 Grace Hopper Industry, universities, and government collaboration Cold War pressures
80% of business transactions
65% of all code is in COBOL
COBOL – Why?
Software Lifecycle Cheaper to maintain
Y2K
Self-documenting code Verbose
“IF a < b AND > c …” Divisions
COBOL – Why?
Divisions Identification Division Environment Division Data Division Procedure Division
COBOL – Data Division
Data Division Pictures
9 = digit X = any character A = alphabetic character V = decimal point position S = sign
Repeats PIC 9 (4) = 9999
COBOL – Groups and Elementary data
COBOL
Reliability Stood test of time Has “ALTER X TO PROCEED TO Y” (a negative) Uses GOTO statements (a negative)
Today Cross platform: OpenCOBOL C translation IDEs (Net Express)
COBOL - Summary
Readability
Writability
Reliability
Portability
LISP
LISt Processing List-based language
2nd High-level language
1958 – John McCarthy for MIT
LISP - Syntax
Function call: “(fun arg1 arg2)” (+ 1 2 3)
Lists (list ‘3 ‘7 ‘apples)
(3 7 apples)
(list ‘13 list(‘3 ‘5)) (13 (3 5))
LISP – Innovations
Garbage Collection
If else statements
Recursion
LISP – Linked Lists
Car (first)
Cdr (rest)
LISP - Examples
If then else (if nil
(list ‘2 ‘3)(list ‘5 ‘6))
One line variant: (if nil (list ‘2 ‘3) (list ‘5 ‘6))
LISP - Examples
Factorial (defun factorial (n)
(if (<= n 1)1(* n (factorial (- n 1)))))
One line variant: (defun factorial (n) (if (<= n 1) 1 (* n (factorial (- n 1)))))
LISP - Examples
Recursive List Size (defun recursiveSize (L)
(if (null L)
0
(1+ (recursiveSize(rest L)))))
LISP - Examples
Recursive List Sum with “LET” (defun sum (L)
(if (null L)
0
(let
((S1 (first L))
(S2 (sum (rest L))))
+ S1 S2)))
LISP- Summary and Comparison
Readability
Writability
Reliability
Python
Developed early 1990’s Guido van Rossum ABC language
Python 2.0 2000 Community-supported -> reliability
Modular; community expandable
Python 3.0 2008
Python – Readability is Key
Design goal One way to do things Clarity over clever code Whitespace over braces “pass” for No-Op
Python
Writability Similar to other OO languages Verification support
Interpreted, assert, no statements in conditions Clean style Few keywords Simple grammar -> few ways to do something
Python
Comparisons == tests values, not references
A < b <= C works properly
Ternary operator readable “a if b else c”
Python
System Requirements Cross platform Python Interpreter
Simplicity Small core language Large libaraies
Python - Examples
a = 15
if(a < 10):
print(“input less than 10”)
elif(10 < a < 20):
print(“input between 10 and 20”)
else:
print(“input greater than 20”)
Python - Examples
Function definitiondef greatest(a, b, c):
largest = a if a > b else b
largest = largest if largest > c else c
print(largest)
Function callgreatest(7, 3, 14)
14
Python - Examples
Determine if primedef isPrime(num):
prime = True
for i in range(2, (num / 2) + 1):
if num % i == 0:
prime = False
return prime
def tenPrimes():
list = []
count = 0
current = 2
#store the first 10 primes in a list
while count < 10:
if isPrime(current):
count += 1
list.append(current)
current = current + 1
#print the list
for element in list:
print(element)
Python - Summary and Comparison
Readability
Writability
Reliability
Python - Examples
Demo