Programming Merit Badge
When I was your age…
Programming Merit Badge
Do Tonight | Do at Home | Show Me |
---|---|---|
Workbook for | Three Programs | Pick a career |
#1 - #4 | #5 | #6 |
Safety
Do We Need Goggles?
Protect your Eyes
Save your Wrists
History
Programming has Evolved
The History of Programming Languages is similar to Evolution of Life
Evolution isn’t a “Line”
Evolution is a Bushy Tree
Some Languages are Extinct
(~R∊R∘.×R)/R←1↓ιR X[⍋X+.≠' ';] life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}
Some Old Languages are Still Used
Lisp?
Have a Lot of New Languages
Ruby?
Some New Languages look Old
Go?
Early Computers
Mechanical Adder
Jacquard Loom
- Joseph Marie Jacquard, 1801
- Controlled by Changeable punched cards
Charles Babbage
- Difference Engine, a calculator, 1822 (completed in 1991)
- Analytic Engine, a computer programmed with punch cards
Ada Lovelace
Lovelace describe an algorithm, 1843
Milestone 1: Machines could change and be programmed
Tabulator and Keypunch
- Hollerith made a machine to read data
- Founded Tabulating Machine Company (IBM), 1896
- First computer, Atansoff-Berry Computer solved linear equations
- Not programmable
Colossus and Bombe
- Germans created Enigma
- Allied created Colossus to break encryption
- First programmable computers
- Alan Turing described
- Grace Hopper debugged Mark II, 1947
EDSAC
- First practical
- Calculated a table of squares and prime numbers
Machine Code / Assembly
Fortran
- Formula Translation
- Invented John Backus, 1957
- Working on 2018 specification
Use: Supercomputing and engineering applications
Milestone 2: Programmer doesn’t worry about the hardware
Spacewar!
- First computer game, Steve Russell, 1961
Showed it to Nolan Bushnell who made an arcade game
(See this visual guide)
FLOW-MATIC and COBOL
- Invented by Admiral Grace Hopper
- Not mathematical, but English-like
Use: Business applications
(Terminator Screenshot)
LISP
- Invented by John McCarthy, 1958
- Pure math rendered for computers
- Use: Artificial Intelligence
- Still used, and many flavors:
- Common Lisp
- Scheme
- Racket
- Clojure
Summary: Milestones
- Hardware that Could Change… First Programs
- High-level languages better than hardware
- Languages completely ignore hardware
Languages
Remember to take pictures of each language’s creator, ala this page.
Ten Languages in Ten Minutes
Scratch … Games
mitchel-resnick.jpg
VisualBasic … Office
Arduino (Processing) … Hardware
C … Operating Systems
Java … Business
JavaScript … Web Interfaces
Lisp … Artificial Intelligence
(defun convert-temperature (&optional fahrenheit celsius) (interactive) (let* ((fahrenheit (read-number "Enter a number in degress Fahrenheit: " 70.0)) (celcius (round (* (- fahrenheit 32.0) (/ 5.0 9.0))))) (insert (format "%d degress Fahrenheit is %d degress Celcius. " fahrenheit celcius)) (if (<= celcius 0) (insert (format "Remember to pack long underwear. %c" ?\n))) (if (>= fahrenheit 100) (insert (format "Rembember to keep hydrated. %c" ?\n)))) (let ((again (read-char-choice "Would you like to do another calculation? 'y'=yes 'n'=no " (list ?y ?n)))) (if (char-equal ?y again) (convert))))