CSci 4409 - Questions for Rich Hickey's talk "Are we there yet?"
Some background material and questions for Rich Hickey's keynote
address Are
We There Yet? at JVM Languages Summit 2009.
Viewing of this talk (free, open to the public, and providing cookies and pop/water) will take place in Sci 2200 on Wedn. Sept. 22 at 7:30pm.
Background and references
- Alfred
North Whitehead was an English mathematician who became a
philosopher. He wrote on algebra, logic, foundations of
mathematics, philosophy of science, physics, metaphysics, and
education. Whitehead supervised the doctoral dissertations of
Bertrand Russell and Willard Van Orman Quine.
- The C++ example refers to a function pointer, i.e. a
variable that stores a memory address of a function. Function pointers
may be returned by other functions.
- GC
stands for garbage collection: automatic memory management that
removes entities that can no longer be accessed by active variables
in a program.
- STM
stands for software transactional memory: a software-level
concurrency control
mechanism analogous to database transactions for controlling access
to shared memory. It follows the "all or
nothing" approach: either all changes in a transaction happen, or
none of them happen. All changes appear to have happened
simultaneously.
- CAS:
the compare-and-swap CPU instruction is a special instruction that
atomically compares the contents of a memory location to a given
value and, only if they are the same, modifies the contents of that
memory location to a given new value.
- ACID properties A
set of properties to guarantee database transactions are processed
reliably: Atomicity, Consistency, Isolation, Durability.
Questions on the material in the article
These questions will be used in an in-class assignment to summarize
the talk.
- What is "incidental complexity"? Give two examples: one from the
talk and another from your own programming experience.
- "Pure functions don't have a notion of time" -- what does Rich
Hickey mean by this statement? What does it imply in the context of
the talk?
- Describe a concept of an object as a series of immutable
values. How does it reflect real-world changing objects? What are
advantages (if any) and disadvantages (if any) of using this concept
in a program?
- Explain the meaning of a statement "Perception is massively
parallel" and its implications for programming.
- What are some problems with representing time in programs? How
are they related to synchronization and locking?
- What is the proposed way of representing time? Why does Rich
Hickey considers this way to be easier for a programmer and
accurate?
- Why does a naive implementation of the proposed approach create
performance problems? How can these problems be remedied?
-
What does the statement "Perception doesn't impede process" refer
to? List some ways in which this can be achieved.
-
What does Rich Hickey see as future work in the proposed approach?
(Not quite) discussion questions for Thursday class
I could put the standard "what do you agree/disagree with?" questions
here, but I feel that these questions may lead to a discussion of
details, rather than the big picture. I am more interested in what
changed in your way
of thinking about software development, programming languages, or
perhaps even more general things, such as design and engineering, after
listening to the talk. If you would like to share
something along these lines, you are very welcome to do so.
CSci 4409
course web site.