
English: 
We've talked about various aspects of
bootstrapping a lot on Computerphile.
Going way back, I think, to a Tom Rodden
video, three or four years ago now, which
is doing very well
>> TomR: ... the lemma of the chicken and the egg ...
>> DFB: He talks very well about the essential
nature of bootstrapping, and so on, but he
very carefully avoids going into detail
because it does get complicated. The way
I've always found best to teach it is to
use a tool called 'T-diagrams', which you
just draw for yourself.  I'm going to
explain via T-diagrams what it means to
bootstrap. Bootstrap a system like an
assembler or a compiler or whatever? But
first of all what is a T-diagram? Draw me
a T-diagram!  Let us assume that you have
written a program - in Bell Labs'  C language [say].
You are very very proud of this program;

English: 
We've talked about
various aspects of bootstrapping a lot on computer file
Going way back, I think to a ton robin video three or four years ago now which is doing very well
Dilemma of the chicken and the egg. He talks very well about the
essential nature of bootstrapping and so on but he very carefully
avoids going into detail because it does get complicated the way I've always found best to teach it is to use a
Tool called T diagrams, which you just draw for yourself
I'm going to explain via diagrams what it means to bootstrap
Bootstrap a system like an assembler or a compiler or whatever, but first of all
What is a t diagram draw me a t diagram let us assume that you have written a program?
In Bell lab C language, you are very very proud of this program

Turkish: 
Hakkında konuştuk
bilgisayar dosyasında çok bootstrapping çeşitli yönleri
Geri dönerken, üç ya da dört yıl önce bir ton robin videosu olduğunu düşünüyorum.
Tavuk ve yumurta ikilemi. O hakkında çok iyi konuşuyor
bootstrapping ve benzeri temel doğası ama o çok dikkatli
Ayrıntılara girmekten kaçınır çünkü her zaman en iyisini bulmak için en iyi bulduğum şekilde karmaşıklaşır.
Kendin için çizdiğin T şemaları adı verilen araç
Diyagramlarla önyüklemenin ne demek olduğunu açıklayacağım
Bir yükleyici veya derleyici gibi bir sistemi önyükleme ya da her neyse, ancak her şeyden önce
Diyagramdaki nedir beni diyagrama çekelim, bir program yazdığınızı varsayalım mı?
Bell lab C dilinde, bu programla çok gurur duyuyorsunuz.

Turkish: 
Sizce kesinlikle harika ve ödülü kazanacaksınız. Bu giriş
Programınıza. Bu çıktı
Programınızdan ve bu düzeyde bunun ne anlama geldiğini söyleyebilirim?
Programın içinde yazıldığı anlamına gelir.
Kasten C seçtim çünkü düşük seviyeli donanıma oldukça yakın bir şey
İnşallah hepiniz basit bir dilde basit bir program yazdığınızı ve üst düzey ifadeler ürettiğinizde memnun olduğunuzdan memnun kalırsınız.
Nihayetinde bu şey bir peynir kullanımına geri dönmemeye çalışacağım ve temel bir görüntü ürettiğini söyleyeceğim.
Hatta buna hayır diyorlar. Bu bir çalıştırılabilir. Tamam?
iyi
Hepimiz biliyoruz ki bu bizim hakkımızın iyi olduğunu söylüyor.
 
Ajans bu girdiyi üretecek, bu çıktıyı üretecek. Bir sonraki soru C'yi nasıl dönüştürürsünüz?
çalıştırılabilir bir çalıştırılabilir ikili dosyaya
Programın hangisi olacak? Onu almak zorundasın

English: 
You think is absolutely wonderful and will win an award and all that. This is the input
To your program. This is the output
From your program and at this level I can say what does that mean?
It means that the program was written in
I've chosen C deliberately because it's low level it's fairly close to the hardware something like this
I hope you'll all recognize you're writing a simple program in a simple language and you're delighted when you're high level statements produce
Ultimately this thing I will try not to fall back into a cheese usage and say it produces a core image
They even call it that's about as no. It's an executable. Okay?
well
We all know that it's all very well saying our right?
Agency is gonna have this input it will produce that output. The next question is but how do you convert the C?
into a runnable executable binary
Which will be your program. You have to get that C

English: 
you think it's absolutely wonderful and
will win an award, and all that. This is
the input to your program; this is the
output from your program. And at this
level I can say: "What does that mean?" 
It means that the program was 'written in' [this].
I've chosen C deliberately, because it's
low level, it's fairly close to the
hardware. Something like this I hope
you'll all recognize. You're writing a
simple program in a simple language and
you're delighted when your high-level
statements produce ultimately this thing.
I will try not to fall back into a
[old fashioned] 80s usage and say it produces a 
'core image'. They even called it that at Bell Labs.
No - it's an 'executable'.
OK, well we all know that it's all very
well saying: "I'll write it in C". It's going to
have this input. Iit will produce that
output". The next question is:  "But how do
you convert that C [program] into a runnable,
executable binary, which will be your
program? You have to get that C

Turkish: 
Tercüme edilmiş ve burada T şemalarının gücünü tekrar çizmeye başladınız
C ile yazılmış giriş / çıkış
Şimdi işte zekice bir T bloğunu buna karşı yerleştiren zekice.
Bunun nasıl işlenmesi gerektiğini gösterir
İhtiyacınız olan şey, göreceğiniz bir şey olacak
Program açıklamaları üzerinde çalıştığınız makinede çalışan bir ikiliye mmm diyebilirsiniz, fakat bu nereden geldi?
Birisi bana C ifadelerinde alabilecek bir şey verdi.
Çalıştırılabilir ikili, benim Intel'deki kol yongamda çalışıyor, Apple'ımda ya da her neyse
Bu benim C derleyicim. Elbette, bir yerden gelmiş olmalı, ama daha sonra buna gireceğiz.
Böylece C derleyicisi var ve ana programınızın C dilini o derleyiciden beslerseniz ne olacağını biliyor musunuz?

English: 
translated. And here you begin to see the
power of T-diagrams. Draw this one again
input ... output...  it's written in C.
Now here's the clever bit. Positioning
another T block like that, up against
this one, shows you how this has to be
processed. What you need is something
that will turn your C program
statements into a working binary, on the
machine you're working on. You may say:
"Hmmm!  but where did this come from?"
Somebody provided me with a thing that
is capable of taking in C statements, is
is itself an executable binary it's
running on my ARM chip (or on my Intel, or on my
Apple or whatever). This is my C compiler,
of course, That's got to have come from
somewhere, but we'll get into that later.
So, there's the C compiler and if you
feed the C language for your master

English: 
Translated and here you begin to see the power of T diagrams draw this one again
Input/output it's written in C
Now here's the clever that positioning another T block like that up against this one
Shows you how this has to be processed
What you need is something that will turn you'll see
Program statements into a working binary on the machine you're working on you may say mmm, but where did this come from?
somebody provided me with a thing that is capable of taking in C statements is is itself an
Executable binary it's running on my arm chip on my Intel on my Apple or whatever
This is my C compiler. Of course, there's got to have come from somewhere, but we'll get into that later
So there's the C compiler and if you feed the C language for your master program through that compiler, you know what happens?

English: 
It produces an a dot out on UNIX or an executable binary the net effect of slotting that T diagram
Against here slightly downwards is to show you that
The C you've written gets converted into binary and the net output
from this
process
It produces out a program that you probably store in a file somewhere
Which is like this left-hand side only a little bit different because it's now
Input/output but look
What has happened during the compilation process? Is that by compiling your C statements for your program?
It drinks the minutes data. The compiler itself is a binary running on your architecture that you're perfectly happy with. It is squirting out
executable binary
So I can write in here
Let's say that's my output binary code, but that output binary code

English: 
program through that compiler you know
what happens! It produces an a.out on
UNIX or [in effect] an executable binary. The net
effect of slotting that T-diagram
against here, slightly downwards, is to
show you that the C you've written gets
converted into binary and the net output
from this process? It produces out a
program that you probably store in a
file somewhere, which is like this
left-hand side, only a little bit
different because it's now input ... /output
But look, what has happened during the
compilation process is that by compiling
your C statements for your program it
drinks them in as  data. The compiler
itself is a binary, running on your
architecture, that you're perfectly happy
with. It is squirting out executable
binary so I can write in here, let's say,
that's my output binary code. But that
output binary code - I'll stick with a
pink [colour] - I'll write BIN in here to show you
that that is what the compiler has done

Turkish: 
UNIX üzerinde bir nokta ya da çalıştırılabilir bir ikiliyi oluşturarak T diyagramını yerleştirmenin net etkisini oluşturur.
Buraya karşı biraz aşağı doğru göstermek
Yazdığınız C ikili ve net çıktıya dönüştürülür
bundan
süreç
Muhtemelen bir yerde bir dosyada sakladığınız bir program üretir
Bu sol taraftaki gibi sadece biraz farklı çünkü şimdi
Giriş / çıkış ama bak
Derleme sürecinde neler oldu? Programınız için C ifadelerinizi derleyerek mi?
Dakika verisini içer. Derleyicinin kendisi, mimarınız üzerinde mükemmel bir şekilde mutlu olduğunuz bir sayıdır. Fışkırıyor
çalıştırılabilir ikili
Böylece buraya yazabilirim
Diyelim ki bu benim çıkış ikili kodum ama bu çıkış ikili kod

English: 
I'll stick with a pink our right bin in here to show you that that is what the compiler has done for you
You think of it as input?
Producing output and I wrote it in C and you close your eyes as to what happens
It just works but your binary your a dot out
your ultimate executable will tell your input will produce perfect out put first time of course, but it is
Essentially written in binary and has to be to execute directly the hardware that has been produced by AC
Compiler and the T diagram for C compiler is this I accept as input C. I am a runnable binary
Otherwise, I won't work at all, but I have code
generation capabilities I
Generate binary that will run and that is your user executable
And here's the first point
I want to make the quality of the binary that actually is your compiler running may be very different from the
Quality of the binary that it spits out as a translation of your program

Turkish: 
Derleyicinin sizin için yaptıklarının bu olduğunu göstermek için sağdaki kutuya pembe bir şey koyacağım.
Bunu girdi olarak mı düşünüyorsun?
Çıktı üreten ve ben C yazdım ve sen ne olduğunu gözlerini kapat
Bu sadece işe yarıyor ama ikili sisteminizde bir nokta
Son çalıştırılabilir programınız, girdilerinizin elbette ilk seferinde mükemmel bir sonuç üreteceğini söyleyecektir, ancak
Esasen ikili olarak yazılmıştır ve AC tarafından üretilen donanımı doğrudan çalıştırmak zorundadır.
Derleyici ve C derleyici için T diyagramı C girdisi olarak kabul ediyorum. Ben çalıştırılabilir bir ikiliyim.
Aksi takdirde, hiç çalışmayacağım ama kodum var
üretim yetenekleri I
Çalışacak ve kullanıcı tarafından çalıştırılabilir olan bir ikili dosya oluşturun.
Ve işte ilk nokta
Ben derleyicinizin çalışan aslında aslında ikiliden kalitesini yapmak istiyorum den farklı olabilir
Programınızın çevirisi olarak tükettiği ikili kodun kalitesi

English: 
for you.
You think of it as input producing
output and I wrote it in C. And you close
your eyes as to what happens - it just
works. But your binary,  your a.out,
your ultimate executable, will take your
input will produce perfect output  first
time of course  But it is essentially
written in binary and has to be to
to execute directly
the hardware, that has been produced by
a C compiler. And the T-diagram for a C
compiler is this:
I accept, as input, C [statements]. I am a runnable
binary otherwise I won't work at all but
I have code-generation capabilities.
I generate binary that will run and that
is your user executable. And here's the
first point I want to make:  the quality
of the binary - that actually is your
compiler running - may be very different
from the quality of the binary that it
spits out as a translation of your
program. They may be very similar or it

English: 
could be that the C compiler is actually
very very slow at producing your output
binary. But if it gets there in the end
you don't care. It could be ultra-fast it
could be that you've written a C
compiler that's so bad that the output
that it produces for you is worse than
it itself is using. I hope you all get
the hang here: there's not necessarily
any direct link between the quality of
the binary you are running, to make the C
compiler work, as opposed to the binary
it is spitting out for your program as
its translation. They may be related, and
may be close. And all this. What I think
now I will try and do for you is to take
the story one stage backwards and start
speculating about how the heck did I get
the C compiler? Is it something that Ken
Thompson handed over - or Dennis Ritchie -

English: 
they may be very similar or it could be that the C compiler is actually very very slow at
Producing your output binary, but if he gets there in the end you don't care it could be ultra fast
It could be that you've written a see compilers are so bad that the output that it
Produces for you is worse than it itself is using. I hope you all get the hang here
There's not necessarily any direct link between the quality of the binary
You are running to make the C compiler work as opposed to the binary. It is spitting out for your program has its translation
they may be related and may be close and all this what I think now I will try and do for you is to take
the story one stage backwards
And
start
Speculating about how the heck did I get the C compiler?
Is it something that 10 Thompson handed over or Dennis Ritchie hand it over to me already made it could have been oh

Turkish: 
çok benzer olabilirler veya C derleyicisinin aslında çok yavaş olduğu
Çıktı ikiliyi üretiyor, ama sonunda oraya ulaşırsa, çok hızlı olmasını umursamıyorsun.
Gördüğün kadarıyla derleyiciler bir çıktı yazdıracak kadar kötü bir yazdın.
Sizin için ürettiği, kullandığından daha kötü. Umarım hepiniz burada takılıyorsunuzdur
İkiliğin kalitesi arasında mutlaka doğrudan bir bağlantı olması gerekmez.
C derleyicisinin ikili dosyaya göre çalışmasını sağlamak için koşuyorsunuz. Programın çevirisini yaptığı için tükürüyor
akraba olabilirler ve yakın olabilirler ve tüm bunları şimdi düşünmeye çalışacağım ve sizin için yapacağımı düşünüyorum
hikaye bir aşama geriye
Ve
başla
C derleyicisini nasıl ele geçirdiğime dair spekülasyon yaptım?
10 Thompson'ın teslim ettiği bir şey mi yoksa Dennis Ritchie'nin bana teslim ettiğinde zaten

English: 
you might say
Dennis how did you implement that to C?
Compiler and he was so well the first version I wrote off the back of an assembler
And of course this it goes on recursively forever, but Dennis who wrote the assembler
You know and back and back and back right down to squirting ones and zeros in on hand kids
No, let's presume for the next stage of the story that from somewhere your little machine
did also come with an
assembler
for low-level programming for filling in the bits that may be
The C compiler for one reason or another isn't suitable for well. How is that done in T diagram terms and
By looking at how the assembler is done. We can then see how it's possible to
Bootstrap off an assembler version of something to a higher-level version an assembler is like a

English: 
handed over to me already made? It could
have been. Or you might say: " Dennis how
did you implement that C compiler?" And
he would say: "(Oh! well. The first version I wrote
off the back of an assembler". And of
course this ... it goes on recursively
forever. "But Dennis - who wrote the
assembler?" You know, and back, and back and back,
right down to squirting 1s and 0s in on hand-keys. 
No, let's presume,
for the next stage of the story, that
from somewhere your little machine did
also come with an assembler for
low-level programming.
For filling in the bits that maybe the
C compiler, for one reason or another,
isn't suitable for. Well, how is that done
in T-diagram terms? And by looking at how
the assembler is done we can then see
how it's possible to bootstrap off an
assembler version of something to a
higher-level version? An assembler is

Turkish: 
diyebilirsin
Dennis, bunu C'ye nasıl uyguladın?
Derleyici ve bir montajcının arkasından yazdığım ilk versiyon o kadar iyiydi ki
Ve elbette bu sonsuza dek tekrarlı bir şekilde devam eder, ancak montajcısını yazan Dennis
Bilirsin, geri ve geri ve geri sağ aşağı eldeki çocukları ve sıfırları ezmek için
Hayır, hikayenin bir sonraki aşaması için, küçük makinenizin bir yerinden varsayalım.
ile de geldi
montajcı
olabilir bitleri doldurmak için düşük seviyeli programlama için
C derleyicisi bir sebepten dolayı veya bir başkası için uygun değildir. T şeması açısından bu nasıl yapılır ve
Montajcının nasıl yapıldığına bakarak. O zaman nasıl mümkün olduğunu görebiliriz.
Bir montajcı sürümünün bir montajcı sürümünün daha yüksek seviyeli bir sürümle başlatılması

English: 
like a compiler except - for those of you
who've done it - you know in every sense
an assembler is at a lower level.
Assemblers - particularly  macro
assemblers - they'll give you a vestigial
capability to do an array but they may
not have structures -  almost certainly
they won't. They're a higher-level construct
you see. So you're down with simple
add, subtract statements. You can move
about memory. You've got to understand
pointers - we've done lots of those. You do
them at the assembler level. You're in
charge. You must keep track of what your
pointers are doing. And so on and so on and so on.
It's just a simpler view of the world
and [yet] a more detailed and complicated one
in several ways.  I'll call it AC and that stands 
for [assembly code] or "assembler input". Now you
expect that assembler to produce you a
runnable executable binary. Well I'm
going to write this in here as saying
that the code generation from the
assembler is going to produce me what I'll 
call a "binary of type a" [BINa] It's produced

Turkish: 
Bunu yapanlar dışında derleyici, her anlamda bir montajcının düşük seviyede olduğunu biliyorsun.
Assembler bazı özel makro meclisleri, size bir dizi yapmak için önemli bir yetenek verecekler
ancak yapıları hemen hemen olmayabilir, kesinlikle göreceğiniz üst düzey yapılar değillerdir.
Demek basit bir toplama çıkarmışsın?
Bellek hakkında taşıyabileceğiniz ifadeler. İşaretçileri anlamalısın.
Bunları montajcı düzeyinde yaptığınız birçok şeyi yaptık. Sorumlu sensin
İşaretçilerinizin neler olup bittiğinin izini sürmelisiniz.
Bu sadece dünyaya daha basit bir bakış açısı ve birkaç yönden daha detaylı ve karmaşık bir bakış açısı.
AC diyeceğim ve bunun anlamı
assembler girişi şimdi
Bu montajcının size çalıştırılabilir bir çalıştırılabilir ikili dosyası üretmesini beklersiniz. Bunu buraya buraya yazacağım.
bu kod üretimi den

English: 
Compiler except for those of you who've done it, you know in every sense an assembler is at a lower level
Assembler some particular macro assemblers, they'll give you a vestigial capability to do an array
but they may not have structures almost certainly won't they're a high level constructs you see
So you you're down with simple add subtract?
Statements you can move about memory. You've got to understand pointers
We've done lots of those you do them at the assembler level. You're in charge
You must keep track of what your pointers are in so on and so on and so on
It's just a simpler view of the world and a more detailed and complicated one in several ways
I'll call it AC and that stands for
assembler input now
You expect that assembler to produce you a runnable executable binary. Well, I'm going to write this in here as
saying that the code generation from the

English: 
from an assembler; it's an assembler
quality binary. It depends on the who
wrote the code generator for the
assembler as to how good that BINa is.
Now here's the thing. Again, you'll have
to get your head round and get used to,
This is a 'u' - a BINu.  I don't know how
this was developed - this assembler. All I
know is I met Ken [say] in the corridor, [or] David
Wheeler of Cambridge in  the corridor, and [he] said:
"Hey here's the assembler I use". They
handed over an executable and I did not
ask questions about how that, in itself,
may have been bootstrapped out of
nothing. They just said: "Here's an assembler - it
works use it!" So, OK, I say: "thank you". 
I'm in  at the mid- point of an endless
sequence of bootstrapping. But I can
build on top of an assembler
to build the C compiler,  shall we say. 
So, you put assembler codes in. Of course, the
'unknown provenance binary' is whirring
away and that is executing the assembler

English: 
Assembler is going to produce me what I'll call a binary of type a is produced from an assembler
It's an assembler quality binary
It depends on the Koho wrote the code generator for the assembler as to how good that being a is now
Here's the thing again. You'll have to get your head round and get used to this is au
Been you I don't know how this was developed this assembler
All I know is I met Ken in the corridor David wheeler
It came to the corridor and said hey, here's the assembler
I use they handed over an executable and I did not ask questions about how that in itself may have been
Bootstrapped out of nothing. They just said here's an assembler it works use it. So okay. I say, thank you
I mean at the midpoint of a endless sequence of bootstrapping but I can build on top of an sm
To build the C compiler shall we say so you put assembler codes in of course?
The unknown provenance binary is worrying away. And that is executing the assembler code

Turkish: 
Assembler bana ne diyeceğini söyleyeceğim Bir ikili sistemden bir türetici üretilir.
Bir montajcı kaliteli ikilidir
Koho'nun meclis için kod üretecinin şu anda ne kadar iyi olduğu konusunda yazdığı
İşte yine bir şey. Başını çevirmen gerekecek ve buna alışmalısın.
Bu montajcı nasıl geliştirildi bilmiyorum
Tek bildiğim koridorda Ken ile tanıştım David wheeler
Koridorda geldi ve hey dedi, işte montajcı
Çalıştırılabilir dosyaları teslim ettiler ve kendi başlarına bunun nasıl olabileceği hakkında sorular sormadım.
Hiçbir şey yapılmadı. Sadece burada kullandığı bir montajcı dediler. Tamam tamam Teşekkür ederim diyorum
Sonsuz bir önyükleme dizisinin orta noktasında demek istiyorum, ancak sm üzerine inşa edebilirim
C derleyicisini oluşturmak için derhal kurucu kodları koyduğunu söyleyelim mi?
Bilinmeyen provenans ikilisi endişeleniyor. Ve bu assembler kodunu çalıştırıyor

Turkish: 
ve dışarı bir tür ikili olarak geliyor
Hangi bir dosyaya koyabilirsiniz
BN karıştırın altında bir noktaya çıkardığınız dosya içinde saklayabileceğiniz her şeyi olabilir bir dosyada saklayabilirsiniz.
Bunu yürütün ve daha öncekilerden farkı, assembler kodunun daha düşük olması.
Gördüğünüzden daha fazla sofistike seviye, tekrar tanıyacağınız bir çok şey olacak
Bell Labs tarihine büyük oranda geri dönüyorum, çünkü bu çok iyi.
Bunu açıklamak, gerçekten olmuş gibi görünmesini söyleyebilirsiniz. Bu gerçekten Dennis'in yaptığı şeydi.
Farkında olman gereken şey bu
Dennis, UNIX işletim sisteminin bir sonraki sürümü için Dennis'e kanser yapabileceğinizi ve kanser yapabileceğinizi söyledi.
Daha yüksek bir seviyeye yazmalıyız.
Montajcıya yazma konusunda sizi kızdırır, çünkü işaretçileri takip etmenin kolay bir yolu yoktur. Yapı yok
Aslında son zamanlarda yayınlanan bir videoda, vahşi bir yerde, ken Thompson
UNIX’i daha yüksek bir dilde yazmaya çalıştığımız ilk üç girişimimizin ve Dennis’in geliştiğini söyledi.

English: 
and out it comes as binary of type a
Which you can put in a file
BN a dot out file under you mix it could be whatever you can store it in a file you can invoke it you can
Execute it and the only difference from what's gone before is that the assembler code is it's a lower
Sophistication level than you'll see you would be a lot of you know again
I keep harking back to Bell Labs history largely because it's very good for
Illustrating this thing you can say look this really happened. This really is what Dennis inten did
This is what you have to be aware of
Dennis said you can and cancers to Dennis for the next version of the UNIX operating system
We've gotta write it in something higher level
It drives you mad writing it in assembler because there's no easy way of keeping track of pointers. There's no structures
In fact in a recent video now out there in the wild somewhere ken Thompson admits
He said our first three attempts to write UNIX in a higher-level language and Dennis was developing

English: 
code and out it comes as 'binary of type a'
which you can put in a file. [It could] be an a.out
file under UNIX, it could be
whatever. You can store it in a file you
can invoke it; you can execute it. And the
only difference from what's gone before
is that the assembler code is at a
lower sophistication level than 
your C would be. A lot of you know - again
I keep harking back to Bell Labs history -
largely because it's very good for
illustrating this thing. You can say: "Look
this really happened, this really is what Dennis and Ken did. 
This is what you have
to be aware of". Dennis said to Ken and Ken said to
Dennis: "For the next version
of the UNIX operating system, we've gotta
write it in something higher level. 
It drives you mad writing it in
assembler because there's no easy way of
keeping track of pointers, there's no
structures". In fact, in a recent video now
out there in the wild somewhere, Ken
Thompson admits [it] He said: "Our first three
attempts to write UNIX in a higher-level
language, and Dennis was developing C,

English: 
The first three attempts I tried [and I'm Ken
Thompson :-]  failed.  Why did they fail?  I
found later [at] the fourth attempt Dennis
had put structures in C and that's what
I needed". [ because they automatically keep
track of offsets and pointers]  Wonderful!
OK so here we are then, back in that
kind of era. We are wanting to create a C
language compiler. But we are writing it
at assembly-code level. It is going to
produce a binary but going back to what
we said last time, because it came out of
an assembler era we're going to presume
that the binary that this thing produces
is what we'll call "binary a" [BINa]. 
It came via an assembler route.
did this executable. Fine - but then you
look at that and say: "Hey, come on, this is
brushing over certain details - you can't
directly execute assembler - unless
somebody's written an "assembler
interpreter" for you.  But there again ....

Turkish: 
İlk üç denemeyi söyle. Denedim ben Ken Thompson
Başarısız oldu. Neden başarısız oldular, sonradan Dennis’in C’ye yapılar koyduğu dördüncü denemeyi buldum.
İhtiyacım olan buydu çünkü ofsetleri ve işaretçileri otomatik olarak takip ediyorlardı. Olağanüstü. Tamam
Öyleyse burada o zamanlar böyle bir döneme döndük. Oluşturmak istiyoruz
C dili
Derleyici, ancak daha basit bir kod seviyesi olarak yazıyoruz, bir ikili dosya üretecek.
Ama geçen sefer söylediklerimize geri dönelim çünkü bu bir meclis çağından çıktı.
Bu şeyin ürettiği ikilinin ikili olarak adlandıracağımız bir montajcı aracılığıyla geldiğini varsayacağız.
Bu onları iyi idare etti mi, ama o zaman hey bakalım, hadi. Bu, bazı detayların üzerinden geçiyor
Assembler'ı doğrudan çalıştıramazsınız ve eğer biri sizin için bir assembler tercümanı yazmamışsa,

English: 
Say the first three attempts. I tried I'm Ken Thompson
Failed. Why did they fail I found later the fourth attempt Dennis had put structures in C
And that's what I needed because they automatically keep track of offsets and pointers. Wonderful. Okay
So here we are then back in that kind of era. We are wanting to create a
C language
Compiler, but we are writing it as a simpler code level it is going to produce a binary
But going back to what we said last time because it came out of an assembler era
We're going to presume that the binary that this thing produces is what we'll call binary a it came via an assembler
Did this execute them fine, but then you look at that say hey, come on. This is brushing over certain details
You can't directly execute assembler and unless somebody's written an assembler interpreter for you, but they're again

English: 
No they haven't. That assembler coding
it's got to be converted into a binary.
how do you turn the assembler coding
into a binary and so slot up another 
T-diagram and visualize what goes on. 
Therejust happens to be, hanging around
because Ken gave it to us in the corridor,
a thing called an assembler and
the assembler accepts any old assembler
code you like, produces what we'll call
BINa,  an executable binary but it came
out of an assembler [program] and that - the
assembler itself - the binary is of
unknown provenance. Ken did it in absolute
binary off the top of his head? Probably
not but somebody laboured long and hard
to write a thing that really works as an
assembler on this particular machine.
that you are working on. What you need to
do is to feed the assembler code, that
implements your C compiler, into the
assembler itself to assemble it. You've

Turkish: 
Hayır, onlar amblem kodlaması yapmadılar. Bir ikiliye dönüştürülmeli
Assembler kodlamasını bir ikili dosyaya nasıl çevirirsiniz ve başka bir T şemasını nasıl düzenler ve neler olduğunu görselleştirirsiniz?
Kenara koridorda bize bir şey verdiği için takılmaya başlandı.
Bir montajcı denir ve montajcı istediğiniz herhangi bir eski montajcı kodunu kabul eder mi?
olarak adlandırdığımız şeyi üretir
çalıştırılabilir ikili dosya ancak bu bir montajcıdan çıktı
montajcı kendisi
İkili bilinmeyen bir kanıtıdır.
başının üstünde mutlak ikili ikili aday muhtemelen biri dışında
uzun ve çok uğraştım
Yapmanız gereken şey üzerinde çalıştığınız bu makinede gerçekten montajcı olarak çalışan bir şey yazın.
bir şeyi beslemek
C derleyicinizi uygulayan assembler kodu

English: 
No, they haven't that's emblem coding. It's got to be converted into a binary
How do you turn the assembler coding into a binary and so sort up another T diagram and visualize what goes on?
There just happens to be hanging around because Ken gave it to us in the corridor a thing
Called an assembler and the assembler accepts any old assembler code you like?
produces what we'll call been a an
executable binary but it came out of an assembler and that
the assembler itself
The binary is of unknown provenance
candidate in absolute binary off the top of his head probably not but somebody
labored long and hard to
write a thing that really works as an assembler on this particular machine that you are working on what you need to do is to
feed the
assembler code that implements your C compiler

Turkish: 
Montajcı kendi içine monte etmek için. Montaj kodunu birleştirmelisin
Bu derleyicidir ve assembler kodlaması olarak girer. Kendi ikili üzerinde çalışıyor. Bir süredir kazayı düşünüyorsun
Hayır, Ken yazmamış, etrafta dolaşan bu tür şeyleri biliyorsunuz ve assembler kodunu dönüştürüyor.
kalite ikilisinin içine
Bu kalite ikiliyi üretildiğinde bir dosyada saklayabilirsiniz. Bir çalıştırılabilir
Bu bir noktadan çıkarılmış dosya ve sonra C'yi alan bir şey yarattınız.
ikili bir üretir
Assembler kodlaması böylece net çıktınız aşağıdaki gibidir
C'dir. Sizin için C derleyicisini çalıştırılabilir bir ikili dosyaya yazar.
Bu yüzden artık sadece montaj kodu düzeyinde uygulandığı gibi olmayan bir C derleyicimiz var.
Ancak bu derleme kodu
Bir ikiliye çevrildi
Böylece C derleyicisi donanım üzerinde çalışabilir.
ve bir kere daha

English: 
Into the assembler itself to assemble it. You've got to assemble the assembly code
That is the compiler and it goes in as assembler coding. It's running on its own binary. You're thinking a while' crash
No, it won't Ken wrote it, you know this sort of thing that was around and it converts the assembler code
into binary of quality a
That binary of quality a when it's produced you can store in a file. It's an executable
It's an a dot out file and then you have created a thing which takes in C
produces binary a
Assembler coding so your net output here then is the following
It's C. It spits out an executable binary for you the C compiler
So we now have a C compiler that is not just as it were implemented at the assembly code level
But that assembly code has been
Translated into a binary
So that the C compiler can actually run on hardware
and once again

English: 
got to assemble the assembly code that
is the compiler and it goes in as
assembler coding, it's running on its own
binary - you're thinking 'will ir crash' 
No it won't - Ken wrote it (!) You know this sort
of thing. That whirrs around and it converts
the assembler code into binary of
quality a [BINa] That BINa, when
it's produced you can store in a file.
It's an executable. It's an a.out
file [on UNIX]. And then you have created a thing
which takes in C, produces BINa
assembler coding so your net output here
then is the following:
It's C. it spits out an executable binary
for you [does] the C compiler. So we now have a
C compiler that is not just, as it were,
implemented at the assembly code level
but that assembly code has been
translated into a binary so that the C
compiler can actually run on real
hardware. And once again let's trace

English: 
through: the assembler code that
implements the C compiler is fed into
the assembler. This thing whirrs round and
round like mad but the assembler code
statements that are the compiler get
translated into BINa and
that's the implementation vehicle for
your new C compiler. You have produced a
C compiler by building it out of an
assembler by using the assembler as the
next stage along which you have to do. The
assembler converts the assembler code
that is the C compiler into being a
workable, runnable binary of quality a [BINa]
So, that's the first start of your compiler
is to say we're doing bootstrapping!
We've come up off an assembler solution
[that] we wrote in our high-level language and
here we are - a very very first C compiler.
Is there a problem with it? Not really

Turkish: 
Uygulayan assembler kodu ile iz var
C derleyicisi montajcıya beslenir
Bu şey deli gibi yuvarlak ve yuvarlaktı ama assembler kodu
derleyici olan ifadeler a kalite kutusunda çevrilir a.
Yeni C derleyiciniz için uygulama aracı C ürettiniz
bir sonraki aşamada olarak assembler'ı kullanarak bir assembler'den inşa ederek derleyici
montajcı
C derleyicisi olan assembler kodunu çalıştırılabilir kalitede bir ikili dosya haline dönüştürür.
bu yüzden derleyicinin ilk başlangıcı biz söylemeliyiz
Bir önyükleme çözümü bulduk, önyükleme yapıyoruz
Yüksek dilde yazdık ve burada çok ilk C derleyicisiyiz
Bununla ilgili bir sorun mu var? Pek sayılmaz?
Bunun dışında burada yapmak istediğimiz şey iyi söylemek.

English: 
There's trace through the assembler code that implements
The C compiler is fed into the assembler
This thing was round and round like mad but the assembler code
statements that are the compiler get translated into bin of quality a and that's the
Implementation vehicle for your new C compiler you have produced a C
compiler by building it out of an assembler by using the assembler as the next stage long, which you have to do the
assembler
converts the assembler code that is the C compiler into being a workable runnable binary of quality a
so that's the first start of your compiler is to say we
We doing bootstrapping we've come up off an assembler solution
We wrote in our high-level language and here we are a very very first C compiler
Is there a problem with it? Not really?
Except that what we want to do here is to say well

English: 
except that what we want to do here is
to say well we want a C compiler that
will produce runnable binary of some
sort. And then we say , hey, but the only
tool we've got to making a binary for
this C compiler is the
assembler itself. Right?! The assembler
produces BINa. You're stuck with that.
So, can you see that by running the
assembler there and making it squirt out
BINa quality,  equivalent to the
assembler code that is the compiler, you
end up with a C compiler MK I,  that
spits out BINa
but is running on BINa.  We're at the
mercy of bin of quality a, the assembler
quality binary. Is it good? Is it bad?
Could we do better? Yeah we stop there.
But just as a marker for what's coming,
if your head isn't aching yet, that thing

English: 
We want an AC compiler that will produce runnable binary of some sort and then we say hey
But the only tool we've got to making a binary for this C compiler is that there is the assembler itself
Right the assembler
Produces Benet, so you're stuck with that
so
Can you see that by running the assembler there and making it squirt out binary a quality?
equivalent to the assembler code
that is the compiler you end up with AC compiler Marquand that
Spits out Benet but is running on Binet
We're at the mercy of bin of quality a the assembler quality binary. Is it good? Is it bad?
Could we do better?
Yeah
We stop there
but just as a marker for what's coming if your head isn't aching yet that thing is building a
Compiler off an assembler when that is working

Turkish: 
Bir çeşit çalıştırılabilir ikili dosya üretecek bir AC derleyici istiyoruz ve sonra hey diyoruz.
Ancak bu C derleyicisi için bir ikili dosya yapmamız gereken tek araç, derleyicinin kendisi olduğudur.
Montajcı sağ
Benet'i üretir, bu yüzden buna şaşırdın.
yani
Montajcıyı orada çalıştırarak ve ikiliyi kaliteli bir şekilde fışkırtarak görebiliyor musunuz?
assembler koduna eşdeğer
AC derleyici Marquand ile bitirdiğiniz derleyici bu
Tükürür Benet ama Binet üzerinde çalışıyor
Biz montajcı kalite ikili bir kalite bin merhametindeyiz. İyi mi? Kötü bir şey mi?
Daha iyisini yapabilir miyiz?
Evet
Orada dururuz
ama eğer başınız ağrıyorsa, o şey bir şey inşa ediyorsa
Çalışırken bir derleyici kapalı derleyici

English: 
what do you do to make it better you rewrite it and
You make a new version of a C compiler that produces beam B which is so binary
But how do you compile a new version of the C compiler answer with the old one? So
You end up with a seat have been better, but it's still running on Binet
next time
I'd lost my
Compilers notes and assembling those did you see diagrams?
But thanks to one of my grad students rom nots bless you Ron who was a complete pack rat?
He had rewritten all my notes in much better shape and had come on to them from
30-something years ago so I couldn't made this video without your own. Thank you very much

English: 
is building a compiler off an assembler.
When that is working what do you do to
make it better? You rewrite it and you
make a new version of a C compiler that
produces BINb which is 'better' 
binary. But how do you compile that new
version of the C compiler? Answer: with
the old one! So you end up with a 
C to BINb [compiler]  but it's still running
on BINa.  Next time!
I'd lost my Compilers notes and
Assemblernotes which did use T-diagrams
but thanks to one of my grad students
Ron Knott - bless you Ron - who was a
complete pack rat [and stored everything]
He had rewritten [and extended] all my notes into  much
better shape and had hung on to them. 
From 30-something years ago! So I
couldn't have made this video without you
Ron. Thank you very much!

Turkish: 
daha iyi hale getirmek için ne yaparsınız
Bu kadar ikili olan B ışını üreten bir C derleyicisinin yeni bir versiyonunu yaratıyorsunuz
Fakat C derleyici cevabının yeni versiyonunu eskisi ile nasıl derlediniz? Yani
Sonunda bir koltuk ile daha iyi oldu, ama hala Binet üzerinde çalışıyor
bir dahaki sefer
Kaybettim
Derleyiciler notları ve montajları diyagramları gördünüz mü?
Ama benim mezun öğrencilerimden biri sayesinde, sizleri kutsamayan sıçan kim Ron?
Tüm notlarımı daha iyi bir şekilde yeniden yazmıştı ve onlardan başlamıştı.
30 yıl önce bu videoyu kendim yapamadım. Çok teşekkür ederim
