MB> Btw, remember that C++ is a kind of high-level typed assembler with
MB> Simula classes and Ada generics. You don't completely understand it
MB> until you know more or less how to program in assembler.
[ The term is "assembly language", by the way. "Assembler" is the thing that
assembles, not the language itself. ]
Inasmuch as Turing's hypothesis holds, and all programming languages are
fundamentally equivalent, C++ is a "kind of" assembly language. But on a
less theoretical level I have to disagree with you. C++ is nothing like
assembly language, either in structure or in syntax, and is most certainly
not just a variant on it as you imply.
I'd argue that the reason that most people don't completely understand C++
until they know assembly language is not that they need to know assembly
language /per se/, but that they need to understand the basic CPU and memory
architecture of the machine that they are using, so that they can understand
what is actually going on when (say) they dereference a pointer.
But this is just a matter of knowing how the "abstract machine" that the C++
language defines relates to the real physical machine that the program runs
on. A complete understanding of C++ involves fully understanding that
abstract machine, and only *partially* understanding the real one. One
doesn't need to know what the FISTP instruction does in order to write C++
programs.
¯ JdeBP ®
--- FleetStreet 1.19 NR
---------------
* Origin: JdeBP's point, using Squish (2:440/4.3)
|