When we think of modern coding, we think of Python and Rust and Swift and Ruby and so on.
My question is more abstract. How exactly did computer scientists develop the original language used to tell a computer what to do and when to do it? How did they teach the computer to recognize that langauge?
Going even further than that, how did current languages get developed? Did they just rewrite the original computer code from scratch or are all modern computer languages designed to communicate with this baseline original code which all computers were programmed with?
In: Technology
The processor itself is just an electric circuit.
The designers of the processors make it with pins for input and output signals, and then document what signals will make computers do what. So it will be something like
(numbers are made up):
When a signal on the pins is 01001011 00000001 00000010, the first 8 signals is the code of the command, and the next 2 blocks are the numbers to add.
The commands and their logic is done by CPU designers.
So this is machine code – the way the CPU actually works.
Then you can literally write those bytes and have a first program.
Then you can use that program to make a program that transforms simple text into binary code.
Then you can iterate on that program and make more and more complex langauges, using existing programs to simplify your work.
To see the bits & pins docs for yourself, you can look here: [https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)
Beware, it’s a long document (5k pages!) describing EVERYTHING about modern x64 CPU pins.
>Did they just rewrite the original computer code from scratch or are all modern computer languages designed to communicate with this baseline original code which all computers were programmed with?
There is no “baseline” code, each CPU (and even different OS) have different binary code. What some people do is having “Compiler toolkits”, like GCC or LLVM, that allow you to have abstract code with modules for different CPUs and different languages, so when you make a new language, you can write the YourLanguage->LLVM generator, and then LLVM will already have x64/ARM/Linux/Windows generators.
Latest Answers