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.The Immense Structure of Programming Languages
Posted by Gramarye on March 17, 2011, 2:02 p.m.
Mega is a C++ zealot who refuses to believe any language can be better than it in any way, so don't worry.
Ah, but use and admit parts of them are more suited for specific tasks are two very different beasts!
Speed: C++
Size: C++Rapid Algorithm/Psuedocode Implementation: PythonGame 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?Getting there!
You get a C+ for your C++ fixation. :P