The NUIX System: Making Computers
Easier to Use
1982
Bell
Laboratories
Host
Back in 1969, a
Couple of Computer Scientist here at Bell Laboratories, start to develop some
programs they needed for their own use. What Ken
Thompson and Dennis Ritchie
started developing then has evolved into the UNIX Operating system which by now
is widely used not only in the Bell systems but in other places around the
world. In the next few minutes, we are going to tell you about a few of
problems that UNIX is useful for and we are going to talk some about Operating System
in general and UNIX operating system in particular to show you how UNIX help
people to solve problems.
John R. Mashey
If you
particular look at Bell Laboratories but at high technology industry in general,
There is tremendous need for better techniques and tools to make our work more productive.
We just simply can not write all the software that needs to be written. In fact
a good analogy is that a number years ago when telephone calls were switched
not by computers but by human being operators, People predicted that sooner or
later the entire population of the United States would have to be telephone
operators to switch all of the calls that need to be switched. We heave the
same problem in programing productivity today, now keeping large amounts of
software working and keeping it working in the face of change simply takes a
lot of people. The Bell System we have many millions of lines of software, We
have thousands of many computers, we have hundreds of very large of computers,
and there is a lot of software that need to be kept working, there is all
different sorts of software, there are the switching that switches your
telephone calls, there is the administrative software that administers process,
and there is for instance the billing software how many systems do you know
give you a bill for something that cost as little as 10 or 20 cents. There is a
lot of software. So we need lots of techniques and tools to make this more
productive.
Host
The programs
which tell the computer how to switch a telephone calls or compute pay roll or
play an electronic game are called application software. There is another type
of software that the program controls the resources of computer itself, the
memory of the computer, the processing element, and the terminal that connected
to the computer. This latter type of software is called an operating system.
Another way of saying what an operating system is that it is a collection of
programs which make intricate hardware of computer see simple and more
comprehensible from the point of view of applications programmer, so the
applications programmer can create software more easily.
Ken Thompson
We are trying
to make computing as simple as possible. At late 1960s Dennis
Ritchie and I realized that the then current operating systems were much
too complex, we attended to reverse this trend by building a small simple
operating system on the a mini computer.
What we want to
preserve was not just a good programming environment which do programming but a
system around which the community can form, fellowship we know from experience
that the essence of communal computing is
supplied by remote access time sharing systems is not just type program into a
terminal instead of the key punch, but to encourage close communication.
Host
Unix start out
of two man’s effort, and by now it is used all over bell labs. We have close to
20,000 of computer terminal in this company, roughly one per employee, and most
of them are used to communicating with the UNIX operating system. One of the
main reasons that the UNIX is popular around here is because it provide
graceful facilities to decomposing complex computing tasks into simple sub
tasks.
Dennis M.
Ritchie
The NUIX
operating system is basically make out of three parts, the kernel, or operating
system proper is the part that manage the control of machine and supervisor the
scheduling of the all of user programs, the shell, or which is the name we give
to the command interpreter, looks after the communication between the user and
the system itself. The third part which is actually the largest is varies of
Utilities programs which performs the specific tasks like editing a file or
sorting a bunch of numbers or making a plot etc. All the other programs that
are not provided directly as part of operating system kernel.
Brain
W. Kernighan (大佬直接上手调用一些小的程序检查文本错误)
On of the
things about UNIX is the ability that we have to create complicated program by
building them out of a simpler program rater than writing from the scratch we
can always construct by gluing together existing program almost like building
blocks. Let me show you an example of how that will work by writing a program
without actually writing a program to find spelling mistakes one of things that
UNIX have been use for a long time as document preparation helping create
letters and papers and books and so on. So, let me write this spelling mistakes
program, I am not going to do the whole document because we do not have one.
So, let me print a single sentence. The sentence comes from a paper that John Masssey
and I wrote. (i: p sentence At
Bell Laborotories UNIX systems privide more
timesharing ports than all other systems combined) If you look carefully
and you can see there is actually couple of spelling mistakes in it. So, suppose
that we want to use the computer to find this spelling mistakes instead of
doing by hand, basically what we want do is to take each of the words in that
sentence and compare them against dictionary. To compare against the dictionary
which is sort of one word per line is certainly going to be easier to convert
this sentence to one word per line. So, let me run a program called makewords
program that already exist which take an input from sentence (i: makewords
sentence > words) and will dump the output into something that I will simply
call words. Words is a file just like sentence. Look at that. And there it is.
All of the words one word per line. And now I want to compare those to dictionary
to make some progress but clear it is not done yet. Because, for example, my
dictionary does not have the word Bell or the word Laboratories with capital
letter at the beginning, it only has them in lower cases, so if I do a blind
search, I will not get right answer. So next thing I want to do is to convert
words into lower case, let me just run the program called lowercase on words
and dump the output in this case something I will call lcwords, it is just file
name, let go here. (i:lowercase words > lcwords) and let us look at that
one. And see how we did. And sure enough, the bell and laboratories are all in
lower case. So we getting warmer. We could compare this word one at a time
against the dictionary, the dictionary is alphabet order, and it would be more efficient
if we only go one path through my lcwords and one path through the dictionary
rather than sort of poking randomly dictionary. So let me sort my lcwords, so I
will say sort lcwords and I will put that one into sortedwords, and let us see
how that word, and sure enough they are sorted into alphabet order, other than
sorting there is something else, you will noticed that the systems appears twice
there and that seems kind of silly, and now the single sentence is really does
not matter, but the big document will be very nice to get ride of all the
duplicate. So let me run another program which exist on the UNIX called unique,
and I will say unique for the sortedwords, and into the uniquewords, and let us
see what we got here, sure enough the word systems that duplicate word has gone
away. And now we are almost at the point that we want to do finally is compare
the list of words I have here with the dictionary, and print the words that in
my list, that not in the dictionary, to do that with a program called mismatch,
simply say mismatch uniquewords dict. There is two sources of the input, mismatch
will simply print all of the words in the uniquewords but not in dict words. And
, this one takes a little longer, because the dict is actually quite a size.
But sure enough, we got laboratories and we got privide which have 2 spelling
mistakes. That talks to you that this is actually quite reasonable way to spot
spelling mistakes. Alphabetically we got a couple of other thing, we got a timesharing
and we got the word unix, and this tell you why it is the perfect way to look
for spelling mistakes. Timesharing is a fine example, jargon, the word means
that something that everybody can computing and probably mean nothing at all the
people that who already know the computer business. And UNIX’s example of
proper name and is not likely being the dictionary ever. So what do we do when
we get this list of words, what we do is that we fix this spelling mistake and sentence
and that is done. And we take the words without mistakes but there were useful
jargon like timesharing or useful proper name like UNIX and we use it in a proved
dictionary, so not only your will re found this spelling mistakes but we are
also able to do the job better by taking that output and in hand of dictionary that
we used to find first mistakes, so the next time we do it we will never see
this words again, and so I think the what we have seen here is the way that the
program get developed in the UNIX very often is not by somebody sitting down and
saying “I am going to this complicated job like creating a program to find spelling
mistakes”, what I am going to do instead is to try to break the big job into
the little pieces to see if I can do a part here and do a part there and do a
part somewhere else and then stick them together, to get the job done. The other
thing that sort of comes with the UNIX is that there already very large collection
of useful programs, little tools kinds of building blocks, that means that you
do not need to build your own building blocks, you can use the one that already
there. And I think this is one of the reason that why UNIX is very productive system
for most of us. Because the sub building blocks is already there and you can
glue things together very very quickly in the way that I have showed you here. And
that way get your job done in a hurry. And that in a sense is what productivity
is.
Catherine Ann
Brooks
One of the strength
of the UNIX systems is it’s file system, let me give you an oversimple example,
UNIX file system is like a file cabinet, in a file cabinet there are folders
and within the folders there are letters, sheets of paper and on this letters
and sheets of paper are words and characters, similarly in the UNIX file system
there are directories, err there have tags on them, and within directories you
can find other directories or files and this allows you to be able to retrieve
a file very simply through this kind of indexing system. Files in the UNIX system
are formatless, that means they are simply a string of characters or bytes. Any
format imposed on that data is done by the programmer rather than by the Operating
system. This makes programming is very easy for programmers. Let me contract with
other operating systems where at file creation time a programmer must specify
what information will be in file, how big the file will be etcetera. And once
that is done, programmer is locked into it. Having locked into that kind of file
then later it becomes impossible to put another kind of data in that file. The analogy
is to trying to put a legal size document into a letter size file it simply will
not fit. UNIX system, you do not have the problem, because data in file is
formatless and data can be easily move back and forth between files.
Ken Thompson
Formatless file
in which the data consist solely of a stream of bytes and interpret by the
operating system, simplify like because it means that any program can process any
file. When you combine this with the concept of pipeline of streaming processing,
and makes UNIX is extremely powerful program to all.
Brain W.
Kernighan
I Think the notion
of pipeline is the fundamental contribution of the UNIX. The notion that you
can take a bunch of programs to a more programs to stick together end to end,
so the data simply flow from the one on the left to the one on the right, and
the system itself looks after all the connections, all the synchronization, making
sure the data goes from the one into another. The program itself do not know
anything about the connection. For their concern is just talking to the terminal.
Lorinda L. Cherry
(使用pipeline 的概念,将小程序组装成可用工具)
What Brain
showed to you earlier was rather than write a special program to find spelling
mistakes, it is possible with UNIX to couple together already existing programs
and end up with the program basically find the spelling errors. He did that by
writing by using one program on his sentence and then putting that out, putting
into a temporary file and running vary program on the temporary files. It is possible
using UNIX streaming processing or pipeline to eliminate the use of the temporary
files, and let the system put the data from one program into the next so called
pipeline, let me show you how that works with brain’s same example. I will use
the same program on the same text file, so I first run make words on my text
file and I run that through lowercase and run that through sort and run that to
unique and run that to mismatch and at the end of the pipeline, I am search spelling
errors, now it is also possible since you got tired of typing all the commands
on one line, to put the sequence commands in a file and run only that file and
the system will then interpret what is inside that file, what you want to run,
so I have the same sequence in a file called check and I can run the check on
my text and again I will get out my spelling errors. Now let me show you
another example I have a desk calculator program, I am goanna run the output of
the desk calculator through program called number which turns number into English,
and then I am going to run that through program called speak which turns the reading
English to spoken English. And now we have a taking calculator, so if I say 8 -3
for example, it tells me the 5.($ dc|number|speank) Now I can put this in a
file, put this pipeline in a file, and name tack_calc. Now we will rise 2 the
100 power… Now person use this program does not need to know that it is more than
one program running, and all of this things make our life much easier, you do
not have to keep typing same things over and over again.
John R. Mashey
And that is
import for several reasons, the first one is that I as a single programmer can
not a set of commands I would have to type, but now I can get it just by typing
something fairly short, I show one command what really done is quite a few
commands. The second things is because it looks the same as the existing
commands found on the system, it is very easy for other people to use.
Alfred V. Aho
We have seen a
great deal of Darwinism in the development of spread of UNIX. Initially people in
the computer science at research center pull programs and commands that were useful
for there own needs, but a number of other people discover that they were useful
for there own needs as well. As a consequence, this programs has spread rapidly
through the laboratories.
John R. Mashey
What this all
means is that this is more lavages for everybody, that this is sort of the
continuation of progress in the computing field, in which way have gone to higher
and higher level languages.
Brain W.
Kernighan
And what is
happen with UNIX is that over the years we have developed an increasing family
that family of useful programs is getting bigger and bigger and bigger and of
course people who have used it for a long time have a whole bunch of members of
this family at their fingertips so that they can really get things done very quickly.
And I think that really make UNIX as productive as it is.
Host
People have use
the UNIX utilities to build all sorts of valuable applications, and all of this
they are all part of the NUIX family programs, some of this applications turn out
to have usefulness way beyond the Bell systems. For example a program which we
called the writer’s workbench, were originally designed for the use of their own
people here, but by now used by the people in a lot of other places as well.
Nina Macdonald
Document stuff.
(这段省略)
Host
Computing is
going to be more and more get involved in people’s life as the years go by. So
Computer technology is going to have to evolved to be easier for people to use.
Unix is certainly not the end of the road in this regard, but I think it’s a good
step of longways.
本以为翻出来这一段23分钟的视频是一件非常简单的事情,没想到呀,占用了一整天的时间;
还好坚持搞定了,后面随便对照了一个带字幕的版本,差不多95%的内容听写的是正确的;
2020年4月19日 21:54:55
By Charle Jiang
-The END-