COBOL, LISP, and Pythonx
Download
Report
Transcript COBOL, LISP, and Pythonx
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 definition
def greatest(a, b, c):
largest = a if a > b else b
largest = largest if largest > c else c
print(largest)
Function call
greatest(7, 3, 14)
14
Python - Examples
Determine if prime
def 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