Bestand wählen

Early days of Unix and design of sh

Zitierlink des Filmsegments
Embed Code

Automatisierte Medienanalyse

Erkannte Entitäten
and it says here I'm I've been doing nothing useful rather just for the last 15 years and before that I was doing things a lot of useful and as it says also assume Q is the magazine that Georgian and therefore if you of the other people help out with so they start
this this talk is mostly about things I did once upon a time and then about things we're doing today and mostly about why we did and what we will do it again next time I got to and by the way is a nominal are counter in the room is in is because I do want some of my my friends and said to me than nominal when you're in front of people so I want somebody where and when I do I'm not I got a Bell Labs was in Cambridge for a 10 years before I got the labs automated in the background so you can understand why did some things added the Azeri Wilson Willowbrook's invented by proposed work we're and it's orbiting so it's kind of cool be around those guys in those days the year I started life building over systems so we can solve the differential equations for the moon orbit which is a lot of fun except we don't have accessible language variety all machine code and we started designing our own language which is called the Little z was the language and actually just as a side story we actually reported said to a PDP 7 with the 340 display and that's how Conway got the visualization for his life originally so and as he was designed and common wisdom domestication of 1 of the guys who was on the order of 68 progerin me my guy he was the repetition to so common to come visit my family play with this thing so as we call of love from the I spent 5 years in Cambridge foraging developed on writing our 68 environmental from 2 it's still works for what it's worth I arrived in Maryville and 75 on and I do wanna show you want thing
way do this when I that the mathematical logic was formed in Cambridge in those days was actually computer laboratory which is and you have at most as many as we actually have these machines are an effective still 1 and it's in pieces of put 1 of these things work together again to from senior out with actually to be honest I think I lost 1 of the spring but maybe we can find a spring for it anyway just keep going at this story about this is that Jason Miller was some famous numerical analysts according is used to race people right he would try to write a program and you do on his machines or differential equation and he'd say I'd be the 1st time you bring in a 2nd time because the software was written for the 2nd time but the 1st time you could actually be machines doing anyway and that so
I got to balance and 75 and then we were around the in the unit true under from my glasses on if you don't want to consumer slides and some of this is in in the history books and I don't really wanna go over too much except to set the context what we doing and the best version of this if you're interested or if you're ready if you can write this stuff is the retrospective that Dennis Ritchie Road which you can easily grow online or whatever you wanna do the whole project was funded by and often tear-off which was text processing system that was used in the lab and that's how have they got the money and you can see from the most you probably know this this and some of what the state of the system was in those days I wanna say a little bit the
choosing I was a little bit about the key players in the but then it's obvious you know about that I was that use during so you might drivers can was mostly from a guide dog I was applied I know that but that was also kind of but he was the lights noble and stuff like that and he was in String Processing and substrings things those all the work done on that with him and properly organized and in a dog was always some had some extensible save him and also about stuff Joe legend and of the he died 77 actually deal with and often to yourself and you know about Brian by did TBL acts and stuff like that so there's a lot going on in the and the development situation was actually from the from the we went to rooms to edit rooms no windows and reconditioning around stuff in tables I would say those typically 15 guys and the room maybe 10 15 and then we had a PDP 11 45 model for the 33 Teletypes the fun part of it was we had to try 40 14 displays which the different if you're a single mothers but as you recall from and they were affected display and you could of users you see from pages to your house but only if the network is known as the reason that most original this is in the seventies believed it had been using we did have UUCP running and that was something that might mustard and the and you see the red over their profitable motives up to the world so was the thing about him was important this is when we would write a piece of software or change a piece of software it would get deployed in the room where every research and I'm the what you found out pretty quickly and work presented you up and so on and so but the point is that you you a personal reputation was personally accountable for what you're doing right there with your peers and so if you screwed up so you careful about testing of software for you put out even to that small groups and I'm I run a bunch of engineering group since then and tried to instill the idea of people that you're actually personally accountable for the software you write that works sometimes was or what we have the source fundamental pages on-line manual pages will will recall in those days these days manual pages of hard work consists many of them of the minimization you can actually read the banner pages to figure out what's going on the head nouns and verbs in it so you could figure out what announcement and what those 2 so that that was very cool in those days and maybe some of the manual pages these data OK but was aware that all the other stories I don't have a picture of an hour purified this but it's like a more finishing with the top surface on it and you pull the car out and 1 day somebody I think it's can somebody still some coffee and that's in the discretion was happy this so the next day they are purified just haven't signed on on the flat part of this this is a vertical surface it follows from the 6th edition so this is 1975 we talk about written Seidel 40 system calls the great man pages 20 line you can read it to work both fj and the rest of it you can see it's the same I just wanna show you this is but a final like to show this but this is the use of these this is the index to the manual so this page 1 and
is going to go to the Soviet Union you to read or you know what it says
is page 2 were already passed the commands no for you about in this system calls well
subroutines see like C library might see it was when list and wonder would then have near
and a special files staff knows it because the man that was the next to
the manual so wasn't complicated and most of that stuff is survived as you know some of the most it's about 72 about some of addition this is really a timeline here 776 multiple story in a minute how we got to doing this we wrote the show on the road ABB 77 make linear and all showed up and UUCP was already there so they reduce the 32 reports is just like a snapshot of what happens and I'm going to get corrected him biker from sure but I'm I'm pretty sure the Berkeley got involved in the 6th edition to I think you took 6 edition plane that run on 11 what we did anyway so but then we do the 3rd report and publish 7th edition of through the file system by another talked about that I do wanna talk a little bit about what happened in them so Bill Joy called up 1 day and this is in seventies 7 I think about this civil I wanna put this stuff in the show we put emission lines life history and drop drop surrealism really belong in the shell in really belongs in in in the terminal window manager or whatever you wanna call it doesn't really belong in the shell so this year and on the anyway so yeah so you that's another seashell have the UN and often that people which is just fine and of course we have the i and stuff like that and the other story about them this is the this time 1980 was when I was a lad I divided below which you will talk or something that you know was later if we could retrieve probably got lost and which is typical of the and here he got there and we need that so often talk he he died and his bag of taken big old tapes so what's on that said that gives the 3 . 0 or something and he said the acid is does inversion and the oxygen so I was running a computer group then I have to evolve excellence and made that times 1980 and we're running list and we didn't have virtual memory cause we have the rise of operating system which was set using old name approach memory so so it's against arbitrary power civil does it work just have this can on my should my machines and this was a lab I had like 30 40 people using computers so friday nite we jacked up the file systems and our from what time how long it took for a few hours and and replace all the operating systems all of excellence simulators in this last Monday morning are coming from and talk my boss how Alice of times greater and I said how I guess what we did over the weekend said there is a box will be replaced weapons systems all computers this is it is it it doesn't work said yeah is it will converge on future decades did what I I I I I I mean ice and the guys who the this stuff they were they were ecstatic because they've never been used much memories and wanted to do all of these things
anyway that's the biggest story and that was the 1st time i've really that was the 1st time that the it's got back in the bell labs and build it up somewhere in some magazines and you go to this so some division so 1 of things I did them was for the 7th edition was sort of like the release of cop or whatever you wanna coincided with what we would do that the rules of the game were if you touch the source of a program you only if and so you're pretty careful about screwing around the source unless you really want to get into it so I didn't of only a couple things ended up winning loader and a few other things just as a unit of mass and that's how it worked we had to make been introduced in Section 7 7 biased you film and you know and that was an idea that Steve Johnson gave to to to this make this machine thing so we had makefiles residuals were and you put it in the standard and restrictions we will compile overnight make sure it works in in in in a relatively clean relatively safe as it was we didn't really have the and but you gotta make file that you got our manual page and if you don't have any of those things well we didn't actually delete that we just send you announced events that you need to put the Makefile Americans and the man pages long so we don't have souls control those those costs but actually that was how we manage the 7th edition released and there were pretty well so that's hidden story here so this is from the dentist and I were in a meeting in December when was 75 and people at the time of the original show was very limited and have variables in all kinds of things can only flow control and people started a mess of it and M. my patch it over and try to fix it and so then as I got out as meeting our phenomena walk out of the room and show you reflect and reward out of the room and we have to know is called probably doing this work so we said we gotta fix it so we decided that of that we would go and rewrite it and redesigned and we knew we couldn't patch over the existing rankers people were trying to do that it had to many iterations for example you could use a shell command file as a filter because it was with the shell command found itself was the standard input that's hard work so you couldn't you couldn't use you couldn't have Chalfont fulfilled what ensued compiled in and out of them without doing some gymnastics so we went often and and at the same time it turned out can Thompson had left for Berkeley years he he actually on the original show a certain him would've been ok if you've been there we just gone and done anyway but the fact that he was out of town was made by quite the can cancel and this is just a but also some this time the PWD show what that John Mashey pedometers programs were french there was another group business group at Bell Labs but we're using it for production workers Sirius Black short and you try make money for the phone company that started with 75 so anyway we start codon where she start with me deploy actually got deployed the original versions were came out another 76 knowledge of you know 2 3 formant structure right thing get out there and get it working so let me talk about the shell a language 1st of all and it's as you it's 1st was the type the so the issue with shell as a language is that strings of first-class citizens so you you just screwed I mean there's nothing you you you can easily add types or in its you can infer types but times and so you could you could you last thing you wanna do choose both interactively and as a scripting language and so you interactively use the way you want a course strings which is what you during regular programming language so we would you your constrained by that's the the biggest constraint on the language itself and you know we we measure put a few things in there that allow you to do some string processing and these days I wrote some of the things that have been done since and people of added stuff to do string processing that in no using in the dollar stuff you can do crazy things so but it doesn't write a program in face and the idea did the whole point of the the shell of course is at the interfaces system so you're really trying to map the systems and manage the system resources for the user and future king and so that and it turns out the hard parts where the signal management in the process by which we will come back in the so where we so you know I don't have this 68 background which you think being up later about and if you use this conference is 30 years very already done that the but the thing that I liked about our 68 was its expression language which means you could take any of the contracts and replace it with any of the other ones so for example could take any from 1 replaced by conditional and it would return a value which would then be used as as the value of an expression and you can see them basically substitute anything anyway so constraints on the light of there are some constraints obviously but it's not much constraints of language the thing that was true at the time was a lot of the utilities had its arbitrary string length you know they have some 500 character buffer and if you remember about the the crashed all told to go away and I think I like that idea particularly in the shell so I said I'm made a decision early on that there will be no arbitrary limits on anything except memory so much memory the walls and that without have a come back to bite him and I'll tell you that the other thing that was hard about the whole thing was according rules and they went through a bunch of iterations for the 1st couple of years and I'll talk a little bit about that to have served it turns out we used the return code of commands as the thing to do to tell you with what the result of the Phoenician wasn't if mumble mumble had returned code is presented with zeros true and if it was a non-zero false don't of has to the commands did not really have return codes and they with the the exit statement in most of the programs with exit friend friend which is like that's in a random number so I had to get people to go back and fix the code so that there was a sensible return codes so you could use you know if if the name command succeeded it 0 and if it failed in additional 0 summaries so that in work isospin people in this in this so what I did was in the shell when a cat when it prompted just before the prompt it would say what Mexico was for the commander was just exited and so the exit equals 0 4 thousand 271 and that this debris off and we got the executes fixed because it few thing daylight about a week the other thing which is really important time which in and so the submodularity of is a threat to the whole thing we're running on a PV 11 performance is really important and so some of the things I did and some things that were done with done simply just to keep the before to make sure that the thing performed well and calls when the shell the biggest performance here is the is forking and the amount of memory you using when you do for and so that that was and you'll see why that matters in a minute and then the other thing I did which are uh somewhat is algebra memory allocation and explain
why so what's shown in it's got all this stuff in the just 2 . choosing and actually he was
a complete this this is actually an an optimal show this for long but it just it was actually what I do is I went back to my notes in my files and stuff and I dug out things which actually got written at the time and that was that was that was the 1 24th product data sheet on recordings there but if this was the note was sent out a release saying OK here's what his what you get guys with the new shell and it was all that stuff there's a couple cool things and you pipe international loops those with thank you years also worlds in that's interesting in well the single manager really hard work and you the last 2 things you'll see there's about waiting interest 1 until we a good 2 or 3 months so to understand the units signal mechanism and how it affected perhaps because the challenges that actions to you right this is sitting there and if you hit and run your she wanted to do something or not depending on what you're trying to do and there are lots of corner cases in there that took a while to figure out the and so you can see some of them in there and in fact some of the bugs that were in there for a year or 2 after the initial release were to do research on English and and so and that's a that's list and the other thing we did was we built the pattern matching into the shell itself from the use of temple has subprime Uncle called for random
sampling of ministers so units of time what were we doing so this is sort of explains why a couple of things about why we it why I do things the way I didn't know what when when it was written we didn't have stand-alone so we didn't have that we we did have yeah CoNLL-X but the nite which he talked about put using national expert they're pretty heavyweight things to have it's not very hard to parse the shells and the very difficult but you know it's a few couple 3 4 pages senior done in there and so that wasn't a problem was no standard those string complementing inserted right all right yourself so that's how come in doing that by the time some edition came along with these things were done most of you know some days and hours like theory right just to standardize and for what so I didn't do that and by that time but also written in my memory allocated which I'll talk about and that and so it didn't make sense to go back and rewrite all that preserves all were writing memory allocated you'll see 1 minute and there is no such long jump so Dennis of those forces there are no other way to do error recovery in the in thing on the shelf machine and get back to somewhere safe in some contexts that do some useful so the up and the other reason not to use market the time was that it was a safeguards Damery memory allocation going 1 so so
the memory manager persists when people did the the port from the PDP 11 which we never expected people do we have to use we just playing on the people and you wouldn't expect to get you far lots of people from other we news news in the lab but we will we have dynamic control ourselves so you would be would do imports are usually used to be a words for ground for the time you do that takes that weighted it so the way that it worked and I'll actually or should have so the getting ahead of myself here but absolutely just say what the problem is and why you need to do your memory management of these were the 1st of all you read the overall flow for the same you read something and stated in an internal representation that you evaluated in terms of of of internal representation and and washed evaluating you can be doing and you can be doing all kinds of stuff so you you can be forced back into reading again which is by far the top of the system so if you look at the example on the page here it says you know some to this variable and and so that gets ready and it does get executed so that's in the tree and then the next thing you gotta do is go treat everything in between the quotes is that some new the reading and evaluate so you complete recursive system going on here and what you doing that you're allocated heap space so you can store variables as well as putting things on the side your stack because you're going throw away when you're done with them you know that when you're done with executing this except the value of X is retained so we have an interleaved heap and stack them in which all trophic children the understand was used for personal objects and including the parse tree which goes away and is a set of direct restrictions I do doing give
credit by the way the guy that have met George cholera difficult choosing near the action of who did think all the partial tour through the ratio he actually had done a bunch of analysis on it and I suspect use a later shell on the 1 I wrote crystals box in the what might have got the by the way was the bottom of the well mine so I'm not saying that are some of the more problematic and then I wanna show you something that I was in a conference in Japan in 1990 and some guy shows up and he says I wanna give you this list of all the people and and so it it's the it's the it's the source code you'll it's the source code and it's annotated it's completely annotated suspense and half in japanese and half in English and it's not pictures of the memory layout what goes on a blog block so that so cool and so thank you after I think that's his name is presented you speak Japanese in the room please come by and make sure got that right but anyway thank you to those 2 guys for going through it and actually understanding it because they understood better than I did true so
the reallocation so I as pointed out I asked him to take a slice again this is upside down on a subset of sorry I put the bottle memories at the top the the slide sorry on the top of the memories of on the slide and he said that the sees that runs from the top Marine so and you know that you don't have any control over that you can't put stuff in there isn't go away and spam you could put some global variables and their phylogenies that the but so that and the bottle the memory was and is where the icebreaker areas in the old days anyway and so we're spread from the bottom of the heap and stack of mixed up in there and in in every now and again you know you're running a stack and you some have to allocate more he so you have that piece of stacked NASA get covered up and you you have to go back and recover it later when the pieces that gets released and so that its return to the heat so there's a heat interleaving over heap and stack is you do that then this
next slide will show you the actual details of that so and there it was actually relatively simple scheme they did take a multitude of our vision you know many memory parts of print and so this you can see the bottom he was there this interleave items and there was a thing in there that that is the point I was appointed to the stack blocks of income that have rocked covered up by what he allocation that you needed to do as you're evaluating and then the top of the heap is from is worse says and then above that is the entire set which is currently not its current before it was usable and so the boundary routines ahead which would simply write on the top of the stack of course you couldn't retain pointers from stacked based on for very long because the silicon returning a pointer over the proliferation because of the in of of you the top item on the stack would get moved from because you haven't finished instructing yet so you know I did have to cover up the point of but if you did have to cover up the star at the top of the stack item you'd have to move that item some receiver keep growing so anyway memory that was the memory and the the the thing that was the thought every upset so I went to Dennis 1 day 1 of things we could I didn't think we could afford to do was when you're pushing stuff on top of the stack was to do a bounced check to make sure you when they hit the top of memory this you know that would have been for instructions instead of 1 of the PDP 11 and so and all you're doing in the shell is constructing strings a soldier during suffer 14 exactly so that's all you're doing so most of the performance you get is from that piece of code so this is sort of a proton from so I went to Dennis said 100 flight I'm writing up near the break and then I get a memory for flight like recover in the forward chaining and woman really about work during the solution so I'm so it always people who had to find out the hard way but and we didn't document it was never in the break it was never in the brakes back and most not a machines can't do that that's not easy to do so anyway I can't was that was that's why we did it was because simple performance and uh the effect I just skip this next 1 that's that's
the answer that OK so the habits signals and process management is hard I talk about that a little bit coding and then tool but what quoting we did add a bunch of error recovery over time and also are reporting was improved debugging memory allocations of a scene using the here documents turned out to have some you online documents turns out to have some nontrivial problems you know for example if and 1 things we did is we copied here document to at every file and uh you have to make sure to be far away in the source about and the usual form effects so
as to overcrowding hell that's really so that was this took 2 years to get this straight and I'm not sure it's straight now even I mean this is true it's half strength so are 3 mechanisms promise substitution arguments splitting which may reading words in this that delimited by metacharacters or blanks so you have to bring things up the words and then filing generation has the 3 basic mechanisms so if you look at the choices here 3 3 values for 3 parameters and the angle brackets cemented delimit the actual string certain also in the 2nd 1 is a space the 3rd 1 is masters so what are the choices if the argument is sound and you can see that after the choices and what we ended up with was uh and by the way that the single quote we didn't add until a year or 2 later because all we had originally was double quote which meant you had to escape stuff and so there no way to have so you'd be talking in the shell script or something and you have to remember that to quote everything you know backslash so that was so that did take a while to do that and and that's where we ended up and posted the difficult part of this was explaining what gets evaluated and when you know for example if you got a command substitution in your reading that does again evaluated when you 1st read it or again evaluated when you execute it and so so the evaluation rules are a little complicated so this is how the
Medicare what I call a metacharacter rules ended up and inside a single quote which is the 1st line that nothing is interpreted except another single-quote that's it so that was a clean 1 that was McElroy hearing push that the city that has that is start found in Scoring stuff you gotta have something that's how we interact with single quotes and the backward which is the clown substitution which I would have done differently these days in front of the your shelves have dollar round something which is a much cleaner way to do it and end you choose the good thing about the time so in in that you you can see which ones that evaluated then and again it's in a back slash inside the same set of commands substitution quotes things and then the terminator is is uh the backslash and course is what it is but even then going that looks simple but even then it's not obvious when you're reading scripts sometimes what's what so what we do
we so we didn't convert
units group of already told a story about him and and have some of some of the bumps in the road we ran into as a group got converted into this group in this attic time so that I told you a pretty x equals thing so originally in our head do you ought to know what's where our 68 and so it was always a command the problem about and so we had to changes of course we found that out the hard way and this is a quote actually so go to when go to use to work by the shelf answers set in the old days they were with a shell script would have the standard input was a script so go to is just a command you and often from executed the command what it would do it would share the standard input point and it would see through the file which the parent was executing brought which point you to finish but when it had it would seek through the following label and when the parent came back a partial shall come back and it would the input would have moved and so here you go on that that was how go to work I don't believe in God to so I got rid of it and this was 1 of the groups that we gave the shell to all gave the system to I should say and you we want says it says this term ensemble and then the way Colombian tractable and then this again was something in the old days you type weight you waited and so we made intractable you know what the hell you know that you turn that's not true and social services so that talk about that 0 yeah the other thing that went on with so the PDP 11 you could indirect through address 0 and it is 0 and so budget code did that common why we did it all what you know it just bugs or if we do it for a reason for the original work on on other machines so there was a bunch of when Steve Johnson did the 32 reporting a bit of work to do to get rid of some of them and I wish well I didn't do the work to find out what I talk about the young yes break story so the other battles with the
C versus shall battle so this is what I call about it was more because we the same room and so this was my notes from the former Soviet I sent this e-mail out to some 2 . think of a couple people and said OK hours because they were pushing me to make it like C which is a reasonable thing to consider and the reason I didn't do it is because if you can't see is not an expression language and is even more important reason I didn't do it and that is if then else in the requires you look ahead this you don't know until you get to the next part if it's there or not and you can't do that interactively you got 1 line you go to the next line you know that you know you can't look ahead to the next line so you you type if something something and then that's said so so in right you can't do the lookahead that you need to do to do the C-type if then else that was my reasoning as the best from so but does seriously out and it it is this note says I I don't see any hope of these 2 things looking the same because you know the shell is a string of language and C is also stuff and so and so eventually we we got agreement from that we think are ahead with it but then the world kinds of debates about the natural ways to put the word drought problem you know that was designed stuff if i and so and then there were various proposals about how to get rid of the ones from the words were drowned and that the other the other thing we did at the time was originally I had for while in the same construction which is what for example our 68 has and there's no reason not to do that but it seemed like in the programming language you do it for reasons that just running through some things looking for some conditions on whatever it is you're looking at and that doesn't help much in the shell in the whole common programming you do this on and think it does and so we we separated out those 2 instructions on this slide yeah have this could so that
the there was a proposal 100 describe if-then-else and used as awesome stuff so it is show you what if then else looks like if you do that you can have that that kind of persuading people that it was OK to the personal this
is about keeping KC-SEC AI case was kind of new ideas to the pattern matching and then but various attempts to mess with it and I don't know if you can really understand what this is I but it looks like it was k star 1 in something and then you look inside something the final from 1 source to do a show about sort of thing and then so
the various OK so let's move on now to environmental variables so that that was the syntax and sort of finally won those battles and moved on uh or we I had been using tear sorry for my sins which is IBM's Time Sharing online system and activism in writing my compiler on the IBM machine vision programs are going over there doing that and that is so commonly which had 1 thing in a life which was it had been a keyword parameters which you could which would transmit through from what we calling units process boundaries and so I put in the work promised early on in the shell and uh but there is no mechanism in units 2 and they would transmit to show procedures because show procedures were executed in the same process so with initial process you could share fewer parameters and so I did that and then I try to talk into putting something in units that would allow us to transmit the keyword from this through the process for exact pair that uniform doesn't exact doesn't cost so in the end we did a lot of debates about what the what the interaction was training the shells fewer parameters and what they look like and so what the syntax was for example of an originally I'd had fewer parameters anywhere in the command line would be interpreted as if you were parameter and unfortunately for those and commands already had that in them themselves like DDE for example has x equals y in it for in so in the end we ended up with fewer parameters ahead of the command name and all using some set things but it takes a while to settle satellite down and it took a while for them to get into the units of motion the surface so here with the rules so this was an e-mail I sent to Dennis I think about what I thought the principles should be for environment variables and this was a PCs is a process sorry of shorthand we used for process so that you have local names the names of the past children unless you want to and the root of the golden rule of units was a child cannot afford its parent except through a file system there was there's no way a child that that process can change what a parent process wants to do it and that was the old and so we had to work through all of Latin uh so he says here but then you would be other you don't want also give you don't wanna do is have to have each pronominal process know all the names of media passed down because that's crazy remunerative everybody on the train between here in some context and down here we want to do something has to know what all the names on and repeat them so we don't do that that's what last comment says Peter precision have proposed voyager 2 passes in your Europe some writing things that the problem intermediate processes should know anything about sports and we don't want about who's alternative environment
variables which was proposed our going too much because they still fall also stroke and this is from my best uh who who said hey here's to his deal with you know they're all microstructures external variables shall environment variables is most life as the session this is actually quite a good way of looking at it but he wanted to unify these mechanisms so that so that you can have multiple ways of doing things in all these different places you might pain and I think that actually came about so in the end we did we did finally 978 so it took 2 years to get that designed the lots of debates back-and-forth about not using keywords and as interprocess communication and back and forth so the so we find a lot of
a total of about according to them but this is also an e-mail came out 78 and you can see how late it was before we fix the coding mechanisms you had as my markings speech in response to popular demand please let me know if there any problems of your vacation and that's and then you can see that was when I got finally settled down to where it is today work and
then these also things that happened actually fairly late in the process of all national truth here documents were done early on the 6 and then we put the coding of here documents you know so that know it will be you you could have them not interpreted on interpreted as you 1 of so that was that and then he
was the last thing so the mid 77 when we finally got the shell perform reasonably well and that was what it says at the bottom there some modifications right known as far as as follows so critical and that that allowed us by the way this is important because this doesn't know what the next slide you can see why so that
it is group in Piscataway during progress workbench that that that was the group we had to sell because they were the biggest users of the system out there and what what they you can see what they said they said his his deal and the deal was releasing using their own version that's it runs pretty well a lot of differences between what detailed differences between what Marshall doesn't what yours does research shows but if you can give us a big import performance improvement and also significant improvement in expressive power so both of which we actually ended up doing was greatly but we did a not both more expressive power and we beat them on the track so that's how we that's how we got to sell the PW rate of the predominately
under suspicion example of the kind of differences there were between the 2 shells at the time and these guys had they work they were claiming that they would have to spend a year and millions of dollars to convert there so that the shell script code base to research and so you can see the kind of some of this is easy to understand some of it is going to but you can see the kind of differences there were there were just all kinds of detailed differences which for a group that sort of entrepreneur and production there are no deadline was not very exciting so we did finally succeed in getting the shell into the PWB group and I'm guessing there have because I never heard from again but not true I edges turns out John Mashey actually down the street from me in in California so still around OK so that that was so how we got there why we did some of things and hopefully after the after I finish natural here you can come in the intermediate or ask questions I would do until want to have a couple of things and then our them so I as
I said I was writing our 68 pollen writing I was holding it to the PTB and so 1 of these Dennis informally because it was too big to run on the Peter 11 64 K of memory but it was big at each phase of the compiler 3 phases was big enough so what this did for me he put in overlays and is a form of exact but just overlaid but the text saying not the not the data segment the text corpora so did that's always a we get there such a compiler running by can be very so I had to write debugger and from the CD bottle stuff was very specific to to the sea and the environment and so there was nothing that would just divide summer program which is so what I have so I'm not writing a and it was meant to be some sort of a clean debugger was didn't have it and it is did know about ceased stack-trace and stuff like that but it didn't knew it knew more about the the memory layout and the text segment the data itself so about and but interesting problem i never actually got to fix but I would like to fixed if I could have done and I should have known better when I started writing the code was when reported B is the machine from pioneered on has a certain length of intervals of most of his machine you're going to divide there someone and you're gonna run on the 3rd machine potential so how do you see how you write the code so you can keep those 3 things clean but was I started working on it so before I left the labs and then I gave up the to study the codebase I had what was just before you have to start again 2 things well living there is evidence that of linear and intermarried and so the last last slide on
top of the system and what we're doing so I took I did say that at the time there was no standard I O was known from 1 of those things of time when I got to the lab and 75 hours from our 68 free and so I said to Dennis things like 1 1 2 1 1 2 functions always have to return a value and so on so that that ongoing research on 1 or the other say this function does not return a value I don't like to say return 0 when I have nothing to say why do I have to say something In the end I went into his office 1 day and she I think he may find 1 and he said I figured and he said if I don't have to return the value of the function I can save 1 instruction latency and that's how we will avoid c and few and then you know when I got there and you know you 1 structures like their offsets into some base and that's how C was when I got there and then why not all wasn't it and is powerful In all yeah so I used to say and the members of my dog right because you were there some and other models so that follows step is to say well cows don't have peaks and mountains and have legs so why you you able to select the the leg of a mountain when it you know if it fits a structure with feels when you don't have 1 so but if you have a source that you can do that so it we did finally get to see to change this way structure fields were done so that they were associated with the structure so you could select a field was in the structure of the resulting from which was the point of the exercise you not to look most of this you know the other thing to me forever and I still don't understand it is what the differences between a definition and a declaration a standard and a substrate when this storage elephant and above all of standard but maybe you all you guys and when it's even when of so
I I did this for fun you read it I've I've always known is using the same anymore and it turns out that's not true turns that people still using which I thought was pretty surprising there that's that's the kind of few thank you yes it was a surprise to
me to so I let last last couple slides and some of the other here that you get back to me so there isn't Thomson shall have 3 3 manual pages my shall had 6 which was a lot more twice as many I did didn't hand captured by did it by hand when you know I've had in the Honourable what man mumble might no missing the bags and I think I got around 110 as kind of a law that helps to I my brain is not that big enough and so and then deposits and in-k-shell stuff that was done in the early eighties there was sort of tied together because at the corn was really driving some of the positive stuff time and I couldn't find the note but Denison died and I sent a note to deposits committee grumbling about something or a form of what and we gave up we just had always come to this so that was our output in you the positive side already given up more from on the shelf because of the lab was no real incentive to maintain stuff you know your mirror urea if you hadn't done something new to the parents so so of anyway so I I sort of gave up messing with the Schelling 78 something on and then the batch seems to be user of a tribal but seems like sexually courts are heavyweight additional shops so I just thought I'd throw this info from I don't actually know about this this is speculation about what I've read if anybody knows anything about this I would love to have them from afterwards and and least because I claim I didn't write the code and which is true I didn't write but but but I suspect the code was written study 3 which is when the some the best is changed over from 1 company you know something and a new rational for in and and again an outcome of using names here because of 1 of the few people things they didn't do it but that's what it looks like and it looks like it was a simple error some in in the what and they use some part of the code that will be the command line and the judgment as opposed to the you know just only picking off the function piece which is what what they should have them but it to their defense ought to ever did this is defense the environment for the export wasn't around when they were the proof and that come cracked me if I'm wrong I think Apache was really deployed much in 93 was it was it yeah you guys know more about this slide on but this is just my my crack might well the question is whether this is after 20 years so who's been using it and don't tell me that nobody used in those 20 years to do an export and just speculating I thought it was interesting effect so it is the
last slide last slide 1 what we do that I wish I hadn't done and well 1st of all I put out of 68 factors in the source code like I defined if capital they have to be it for animals and stuff and that was selected we buy code because I couldn't read that if without the stuff in then you every time you still probably the where's that belong on no idea so I can get used to that idea so I require macros and the we did get rid of them when I left the lab I I got rid of them before we left this again I would use 6 meetings in Stratford in when you run memory management that was very fragile when do that again find another way to do it on a would be I did not put functions in until 82 and I don't know why I didn't do that because it's obvious you should have done it because it allows you to do approach them with all the commands shell scripts where there was the functional abstraction mechanisms not true it's not that and so the I no idea why you we wouldn't think of it at the time of I would even now I don't know how you Bob Charles strips revising and sort but I would much in mind doing that that's not hard to do and be funded so much you do that and the other thing we did was a trick we played which is not a big deal but this also was efficiency in end-use efficiency of the we had a divides and so we put the in the old days you 7 bit characters from you know the the only 7 this we used in the character representation and so the was was like a head and so why use is the coding that you know this character is coded great enough is not even when you don't have post the eunuch 0 guys came along they weren't happy about that but so that did the fixing of that and by the time they fix it you could afford have 2 bytes per character 1 for the protein that and 1 for the rest of it or whatever but in those days and doubling the number of characters in the you know finding some other way to represent arbitrary strings and have concluded was would have been a pain in the neck so I would do that again only in it in the same timeframe for the same reasons I have done it but it certainly came out by this and the other thing that was true for this whole project them was that we deployed in 76 and we spent 2 years iterating with the user community still doing design really here we fix coding did a bunch of the other things so and that's the way selfish should event and you will not have you know users we did have real users they were using the system we're building and dumb I can't believe nobody red Rob Pike so but you know 110 pages citizens so now what I I just wanna tellership document official story animals so I was having a bad day without the last nite I and I told him a story told in the same story procedures had his retirement party and here you really the 1 know is still here so when I saw and that was all fart talk right about things I did a long time ago so the question is what we're doing for brain food lately when I quit sister in 1999 I was having dinner with Boris worlds and he said to us it is it awarded do selling retired and he looked at me he said you have to try and what it what he meant was you you have to bring forward right so what I do brain food well ACM cues is often and we in publishing over 10 years of Georgian character on the board and America's to and so other people I may have missed who here and think so uh we focus on problems not solutions which is a the way of saying the marking guys instead of the room the but not it's not that bad guys is just withdraw running for cell engineers and suffragist he was not thinking about to say particularly uh we are trying to move up upstate when what we mean by that is we know Unix is always in the back destruction stuff and the you stuff is a lot of our infrastructure in the lower level of the system and stuff like that and we do think that you know as a magazine we need to move further out into the application space we're not quite sure how to do it were experimenting with that's 1 of things time and we get a copy what you I think you guys have copied the firm way we used to get articles I think as well and we're going to copy what you're doing with the BEST publications journal I think you were going to copy that and so in I think we're coming out in 2 3 or 4 months with the cue that that will allow which will have every 2 months publishing more than thing I've been doing is them we finished the port of the 68 compiler to which is written itself to a PC and we use these intermediate language which is what meant was that it was for them and to said best assemble the planet use right and so we did the port using that as in the language because it has its own register-based intermediate language if you translate from and but it needs some work it's really an archeology project and it's not useful because it doesn't have interfaces that libraries and stuff so we will publish it um at some point and but I would they want publish until I put at least 5 and there are also some useful so um so anyway that's that's it guys thank you and
Quelle <Physik>
Gruppe <Mathematik>
Radikal <Mathematik>
Skript <Programm>
Kette <Mathematik>
Differentialgleichung mit nacheilendem Argument
Generator <Informatik>
Einheit <Mathematik>
Physikalische Theorie
Computerunterstützte Übersetzung
Ordnung <Mathematik>
Tabelle <Informatik>
Lesen <Datenverarbeitung>
Algebraisches Modell
Algebraisches Modell
Diskrete Gruppe
Mathematische Logik
Demoszene <Programmierung>
Virtuelle Maschine
Weg <Topologie>
Diskrete Simulation
Endogene Variable
Äußere Algebra eines Moduls
Formale Grammatik
Tabelle <Informatik>
Konvexe Hülle
Anwendungsspezifischer Prozessor
Nabel <Mathematik>
Wort <Informatik>
Wiederherstellung <Informatik>
Lateinisches Quadrat
Prozess <Physik>
Element <Mathematik>
Atomarität <Informatik>
Familie <Mathematik>
Computerunterstütztes Verfahren
Regulärer Graph
Uniforme Struktur
Wurzel <Mathematik>
Maschinelles Sehen
Lineares Funktional
Physikalischer Effekt
Speicher <Informatik>
Algorithmische Programmiersprache
Automatische Indexierung
Gerade Zahl
Projektive Ebene
Varietät <Mathematik>
Zellularer Automat
Nichtlinearer Operator
ROM <Informatik>
Kontextbezogenes System
Physikalische Theorie
Wiederherstellung <Informatik>
Physikalisches System
Puffer <Netzplantechnik>
Inverser Limes
Gleichmäßige Konvergenz
Speicher <Informatik>
Leistung <Physik>
NP-hartes Problem
Fundamentalsatz der Algebra
Orbit <Mathematik>
Physikalisches System
Umsetzung <Informatik>
Objekt <Kategorie>
System F
Kernel <Informatik>
Nabel <Mathematik>
Program Slicing
Partielle Differentiation
Mobiles Endgerät
Gesetz <Physik>
Interaktives Fernsehen
Umkehrung <Mathematik>
Elektronischer Programmführer
Virtuelle Adresse
Metropolitan area network
Nominalskaliertes Merkmal
Schreiben <Datenverarbeitung>
Befehl <Informatik>
Gebäude <Mathematik>
Kontextbezogenes System
Dienst <Informatik>
Rechter Winkel
Grundsätze ordnungsmäßiger Datenverarbeitung
Content <Internet>
Open Source
Arithmetische Folge
Virtuelle Realität
Skript <Programm>
Überlagerung <Mathematik>
Elektronische Publikation
Patch <Software>
Surreale Zahl
Web log
Formale Sprache
Kartesische Koordinaten
Arithmetischer Ausdruck
Einheit <Mathematik>
Erweiterte Realität <Informatik>
Funktion <Mathematik>
Inklusion <Mathematik>
Konstruktor <Informatik>
Prozess <Informatik>
Element <Gruppentheorie>
Physikalisch-Technische Bundesanstalt
Funktion <Mathematik>
Deklarative Programmiersprache
Kategorie <Mathematik>
Gewicht <Mathematik>
Virtuelle Maschine
Interaktives Fernsehen
Keller <Informatik>
Interrupt <Informatik>
Zeiger <Informatik>
Elektronische Publikation
Endogene Variable
Keller <Informatik>
Inverser Limes
Formale Sprache
Ganze Funktion
Einhängung <Mathematik>
Bell and Howell


Formale Metadaten

Titel Early days of Unix and design of sh
Serientitel The Technical BSD Conference 2015
Autor Bourne, Stephen R.
Lizenz CC-Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen und nicht-kommerziellen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen und das Werk bzw. diesen Inhalt auch in veränderter Form nur unter den Bedingungen dieser Lizenz weitergeben.
DOI 10.5446/18650
Herausgeber Berkeley System Distribution (BSD), Andrea Ross
Erscheinungsjahr 2015
Sprache Englisch

Inhaltliche Metadaten

Fachgebiet Informatik

Ähnliche Filme