first they had machine code
then they wrote the assembler in machine code
then they rewrote the assembler in assembly
and assembled it with the machine code assembler
then they wrote the C compiler in assembly
and assembled it with the assembly assembler
then they rewrote the C compiler in C
and compiled it with the assembly C compiler
then they had the C compiler
and everything else was written in C
(note: this is a massive oversimplification and ignores much of the history of programming languages, but it at least gets across the idea of how bootstrapping is done)
Also the first version of a new compiler (the one written in another language) is often skeletal, implementing only the features necessary to compile the full version (written in its own language), which is then immediately used to recompile itself.
I mean, it’s not like this is some thought-provoking concept that no one has thought of before. For my SE degree I took 3 classes that focused heavily on the subject. We even wrote an interpreter for our very own programming language in one of them. And that was just part of the standard curriculum.
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programmerhumor@lemmy.ml
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
Posts must be relevant to programming, programmers, or computer science.
No NSFW content.
Jokes must be in good taste. No hate speech, bigotry, etc.
it’s gatekeeping all the way down
first they had machine code
then they wrote the assembler in machine code
then they rewrote the assembler in assembly
and assembled it with the machine code assembler
then they wrote the C compiler in assembly
and assembled it with the assembly assembler
then they rewrote the C compiler in C
and compiled it with the assembly C compiler
then they had the C compiler
and everything else was written in C
(note: this is a massive oversimplification and ignores much of the history of programming languages, but it at least gets across the idea of how bootstrapping is done)
Also the first version of a new compiler (the one written in another language) is often skeletal, implementing only the features necessary to compile the full version (written in its own language), which is then immediately used to recompile itself.
Indeed. And the machine code is created as part of the physical CPU design.
And then we fucked it all up by writing the JavaScript interpreter.
Blame the Brave CEO
From energon cubes
How did they know the first ruler was correct if they didn’t have a ruler to verify it?
Assembly. Each command literally translates to a binary number that the processor will interpret to perform certain functions.
Or bytecode that the runtime will interpret
blood, sweat, spit and sometimes a bunch of formal grammar
It’s programming languages all the way down.
This might qualify as humor if you don’t know much at all about programming.
I used to wonder how the first computers were coded without computers in primary school
For anyone else who wonders: by manually wiring in the circuits and flipping switches.
https://en.wikipedia.org/wiki/Plugboard#Early_computers
With themselves!
Bootstraps
I mean, it’s not like this is some thought-provoking concept that no one has thought of before. For my SE degree I took 3 classes that focused heavily on the subject. We even wrote an interpreter for our very own programming language in one of them. And that was just part of the standard curriculum.
You might want to put down that bong.
That are almost always built by lower level programing languages
https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/
Is a very interesting read on that topic. It’s about how to get to “full” compilers without using already existing “full” compilers.