Let’s get philosophical for a second.
The dilemma of who came first, the chicken or the egg, is an old one. And still up for debate.
From a modern scientific perspective, the chicken came first because the genetic recombination that produced the first “chicken” occurred in germ-line cells in a non-chicken ancestor.
Another literal answer is that “the egg” in general came first, because egg-laying species pre-date the existence of chickens.
To others, the chicken came first, seeing as chickens are merely domesticated red junglefowls.
Do we have the same philosophical question in IT?
After all, imagine the following scenario for compiling the gcc compiler from source.
- Download gcc source code
- Configure the different options of gcc
- Compile gcc from source … using gcc?
How do you compile gcc from source when it requires gcc in the first place? As the installation docs describe it:
When configuring a native system, either cc or gcc must be in your path or you must set CC in your environment before running configure. Otherwise the configuration scripts may fail.
When you try to compile gcc without the gcc binary present, the build will indeed fail.
$ ./configure checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu ... configure: error: in `/usr/local/src/gcc_test/gcc-5.1.0': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details.
Is this the Chicken or the egg equivalent of software engineering(1)?
(1) Yes, I know there are ways around this, but it just struck me as a funny comparison.
A philosophical Software Engineer question: Who Came First: The Source Code Or The Compiler? https://t.co/MwjUnzQuEE
— ma.ttias.be (@mattiasgeniar) May 11, 2015