Can anyone recomend a good intoduction to C...

Werner Schiendl ws-news at gmx.at
Tue Mar 6 22:04:16 CET 2001


Hello Laura,

>Hello Werner
>
>you write:
>
> >I further think it is easier to move 'back' from C++ to C, when the need
> >arises, than vice versa. This is simply because you are forced to use a
> >different technique if the one you are used to does not work on that
> >platform.
> >Personally I started with procedural programming and moved to the object
> >oriented technique afterwards. This is why I think it is hard to get used
to
> >objects when you are used to malloc, free, memcpy and friends.
> >
> >Did I miss an important point?
>
>2 points.  First of all, while you may be correct that your first exposure
>to procedural programming has made it hard for you to get used to
>object oriented programming, it is also possible that your problem was that
>C++ is a widely-avialable-but-not-particularily-good programming language.

This is the point to cut in.

1) I think a language is not particularly good or bad at all. Not Python,
not C, not Eiffel or whatever language. Each has advantages and
disadvantages. Using the right language is an art that needs a lot of
experience and knowing a lot of languages is an important issue to get
there.

2) The original post asks for C, probably to add functionality not available
otherwise to Python. Therefore I did not bring up any other language, but
C++ because you have full access to C libraries but it's still more powerful
and from my point of view a better start.
Personally I wish the procedural C stuff had never even existed.

3) I have a heavy background in C because I am working in an industrial
environment and lots of these small devices have nothing else than a C
compiler or they only perform well if C is used. If such a thing comes with
a C++ compiler I consider that a large improvement (and I'm lucky in that
point - this is becoming more common).


>People whose first OO programming language is Smalltalk have, in my
experience
>a far easier time learning OO programming.  I do not know anybody whose
>first OO language was Eiffel, but I suspect they have an easier time as
well.
>I think that the Smalltalk courses which I took at university, which
>were optional, and I only took because I *like* learning languages ended
>up being the most valuable courses I ever took.
>

Never had something to do with Smalltalk or Eiffel. I think those languages
are not very well supported on to many platforms. And this is of course a
point, you need some sort of library or framework to get a GUI application
up and running in a reasonable amount of time.

But because of your emphasis on it and some other sources maybe I will once
take a look at it.

But to come back to your point. Yes, I agree with you that C++ is probably
not the best way to dive into objects. If I had the choice to start with
either Java or C++ I would take the former, even knowing that is not es
widely supported and not always (or often, sadly) not fast enough.

And, just to mention it, I like to learn languages too. This is the exact
reason why I am just working with Python. I cannot use it much for my
business right now (appart from some build tools and such stuff), but who
knows - hope never dies :-)

>So the question becomes, why is it that the original poster decided to
>learn C or C++?  If he has an application which he thinks is suited to
>one or the other, more power to him, though it is hard to make such
>decisions until you have more experience with a host of computer languages.

I agree with that. At least that it is difficult to learn use the right
tool. But C++ is almost always an considerable alternative to plain C. And
if you use it for nothing more than to hold the functions as part of the
data (make them methods).

>Maybe he just has a compiler and wants to play with it.  Maybe he
>has a linux or unix system and wants to find out exactly what it is
>that his system is doing.  But finally, it may be that it is more
>experience with computer languages in general which is what he wants,
>in which case I would say, yes, by all means learn C.  Then go out and
>learn Smalltalk, or Lisp or Haskell.  And make sure you learn an  assembler

I would agree with the completeness, but not with the order. I would take
the most advanced technique first. Simply because it is closest to the human
mind.
I know a lot of newcomers to programming that can cope with objects much
easier than with C's way of doing things, pointers, memory allocation, etc.

>as well on the way, because that too will make your brain go off and work
>in amazing new directions.   This is a keen source of personal pleasure.
>They say that you cannot feel new neural connections being made in your
>brain, but I am not so sure about that.
>
>Laura Creighton
>

Regards

Werner






More information about the Python-list mailing list