From: Ian Collins on
On 07/24/10 10:36 AM, Francis Glassborow wrote:
> neil wrote:
>> I'm learning c++. I own a book by Meyer called 'object oriented software
>> construction' which is language independent.
>> I have a long way to go before I can claim to have a good basic grasp of
>> c++ and was wondering if attempting to read a book like Meyers would
>> help.
>> Do you folks think I should hold off reading stuff like this? Or would
>> it help me to learn oo programming in c++?
>
> Unlike the other respondents, I do know the book and what it is about. I
> would strongly suggest that you leave it on the shelf until you have a
> good grasp of C++.
>
> For those that do not recognise it, the book is by Bertrand Meyer (the
> creator of Eiffel) and though it is about the general principles of OOSC
> it will IMO act as a distraction until you have a firm grasp of the
> language(s) you are going to develop in.

I see. Does your comment apply specifically to that book, or learning
OO in general?

I found C++ much easier to grasp having gained an understanding of the
principles from using an OO cased GUI platform in C. I have coached a
number of experienced C programmers into C++ and those who don't have OO
experience find the transition much harder than those who do.

--
Ian Collins
From: Rui Maciel on
Ian Collins wrote:

> Which is the chicken and which the egg?
>
> It's interesting that posted the exact opposite with the same logic!
>
> OO is a concept, the language is a detail.

The language is a means to express these sort of concepts. If it isn't possible to implement the
concepts then the learning curve will be steeper. Adding to that, the concepts which will be
understood will be disassociated from the programming practice, which quite possibly has the nasty
implication of being necessary to re-learn them.


Rui Maciel
From: Francis Glassborow on
Ian Collins wrote:
> On 07/24/10 10:36 AM, Francis Glassborow wrote:
>> neil wrote:
>>> I'm learning c++. I own a book by Meyer called 'object oriented software
>>> construction' which is language independent.
>>> I have a long way to go before I can claim to have a good basic grasp of
>>> c++ and was wondering if attempting to read a book like Meyers would
>>> help.
>>> Do you folks think I should hold off reading stuff like this? Or would
>>> it help me to learn oo programming in c++?
>>
>> Unlike the other respondents, I do know the book and what it is about. I
>> would strongly suggest that you leave it on the shelf until you have a
>> good grasp of C++.
>>
>> For those that do not recognise it, the book is by Bertrand Meyer (the
>> creator of Eiffel) and though it is about the general principles of OOSC
>> it will IMO act as a distraction until you have a firm grasp of the
>> language(s) you are going to develop in.
>
> I see. Does your comment apply specifically to that book, or learning
> OO in general?

This is a massive (1250+pp) text which expects the reader to be a pretty
competent programmer. In addition, though he avoids references to Eiffel
he has a very distinctive view of OO (as manifested by the design of Eiffel)
>
> I found C++ much easier to grasp having gained an understanding of the
> principles from using an OO cased GUI platform in C. I have coached a
> number of experienced C programmers into C++ and those who don't have OO
> experience find the transition much harder than those who do.
But the major error is in thinking that C++ is an OOP, it isn't it is a
language that provides support for OO along with a considerable number
of other programming 'paradigms'.

This maybe because of your own view of C++ as an OOP. For example, those
that do not have experience of a functional language may find template
metaprogramming hard to grasp. Those who have no experience of a
procedural language such as C might find top level C++ programming hard
to grasp (as well as bottom level). Those whose view of OO is based on
Smalltalk might find C++ static binding a pain etc.

I will however stick with the advice that reading OOSC is not for the
faint-hearted and requires a good deal of programming expertise. This is
an advanced text, not a basic intro.
From: Ian Collins on
On 07/24/10 11:48 AM, Francis Glassborow wrote:
> Ian Collins wrote:
>>
>> I found C++ much easier to grasp having gained an understanding of the
>> principles from using an OO cased GUI platform in C. I have coached a
>> number of experienced C programmers into C++ and those who don't have
>> OO experience find the transition much harder than those who do.

> But the major error is in thinking that C++ is an OOP, it isn't it is a
> language that provides support for OO along with a considerable number
> of other programming 'paradigms'.
>
> This maybe because of your own view of C++ as an OOP.

That is most definitely not my view of C++.

I fully embrace the "multi-paradigm" nature of the language. I even use
this in my approach to training people to use it. I adopt differing
strategies when teaching say a Java programmer or a C programmer C++. I
start out teaching the aspects of the language they are familiar with.
I guess I'd have to start with meta-programming if I had to train a
Haskell programmer!

> For example, those
> that do not have experience of a functional language may find template
> metaprogramming hard to grasp.

Those such as me! I found meta-programming difficult until I'd explored
and understood the necessary concepts. If I'd already studied
functional languages, it would have been less of a chore.

> Those who have no experience of a
> procedural language such as C might find top level C++ programming hard
> to grasp (as well as bottom level). Those whose view of OO is based on
> Smalltalk might find C++ static binding a pain etc.

I think that strengthens my point, to more programming paradigms a
student is familiar with, the better they will understand and be able to
fully utilise the power of C++.

--
Ian Collins
From: Stuart Golodetz on
Ian Collins wrote:
> On 07/24/10 11:48 AM, Francis Glassborow wrote:
>> Ian Collins wrote:
>>>
>>> I found C++ much easier to grasp having gained an understanding of the
>>> principles from using an OO cased GUI platform in C. I have coached a
>>> number of experienced C programmers into C++ and those who don't have
>>> OO experience find the transition much harder than those who do.
>
>> But the major error is in thinking that C++ is an OOP, it isn't it is a
>> language that provides support for OO along with a considerable number
>> of other programming 'paradigms'.
>>
>> This maybe because of your own view of C++ as an OOP.
>
> That is most definitely not my view of C++.
>
> I fully embrace the "multi-paradigm" nature of the language. I even use
> this in my approach to training people to use it. I adopt differing
> strategies when teaching say a Java programmer or a C programmer C++. I
> start out teaching the aspects of the language they are familiar with. I
> guess I'd have to start with meta-programming if I had to train a
> Haskell programmer!
>
>> For example, those
>> that do not have experience of a functional language may find template
>> metaprogramming hard to grasp.
>
> Those such as me! I found meta-programming difficult until I'd explored
> and understood the necessary concepts. If I'd already studied
> functional languages, it would have been less of a chore.
>
>> Those who have no experience of a
>> procedural language such as C might find top level C++ programming hard
>> to grasp (as well as bottom level). Those whose view of OO is based on
>> Smalltalk might find C++ static binding a pain etc.
>
> I think that strengthens my point, to more programming paradigms a
> student is familiar with, the better they will understand and be able to
> fully utilise the power of C++.

Whilst understanding multiple programming paradigms is evidently "a good
thing" (tm), and should be encouraged, that doesn't necessarily mean
that one is best advised to initially learn object-oriented programming
from an advanced book like OOSC. Like Francis, I've come across the book
(i.e. got a copy on my shelf), and it's not simple - the front cover
describes it as the author's "tour de force" for a reason IMHO :)

Cheers,
Stu