320 likes | 543 Views
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
E N D
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 • 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 • (defunrecursiveSize (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 defisPrime(num): prime = True for i in range(2, (num / 2) + 1): if num % i == 0: prime = False return prime
deftenPrimes(): 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