cobol, lisp, and python

32
COBOL, LISP, and Python Joseph Hoeppner

Upload: eryk

Post on 09-Feb-2016

68 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: COBOL, LISP, and Python

COBOL, LISP, and Python

Joseph Hoeppner

Page 2: COBOL, LISP, and Python

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

Page 3: COBOL, LISP, and Python

COBOL – Why?

Software Lifecycle Cheaper to maintain

Y2K

Self-documenting code Verbose

“IF a < b AND > c …” Divisions

Page 4: COBOL, LISP, and Python

COBOL – Why?

Divisions Identification Division Environment Division Data Division Procedure Division

Page 5: COBOL, LISP, and Python

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

Page 6: COBOL, LISP, and Python
Page 7: COBOL, LISP, and Python

COBOL – Groups and Elementary data

Page 8: COBOL, LISP, and Python
Page 9: COBOL, LISP, and Python

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)

Page 10: COBOL, LISP, and Python

COBOL - Summary

Readability

Writability

Reliability

Portability

Page 11: COBOL, LISP, and Python

LISP

LISt Processing List-based language

2nd High-level language

1958 – John McCarthy for MIT

Page 12: COBOL, LISP, and Python
Page 13: COBOL, LISP, and Python

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))

Page 14: COBOL, LISP, and Python

LISP – Innovations

Garbage Collection

If else statements

Recursion

Page 15: COBOL, LISP, and Python

LISP – Linked Lists

Car (first)

Cdr (rest)

Page 16: COBOL, LISP, and Python
Page 17: COBOL, LISP, and Python

LISP - Examples

If then else (if nil

(list ‘2 ‘3)(list ‘5 ‘6))

One line variant: (if nil (list ‘2 ‘3) (list ‘5 ‘6))

Page 18: COBOL, LISP, and Python

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)))))

Page 19: COBOL, LISP, and Python

LISP - Examples

Recursive List Size (defun recursiveSize (L)

(if (null L)

0

(1+ (recursiveSize(rest L)))))

Page 20: COBOL, LISP, and Python

LISP - Examples

Recursive List Sum with “LET” (defun sum (L)

(if (null L)

0

(let

((S1 (first L))

(S2 (sum (rest L))))

+ S1 S2)))

Page 21: COBOL, LISP, and Python

LISP- Summary and Comparison

Readability

Writability

Reliability

Page 22: COBOL, LISP, and Python

Python

Developed early 1990’s Guido van Rossum ABC language

Python 2.0 2000 Community-supported -> reliability

Modular; community expandable

Python 3.0 2008

Page 23: COBOL, LISP, and Python

Python – Readability is Key

Design goal One way to do things Clarity over clever code Whitespace over braces “pass” for No-Op

Page 24: COBOL, LISP, and Python

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

Page 25: COBOL, LISP, and Python

Python

Comparisons == tests values, not references

A < b <= C works properly

Ternary operator readable “a if b else c”

Page 26: COBOL, LISP, and Python

Python

System Requirements Cross platform Python Interpreter

Simplicity Small core language Large libaraies

Page 27: COBOL, LISP, and Python

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”)

Page 28: COBOL, LISP, and Python

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

Page 29: COBOL, LISP, and Python

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

Page 30: COBOL, LISP, and Python

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)

Page 31: COBOL, LISP, and Python

Python - Summary and Comparison

Readability

Writability

Reliability

Page 32: COBOL, LISP, and Python

Python - Examples

Demo