I'd like to thank all those of you who have included condolences in your comments. Yes, I lost my dear wife of 52 years 0n 27th May 2019 (her 76th birthday) Despite the sadness we tried hard to make it an up-beat occasion. Certainly Julia gave me huge encouragement in everything I did for Computerphile and it was just wonderful for me to know, during the funeral, that the A/V systems and the HD recording were being handled by those Computerphile stalwarts Sean Riley and Steve Bagley. Many thanks guys.
@Flankymanga5 жыл бұрын
My Condolences to you professor. It is a joy to listen to you explaining difficult topics like compilers. I hope you will find strength to continue in your follower base from computerphile, which as one can see, is huge.
@hugoporras145 жыл бұрын
I'm so sorry to hear that, hope you the best, you are one of my favorite hosters of computerphile. (If something is misspelled or grammatically wrong I'm sorry, not an English speaker, again, I'm sorry)
@donovanvanderlinde34785 жыл бұрын
You are a beautiful person sir!
@Aziqfajar4 жыл бұрын
I'm so sorry to hear that... I wanted to thank you for contributing into such a beautiful video which I could actually and potentially understand the best. Pleased to watch your hard work. Be strong, professor.
@GeodesicBruh4 жыл бұрын
ProfDaveB condolences
@user-ov5nd1fb7s5 жыл бұрын
Professor Brailsford is a pleasure to listen to. My condolences.
@LittleRainGames5 жыл бұрын
He died?
@user-ov5nd1fb7s5 жыл бұрын
@@LittleRainGames no, one of his relatives died. I am not sure which.
@givemecoffeeee425 жыл бұрын
My condolences, professor. Thanks for the lesson and I wish you the best.
@raffitz5 жыл бұрын
My condolences to Prof. Brailsford in what is certainly not the best of times. I hope he takes some comfort in the fact that his videos and his pedagogic skill are unparalleled in getting me excited about whatever the subject matter may be, even when it's something I already know.
@rohithkattamuri40195 жыл бұрын
What happened??
@jackik14105 жыл бұрын
@@rohithkattamuri4019 Julia Bailsford died, see the end of the video. Condolences from me aswell.
@paulsteenbergen42235 жыл бұрын
My deepest sympathy for your loss Prof. Brailsford. -When someone you love becomes a memory, that memory becomes a treasure.
@Milosz_Ostrow5 жыл бұрын
This software bootstrapping process is akin to the way high precision machine tools were developed over the last couple of centuries, using early, crude lathes and milling machines to create parts for ever more precise lathes and milling machines. Mankind has come a long, long way from using sticks and rocks, and the journey has been difficult.
@mrlithium695 жыл бұрын
very true analogy
@BertGrink5 жыл бұрын
Yes it is essentially the same process.
@TheLivirus5 жыл бұрын
I was thinking of precisely this! :)
@flymypg5 жыл бұрын
Thanks for mentioning Julia Brailsford, and giving us the chance to share our love for The Professor during this time. My own family has gone through a wave of "departures" this year, and it is truly a fact that "grief shared is grief diminished". The grief of departure is balanced by the joy of their having been here in the first place, especially as stories are shared. "Laughing through tears" is a real, and very special, place to be.
@nomaxx11765 жыл бұрын
My condolences on your loss. Please take heart in the fact that for many of us, myself included, your videos taught us so much about computer science, and encouraged us to keep learning more. We wish you the best in life.
@bemk5 жыл бұрын
I'm sorry for your loss Prof. Brailsford.
@rohithkattamuri40195 жыл бұрын
What happened??
@x3ICEx5 жыл бұрын
@@rohithkattamuri4019 @michael wittmann Julia Brailsford passed away.
@x3ICEx5 жыл бұрын
Hopefully nowhere. Re: Anders Jackson "3ICE oh. Where can I see that?" 43 minutes ago p.s.: End of the video has the dedication notice if that's what you meant.
@PaulTheFox19885 жыл бұрын
My condolences for your loss Professor Brailsford, I know it can't take the pain away, but I hope that the many messages of support from the commentators on this video give some small comfort through these trying times.
@AshleyWrigglesworth5 жыл бұрын
Prrof is like the David Attenborough of software, even sounds alike. 🤔
@flymypg5 жыл бұрын
He's both a fundamental contributor to the field, and an awesome explainer and presenter. What a joy to visit with someone with a life passion spanning so many decades. May we all be so fortunate!
@Richardincancale5 жыл бұрын
The beauty of work by folk like Peter Brown in the early 1970s was the idea that you might design your own language that was specific to your problem area. Then use bootstrapping to port this problem specific language to other platforms as required. Nothing more complex than a text macro processor was needed, and if your macro processor was too simple you could apply the same technique to that tool.
@nick2me15 жыл бұрын
Sorry to hear of your loss. My condolences, professor.
@mrcturbor5 жыл бұрын
My condolences to professor Brailsford. Losing a loved one is one of the hardest things in live. I wish you all the best.
@Jojoxxr5 жыл бұрын
You’re an absolute legend, Professor. Love your lectures, very sad & sorry to learn about your loss.
@BrendanGrainger5 жыл бұрын
You are an absolute treasure for all you do Professor. I'm so sorry to hear of your wife's passing.
@ahmedelakrab5 жыл бұрын
Sorry to hear of your loss, professor. My condolences from Morocco.
@jayjeckel5 жыл бұрын
I have never been as excited for a video as I am for the next one in this series. Compiler bootstrapping is such a fascinating topic and Professor Brailsford is a great presenter. :)
@KenHilton5 жыл бұрын
My condolences, professor. Thank you very much for explaining this in such great detail, I wish you the very best.
@SKyrim1905 жыл бұрын
My condolences to Professor Brailsford
@Aziqfajar4 жыл бұрын
I certainly liked the explanation in this video regardless of me being very confused about bootstrapping. My deep condolences to your loss, prof.
@spikeevans14885 жыл бұрын
There is also the concept of cross compiling where machine A already has a c compiler and you use that to build an assembler for machine B.
@borisdorofeev56025 жыл бұрын
Thank you for another great video. I am sorry to here about the Professors loss.
@DrRChandra5 жыл бұрын
Reminds me of the GNU C compiler build process. It assumes you have a K&R C compiler available, and in the first build phase, you get a functioning GNU C compiler binary. But then that new GNU C compiler is used to compile the source for itself, thus producing a theoretically better C compiler.
@AndersJackson5 жыл бұрын
Oh, those where the times. :-)
@Kirillissimus5 жыл бұрын
The last time I compiled GCC it has an option in the makefile to only rely on having linux-tools package installed that contains the local assembler and the linker. It didn't strictly require you to have any other C compilers available. The source code of GCC had a TCC (”tiny c compiler”) written in gnu assembler included that was used to build a compact version of GCC. Then that mini-GCC was used to build a full version of GCC, then the GCC was used to rebuild full GCC again and again from the same source code until the process started to provide the same executable as in the previous step.
@AndersJackson5 жыл бұрын
@@Kirillissimus oh, those where the days. Memories. :-)
@walterjorgemazzoni5 жыл бұрын
Professor Brailsford, its a privilege to learn from your videos. Thankyou and kind regards from Argentina.
@brabhamfreaman1664 жыл бұрын
It's deeply saddening news - my condolences Professor - but what greater tribute to your dear wife than to make so great a contribution to the CompSci-lay community's understanding of your life’s work. This, in essence, even now in 2020 is David Brailsford's, and by extension Julia's, legacy. We, the benefittors, shall never forget nor take for granted your deep sacrifice. With great respect and earnest regards, JH.
@insoft_uk5 жыл бұрын
He was one of the best ones in these videos, easy to understand and follow.
@JxH5 жыл бұрын
Oh dear. Deepest condolences Professor.
@bernardo0135 жыл бұрын
Thinking of you today, Professor
@rty19555 жыл бұрын
The term "bootstrapping" came about from punched paper tape from a KSR-33 teletype. This paper tape was in binary and was usually hung up on a peg on the side of the computer. The shape of it looked like a teardrop loop similar to a "bootstrap" that were on saddles for horses. Thus you got up onto the horse with those bootstraps. Same as bringing up the computer from a "bootstrap". I wrote MANY a bootstrap loaders for various machines. Most tapes were not paper they wwre made from Mylar which was much more durable for many, many uses. In addition an Assembler was 1:1. Meaning for every line of source code, it produced one binary opcode plus operands. Usually it made two passes of the source code. Assembler did have provisions for structures. I personally wrote over 250,000 lines of assembler code, and used to write complete applications such as a/p, a/r, g/l, payroll all in assembler and on a 48k mainframe. I wrote a banner printing program in 160bytes and used no o/s. Just raw mainframe power
@egenethebest91075 жыл бұрын
I had to explain this to my students so many times, this video would be a great aid on making it more understandable for them!
@Manava20125 жыл бұрын
Its mind boggling.. my head is spinning. Hope to see a follow up on compilers and assembler
@ralfoide5 жыл бұрын
Monsieur Brailsford, je vous prie de recevoir mes très sincères condoléances et l’expression de ma profonde sympathie. Nous sommes nombreux à apprécier l'effort que vous mettez dans votre enseignement. Le malheur qui vous frappe nous permet de vous dire combien nous sommes proches de vous, et j'espère que cela puisse vous apporter un peu de réconfort.
@maycodes3 жыл бұрын
My condolences, professor. Thanks for passing your knowledge
@TheBodgybrothers5 жыл бұрын
"Perfect output, first time, of cause" - what a beast of a man
@drskelebone5 жыл бұрын
I can offer nothing more than my deepest sympathy and love, Pr. Brailsford.
@merseyviking5 жыл бұрын
My deepest condolences Prof. Brailsford.
@Fractal80Y5 жыл бұрын
Ah finally the best explanation and video i have found on this
@SomeGuyInBrisVegas5 жыл бұрын
Condolences for your loss Professor.
@youretheai75863 жыл бұрын
I was trying to wrap my mind around what you were saying as I was mixing up compost for my garden. :-)
@alpaslaneldemir69045 жыл бұрын
My condolences Prof. Brailsford.
@RockBottom456 ай бұрын
I love, how this room seems like out of the 70s xD And terrific content btw :)
@rojasbdm5 жыл бұрын
I’m sorry about your loss.
@pdelong42 Жыл бұрын
Thanks, now I finally understand why the build process for GCC was so seemingly complicated. Maybe I'll give it another try. I haven't attempted it since the late '90s. And it was abysmally slow on the x86 hardware I had access to at the time (running Solaris 2.5.1).
@AndersJackson5 жыл бұрын
Sorry for your loss, Professor Brailsford.
@movax20h Жыл бұрын
10:42. It is not quite accurate from historical perspective. First C compiler was written in newB (NB). newB compiler was written in B. At that time B compiler was written in B. Before that B compiler was written in TMG. TMG compiler was written in BCPL most likely, and earlier than that in assembler. The assembler is sufficiently easy so it can be implemented in assembler and then hand translated to machine code, or on other machine (i.e. in Fortran or whatever) with already working toolchain. Only about year later C compiler become self hosting, and was written in C and compiled by previous version of itself. Simple two-pass assembler can be few hundreds instructions. In late 60s and early 70s, nobody would translate that manually tho (it would take maybe a week or two, but was error prone), instead use some other machine (and possibly other language or assembler) to generate assembler executable and transfer it to the target machine (assuming you had an operating system, which you probably did not).
@nab-rk4ob5 жыл бұрын
What a blessing he was. He knew so much.
@Rob_III5 жыл бұрын
I'm not quite sure you understood...
@jamildrareni43045 жыл бұрын
Sorry for your loss Professor.
@flymypg5 жыл бұрын
Building the tools to make the tools to make the tools to make the program run. When you dig all the way down, here's the sequence: Computer schematic -> working circuits -> binary machine instructions-> assembler -> compiler -> program -> executable.
@scbtripwire5 жыл бұрын
My condolences Professor Brailsford. :(
@guitarman130215 жыл бұрын
My condolences Dr Brailsford.
@davidpruett93075 жыл бұрын
I knew I had seen these "T diagrams" before. Then I remembered. In the 1970 book "A Compiler Generator" by McKeenan, Horning, and Wortman they use the diagrams to describe the XCOM system. It describes a language called XML used to generate compilers. Interesting bit of history - XPL was used by NASA to generate the compiler for their HAL language used on the Shuttle. XPL was derived from PL/I.
@toddblackmon3 жыл бұрын
2:03 The marker has a on the end!
@fliptoynk5 жыл бұрын
Well... In text-based applications, I couldn't see the difference in performance between TC and TASM... except that it's harder to code in tasm, and tc's product(the .exe) is quite bigger in bytes(probably because the headers were included in the compilation). But in terms of graphics, I was shocked in awe back then when I was given a demo of a 3d paper plane written in asm. Compact, no ems, just base memory, and the graphics animation are clean, no flicker nor auras or residues. The bootstrap process may not be perfect, but hey, it made the programming tasks much easier for the rest of us so kudos to you prof nonetheless.
@taylornate25 жыл бұрын
Roller Coaster Tycoon was coded in ASM
@PvblivsAelivs5 жыл бұрын
It seems that the quality of the executable produced by an assembler depends only on its assembly-code input. An assembler takes each instruction as-is and makes it part of the image. You can consult an op-code table and determine how each instruction has to be represented in the image. It's not like a compiler that could implement a statement in different ways, or even decide the statement unreachable and not implement it at all.
@RockClimberAlex5 жыл бұрын
Oh jeez, I'm sorry for your loss professor.
@JulianOnions5 жыл бұрын
So sorry to hear about Julia.
@andljoy5 жыл бұрын
I dunno , when i was studying this i just kind of got it , now the T diagram just makes it sound more complicated than it is.
@steefant5 жыл бұрын
Agreed. No idea how one can talk 15mins about that subject with so few details and still make it that complicated. And I don't believe it's the editing because the drawings themselves are not very clear to begin with. Probably he just not prepared it at all because it's so trivial to explain... ;)
@rt15172 жыл бұрын
Same here. T diagrams are making things a lot more complicated and confusing than they are. Very bad choice. He should have used shapes and arrows. One shape for source codes (including assembly code) and one shape for binaries. An arrow would go from one shape to another (often from a source to a binary) and would require an associated binary (a compiler or an assembler).
@revooshnoj40785 жыл бұрын
R.I.P.
@rentzepopoulos5 жыл бұрын
My condolences to Prof. Brailsford...
@dukereg5 жыл бұрын
I hope there are videos coming on the Forth style of bootstrapping.
@MrSlowestD165 жыл бұрын
Yeah I think that last bit is the most important. Once you're in a higher level language like C you can go back and re-write or write assemblers and compilers that may not be efficient, but can produce efficient binary, and then you're golden because you can rebuild the compiler or assembler with that. Also, this was *way* more of a problem back in the Bell labs days, and when new archs come out, now everything can be cross-compiled to start off with, so no need to do this from scratch unless you really want to.
@GeezRvonFart5 жыл бұрын
Give this man an award for awesome. Half the fun in watching these vids are the info and the other half is astonishment of the man's knowledge.
@Antiorganizer Жыл бұрын
So the point is to do it in stages. From ground up, which is starting with assembler, you create a simple language that gives you that much more expressive power that makes creating the next gen language that much better. It would take a few steps before resembling like a more complete C compiler. The question then is, what initial "enriching" language features would you create at each step? I suppose the act of having variables, local scopes, and subroutine calling would be a nice start. Then, next gen, structs, proper argument handling in functions. Or... instead of that, create a BNF parser/language at which point you can define languages. Anyway, I'd love to drop by for tea to have this out. I'm a tad far away though.
@michalkononenko98335 жыл бұрын
My condolences, Professor Brailsford.
@morkovija5 жыл бұрын
Great video, sorry for your loss
@roar7795 жыл бұрын
My condolences to the professor.
@raglanheuser11625 жыл бұрын
but who wrote the bin compiler? and what does quality mean?
@RaminHonary5 жыл бұрын
I used to write assembler programs on paper, then I would hand-translate them to binary (actually hexadecimal), which is basically manually doing the work of the assembler program with a pencil and paper. This involved looking up the operation codes and register codes from a table in the manual of the computer chip written by the manufacturer, and then writing the hex codes on note pad next to the assembler codes. After double and tripple-checking everything, I would enter the binary bit patterns into the computer with physical switches on a 16-button hexadecimal keypad. The keypad itself was hard-wired directly to the computer's memory, anything I entered on the keypad would be copied into the memory circuit directly.
@Kapin055 жыл бұрын
This sounds much more interesting than it must've been to do.
@RaminHonary5 жыл бұрын
@@Kapin05 Actually, I found it to be a ton of fun. It really lets you see down to the circuit level exactly how a Von Neumann architecture computer works. And you can get it to do fun things like make noises, or control actuators. Nowadays, USB controllers circuits do all the work for me, but I know that these controller circuits are doing the exact same thing that I used to do by hand when I was writing bits into memory directly. The experience taught me why computer hardware manufacturers need to work so closely with the people who write compilers and operating systems. It also gave me an appreciation of how complicated modern computers are, and how much work it takes to make a compiler and operating system. This is also why I am so thankful for the Linux community.
@rawriclark5 жыл бұрын
i am shaking just by reading this
@Kapin055 жыл бұрын
@@RaminHonary Huh. coolio. I don't have the patience for that myself, so that's kinda surprising to hear.
@unlokia5 жыл бұрын
Professor, I feel my copy of "gcc" may have a bug, since it doesn't make that rattling sound when I compile; where do I submit a bug report?
@silkwesir14445 жыл бұрын
it is very quiet, you have to listen more closely.
@whiteeyedshadow84235 жыл бұрын
my condlences proffesor brailsford...just learned about your loss
@xakkep90005 жыл бұрын
TY for very clear explanation!
@BertGrink5 жыл бұрын
One of Professor Brailsford's great fortes is his ability to make even the driest technical stuff come alive by not merely explaining the technical side, but by including the people involved. He is just a great story teller.
@tomcho82215 жыл бұрын
My condolences, Professor.
@Gooberpatrol665 жыл бұрын
Professor Brailsford showing off his music collection
@AKorigami5 жыл бұрын
What is the cd with the duck?
@CurtisDyer5 жыл бұрын
Thank you, Professor.
@andrewjknott5 жыл бұрын
"Three attempts" (holds up four fingers).... "Three attempts!" (hold up 2 fingers).
@silkwesir14445 жыл бұрын
at least the errors cancel each other out (the sum is 6, as expected)
@ximalas5 жыл бұрын
The two hardest problems in CS is cache invalidation, the naming of things, and off-by-one errors.
@HighestRank5 жыл бұрын
ximalas CS is, as most know, the abbreviation for a game called ‘Counterstrike’.
@ximalas5 жыл бұрын
@@HighestRank 😛
@silkwesir14445 жыл бұрын
@@HighestRank "Counter-Strike", with a hyphen. That's how the game spells itself. However, it seems to be a common mistake, so common that even some 'official' material calls it "Counterstrike".
@PlayTheMind5 жыл бұрын
They oddly look like *Tetris*-diagrams
@Pablo-Herrero5 жыл бұрын
What books, papers or other literature are available, where you can read more about this?
@jan_wh1tey5 жыл бұрын
I'm about 1/3 into the video, and if they don't put the "T"s together like tetriminos, I will be very salty.
@jamesExiledLegends5 жыл бұрын
R.I.P. Mrs. Brailsford
@theharbingerofconflation5 жыл бұрын
Just tell people about opcode already. Go deeper Brailsford! Go deeper!
@rahulbansode15375 жыл бұрын
7! 7!
@scorched15985 жыл бұрын
Object code first! Then opcodes!
@chrisbebek31925 жыл бұрын
Still has a stack of tractor feed paper. Badass.
@morrolinux5 жыл бұрын
I always wonder which program are you using for these cool VFX?
@UpcycleElectronics5 жыл бұрын
Thanks for the upload. I would appreciate it if you would expand this topic into the ISA and various implementations. For instance, Intel's 8051 architecture is prolific since it became public domain. I have long wondered what real differences exist between the original tool chain and all of the current manufacturers that build on the 8051. It is not something people often talk about or demonstrate within the hobbyist community. There are 8051's currently manufactured by Silicon Labs, Microchip, Cypress, Analog Devices, and many many others. Where is the gap between the original intel tool chain and these other derivatives? How is it that companies like Kiel and Analog Devices sell proprietary software toolchains for their devices based on a public architecture?
@HighestRank5 жыл бұрын
The opcodes were listed by the chip manufacturer, which documents were then delivered with their reference board, to a company who used them to write an OS, which like UNIX are licensed and therefore kept secret. The.End.
@AutoFirePad5 жыл бұрын
My condolences.
@stevefrandsen78978 ай бұрын
My belated condolences
@adulion4 жыл бұрын
i love how he uses dot matrix printer paper
@haydo83735 жыл бұрын
So does the assembler fulfill a mapping functionality? Eg, replace x assembly instruction with y binary instruction.
@BertGrink5 жыл бұрын
Yes i think that is correct; one of the features of assembly language is that there is an exact one-to-one relationship between assembler mnemonics and the resultant binary code, something no other languages can claim.
@haydo83735 жыл бұрын
@@BertGrink Awesome, thank you for the reply!
@phoenix24645 жыл бұрын
9:50 does some have a link to this video ?
@00Skyfox5 жыл бұрын
What is that CD on his desk that has a cartoon duck on it?
@maciej-365 жыл бұрын
Soo how do you write the first assembler?
@micr0xchip0xverflow65 жыл бұрын
Great explanation, but I'm still confused.
@Boopadee5 жыл бұрын
At the bottom level, someone manually had to write the instructions that are found in the bottom level assembler binary. Past that, everything is written at a higher level and compiled.
@micr0xchip0xverflow65 жыл бұрын
@@Boopadee Thanks, I'll have to watch it again knowing this. Then I will try and write my own bootstrapper for practice
@trucid25 жыл бұрын
It's compilers all the way down.
@confusedwolf71575 жыл бұрын
Pssst... hey kid wanna score a compiler with linker and loader huh?
@BertGrink5 жыл бұрын
SHHHH! not so loud, but yes, i want one, how much is it?
@himagainstill5 жыл бұрын
@@BertGrink Just a few thousand lines of assembler
@casperes09125 жыл бұрын
My CS professor for programming languages used t-diagrams too.
@Arcsecant4 жыл бұрын
I'm going to start calling my output "core images" next commit.
@sidazhou5 жыл бұрын
totally not confused
@cheaterman495 жыл бұрын
Wow, classy new glasses!
@vincei42525 жыл бұрын
Does that mean that any program written or ever will be written can be traced back, in an unbroken path, to someone flipping switches on a computer input panel somewhere in the dark past? Like evolution? A tree with many dead ends and what we currently use that is not currently a dead end?