|Home » Learning Curve
OS X Bibliography
Unix is more than an operating system - it's a way of thinking.
- Ancient Unix Proverb
Like the keyboard shortcuts list before it, this list should grow exponentially over time.
Bell Labs have won more Nobel Prizes than any other institution since the second world war. At the time of the creation of Unix the computer science team were a mere twenty five programmers strong.
Names like Al Aho, Steve Bourne, Lorinda Cherry, Steve Johnson, Brian Kernighan, Mike Lesk, Doug McIlroy, Joe Osanna, Dennis Ritchie, and Ken Thompson have etched themselves into our legacy as 'die Götter unsere Zeit' - the gods of our time.
The absolute definitive documentation of Unix is the July - August 1978 issue of the Bell Systems Technical Journal, currently (definitely) out of print. If you can beg borrow or steal a copy, do it - and don't let it go for love or money. The articles are written by the Bell Labs Unix engineers themselves with a good portion humour and self-introspection and describe the at times confusing and winding paths that led to what we so casually take for granted today.
The Creation of the UNIX* Operating System
After three decades of use, the UNIX* computer operating system from Bell Labs is still regarded as one of the most powerful, versatile, and flexible operating systems (OS) in the computer world.
The Unix Time-sharing System
The 1978 BSTJ update of the 1974 CACM article.
The Evolution of the Unix Time-sharing System*
This paper presents a brief history of the early development of the Unix operating system. It concentrates on the evolution of the file system, the process-control mechanism, and the idea of pipelined commands. Some attention is paid to social conditions during the development of the system.
First presented at the Language Design and Programming Methodology conference at Sydney, Australia, September 1979.
The UNIX Time-sharing System - A Retrospective*
Gold: a copy of an article from the historic BSTJ July 1978.
Advice from Doug McIlroy
DMR calls it 'prophetic' and it is.
The C Programming Language, Second Edition
The first pre-ANSI edition is better but hard to find.
Author of the famous (and definitive) 'dragon book' series on compiler construction techniques, Aho co-authored the Unix tool 'awk'.
Brian W Kernighan
Colleague of Ken and DMR who made the famous 'Unics' quip, authored 'K/R', wrote the seminal 'Software Tools' series, invented RATFOR, and co-authored the Unix tool 'awk'.
M Doug McIlroy
Head of the CSRC when Ritchie and Thompson created Unix, McIlroy is responsible for some of the formative thinking which would later give Unix and associated technologies their strengths. McIlroy is the one who came up with the idea of 'pipes'; he had to almost literally insist Ritchie and Thompson implement them, as neither of the latter could figure out why they'd be of any interest.
Co-author with Brian Kernighan of 'The Unix Programming Environment and 'The Practice of Programming' and co-creator of the UTF-8 standard in use on the Internet today. Rob and Ken Thompson adjourned to a late night café where Thompson sketched out the entire design on a placemat on 2 September 1992. Only five days later they delivered the system to IBM.
Dennis M Ritchie
Co-father of Unix and creator of C. If the Nobel Committee ever get around to awarding a prize for computer science, this guy has to be the first laureate.
Principle author of Unix, the cryptic Ken was the one who insisted on 'C' as the name of Ritchie's programming language as all the other suggestions (even 'NB') were too long. Ken took a sabbatical at Berkeley after the initial work with Unix was completed; what he showed the engineers at Berkeley would become the Berkeley Software Distribution (BSD) Unix on which the Darwin of OS X is based.
An indication of the kind of mentality amongst the 25 at CSRC.
Letter from Washington
DMR and Ken won the Technology Medal for Unix in 1999.
Reflections on Trusting Trust
Reprinted from the CACM of August 1984 wherein Ken Thompson drops a bomb and reveals one of the most daring hacks of all time - Thompson calls it 'the cutest program I ever wrote'.
Unix Seventh Edition Manual
The files that shipped on the distribution tapes of the Seventh Edition release of the Unix operating system from Bell Labs. Part one contains the 'man pages'; parts two and three go into greater detail from a programmer's perspective.
Open source advocate Eric Raymond is one of the best sources of information on the 'Unix philosophy'.
The Art of Unix Programming
An excellent diatribe - especially read the section on comparative operating systems. And note to whom the book is dedicated as well.
The Importance of Being Textual
From ESR's book quoted above. As strong an argument as ever heard against binary XML - or binary anything for that matter.
Basics of the Unix Philosophy
Contains the maxims of Ken and DMR's mentor Doug McIlroy:
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.
- Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don't insist on interactive input.
- Design and build software, even operating systems, to be tried early, ideally within weeks. Don't hesitate to throw away the clumsy parts and rebuild them.
- Use tools in preference to unskilled help to lighten a programming task, even if you have to detour to build the tools and expect to throw some of them out after you've finished using them.
Doug would later summarise things this way:
This is the Unix philosophy: write programs that do one thing and do it well; write programs to work together; write programs to handle text streams, because that is a universal interface.
About the only possible improvement on Unix and C would be NeXTSTEP and Objective-C.
The Objective-C Programming Language
Also included with the ADC tools, this is a complete course in the programming language of NeXTSTEP and Cocoa. It takes about two hours to read.
The Early History Of Smalltalk by Alan Kay
Worried their paper-dependent markets would evaporate in the age of the paperless office, Xerox devoted enormous resources to finding the markets of the future at their Palo Alto Research Center (PARC). Kay started the Learning Research Group at PARC, building on ideas from Douglas Engelbart and developing the language - and the environment - that would power his networks, mail system, windowing environment, and prototyped 'mouse' pointing device. Kay is the one who invented the term 'object orientation'. The Objective-C used by Cocoa is a direct descendant of Kay's Smalltalk. Apple Fellow Kay wrote this paper in 1993 for the ACM.
An incredibly creative thing happened between 1985 and 1996 in Redwood City, California.
The documentation for all OS X development. Cocoa is the direct descendant of NeXTSTEP.
Cocoa Reference Library
API reference, fundamentals, and 'getting started' sections.
Darwin is the MACH kernel FreeBSD Unix first used by NeXTSTEP and now running for OS X.
Darwin Reference Library
API reference, fundamentals, and 'getting started' sections.
Mac OS X Documentation
The portal for all developer documentation for OS X.
Mac OS X Reference Library
An overview of the concepts and technical capabilities of OS X.
Figure out how to crawl before you try to walk or run.
UNIX Tutorial for Beginners
From the University of Surrey.
UNIXhelp for Users
Extensively mirrored course written at the University of Edinburgh.
A Basic UNIX Tutorial
This tutorial comprises fourteen sections, each of which addresses a fundamental aspect of UNIX computing. It concentrates on illustrating the central concepts by providing short explanations along with examples and exercises.
Unix - the Bare Minimum
For absolute beginners. This stuff is extremely basic.
Norman Matloff's Unix and Linux Tutorial Center
A portal for a number of excellent tutorials on both Unix (the Unix file system, tar gz and bz2 files, shell usage, Unix process management, advanced shell programming) and C (introduction, functions, programming style, command line arguments, 'bits and bytes', pointers, 'the art of debugging', gdb, argc and argv, recursion, bitwise ops, C libraries, Makefile, file I/O, set user ID, signals).
From the California Institute of Technology; borrowed and revised by many institutions (see below).
An adaptation of the above tutorial revised to match local conditions where it is published.