GCC 4.8.0 Release Marks Completion of C++ Migration
hypnosec writes "GCC 4.8.0 has been released (download), and with it, the developers of the GNU Compiler Collection have switched to C++ as the implementation language, a project the developers have been working for years. Licensed under the GPLv3 or later, version 4.8.0 of the GCC not only brings with it performance improvements but also adds memory error detector AddressSanitizer, and race condition detection tool the ThreadSanitizer. Developers wanting to build their own version of GCC should have at their disposal a C++ compiler that understands C++ 2003."
How was the first compiler compiled?
With an assembler. (of course, real men didn't need an assembler, they toggled in the hexadecimal opcodes directly in hex, using a hickory switch and a quart of whiskey)
I don't care if it's 90,000 hectares. That lake was not my doing.
It wasn't. It was written in assembly language and was converted into machine code by an assembler.
It is like everything in modern life... how do you build a lathe without a lathe? Or a generator without electricity? It would take a thousand years to start from nothing and get back to where we are now.
You need to compile this compiler with a compiler which begs the question....
Sigh. It raises the question. To "beg the question" means something completely different. Here is a simple rule of thumb of when that phrase should be used: never.
How was the first compiler compiled?
The first compilers (Fortran and Lisp) were written in assembler. Later compilers were written in Lisp or Fortran.
New languages can be bootstrapped by first implementing a sufficient subset, and then expanding it. Ken Thompson explains this process (and how to subvert the process) in his Turing Award lecture on Trusting Trust.
Enough people use the term "beg the question" this way that I've just gotten used to it by now. It doesn't bother me anymore. It's over, man. The war is lost. It's in common use now. Rewire the part of your brain that gets annoyed by it. You will be happier in the long run.
From the changelog: "A new general optimization level, -Og, has been introduced. It addresses the need for fast compilation and a superior debugging experience while providing a reasonable level of runtime performance. Overall experience for development should be better than the default optimization level -O0."
This actually sounds really attractive to me... I'll have to try it out.
Hexadecimal? You kids and your newfangled contraptions. Back in my day, we had to use BINARY, and we were always running out of 1's so we had to take the 0's to the blacksmith and have them cut down and straightened before we could use them.
Could we? Easily accessible deposits of any useful ore or fuel has been mined out ages ago. We could find ourselves in situation when we need resources to build tools, but without those tools we cannot access resources.
My supervisor held the hickory switch while I was manning the AN/UYK-7. Manfully.
Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
Now! Witness the power of this FULLY OPERATIONAL C++ Compiler! Muahahahahahaha! Erm... damn it... what's the flag for debug symbols again?
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
Of course, all those pokes in the back of Compute! magazine were really just hand-converted machine instructions to be stuffed into specific areas of memory, but I didn't realize that at the time. I forget exactly when I finally made that association. I think it was during that assembly class; I was like "Oh, the number is just an opcode! Derp!" I probably could have squeezed a lot more interesting stuff out of my first computer (A TI 99/4A) if I'd know that at the time.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
For not using the word "dog food" in the summary.
This isn't Microsoft, so that would be more like "cat food" - FLOSS developers are more like cats (they're difficult to Hurd, or how you spell it).
Ezekiel 23:20
Enough people use the term "beg the question" this way that I've just gotten used to it by now. It doesn't bother me anymore. It's over, man. The war is lost. It's in common use now.
The problem with that approach is that you lose an important idiom that doesn't have a good substitute.
So, no, some things in the language are worth preserving (at least until a suitable alternative is found).
Rewire the part of your brain that gets annoyed by it. You will be happier in the long run.
You can educate people about the beauty of the language without being annoyed.
You know what, English is my 3rd language. I only moved into an English-speaking country when I was in my 30s, and if I can appreciate its richness, I'm pretty sure that a native speaker can do so as well.
I remember seeing a pretty cool 8080 program to zero memory. It went something like:
LXI BC, 0000
LXI HL, 0009
LXI SP, 0008
PUSH BC
PCHL
HL, BC, and SP (the stack pointer) are all 16-bit registers, and the first three instructions occupy 0x0000-0x0008 in memory. PUSH BC is one byte at 0x0009, and PCHL (another one-byte instruction) sets the program counter to the value of HL; essentially it allows you to jump to the address contained in the HL register. The PUSH operation decremented the stack pointer before storing each of the bytes, so you would set the stack pointer to one higher than the highest address you wanted to overwrite. Because the 8080 was little-endian, address 0x0008 was the upper byte of the third instruction's numeric value - it was already zero (if it were big-endian you could just throw in a NOP to get it to align properly). The final PUSH operation - after the program had cycled through all of memory - wiped out the PUSH BC and PCHL operations, and the computer would go to all NOPs.
Interestingly, the exception only is valid if you use GCC or another GPL licensed compiler to link it, to prevent the runtime being shanghaied in its GPL compliant entirety by another compiler.
Finally, you cannot accidentally license your software under the GPL through linking. Only the copyright holder may assign a license and copyright comes through authorship. If you link your software with GPL software but do not license your software under compatible terms you merely violate the GPL and are liable for whatever penalties come from distributing unlicensed software. This probably will be relatively low if it is accidental and one agrees to remove it, since actual damages are most likely to be zero, only statutory damages and punitive damages (impossible if not deliberate) apply.
When Argumentum ad Hominem falls short, try Argumentum ad Matrem