--------------enigF95E16667ED3EB8A627078F7
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Chilkat Software wrote:
> I recommend starting at the C/C++ level simply to gain a fundamental
> understanding of the bits & bytes,
> pointers, pointer arithmetic, structure layouts, byte ordering,
> structure member alignment, dynamic memory
> allocation on the heap as opposed to the stack, etc.   Understanding
> this gives you a good idea
> as to what's going on "under the hood" with higher-level languages. 
> Things won't be so mysterious.
> It'll pay off in the long run.
> 

While my experience was notably shorter, I never, ever saw a problem
where understanding that would be in any way relevant. The whole point
of higher-level languages is that they separate the world into the
language's developers, who do care about what's under the hood, and the
users, who care bugger all about it. Your mileage may vary, but in my
opinion claiming knowing implementation details is important to using
some software isn't in any way essential (and surprisingly enough, this
notion holds in the even higher levels of software design, which is all
about information hiding and complexity reduction). Enlightening, maybe,
definitely useful if you're doing peephole hand-optimisations your C
compiler misses, but not essential for understanding.

Speaking of which, about half of the concepts you mentioned I can't see
how are relevant to implementing higher-level languages. Byte-ordering
is more or less a network / filesystem driver issue, pointer arithmethic
a hack around C not having introspection on array bounds, structure
member alignment and layouts an issue of implementing a C compiler or OS
kernel (its ABI), a cross-language low-level integration issue. Bits and
bytes are utterly irrelevant outside device drivers, they're just not a
meaningful unit of data after you leave hardware. And pointers
complicate C's type system in order to make it more compatible with
assembly and indirect memory adressing, all high-level languages (save
for maybe Perl and PHP) go out of their way to hide the fact that they
even exist and present a more orthogonal and clearer type system.

David Vallner


--------------enigF95E16667ED3EB8A627078F7
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (MingW32)

iD8DBQFFYJWjy6MhrS8astoRAuRqAJsFFOENQd5wBJ38A6mD1KhnbXzvUQCfTFnQ
UHzgcPexlVpU8+OpQaPROJwB
-----END PGP SIGNATURE-----

--------------enigF95E16667ED3EB8A627078F7--