To be precise, I would describe iTunes as a Quicktime app, moreso than a Carbon app. The Quicktime API carries a great deal of the old Mac Toolbox with it, on the Windows platform.
You don't know C++ well enough to judge its value as a language
I gave up on C++ in 1989, when it was far more defensible than it is today. I don't have to stand in line for nine hours to get half a kilo of bread to be able to judge the value of communism, do I?
This is probably one of the best explanations I've seen for the difference that generic messaging makes. Read it, and then consider how you would attempt to implement undo or remote messaging, or key-value observing in C++.
Kochan's book is the only one I know of that treats Obj-C as a whole language, rather than describing it in terms of its difference from ANSI-C. I've got it, and I recommend it.
If you're going to learn Cocoa, I'd recommend working through Aaron Hillegass's book first.
You can accomplish the same things with inheritance
No, you can't.
If you add methods to a class with an Obj-C category, all instances of that class gain those methods. This is not the same thing as inheritance, where only instances of the subclass have the new capabilities.
Well, what timeframe are we talking here? In Tiger, they gave us CoreData and Quartz Composer, and Spotlight. In Jaguar, they introduced Cocoa Bindings, Quartz Extreme, the Address Book API, and Rendezvous.
OS X is gaining major capabilities with every release, and they usually come with an Objective-C API to make them very easy to use.
You know not whereof you speak, but that's pretty typical..
Managers at Apple don't brag about writing more lines of code, they brag about hitting their ship dates without having to drop features. Cocoa is a big help for getting an app out the door.
It appears that you don't know the difference between the Fair Tax proposal and the Flat Tax. One is a consumption tax, the other is a simplification of the income tax.
My, what an articulate rebuttal of my statement. You must be one of those sore losers I keep seeing around here.
Rich people buying the votes of morons is not democracy.
Rich people spending their money on propaganda isn't buying votes, paying people cash for their votes is. If you have evidence of vote buying, tell the relevant authorities; it's a felony, and you have a duty to report it.
Bruce! Where have you been hiding? You should try to make it to MacWorld or WWDC and see the old crowd one of these years.;-)
Obj-C is still very much like it was when you were using it. The only additions to the language itself since Apple and NeXT merged were the @try/@catch/@throw and @syncronized keywords. I'll bet you don't even need to look up what they do.
As for the frameworks, you'd still recognize them, but there's a lot more there than we ever had in NeXTSTEP. Check out Cocoa Bindings and CoreData; it's the result of everything we learned in a decade of using EOF.
It would also be nice if they would use something with a more conventional syntax (I'm looking at you, method calls).
Umm... NO.
Keyword arguments are the main reason why reading other people's Obj-C code is so easy. I'd give up Obj-C method call syntax for Smalltalk, but not for that C++ abortion like
reciever->doSomething(3,2,1, "boom");// Good luck remembering what these parameters mean!
Well, C++ is a mess because it was a research language. Every time someone suggested an addtion, Stroustrup's attitude was "sure, let's add that too, and see how it works out". The result is a language that was not designed but accreted, combining ideas from many, many people. Some of those ideas were OK, and others were, well, templates.
Obj-C, by contrast, was designed by Brad Cox and a very small team, and then added to by NeXT with a very strong anti-bloat sensibility. Even today, the differences from C to Obj-C are a handfull of keywords, and the use of the square brackets for method calls. It's not as simple as LISP, but I still can (and do!) teach C programmers Objective-C in less than a day.
To be precise, I would describe iTunes as a Quicktime app, moreso than a Carbon app. The Quicktime API carries a great deal of the old Mac Toolbox with it, on the Windows platform.
-jcr
1989? Hm, wasn't that before STL? Boost? Templates?
Exactly. That's why it was more defensible then.
-jcr
Oh please. Steve Jobs couldn't code his way out of a wet paper bag.
And you know this how, exactly?
-jcr
Friends of mine who have implemented drag and drop on Windows spent days doing so, and it still didn't work quite right.
Days? How much code do they need to do this?
-jcr
Are you the Howard I worked with briefly at Stratus?
-jcr
You don't know C++ well enough to judge its value as a language
I gave up on C++ in 1989, when it was far more defensible than it is today. I don't have to stand in line for nine hours to get half a kilo of bread to be able to judge the value of communism, do I?
-jcr
"Type safety" is a red herring.
This is probably one of the best explanations I've seen for the difference that generic messaging makes. Read it, and then consider how you would attempt to implement undo or remote messaging, or key-value observing in C++.
-jcr
Kochan's book is the only one I know of that treats Obj-C as a whole language, rather than describing it in terms of its difference from ANSI-C. I've got it, and I recommend it.
If you're going to learn Cocoa, I'd recommend working through Aaron Hillegass's book first.
-jcr
The majority of *your* app isn't, but the majority of Safari is.
WebCore, WebKit and Safari are all done by the same team.
-jcr
You can accomplish the same things with inheritance
No, you can't.
If you add methods to a class with an Obj-C category, all instances of that class gain those methods. This is not the same thing as inheritance, where only instances of the subclass have the new capabilities.
-jcr
he gives the inside story on Steve Jobs:
No, Raskin gives his opinion of Steve Jobs. Read Andy Hertzfeld's book for some perspective on Raskin.
-jcr
Well, what timeframe are we talking here? In Tiger, they gave us CoreData and Quartz Composer, and Spotlight. In Jaguar, they introduced Cocoa Bindings, Quartz Extreme, the Address Book API, and Rendezvous.
OS X is gaining major capabilities with every release, and they usually come with an Objective-C API to make them very easy to use.
-jcr
You know not whereof you speak, but that's pretty typical..
Managers at Apple don't brag about writing more lines of code, they brag about hitting their ship dates without having to drop features. Cocoa is a big help for getting an app out the door.
-jcr
Steve Jobs doesn't know a single thing about programming.
Yes he does, he just hasn't done it for quite a while.
-jcr
It appears that you don't know the difference between the Fair Tax proposal and the Flat Tax. One is a consumption tax, the other is a simplification of the income tax.
-jcr
You are a naive dumbass
My, what an articulate rebuttal of my statement. You must be one of those sore losers I keep seeing around here.
Rich people buying the votes of morons is not democracy.
Rich people spending their money on propaganda isn't buying votes, paying people cash for their votes is. If you have evidence of vote buying, tell the relevant authorities; it's a felony, and you have a duty to report it.
-jcr
Bruce! Where have you been hiding? You should try to make it to MacWorld or WWDC and see the old crowd one of these years. ;-)
Obj-C is still very much like it was when you were using it. The only additions to the language itself since Apple and NeXT merged were the @try/@catch/@throw and @syncronized keywords. I'll bet you don't even need to look up what they do.
As for the frameworks, you'd still recognize them, but there's a lot more there than we ever had in NeXTSTEP. Check out Cocoa Bindings and CoreData; it's the result of everything we learned in a decade of using EOF.
-jcr
You're splitting hairs, here. Safari is factored into an App and a couple of frameworks. The bulk of Safari is webcore.
-jcr
If you think CoreData is cool, check out what you can do with Quartz Composer. Every value in the composition is reachable through keypaths.
-jcr
It would also be nice if they would use something with a more conventional syntax (I'm looking at you, method calls).
// Good luck remembering what these parameters mean!
Umm... NO.
Keyword arguments are the main reason why reading other people's Obj-C code is so easy. I'd give up Obj-C method call syntax for Smalltalk, but not for that C++ abortion like
reciever->doSomething(3,2,1, "boom");
-jcr
Well, C++ is a mess because it was a research language. Every time someone suggested an addtion, Stroustrup's attitude was "sure, let's add that too, and see how it works out". The result is a language that was not designed but accreted, combining ideas from many, many people. Some of those ideas were OK, and others were, well, templates.
Obj-C, by contrast, was designed by Brad Cox and a very small team, and then added to by NeXT with a very strong anti-bloat sensibility. Even today, the differences from C to Obj-C are a handfull of keywords, and the use of the square brackets for method calls. It's not as simple as LISP, but I still can (and do!) teach C programmers Objective-C in less than a day.
-jcr
Actually, Safari is largely written in C++ (the KDE rendering engine), and iTunes isn't an Obj-C app at all.
For some better examples, there's Xcode itself, Aperture, iPhoto, Quartz Composer, iChat, Address Book, and so on.
-jcr
..and yet, for all that, he could only cast one vote, right?
-jcr
I just need a fast, sleek player that lets me control my playlist. Winamp fits that for me.
How is it at loading up your iPod?
-jcr
the NeXT interfaces themselves being a rip-off of Smalltalk.
Get serious. Have you looked at an ST-80 system anytime recently? It's like comparing cave paintings to modern typesetters.
-jcr