このページは https://speakerdeck.com/mrallen1/a-banker-a-baker-a-distributed-system-maker の内容を掲載しています。

掲載を希望されないスライド著者の方は、こちらよりご連絡下さい。

12ヶ月前 (2015/11/05)にアップロードinテクノロジー

This talk covers the early history of concurrency from about 1957ish forward until around 1985. T...

This talk covers the early history of concurrency from about 1957ish forward until around 1985. Topics discussed include multiprogramming, JCR Licklider, mutual exclusion, sequential processes, ARPANet, proving properties of distributed systems, and a bibliography.

- Python, DTrace and you3年以上前 by Mark Allen

- Agenda

• Background

• Multiprogramming

• Intergalactic networking

• The mutual exclusion problem

• Sequential processes (cooperating and communicating)

• ARPANet

• Proving properties of distributed systems

• Bibliography / Image Credits - BACKGROUND
- Vacuum Tubes

[a] - Transistors

[b] - Solid State

Advancements

Eliminating vacuum tubes in favor of transitors in the

late 1950s resulted in a massive speed increase. - The problem with

concurrency

• We have all this ridiculously expensive hardware

that is mostly idle. Shouldn’t we be doing

something with it to get maximum utility from it?

• What could possibly go wrong? - MULTIPROGRAMMING
- What is it?

From [3] (but see also [7]):

1. Computations are concurrent for more than one user.

2. Computations share pools of resources.

3. Computations vary in demand for resources needed

to complete a specific computation.

4. Reference to shared information between

computations is common. - In Machine Language

“Every programmer knows the importance of

avoiding self destruction of programs. With

multiprogramming, mutual destruction

becomes a serious problem.”

Multiprogramming: The Programmer’s View,1959.

[2] - You think concurrency

is hard, bro?

• Eventually lead to the “software crisis” conference

in 1968.

• In response, structured programming because a

major research and educational focus in the early

70s: Wirth, Nygaard and Dahl, Knuth.

• However, this is not a talk about programming

languages. (See [1] for more.) - E.F. Codd

• Best known for the relational

data model, 1970.

• RAF fighter pilot in WWII.

(Became US citizen in the mid

1960s.)

• Led IBM team implementing

multiprogramming using solid

state hardware, 1957.

• ACM Turing Winner, 1981 - STRETCH

• Feasibility paper [4] laid out six basic properties for

“profitable” multiprogramming.

• Later papers discussed work scheduling across

space and time abstractly [5] and concretely [6]. - Intergalactic

Networking - J.C.R. Licklider

• Helped establish MIT’s Lincoln

Laboratory, early 1950s

• Led IPTO office at DARPA,

1962-64

• Advocated “man-computer

symbiosis” and “intergalactic

networking”

• Funded and later led Project

MAC, to timeshare large

computer systems. - Intergalactic

Networking

“Is the network control language the same thing

as the time-sharing control language? … Is the

network control language different from the

time-sharing control language, and is the

network-control language common to the

several netted facilities? Is there no such thing

as a network-control language?”

JCR Licklider [8] - Imagining Networking

• Licklider discusses:

• browsing remote files,

• running programs remotely and

• retriveing results at a local workstation

• Doesn’t that sound familiar to you? - Mutual Exclusion
- Edsger W. Dijkstra

• Graph traversal algorithm

• "GO TO considered harmful"

• 1st implementation of ALGOL

1960

• Dijkstra Prize in Distributed

Computing

• ACM Turing Winner, 1972 - [14]
- [18], see also [22]
- [17]
- “[T]he intellectual level needed for system

design is in general grossly underestimated. I

am more than ever convinced that this type of

work is just difficult and that every effort to do

it with other than the best people is doomed to

either failure or moderate success at enormous

expenses.”

– E.W. Dijkstra [17] - [20]
- [15]
- 0 ≤ S < 6

3

K > N; K = 6

If L ≠ S,

N=5

then S := L

2

4

1

5

0

If L = S, then

S := (S+1) mod K - 0 ≤ S < 6

3

K > N; K = 6

If L ≠ S,

N=5

then S := L

2

4

1

5

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

3

K > N; K = 6

If L ≠ S,

N=5

then S := L

2

4

2

5

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

3

K > N; K = 6

If L ≠ S,

N=5

then S := L

2

4

2

5

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

3

K > N; K = 6

If L ≠ S,

N=5

then S := L

3

4

2

5

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

4

K > N; K = 6

If L ≠ S,

N=5

then S := L

3

5

2

5

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

4

K > N; K = 6

If L ≠ S,

N=5

then S := L

3

5

2

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

4

K > N; K = 6

If L ≠ S,

N=5

then S := L

3

5

2

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

5

K > N; K = 6

If L ≠ S,

N=5

then S := L

4

0

3

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

0

K > N; K = 6

If L ≠ S,

N=5

then S := L

5

0

4

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

0

K > N; K = 6

If L ≠ S,

N=5

then S := L

0

0

5

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

0

K > N; K = 6

If L ≠ S,

N=5

then S := L

0

0

0

0

0

If L = S, then

S := (S+1) mod 6 - 0 ≤ S < 6

0

K > N; K = 6

If L ≠ S,

N=5

then S := L

0

0

0

0

1

If L = S, then

S := (S+1) mod 6 - Sequential

Processes - [16]
- C.A.R. Hoare

• Invented the QuickSort

algorithm

• Major foundational work on

formal methods of program

correctness

• Structured programming

advocate.

• ACM Turing Winner, 1980 - [19]
- ARPANet
- Vinton Cerf

• Best known for work on TCP

and IP.

• Cowrote major portions of

precursor NCP “Network

control program” (see RFC 33)

• ACM Turing Winner, 2004 - [21]
- [c]
- [d]
- Proving Properties of

Distributed Systems - Robert W. Floyd

• Proof-reader and critic of Knuth’s

Art of Computering Programming.

• Algorithms for finding the shortest

path in a directed graph, graphic

dithering, and calculating the

median value of a set.

• Passionate about verifying the

correctness of a program using

logical predicates.

• ACM Turing Winner, 1978 - Programming Paradigms

“It remains as true now as when I entered the

computer field in 1956 that everyone wants to

design a new programming language. In the

words written on the wall of a Stanford

University graduate student office, "I would

rather write programs to help me write

programs than write programs."”

- R.W. Floyd, [13] - [11]
- [10]
- [12]
- Conclusions
- Out of the Tar Pit

“Complexity is the single major difficulty in the

successful development of large-scale software

systems… [but] this is the unfortunate truth:

Simplicity is HARD.”

– Ben Moseley and Peter Marks, [9] - “For most of the 1970s, one ‘solved’ the

mutual exclusion problem by using

semaphores or monitors or conditional

critical regions or some other language

construct. This is like solving the sorting

problem by using a programming language

with a sort command.”

- Leslie Lamport [24] - A Way Forward?

1. Programming disciplines that are simple(r) to

reason about than the existing state of the art.

2. Formal methods that make building an accurate

model of the problem feasible for non-experts

(perhaps baked into a programming language?)

3. Reading old papers is dope. We often take them

for granted and over time forget important details

and caveats. - Bibliography

• [1] Allen, Mark, “This has all happened before and it will

all happen again”, Strange Loop, 2014.

https://youtu.be/jmRE5pXFi04

• [2] Opler, A, Baird, N, Multiprogramming: The

Programmer’s View, Proceedings of the 14th annual

meeting of the ACM, ACM,1959.

http://dx.doi.org/10.1145/612201.612215 - Bibliography

• [3] Dennis, J. and Van Horn, E., Programming

semantics for multiprogrammed computations, CACM,

March 1966. http://dx.doi.org/10.1145/365230.365252

• [4] Codd, E.F., et al, Multiprogramming STRETCH:

Feasibility Considerations, CACM, Nov, 1959.

http://dx.doi.org/10.1145/368481.368502

• [5] Codd, E.F., Multiprogram scheduling, parts 1 and 2.

introduction and theory, CACM, June 1960.

http://dx.doi.org/10.1145/367297.367317 - Bibliography

• [6] Codd, E.F., Multiprogram scheduling, parts 3 and 4.

scheduling algorithm and external constraints, CACM,

July1960. http://dx.doi.org/10.1145/367349.367356

• [7] Ryle, B.L., Multiple programming data processing,

CACM, February 1961.

http://dx.doi.org/10.1145/366105.366132

• [8] Licklider, JCR, MEMORANDUM FOR: Members

and Affiliates of the Intergalactic Computer Network,

April 1963. http://www.packet.cc/files/memo.html - Bibliography

• [9] Moseley, B and Marks, P, Out of the Tar Pit, 2006,

http://shaffner.us/cs/papers/tarpit.pdf

• [10] Lamport, L., Proving the Correctness of

Multiprocess Programs, IEEE Transactions on Software

Engineering, March 1977.

http://research.microsoft.com/en-

us/um/people/lamport/pubs/proving.pdf

• [11] Floyd, R.W., Assigning Meanings to Programs,

1966. http://www.cs.virginia.edu/~weimer/2007-

615/reading/FloydMeaning.pdf - Bibliography

• [12] Alpern, B and Schneider, F., Defining liveness, TR-

85-650, Cornell, 1984.

https://ecommons.cornell.edu/bitstream/handle/1813/

6495/85-650.pdf

• [13] Floyd, R.W., The Paradigms of Programming,

1978 Turing Award Lecture, ACM,

http://dl.acm.org/ft_gateway.cfm?id=1283934&type=p

df - Bibliography

• [14] Dijsktra, E.W., Solution of a problem in concurrent program

control., CACM, Sept 1965. http://dx.doi.org/10.1145/365559.365617

• [15] --, Self-stabilizing system in spite of distributed control, CACM,

1974. http://dx.doi.org/10.1145/361179.361202

• [16] – Cooperating Sequential Processes, 1965.

http://www.cs.utexas.edu/users/EWD/ewd01xx/EWD123.PDF

• [17] – The structure of the “THE” multiprogramming system,

Proceedings of SOSP, ACM, 1967.

http://dx.doi.org/10.1145/800001.811672

• - Bibliography

• [18] Lamport, L., A New Solution of Dijkstra’s

Concurrent Programming Problem, CACM, Aug 1974.

• [19] Hoare, C.A.R., Communicating Sequential

Processes, CACM, Aug 1978.

http://dx.doi.org/10.1145/359576.359585

• [20] Dijkstra, E.W., Hierarchical Ordering of Sequential

Processes,

http://www.cs.utexas.edu/users/EWD/ewd03xx/EWD

310.PDF - Bibliography

• [21] RFC 33, http://tools.ietf.org/html/rfc33

• [22] Lamport, L., The computer science of concurrency:

the early years, CACM, June 2015,

http://dx.doi.org/10.1145/2771951

• [23] Hansen, P.B., The Origin of Concurrent Programming,

Springer, 2002.

• [24] Lamport, L., Teaching concurrency,

http://dx.doi.org/10.1145/1515698.1515713 - Image Credits

[a] Vacuum tubes, threethan, https://flic.kr/p/bBCBAD

[b] Transistors, Vahid alpha, https://en.wikipedia.org/wiki

/File:Transistors_110.jpg

[c, d] http://www.computerhistory.org/revolution/networ

king/19/407/2086