Title: What makes a good language
1What makes a good language
- Does the task you want
- Keeps you from making mistakes
- Supports debugging when you need it
- Has a strong tool kit
2Big number bug
On June 4, 1996 an unmanned Ariane 5 rocket
launched by the European Space Agency exploded
just forty seconds after its lift-off from
Kourou, French Guiana. The rocket was on its
first voyage, after a decade of development
costing 7 billion. The destroyed rocket and its
cargo were valued at 500 million. A board of
inquiry investigated the causes of the explosion
and in two weeks issued a report. It turned out
that the cause of the failure was a software
error in the inertial reference system.
Specifically, a 64 bit floating point number
relating to the horizontal velocity of the rocket
with respect to the platform was converted to a
16 bit signed integer. The number was larger than
32,768, the largest integer that could be stored
in a 16 bit signed integer, and so the conversion
failed.
3Pentium II bug
- Software bug encoded in hardware
- Division algorithm uses a lookup table of 1066
entries - Only 1061 of the entries are downloaded to the
PLA (programmed logic array from which the data
are used) - Intel had to recall all versions of the chip
4Syntax typo bugs
- NASA Mariner 1 , Venus probe (1992)
- Intended to be the first US spacecraft to visit
another planet, it was destroyed by a range
officer on 22 July 1962 when it behaved
erratically four minutes after launch. - Essentially a period instead of a comma in a
FORTRAN DO-Loop
5Control flow bug
- ATT long distance service fails for nine
hours(Wrong BREAK statement in C code) - January 15, 1990
- 70 million of 138 million long distance customers
in the US lost long distance service. - Cost to ATT was between 75 Million and 100
Million (plus the loss of good will).
6Data structure management bug
- E-mail buffer overflow (1998)
- Several E-mail systems suffer from a "buffer
overflow error", when extremely long e-mail
addresses are received. The internal buffers
receiving the addresses do not check for length
and allow their buffers to overflow causing the
applications to crash. Hostile hackers use this
fault to trick the computer into running a
malicious program in its place.
7Summary
- Programming is difficult
- Have to thoroughly understand the task
- Have to anticipate all possibilities
- Code is written at a fairly primitive level
- Impossible to anticipate what users might do
- Programming languages allow the user to use tools
to build code - But everything still has bugs
- The cost of a bug can be very large
- There is no Moores Law for software.
8The big picture
- We built a computer
- We talked about languages and compilers to make
programming the computer easier - Next we talk about algorithms, which are
implemented by programs
9Algorithms
- Recipes for doing computations
- The underpinnings of programming
- Think out your algorithm
- Show that it works
- Determine its efficiency
- Write it as a program
10What is an algorithm
- Algorithm is a recipe
- Has
- Inputs
- Rules
- Evaluation Criteria
- Output
11When Do We Use Algorithms
- When we have a problem to solve
- Examples of problems
- Baking cookies
- Putting things in alphabetical order
- Searching the Web
12Chocolate chip cookies
13Chocolate chip cookies
- Input
- flour (2 ¼ c)
- baking soda (1t)
- salt (1t)
- butter (1c)
- granulated sugar (3/4 c)
- brown sugar(3/4c)
- vanilla(1t)
- eggs (2)
- chocolate chip morsels (2c)
- chopped nuts (1c)
- Output
- 5 dozen cookies
14Chocolate chip cookies Steps
- Combine flour, baking soda, and salt in small
bowl. - Beat butter, granulated sugar, brown sugar and
vanilla in large bowl - Add eggs one at a time Beating after adding each
egg - Gradually beat in flour mixture
- Stir in morsels and nuts
- Drop by rounded tablespoons onto ungreased baking
sheets - Bake 9-11 minutes
- Let stand for 2 minutes
15Chocolate chip cookie algorithm
- Primitives
- Inputs
- Flour, baking soda, salt, butter, brown sugar,
granulated sugar, vanilla, egg, morsels, nuts - Alternatively, chocolate chip cookie mix
- Alternatively, wheat, sugar cane,
- Operators
- Combine, Beat, Gradually beat, Stir, Drop, Bake,
Let stand
16Chocolate chip cookie algorithm
- Execution
- First 2 steps can be done in parallel?
- Parbegin (Combine(),Beat()) Parend
- Machine dependencies
- Ovens vary (Bake 9-11 minutes)
- Ingredients vary and so need to be handled
differently
17Chocolate chip cookie algorithm
- Algorithm testing
- Proof of the pudding is in the eating
- How do we mechanize this?
18Chocolate chip cookie algorithm
- Comparing different algorithms
- Quality of results
- User time
- Machine (oven) time
19Putting things in alphabetical order
- Data set sizes
- Course list for COS 111 10-15 students
- PU directory assistance 10,000 people
- Manhattan phone book 1 million people
- Social Security database 1 billion records
- Long distance call billing records 100
billion/year - Different methods for different tasks
- Fast for large
- Simple for small
20A simple method for sorting
- Find smallest value -- put it first in list
- Find second smallest value -- put it second
-
- Find next smallest value put it next
-
- When no more values, youre done
21How it works
22How it works
Find smallest value -- put it first in list
23How it works
Find second smallest value -- put it second
24How it works
Finish the sorting
25A simple method for sorting
- To sort array x x1,x2, , xn
- For I 1 to n
- For J I1 to n
- If (xI gt xJ) Then swap their values
- next
- next
26Another sorting algorithm
- Sorting by Merging
- Key idea ? Its easy to merge 2 sorted lists
27Merging 2 sorted lists
28Merging 2 sorted lists
Start at the top of each list
29Merging 2 sorted lists
190 is bigger than 155
30Merging 2 sorted lists
Record 155 and move the arrow
31Merging 2 sorted lists
190 is less than 255
32Merging 2 sorted lists
219 is less than 255
33Merging 2 sorted lists
255 is less than 463
34Merging 2 sorted lists
Finished when at the end of each list
35Sorting by Merging
- Key idea ? Its easy to merge 2 sorted lists
- Sort larger lists by
- Sorting smaller lists
- Merging the results
- How do we sort smaller lists?
36Sort then merge
Subdivide
37Sort then merge
Sort pieces By merging
Subdivide
38Sort then merge
Sort pieces
Merge
Subdivide
39SortMerge algorithm
- Function SortMerge(x,1,n) -- sort list of n
elements x - If n 1 then
- Return -- nothing to sort
- End if
- Mid (1 n)/2 -- midpoint of list
- SortMerge(x,1, Mid ) -- sort first half of list
- SortMerge(x, Mid 1, n) -- sort second half of
list - Merge(x,1, Mid , Mid 1, n) -- merge sorted
halves - End Function
40Does it work?
- Have to be careful about stopping
- There are always a lot of things going on
41Divide and conquer
- Use recursion
- reduce solving for problem of size n to solving
two problems of size n/2 - then combine the solutions
- S(n) 2 S(n/2) M(n/2,n/2)
- Solving a sorting problem of size n requires
solving 2 sorting problems of size n/2 and doing
a merge of 2 sets of size n/2
42Comparing running times
43Comparing running times
Reducing 20 hours to 3 seconds
44Searching
- Once a list is in alphabetical order, how do you
find things in it? - For example, is COS 111 on the list of courses
that satisfy the (EC) Epistemology and Cognition
requirement?
45EC courses
PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI
321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY
316
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
46Searching for COS 111
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI
321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY
316
COS 111
Compare to the middle
47Searching
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI
321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY
316
If larger search second half
If smaller search first half
COS 111
Compare to the middle
48Repeat
If smaller search first half
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
If larger search second half
COS 111
Compare to the middle
49Building indices
PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI
321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY
316
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
50Search indices then data
PHI 201 PHI 204 PHI 301 PHI 304 PHI 312 PHI
321 PHI 333 PHI 338 PSY 255 PSY 306 PSY 307 PSY
316
AAS 391 ANT 201 COS 302 FRS 135 FRS 137 GER
306 HUM 365 LIN 213 LIN 302 LIN 306 LIN 315 PHI
200
COS 111