And this is joint work with a large number of students and faculty, both my PIs, who occupy spaces below, and say, compilers and hardware, and also spaces above in terms of new interfaces.As well as a wonderful team of grad students, who's actually building out a large part of this, which is all available as open-source.
Centralized configuration files can really save you a lot of time. Centralized compiler flags, configuration flags, because I work at a start up company where it's like, oh gee, we want to change that flag because we're supporting multiple architectures and I'm like, no I really don't want to edit all these build files.
You want to be able to reproduce your build environment, and part of that is the operating system. Your compilers , your build tools, the whole environment needs to be recreated. And maybe not all of these things that are in your source code management system.
And Tim Bell was one of our lecturers. We also had compiler technology. We had the source to an operating system-- a good one.
And whose education in computer science involved writing code on paper, not actually running anything through a compiler or testing code, and getting graded on paper. And so, this was one thing I saw.
And another quote from Thomas Pynchon-- "Who claims truth, truth abandons." And there's a little historical context. I loved working on compilers , because it was like-- it's like, oh, it puts everything together.
How can you communicate and condense that into just words in an encyclopedia or perhaps just some diagrams? And the only encyclopedia compilers , and there's a blog post on exactly this on the website, they were acutely aware, perhaps even more so than we are today, of just how fragile and vulnerable civilizations are.
Now, over the next seven years, the GNU Project made much of that from scratch. They created the GCC code compiler , the Bash shell, and a host of other core utilities. But they were always missing one key component.
But on the 3rd of May I heard from somebody called Lee Smith at advancedRISCMachines.co.uk. And so I crippled the C compiler .
It's my honor to welcome Zia Ahmed. Zia is a Lyft driver and the compiler of "Lyft Me Up San Francisco." So Zia, in your own words, what is "Lyft Me Up San Francisco"? Well, to start with, thank you very much for having me.
The syntax is actually as specific as the syntax for Inform 6, which means that even though it looked intuitive and it was easy to read, oh, man, you can get the most amazing compiler errors out of it. And because it's trying very much to help you and figure out what you meant to do, it's not as simple as, I think there might be a semicolon missing.
at that time. The concept, the profession was just starting to evolve. So out of crisis comes innovation, and Hopper, goes and, over an 8 month period invents a critical piece that she would call the Compiler . The compiler would allow the computer to start helping the programmer program itself. She tells the world about the compiler in a very funny titled paper 'The Education of a Computer' and in that paper she maps out how a Compiler can pull from a library of subroutines, um, take care of many of the administration functions
And so he said, "I need to make fun of him. I need to put in a comment system." And so, his friend when he saw the comment was like, "What the fuck? hardware and trying to write a compiler in BCPL while earning a degree during the day.
And another quote from Thomas Pynchon-- "Who claims truth, truth abandons." And there's a little historical context. And I had a chapter on compilers and compilers as illustrating the structure of abstraction layers
I built databases at different points. I built a programming language and a full compiler for a language like Pascal 'Cause I didn't know where you went to buy one of those. So I made my own.
But on the 3rd of May I heard from somebody called Lee Smith at advancedRISCMachines.co.uk. And what I did was I made the C compiler only produce 32-bit instructions that weren't too complicated that I knew I could compress down into 16-bit instructions.
And another quote from Thomas Pynchon-- "Who claims truth, truth abandons." And there's a little historical context. There was an entire-- back in the day I did compiler research.
I put MIP style floating point on the side of it. And put a complete software stack on top of that-- compilers , assemblers, the Sun OS sources, and ran the whole lot. And I really think I learned a lot in those couple of years, because you really haven't lived until you've debugged a complete stack like that.
do during the 1950's to start spreading this concept of Automatic Programming? Well, first of all, she started employing as many people as she could in the design process. So of course people on her staff at UNIVAC worked on the first compilers and the first programming languages; Math-matic and Flow-matic were the first two that she built out. But she also incorporated people from other companies, and the users from the companies that were using the machines. So in effect, what we would call say, open source programming today,
thank her though, for being such a strong pioneer and setting the foundation for the rest of us going forward. So I'd like to take some questions at this point. Person 1 from audience: So you know today we think of compilers compiling into an assembly language which is some representation of the underlying machine codes. Um, how did things look in the '50's to then, 'coz you haven't mentioned the, you know, machine codes and
that she would call the Compiler . The compiler would allow the computer to start helping the programmer program itself. She tells the world about the compiler in a very funny titled paper 'The Education of a Computer' and in that paper she maps out how a Compiler can pull from a library of subroutines, um, take care of many of the administration functions of the programmer and create automatically, machine code. She, 6 months later, produces
And when I'm talking about tools here obviously, I'm talking about the low level stuff. I'm talking about, your compilers , your interpreters, everything that basically takes the bits and turns them into something that can be run as an application.
- He wins Rich over almost immediately. Well, the logic was written by hand, bypassing the compiler 's safety checks, and so they accidentally wrote outside the memory stack.
activity was one thing. The other possibility would be somebody who's just trying to make things better by installing their locally modified version of a compiler , because there's a slightly better optimizing with a new version, or it's a beta version of the next compiler or something.
would parade Marilyn around and say "Look what you can do with this language". She used other techniques also. More hardball techniques like she convinced her friends at DOD that they would not buy any more computers after 1961 that did not have an operational COBOL compiler . So there's other ways to push a certain technology forward as well. In 1967 Hopper retires from UNIVAC and she could've had a very nice relaxing retirement
Later on, she lead research teams. She led the team that basically invented Static Single Assignment, you know, compiler technique. And one of her employees had built a parser. This is actually the guy who wrote the parser that's part of the Jikes Java compiler . I don't know if you guys are familiar with that.
So he was saying, "Well, it's really worth it for what it builds in your brain -- reading source code. So how do I do it? There was a machine called the Bunker Rainbow 300, and somebody told me that the Fortran compiler for this machine was really amazingly fast. And nobody had any idea how it worked. I got a copy of the source code listing for it. I didn't have a manual for the machine, so
It was only in code, because I hadn't gotten the manual for the machine. Eventually, I was able to figure out why this compiler was so fast." And then, being the algorithms guy -- "Unfortunately, it wasn't because the algorithms were brilliant. It was just because they'd used unstructured programming and hadn't optimized to the hilt. It was just basically the way you solved some
And then with modern cellphones, you can record yourself, not only your audio. My colleague, Kathy Yelick-- I've got opinions about programming language compilers , but when she speaks, I listen.
in painstaking detail, check every single case, and understand the possibly strange and alien logic of the proof just to see if it's correct. Instead, all we're going to do is we're going to take those files, we're going to give them to a Lean compiler , and if it builds, we can know with absolute certainty it's correct.
- For the last two years, they go crazy. No, intrinsics is fine. The compiler - - You can optimize your compiler . Auto-vectorization, it's your fault. You don't
- Yeah, before DOS, they were largely a language company, so they had made BASIC for a lot of computers and they had a Fortran compiler and a Pascal compiler ,
object constructors manually from the dispatch table and stuff because you don't have the runtimes to do it for you. So you're working with a compiler that doesn't have its runtime, and I don't want to rat
But it is interesting. So my thesis was called "A Performance Study of the Acorn RISC Machine." And I wrote a C Compi-- sorry, I wrote a C Compiler . I wrote a instruction set simulator called ARMulator.
It had been so bad, I'd forgotten it. I'm sitting with a VP, and he's going, what do you mean you don't know where the compiler is to be able to reproduce code for an SNMP fix that we needed to get immediately.
The other possibility would be somebody who's just trying to make things better by installing their locally modified version of a compiler , because there's a slightly better optimizing with a new version, or it's a beta version of the next compiler or something. And then we would accidentally use that in production to ship a production release out.
language which is some representation of the underlying machine codes. Um, how did things look in the '50's to then, 'coz you haven't mentioned the, you know, machine codes and assembly languages and things like that? And also what was the correlation, if she had any, to John Backus who did the Fortran Compiler ? Kurt: Sure, sure, yeah. Um, yeah there were 2 paths that were happening. Hoppers was the
the original program. It was very elegant. Later on, she lead research teams. She led the team that basically invented Static Single Assignment, you know, compiler technique. And one of her employees had built a parser. This is actually the guy who wrote the parser that's part of the Jikes Java compiler .
But, I took it as an interesting challenge. I could figure out begin, and then I would start to decode. The operation codes had some two lettered mnemonics and I could start to figure out, "This probably was a load instruction, This probably was a branch." And I knew it was a Fortran compiler . So at some point, it looked at column seven of a card and that was where it would tell if it was a comment or not. After three hours, I had figured out a little
And that helped me get around. But really" -- oops, I'm reading the wrong thing. "It was a puzzle. And I kept making little charts like I'm working at a security agency trying to decode a secret code, but I knew it worked and I knew it was a Fortran compiler . It wasn't encrypted in the sense that it was intentionally obscure.
And so he said, "I need to make fun of him. I need to put in a comment system." And so, his friend when he saw the comment was like, "What the fuck? And he's like, "Well, how am I going to prove the correctness of my erlang compiler ?" Norvig said, "I rarely have a program that I can prove correct.
You came to a crossroads. I mean, you built, you know, compilers , you design your own programming language, you built compilers , databases, all this things you mentioned. And you started building a text editor and then here came to this crossroad, I'm gonna make this fun.
There's networking, there's gonna be just performance, operating systems, compilers .
IBM itself, for example, a lot of famous women from the sort of earlier days of programming languages and compilers , and so on.
job's going to be so much easier, when you probably will down the road. So if you design this up front and think about it, how do you do this when you have output for your compilers ? How do you want to structure your trees, how do you want to name them, how do you want to name your packages?
programming languages, and something called Meta-Programming, which are programs that write programs, or things like compilers , and semantics, which are sort of the meanings
to pass that on to any of my students. There are people alive now in computer science who are doing this well -- a few. But I could count on the fingers of one hand the people who love source materials the way I do." And he went on to describe all his collections of source code, various compilers from the 60's that were written in interesting ways, and Dijkstra's source code to the THE operating system which he hadn't read, but he's holding for a rainy day. And described one time he broke
- For two years, and two years later, showing hundreds of examples of handwritten assembly. No, no, no, you're doing it wrong. The compiler can do this.