COBOL, LISP, and Python

Post on 09-Feb-2016

61 views 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 of COBOL, LISP, and Python

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