CS191 24 04 29
Mon, Apr 29, 2019
This paper details the philosophy behind such a programming system of LISP, introducing the functional programming paradigm as we know it today.
This paper introduces a very novel paradigm for programming. The big idea is that everything in programming can be created using an expression, which consists of a sequence of letters or a list of sequences. These sequences and lists of sequences can be changed using operators. The LISP programming language really embodies these programming paradigms, in particular the nameless lambda function that can be expressed as (lambda (p1 … pn) e) where the p1 … pn are parameters and the final item in the list is an expression.
The novelty within this paper is thus three-fold: the origin of functional programming paradigms, formalizing data structure like lists, and the creation of LISP, the list interpreter.
The multiprgramming pardigms introduced by Dijkstra who has some good guidelines for good programming problems
A progress report is deemed to be necessary because we need to take care of possible unexpected errors and problems that occur during development
The second mistake is that there needs to be extensive eexperience for how people debug, practicing defensive programming practices and mathematical proofing for correctness
The system hierarchy is also pretty important to conceptualize, the processor is the base level of abstraction (corresponding to hardware)
At level 1, there is a segment controller whch is a sequential process synchronized with respect to the drum interrupt nd sequential process of higher levells.
There is also bookkeeping, journaling, where we have the modern equivalent of inodes being represented in this journaling
Level 2 contains a message interpreter that takes care of console keyboard. This would correspond to standard console
The overall goals of this paper seems to be the creation of unified framework for testing, identifying a race condition and synchronizatiion. You near share the same part of the resource, but rather you are dividing it
Dean and Ghemawat 2004
Dean and Ghemawat came up with a pretty novel concept for MapReduce, which has many interesting significance and other aspects of processing data, counting the appearance of a word in a large collection of data. MapReduce looks like a pretty groundbreaking concept in that it achieves reliability by parceling out a number of operations on the set of data. The nodes can create easier atomic operations that prevent parallel conflicting threads from running.
As one can imagine, synchronization issues can be avoided, which allows individuals to better manage issues between multiple threads. When files are named, we can prevent parallel operations from occurring, which is another added benefit.
The NameNode is a single point of failure for distributed file systems. The compiler of the program will understand massive amounts of data that allows for caching, a possible optimization that builds on this work.
UNIX operating sysstem
This is a solution for Compatible Time-Sharing System,used at MIT and Bell Labs.
UNIX is a general-purpose, multi-user, interactive operating system. It has set a convention used by MacOS and Linux, because all UNIX OS use the following:
- Hierarchical file system with demountable volumes
- Compatible files, devices, and inter-process I/O
- Asynchroous processes
All of these conventions still apply to current OS designs, which is pretty remarkable