discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: of applications for gnustep...


From: Philippe C . D . Robert
Subject: Re: of applications for gnustep...
Date: Sun, 15 Jun 2003 14:04:15 +0200

On Sunday, June 15, 2003, at 01:38 AM, Philip Mötteli wrote:
Am Samstag, 14.06.03, um 17:53 Uhr (Europe/Zurich) schrieb Philippe C.D. Robert:
On Friday, June 13, 2003, at 08:49 PM, Philip Mötteli wrote:
C++ completely misses the point what OO is all about. Yes, I'm referring
to Alan Kay's legendary comment:

        I invented the term 'object oriented programming' and I can tell
        you I didn't have C++ in mind.

C++ is one big mess of afterthoughts. C++ is evil and should be buried
at midnight under a full moon in an abandoned graveyard. And best be
forgotten as well.

I do completely agree. And I would even add something: As someone, who believes, that the most important part of an oo-program is its design: It would be impossible for me to make any project in C++, because the language is so little oo, that every design is just a huge tinkering with, in other languages not needed, design patterns. It becomes an unmaintainable mess.

In other words, you don't like C++ because you are not able to use it properly...

Thanks, you seem to know me very well or you just want to insult me. Anyway, you have a simple logical problem:

I did not mean to be insulting, sorry if it came along that way. I also do not claim to be a language expert, I just use and did use both languages for quite some time in my professional life which involves dealing with relatively large code bases. BTW the comment I made above is just a 'tweaked rephrasing' of your comment:

"It would be impossible for me to make any project in C++, because the language is so little oo, that every design is just ...".

The oo features of different oo languages are not the same, are they? Or are all languages the same? No they aren't otherwise we wouldn't have this thread here. So somewhere these differences have to take effect. They take effect in the code you can write – in the restrictions you have or not. Software code models a part of the real world. The models are different when written in languages with different oo possiblities. I don't think, we can discuss anything here. So far this is only a logical conclusion.

Of course, I agree.

But concretely: Please tell me, how I can replace Categories. I really would like to ask you this question. Or, I want to override a C++ method, that is not declared as being virtual (of course, you don't have the source or are not allowed to change it)?

And here it's you having a logical problem... using different languages will result in different designs, thus comparing feature X against feature Y does not proof anything, it's as if I would say you cannot overload operators in ObjC and therefore it is a bad language. Besides what do categories have to do with OO programming? They are a language feature which can lead to elegant designs (or bloat classes or be a potential security problem or...), but they are not a prerequisite for OO programming.

Moreover the misuse of a C++ "feature" does even imply less in this discussion - if you are not supposed to override a method then you are either not allowed to because of good reasons or then it is a design flaw, and this has nothing to do with the language being used.

You should now just put up a simple, yet maintainable solution for these questions, without tinkering a lot around, building wrapper objects (you don't call this "good fractionizing", are you?) or thelike. And this is just a start of examples, that I really prefer forgetting.

And anyway, if the architectural possibilities of C++ would be as large as the ObjC ones, would we then pay the penalty of this dynamic-dynamic method binding? Are we all just plain stupid?

Every languages has advantages and disadvantages, so every language has areas where it is stronger than the other, does this mean it is a better language per se? I do not think so... Don't get me wrong, I prefer ObjC over C++ as much as you do, but I also believe that bashing other languages is completely superfluous and counterproductive.

C++ is faster, ObjC is more oo. One leads to faster programs, the other to more elegant designs.

It's easy to use common stereotypes, but it does not mean a lot...

also you are aware that there exist many design patterns which are used when programming in ObjC, aren't you!? You will even find concrete references to NeXT software in Gamma's book.

I said "…a huge tinkering with, in other languages not needed, design patterns". I didn't say, there are no design patterns for ObjC. But the more restrictive/less oo a language is, the more often you have typical cases, where you have to circumvent the restriction with a solution, proposed by a design pattern.

Sorry, I misread this one then.

And BTW the quality of a design and/or code is much more influenced by the knowledge and experience of its author than the language of > choice.

Of course, if you give to a very bad designer ObjC as a tool and a very good designer C++, it might even happen, that the C++ design will be better. The problem is, that I even think, that this is the biggest problem of all: Most people are not conscious, that when they design, they apply specific restrictions. Restrictions, that were necessary with the language, they used before, but are not any more there with e. g. ObjC. Removing these habits/restrictions in my mind took me much more time, than learning the language itself.

A good C++ designer will come up with better solutions than a bad ObjC designer, if not then something is wrong as it is not the language which defines the (potential) quality of a design.

BTW every language has pros and cons, even ObjC ...

I really fail to see why the argument of maintainability always pops up in this context, I could show you really ugly ObjC code which is everything but definitely not maintainable...

Has anybody said, that you can't abuse ObjC? Has anybody said, that using ObjC automatically makes you a great and unbeatable designer/programmer?

It has been said that "C++ is evil and should be buried at midnight under a full moon in an abandoned graveyard. And best be forgotten as well" and that it basically needs a very good C++ designer to compete against a very bad ObjC designer.

But as an experienced ObjC architect, one can come up with a much more fractionized design than with other languages. And fractionizing means maintainability.

Computer languages are not religions, they are tools,
Exactly. And they are different. It's not just always the same tool with a different name.

Exactly! And I am glad that I can use different tools for different purposes.

so use them or don't if you have the choice,
Exactly.

I really do not believe that this kind of attitude helps getting more (new) people attracted to GNUstep and/or Objective-C.

You are the first, who sais, that we have to say, that C++ is great or at least as great as ObjC, in order to attract more people to gnustep. Others have been talking about killer apps or completing the libraries. Well it's a new proposition. Lets talk about it. I don't think, we will attract a lot of programmers, by hyping C++, are we? But I think, having ObjC++ would help attract some people. And now we're back at the original thread.

I did not say that, don't put words in my mouth.

-Phil
--
Philippe C.D. Robert
http://www.nice.ch/~phip





reply via email to

[Prev in Thread] Current Thread [Next in Thread]