The Immense Structure of Programming Languages

Posted by Gramarye on March 17, 2011, 2:02 p.m.

It was a long while ago, I think in a Blitz Basic book (How to Make Games!), that I first read about compilers. Probably most of you know, but a compiler takes a programming language and converts it (typically) to machine language, so that the computer can run it.

The book mentioned a curious thing about compilers. When you create a new compiled language, you must write the first compiler in another language that already has its own compiler, or you can't run it. Once you have that, you can write a new compiler in your own language, and then you're all set. So, the very first language other than machine code had to have its first compiler written in machine code.

I was daydreaming in assembly class, going over some really low-level computer stuff, when I thought of this again and expanded it. Every computer language ever written has to have descended from those first ML compilers. There probably weren't that many written, so all programming languages form an inverse pyramid, resting on those few initial works of genius from decades ago. It's a subtle difference from the fact that all programming languages eventually are executed in machine code.

This ties into my last thought on the matter – just think of all the layers of complexity that go into your computer. The internet as a whole, which goes all the way down to individual packets and electrical signals; your applications, which sit on the OS, all of which goes all the way down to the individual bits of ML, the structure of which was created in cooperation with the hardware, circuits and little bits of engineering. Imagine, at each of those levels, each of those incremental steps, were a bunch of programmers and engineers who put everything together and advanced the computer just one bit more, without any idea of the amazing things the next person would do in the next step.

tl;dr – (Since I just figured out what tl;dr means, I'll use it) – Any language you're writing in has ancestral 'genes' from the first few machine code compilers.

Comments

PY 13 years, 8 months ago

Mega is a C++ zealot who refuses to believe any language can be better than it in any way, so don't worry.

Astryl 13 years, 8 months ago

Quote:
Mega is a C++ zealot who refuses to believe any language can be better than it in any way, so don't worry.

It's not true. HEIL KERNIGHAN… Erm.

Sorry, thought I saw somebody I know walking past….

I do use other languages, mainly Python, C#, Assembly (ARM/RISC), and a few other languages. I don't USE Java, by the way… I drink it >:3

PY 13 years, 8 months ago

Ah, but use and admit parts of them are more suited for specific tasks are two very different beasts!

Astryl 13 years, 8 months ago

Speed: C++

Size: C++

Rapid Algorithm/Psuedocode Implementation: Python

Game Engine Development: C++ (C if you have to)

General Applications development: Visual C#/C++ (For the lazy. WinAPI if you're brave. Neither if you're smart)

Graphics/3D CGI: C++ and Python, since Blender is clearly Awesome.

Networking: C++ (Python second. I have my reasons).

Graphics: C++ (Using SFML. Otherwise, C#)

Audio (As in game music/sounds): <Insert language here> via FMod or OpenAL.

Linux daemons, shell tools, etc: C

>:{ There. Happy?

PY 13 years, 8 months ago

Getting there!

Gramarye 13 years, 8 months ago

You get a C+ for your C++ fixation. :P