[Dev] Reading circle

Tanner Lovelace dev@trilug.org
09 Mar 2002 18:16:07 -0500


--=-dLSW85Vv9BElUF3GAb+b
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

On Sat, 2002-03-09 at 01:52, Tom Bryan wrote:
> P.S. And I still haven't complained that to get any sort of generic conta=
iner=20
> in C++, you'll also need to understand templates.  Not a bad thing, but j=
ust=20
> one more hurdle to cross before you can effectively write OO in C++.

And it's a good thing you didn't complain about it, because generics
are not OO. =20

That C++ is hard to learn is a common misconception.  The main=20
problem is that those teaching it tend to treat it as C with
classes when it should be thought of as a separate, distinct
entity.  Take for example, a comment by Bjarne Stoustrup:
(found at http://slashdot.org/interviews/00/02/25/1034222.shtml)

   I think the main problem is educational. Many simply have
   seriously inaccurate ideas of what C++ is and what can be=20
   done with it. Often "inaccurate ideas" add up to a strong
   disincentive to learn.

Also take a look at a paper called "Learning Standard C++ as=20
a New Language." (also by Stroustrup and found at
http://www.research.att.com/~bs/new_learning.pdf )
This paper gives detailed examples of why C++ shouldn't
be taught as a superset of C.

C++ is pretty much unlike any language out there.  It's not a pure
object oriented langauge.  It's not a procedural language like
C.  It's not a functional language like lisp or ML.  It *does*,
however, have aspects from all of these languages.
There's actually a book that talks a lot about this.  It's called
"Multi-Paradigm Design for C++"

http://www1.fatbrain.com/asp/bookinfo/bookinfo.asp?theisbn=3D0201824671&vm=
=3Dc

>From the summary:

   C++ is a programming language that supports multiple paradigms:
   classes, overloaded functions, templates, modules, procedural
   programming, and more. Despite the language's flexibility and
   richness, however, there has previously been little effort to create
   a design method that supports the use of multiple paradigms within a
   single application.

I might suggest this as a follow on book for the reading circle,
but feel free to ignore my suggestions, since I probably can't come...

The point is, however, that C++ is a fairly misunderstood language.
It supports more than just OO and to use it effectively you really
should learn it on its own merits, not as a superset of C, or as
an OO language, but as C++.  C++ is a powerful language, much more
so than any other language out there right now.  Unfortunately,
most people don't understand it well enough to make good use of
it.  In my opinion, that's not necessarily a problem with the
language but rather a problem with education.

Tanner
--=20
Tanner Lovelace | lovelace@wayfarer.org | http://wtl.wayfarer.org/
--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--
GPG Fingerprint =3D A66C 8660 924F 5F8C 71DA  BDD0 CE09 4F8E DE76 39D4
GPG Key can be found at http://wtl.wayfarer.org/lovelace.gpg.asc
--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--*--
 Those who are willing to sacrifice essential liberties for a little=20
 order, will lose both and deserve neither.  --  Benjamin Franklin=20

 History teaches that grave threats to liberty often come in times
 of urgency, when constitutional rights seem too extravagant to=20
 endure.  --  Justice Thurgood Marshall, 1989=20

--=-dLSW85Vv9BElUF3GAb+b
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iEYEABECAAYFAjyKl7cACgkQzglPjt52OdT0NwCfWWNGW5KsrnByOU+7zwPhryxS
KggAnjdqAf9++u+oQxJEp8TrSkd0J+uk
=fO1F
-----END PGP SIGNATURE-----

--=-dLSW85Vv9BElUF3GAb+b--