Slashdot Mirror


Steve Jobs thinks Objective C is Perfect?

josht writes "Nitesh Dhanjani has posted an e-mail thread between Steve Jobs and himself. Dhanjani argues "I'd like to see Apple developers gain more choice. With every iteration of OSX, there seems to be so much effort put into innovation of desktop components, but the development environment is age old." I agree with Dhanjani. What has Apple done recently to wow the developers, and make it fun to code Cocoa components? I've looked into the Objective C and Xcode environment but compared to Microsoft's .NET solutions, it doesn't impress me at all. I think Apple can do a lot better. Steve Jobs disagrees. What do the readers think about Objective C and Xcode?"

784 comments

  1. Syntax is strange by Anonymous Coward · · Score: 0

    I think the syntax is strange and takes some getting used to.

  2. namespaces by Anonymous Coward · · Score: 4, Informative

    Anyone claiming a language lacking proper namespace support is "perfect" is nothing short of delusional.

    1. Re:namespaces by Anonymous Coward · · Score: 0

      It's easy to sound smart when you're not saying anything at all. Define "proper namespace support", if you please.

    2. Re:namespaces by Anonymous Coward · · Score: 1

      It's easy to sound rude when you are posting anonymously.

    3. Re:namespaces by golgotha007 · · Score: 0, Troll

      Not to mention the fact that Steve Jobs doesn't know a single thing about programming. He started Apple as the acid-head front man, not because he had any technical skills.

      A geek Steve Jobs is not. Had he not known Wozniak, more than likely he would be manager at Sears or Circuit City or something...

    4. Re:namespaces by Anonymous Coward · · Score: 0

      Anonymous does not forgive

    5. Re:namespaces by Anonymous Coward · · Score: 3, Funny

      ...or Pixar.

    6. Re:namespaces by kongjie · · Score: 4, Informative
      All you have to do is look at Jobs' history to see that being a "manager at Sears or Circuit City or something..." would not have satisfied his ambitions. If you're seriously suggesting that, you've misjudged the man.

      You may be right about his programming talent (I'm not saying you are) but clearly you don't know a single thing about human nature.

    7. Re:namespaces by Anonymous Coward · · Score: 2, Insightful

      >> Had he not known Wozniak, more than likely he would be manager at Sears or Circuit City or something...
      > ...or Pixar.

      No. This is offtopic, but what's clear from Jobs' experience at Apple is that he had big dreams and a child^H^H^H^H^H undeveloped set of people-management skills.

      If he hadn't been thrust into a leadership role early on, Jobs probably would have been another big talker who never mastered the skills it takes to move up the ladder. A lot of entrepreneurs have this problem when they try to move into established corporate structures.

    8. Re:namespaces by jcr · · Score: 4, Informative

      Steve Jobs doesn't know a single thing about programming.

      Yes he does, he just hasn't done it for quite a while.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    9. Re:namespaces by golgotha007 · · Score: 2, Insightful

      Show me a single person on this planet with no ambitions?

      The Sears/Circuit City thing was just my attempt at humor. However, he would have no where near the success he's had if he didn't have the right friend at the right time.

      You may be right about his programming talent (I'm not saying you are) but clearly you don't know a single thing about human nature.

      If you think that Steve Jobs has any programming talent, then you don't know a single thing about Steve Jobs.

    10. Re:namespaces by HishamMuhammad · · Score: 1

      But still, he has a point.

    11. Re:namespaces by Anonymous Coward · · Score: 0

      No he doesn't. His only job even remotely related to programming consisted of him pawning his work off on Wozniak for a profit. Steve Jobs is actually one of the most unrespectable figurehead in computing, making Bill Gates look like Turing in comparison.

    12. Re:namespaces by Anonymous Coward · · Score: 0

      People spend to much time worrying about the exact syntax of one programming language vs. some other one. It's a very minor detail. What matters more the the environment inwith the appllication is developed. xcode is very good fr building Mac desktop type applications. Programmers when working on non-triveal applications typically spend only 1/6th of there time writting code. The rest of the effort goes into requirements analisis, design, test and documentation. Code syntax is a minor part of something we do oly 1/6 of the time. Best to spend our enegies talking about stuff that matters like requrements, design and test. Get that part right and FORTRAN is good enough.

    13. Re:namespaces by Overly+Critical+Guy · · Score: 1, Informative

      Not to mention the fact that Steve Jobs do

      I guess you missed that old NeXT demo Slashdot posted earlier in the year where Steve Jobs demonstrates NeXT object-oriented programming and interface builder.

      --
      "Sufferin' succotash."
    14. Re:namespaces by ArbitraryConstant · · Score: 0

      "Yes he does, he just hasn't done it for quite a while."

      Programming has changed a lot in the last few years.

      --
      I rarely criticize things I don't care about.
    15. Re:namespaces by JohnnyLocust · · Score: 0, Flamebait

      Steve Jobs doesn't know a single thing about programming.

      Yes he does, he just hasn't done it for quite a while.

      Oh please. Steve Jobs couldn't code his way out of a wet paper bag.

    16. Re:namespaces by jcr · · Score: 1

      Oh please. Steve Jobs couldn't code his way out of a wet paper bag.

      And you know this how, exactly?

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    17. Re:namespaces by JohnnyLocust · · Score: 0, Troll

      And you know this how, exactly?

      I'm his secret gay lover.

    18. Re:namespaces by mildgift · · Score: 1

      Nobody gets to be as successful as Jobs without a lot of good fortune and luck.

    19. Re:namespaces by Anonymous Coward · · Score: 4, Insightful

      Nobody gets to be as successful as Jobs without a lot of talent.

    20. Re:namespaces by Tedium+Unleased · · Score: 2, Insightful

      successful people make their opportunities. the other 99.99% of people tell themselves its luck so they can whine and tell themselves they could have been contenders.
      successful people may have some charming story involving luck, but of course luck does not keep them on top, and it's probably not much more luck than anyone else has, just like everyone else, they'll associate random events around good events as having some special meaning, or more likely tell you that.

    21. Re:namespaces by rich_r · · Score: 0, Troll
      And you know this how, exactly? I'm his secret gay lover

      And that's another mystery cleared up. Now, about those pyramids...

    22. Re:namespaces by saltydogdesign · · Score: 3, Insightful

      And I'm sure successful people choose to be born into stable, wealthy societies rather than in some God-forsaken African nation wracked by famine and war, yes? No luck involved there, huh?

      --
      // This is not a sig.
    23. Re:namespaces by saltydogdesign · · Score: 1

      In my world, we assume people not to be programmers until proven otherwise. You made the assertion -- you back it up. For my own part, I've never seen anything in any of the biographical info I've read about Jobs indicating that he had any significant technical capacities, whether programming or hardware design or whatever. He does have significant knowledge of industrial design, but I've never once heard of any meaningful code written by Steven Jobs.

      --
      // This is not a sig.
    24. Re:namespaces by fimbulvetr · · Score: 1

      Ohh...right..if someone demonstrates something, they clearly have an intimate understanding of it.
      Just like car salesmen can tell you the principles of how an automatic transmission works, or a radio shack employee can describe the interworkings of a fm reciever.

    25. Re:namespaces by Anonymous Coward · · Score: 0

      but clearly you don't know a single thing about human nature.

      And clearly you're exaggerating more than Ballmer does in the monkey dance ;-)

    26. Re:namespaces by Gentlewhisper · · Score: 2, Interesting


      And I'm sure successful people choose to be born into stable, wealthy societies rather than in some God-forsaken African nation wracked by famine and war, yes? No luck involved there, huh?


      Btw Steve Jobs was abandoned by his birth parents. Stable and wealthy family indeed eh?

    27. Re:namespaces by John+Bokma · · Score: 1

      What happened after that? Who raises you doesn't matter as much as how you're raised.

    28. Re:namespaces by IronDweeb · · Score: 1

      Minor correction - the correct word is "reared" as in "who raises you" versus "who reared you". Who reared Steve Jobs is the question.

    29. Re:namespaces by soft_guy · · Score: 1

      If you don't know enough about Steve Jobs to know the answer to that question, then you have no business posting on this thread.

      Would Steve Jobs have been a major success in life if he had been brought up in poverty in a third world country? I don't know - certainly he would not have been able to found Apple from such circumstances. However, I have no doubt that Steve Jobs, like Henry Ford or Thomas Edison, would have been a success in life pretty much anywhere.

      --
      Avoid Missing Ball for High Score
    30. Re:namespaces by The+Clockwork+Troll · · Score: 3, Funny

      I'm guessing your voice has changed a lot in the last few years.

      --

      There are no karma whores, only moderation johns
    31. Re:namespaces by Anonymous Coward · · Score: 0

      > I have no doubt that Steve Jobs, like Henry Ford or Thomas Edison, would have been a success in life pretty much anywhere.

      Well it's pointless to argue "could'ves", but I think Jobs came very close to failing. It's obvious that (at one point in time at least) he was so obnoxious that nobody would have worked with him if he hadn't been the boss. And considering how many personal computer companies failed between 1976-1985, Jobs was lucky to be *able* to be the boss.

    32. Re:namespaces by Hynee · · Score: 1

      Dude, instead of

      namespace foo {
      int bar;
      }

      Try

      /* foo.h
      does fooey stuff */
      int foo_bar;

      How many global variables do you need?!?

      Yeah, I guess it could lead to a DLL-hell type of situation sometimes, but it's pretty minor.

      --
      Damn, I already moderated this topic. Now I'll have to log in with my sock puppet to comment.
    33. Re:namespaces by saltydogdesign · · Score: 1

      Please. Are you honestly saying that his case was comparable to the one I gave? That's ridiculous. He didn't have every advantage, but the mere fact of being born white in the U.S. is a *huge* plus.

      --
      // This is not a sig.
    34. Re:namespaces by Anonymous Coward · · Score: 0

      Heheh.

      Imagine two people writing plugins. Now imagine 10 people. Now 100, all around. Now you want to use two plugins that clash due to method names.

      Namespaces help.

    35. Re:namespaces by mgv · · Score: 1


      Would Steve Jobs have been a major success in life if he had been brought up in poverty in a third world country? I don't know - certainly he would not have been able to found Apple from such circumstances. However, I have no doubt that Steve Jobs, like Henry Ford or Thomas Edison, would have been a success in life pretty much anywhere.


      Yes, maybe he would have. And maybe he would be dead of pancreatic cancer by now if he lived there, instead of having it removed successfully. Or maybe he would have died of Hepatitis or HIV (as about 40 million people in africa are going to sometime soon).

      Success is a combination of luck and talent. Steve Jobs has both, and he hasn't wasted his good fortune of being in the right place in the right time.

      But to think that talent alone will win you over in the face of bad circumstance - life is still a lottery, and bad things happen to good people.

      Michael

      --
      There is no cryptographic solution to the problem where the intended receiver and the attacker are the same entity.
    36. Re:namespaces by ByronicADisruptor · · Score: 1



          Basically the problem is that all the damn Java/C(visual C)programmers are arrogant and have poor knowledge of programming and want to argue about concepts that they have no idea about.. Most of them have no concept of how to basic level troubleshoot an OS and you wonder why there are so many bugs.. I say stick to ASM..

      --
      Embody Yourself In A Concept It Will Become Reality... Byron Smart
    37. Re:namespaces by el_womble · · Score: 1

      Imagine where Wozniak would have been if he'd never met Jobs. I imagine that on this website alone there are a handful of geeks with the same, or better, technical competance as Wozniak, but we need a business and aesthetic mind like Jobs in order to be successful.

      Left to our own devices geeks would write small, reuseable code that could be piped together and requires you to learn a new syntax for each one: UNIX. Proded by a bridge man who understands markets, design and people although has no skills in any of them and you eventually get OS X.

      If Jobs hadn't have found Wozniak, I suspect that he would have found a similarly talented geek to do his work, and thats his talent... talent spotting. So if Steve Jobs turns round to me (yeah right) and says watch this guy, he's going to write the next big thing, or I think this product is going to sell really well I'll listen. If turns round to me and says Obj C is the perfect programing language I'm going to be asking myself:

      What is he selling?
      Who is telling him this?

      Obj C is a neat language, but really the only thing that makes it stand out is the frameworks that it's been used to create. Given the kind of resources that Obj C has had thrown at it I suspect even perl could start to look like a enterprise language.

      --
      Scared of flying, pointy things snce 1979!
    38. Re:namespaces by Anonymous Coward · · Score: 0

      Ok, he can code this up:

      10 ?"PH33R MY REALITY DISTORTION FIELD"
      20 GOTO 10

    39. Re:namespaces by Anonymous Coward · · Score: 0

      Bureaucratic skills: I dunno about that. Jobs' has always been one of the best bullshitters that I've ever seen in action...

    40. Re:namespaces by Anonymous Coward · · Score: 0

      You know guys, in all the articles/bios I've seen or read about Jobs, never once has he been mentioned in association with actual software development. In fact the only technical related reference I have seen related to him ended up with him running to Woz to actually do the job for him. The closes to anything technical about Jobs is his ability to pick off decent/good enough designs that compared to competition are significantly better. It's what he's ALWAYS done, I just wonder what will happen to Apple when he leaves or loses his edge as there aren't many like that around(Apple has NEVER done well under incompetent to average management, and they really haven't had any more Wozes since Woz to help compensate), or IOW one of the two or three management types worth their overall compensation.

      Also, for every one of these guys that you hold up and say that they would be successful in anything is pure BS. Your only support for such a supposition is that they have managed some how to get to the top, mean while forgetting about the 1000s of others who are just like Jobs(and others) yet never managed to do a damned thing. Personally, I believe it to be more of a set of favorable circumstances and associations along with an ability to see and capitalize on those circumstances, which Jobs was able to do.

    41. Re:namespaces by Overly+Critical+Guy · · Score: 1

      Again, did you watch the video? Steve Jobs may not be a low-level kernel hacker. But he can dev up some apps. In fact, he does it in front of a camera as a demo of the NeXT programming environment, if you'd just watch it.

      --
      "Sufferin' succotash."
    42. Re:namespaces by mildgift · · Score: 2, Insightful

      This is true, but talent and circumstance are both necessary. I raised the issue because everyone's talking about talent, without thinking much about luck.

      Also, it's not like he's be able to have so much luck without the big pile of money that the Apple II generated, back in the 1970s. That cash funded a lot of failures, and one hit: the Mac.

      The Mac money was spent on a lot of things, but had one hit: Pixar. NeXT was cool, but it wasn't a financial success.

      With that string of success, he came back to Apple, made the iMac, brought back the old NeXT software from the dead, and basically trailed Windows for a while... until the iPod... which was originally a me-too product late to the market until it was mated with the music store (which is also a me-too product).

      It takes some talent to be that lucky.

    43. Re:namespaces by Anonymous Coward · · Score: 0

      > successful people make their opportunities. the other 99.99% of people tell themselves its luck so they can whine and tell themselves they could have been contenders.

      Perhaps - but I noticed that the 0.01% who reach the top are thoroughly convinced that luck had absolutely *nothing* to do with their success!

      Despite the scores of business people out there just like them, who worked just as hard, and yet didn't reach the same height.

    44. Re:namespaces by Anonymous Coward · · Score: 0

      > The Mac money was spent on a lot of things, but had one hit: Pixar. NeXT was cool, but it wasn't a financial success.

      Jobs didn't get any of the Mac money - he was gone from Apple before the Mac made back any real money. ALL of Jobs' fortune in 1985 was from the success of the Apple II.

    45. Re:namespaces by Anonymous Coward · · Score: 0

      >> Oh please. Steve Jobs couldn't code his way out of a wet paper bag.
      > And you know this how, exactly?

      Don't know how Johnny knows, but Andy Hertzfeld wrote this:

      Steve generally treated Bill [Gates] as someone who was slightly inferior, especially in matters of taste and style. Bill looked down on Steve because he couldn't actually program.

      'struth

    46. Re:namespaces by Anonymous Coward · · Score: 0

      Programmers when working on non-triveal applications typically spend only 1/6th of there time writting code. The rest of the effort goes into requirements analisis, design, test and documentation.

      Ok 1/6th for coding 5/6 for reqs/design/test/doc.
      But you are forgetting the lifetime (maybe not yours of chasing bugs out it, trying to extend it to do X, yelling and cussing about the previous developer that should of spent more than 1/6 of his time coding and actually done it right..

      But I am not bitter... Oh no.

    47. Re:namespaces by Anonymous Coward · · Score: 0

      Stable and wealthy family indeed eh?

      Allow me to introduce you to a concept called "reading comprehension".

      Now, consider: can you see any difference between the terms "stable and wealthy society" (what the GP wrote) and "stable and wealthy family" (what you misread it as)?

      All Americans live in a stable and wealthy society. Even the poor ones.

    48. Re:namespaces by fighthairloss · · Score: 1

      and that's why he's completely run apple into the ground since taking the helm again, right? no vision and no management skills, right?

      come on.

      he may not be a programmer, but can you name a company he hasn't succeeded at (and yes, he even eventually made something out of NeXT).

    49. Re:namespaces by Anonymous Coward · · Score: 0

      > and that's why he's completely run apple into the ground since taking the helm again, right? no vision and no management skills, right?

      Oh, he's always had vision - that's the main reason for his success. His management skills are another story - he would certainly have been fired at any other company if he managed his people like he did at Apple for the first few years. It was a trial by fire that he was only able to afford because he built the fire!

      > he may not be a programmer, but can you name a company he hasn't succeeded at (and yes, he even eventually made something out of NeXT).

      Atari? :)

    50. Re:namespaces by Anonymous Coward · · Score: 0
      Then there's the possibility of two different programmers building two different plugins using the *same namespace name* but of course that could never happen.

      Its not a panacea.

    51. Re:namespaces by Anonymous Coward · · Score: 0

      We HAVE watched it, it doesn't prove shit. He could have learned to do that half an hour before he demoed it for all we know. Show us some code he has written so we can evaluate that. Before you do, he's not a programmer, period.

    52. Re:namespaces by drxenos · · Score: 1

      No, that is never a problem namespace clashes. namespaces are open. You can always import the two different plugins into new namespaces. Collisions are easily handled. This is not the case with clashing naming schemes such as the "foo_bar" example.

      --


      Anonymous Cowards suck.
  3. The emails are already gone. by CapnRob · · Score: 5, Informative

    He's already taken down the emails in question, apparently having had second thoughts about the appropriateness of posting private emails.

    1. Re:The emails are already gone. by Anonymous Coward · · Score: 0

      Or having been slashdotted....

    2. Re:The emails are already gone. by Knytefall · · Score: 4, Informative

      Here are the emails:

      From: Nitesh Dhanjani
      Subject: Re: Will XCode+ObjC ever suck less?
      Date: December 25, 2005 5:27:02 PM CST
      To: sjobs@apple.com

      I look forward to the improvements! Thanks,

      Nitesh.

      On Dec 25, 2005, at 5:10 PM, Steve Jobs wrote:

      I guess we disagree. First of all, .NET with CLI and managed code runs SLOW, so most serious developers can't use it because of performance. Second, the libraries in C# are FAR less mature and elegant than those in Cocoa. We are working on a better implementation for garbage collection than we've seen out there so far, but in the end its a performance hit and an unpredictable time that is not good for some kinds of apps.

      Steve

      On Dec 25, 2005, at 2:36 PM, Nitesh Dhanjani wrote:

      Objective C is old and clunky. Its almost 2006, and I _still_ have to look out for yucky pointers? I'd love to be able to write native apps with Ruby (or even C#!.) There are open community projects in progress that are trying to bind ruby and C# (mono) with Cocoa, but I'd love for Apple to step in and make this happen faster. Today, Microsoft seems to be _way_ ahead of the development curve - with their .NET implementation, you are allowed to code using a plethora of languages (C#, Python, VB, etc), as long as the interpreter/compiler follows the IL specification - pointers don't matter, garbage collection is done for you - ah the beautiful world of managed code.

      Having said that, most native OSX apps are still beautiful and well designed. Imagine how much better we could do if the developers had a more flexible choice of languages? I can _bet_ you a lot of OSX app developers use Objective C because they have no other choice.

      Nitesh.

      On Dec 25, 2005, at 3:11 PM, Steve Jobs wrote:

      Actually, Objective C is pretty great. Its far nicer than most other ways of writing apps. What don't you like about it? What do you like better?

      Steve

      On Dec 25, 2005, at 11:59 AM, Nitesh Dhanjani wrote:

      Hi Steve

      Will it ever be easy to write native OSX GUI apps? Objective C sucks.

      Thanks,
      Nitesh.

    3. Re:The emails are already gone. by Yaztromo · · Score: 4, Insightful

      And this, kids, is why you should never ever top-post.

      Yaz.

    4. Re:The emails are already gone. by soft_guy · · Score: 4, Interesting

      I'm sorry, but I have to agree with Steve and completely disagree with Mr. Dhanjani. I think that the language "choice" on .NET is silly - you can use whatever language you want so long as the language has exactly the same features as C#. For example, look at the feature set of "managed C++". No multiple inheritance and other non-C# features have been removed. Same for other languages.

      I program with Objective-C and Cocoa all the time. I am mostly happy with it and in fact I will not be using the Garbage Collection feature for my apps.

      I have complaints about Cocoa, but not being able to program in Ruby or Python is NOT one of them.

      --
      Avoid Missing Ball for High Score
    5. Re:The emails are already gone. by WatertonMan · · Score: 1

      There is some Cocoa glue for Python. I've not used it much since most of the stuff I write doesn't need much of a GUI. It seems to work fine.

    6. Re:The emails are already gone. by Anonymous Coward · · Score: 2, Interesting

      I also agree with Steve.

      To the best of my knowledge he isn't actually a coder. Yet he has concisely and accurately identified the key weaknesses in comtemporary competing products. (Maybe he has good people working for him?).

      Managed code like C# (and Java and maybe Ruby, Python, VB) is slow, and this a problem when developing and deploying apps in a competitive market place.

      Also garbage collection is a performance hit and does tend to use CPU at just the wrong time.

      Actually wrt memory management garbage collection entirely misses the main memory management problem I have to deal with. Now how can I explain what this is... here we go it is "keeping heap out of virtual memory (e.g. off the disk)" (from http://www.theserverside.com/news/thread.tss?threa d_id=29865 i love google).

      No comment on C# vs Objective C libraries. I'm not interested in Objective C or C# as I mainly do cross platform GUI development on code that has to be fast. I need mmap more and more.

      (Can you guess who I work for?)

    7. Re:The emails are already gone. by noidentity · · Score: 3, Funny

      A: Because it messes up the order in which people normally read text.
      Q: Why is it such a bad thing?
      A: Top-posting.
      Q: What is the most annoying thing on usenet and in e-mail?

    8. Re:The emails are already gone. by Erik+Hollensbe · · Score: 1

      I really think there's room for both on the application front... Not everyone needs a well-performing application, but sometimes people need something simple to modify (where learning the language isn't as much of an issue) and allows applications to be developed in a timely fashion with little programming.

      From an engineering perspective, that makes my stomach turn, but a lot of people can relate to how perl or shell can be a boon when you need to write something quick and dirty. I see no difference in the world of GUI applications.

      However, Apple already has something in that vein and I don't think people have really given it the consideration it deserves, mainly because it's a commercial third-party offering: RealBasic.

    9. Re:The emails are already gone. by Ilgaz · · Score: 1

      Mac Bittorrent (official client) looks like it is completely written in Python and it is getting good feedback from Mac community, especially casual bittorrent users.

      For feedback: http://www.versiontracker.com/dyn/moreinfo/macosx/ 18286

      I used it and it really "feels native".

      ps: I am not a developer.

    10. Re:The emails are already gone. by thallgren · · Score: 2

      .Net has been referred to as a skinnable language environment. Without much work you end up with C# with another look.

    11. Re:The emails are already gone. by shmlco · · Score: 1
      It really depends on the type of application. If you're doing some whiz-bang HD video streaming/editing application or 3D game, yes. If you're doing a contact manager or some other UI-centric application that lives in the system toolbox and usually spends billions of cycles waiting for the user to hit the next key, then the pure raw speed of unmanaged code buys you... nothing.

      And development speed, time-to-market issues, stability, and other factors may in fact have a higher priority.

      --
      Any sect, cult, or religion will legislate its creed into law if it acquires the political power to do so.
    12. Re:The emails are already gone. by vought · · Score: 1

      Maybe he has good people working for him?

      How do you think Apple got from August 1998 to today?

      Stock price?
      Product quality?
      Employee morale?

      All far higher under Jobs. I won't claim he's perfect, but he has produced results during his tenure. I'd bet he knows what he talks about - and when he has a question, he finds the answer and takes the time to understand it, unlike many tech CEOs.

    13. Re:The emails are already gone. by Anonymous Coward · · Score: 0

      For example, look at the feature set of "managed C++".

      Why don't we look at C++/CLI instead?

    14. Re:The emails are already gone. by Touisteur · · Score: 0
      I think that the language "choice" on .NET is silly - you can use whatever language you want so long as the language has exactly the same features as C#. For example, look at the feature set of "managed C++". No multiple inheritance and other non-C# features have been removed. Same for other languages.


      You should look at Eiffel# and Ada# (or Ada.net).

      With Eiffel# you have Multiple Inheritance on managed code. Bertrand Meyer said in an article (among other things) that it wasn't such a hassle.

      If you looked for genericity (templates for C++ guys) and simple inheritance (before .Net 2.0) you could have had a look at mgnat, a front-end for gnat, the GPL Ada compiler.

      These 2 languages would have provided you with a strong typing, strict and rich platform, using best advantages of the CLR (dynamic class loading, exceptions, multiplatform threading - Ada already had this but still...). And you could have used the rich APIs from MS/Mono.

      There were languages implementing more features than "just what comes with C#". The CLR is a good multi-language platform, and the ILasm (assembler of the CLR) is quite a *high-level* asm, with threading, typing... =o). Quite a platform.
  4. Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 1, Insightful

    Frankly, compared to Intellij IDEA or even Eclipse orNetbeans, XCode sucks. (I don't know about MS stuff).

    I don't want to leave my good IDE for something less than what I have now.

    1. Re:Compared to Intellij IDEA, XCode sucks by cosmo7 · · Score: 3, Insightful

      So why don't you use Eclipse then? Objective C isn't wedded to XCode.

      The article is about Objective C (and Cocoa) versus C# (and .net). Although I like the former, there certainly are items where the latter is ahead - compare .net's media layer with Cocoa's phoned-in Quicktime classes. Or regular expressions. Where are the regular expressions in Cocoa?

    2. Re:Compared to Intellij IDEA, XCode sucks by morcheeba · · Score: 3, Interesting

      Why was this modded insightful? It's just namecalling and has no information.

      Honestly, I would like to know why you think IntelliJ IDEA and the other IDEs are better than XCode. What features do you find important that are missing, or was there some unliveable annoyance? What language do you code in, and what level of debugger support are you expecting? IDEA doesn't seem to support C, so while I would get the benefit of less suckage compared to Xcode, I would have to switch programming languages.

      Your post had potential...

    3. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 1, Insightful

      You know, having written half a dozen medium-scale Cocoa programs of my own and worked on a dozen or so more in teams, I can say that not only have I never used regular expressions, it's never even occurred to me to want them.

      I'm willing to bet that if you find yourself wanting to use regular expressions in a Cocoa program, one of two things is happening. Either you're coming from a scripting background and you haven't really figured out how to program in Cocoa yet, or you're using Cocoa for a job that could be better done with a script.

      Don't just use Cocoa because it's the cool new thing. Use it for things that it's good for. For things that Cocoa's not good for, use something else.

    4. Re:Compared to Intellij IDEA, XCode sucks by diegocgteleline.es · · Score: 4, Funny

      YOU suckf

    5. Re:Compared to Intellij IDEA, XCode sucks by laffer1 · · Score: 3, Interesting

      You don't get why people use regular expressions obviously. They are extremely useful for input validation. You do validate your input don't you? Desktop apps require it just as much as scripting or web applications. One of the joys of .NET is how easy you can create a regular expression or use built in ones (visual studio). Microsoft started pushing them for input validation because it can offer a quick way to sanitize input from sql injection and other attacks. I don't think apple developers have the same mindset about security that a MS developer has. Think about it, using a mac you forget about security. I don't run antivirus on my mac, or spyware tools and i dont' worry when i open my email or surf. On my windows machine, I worry if my virus defs and anti spyware are current or when my last scan occured. Every time I open IE, I remember that i can only go to trusted websites.

      Nothing stops you from using a third party regular expression library like pcre. Or simply use the java - objective c bridge in cocoa to use java's regex stuff. Although java is a second class citizen, it is supported to some degree with cocoa.

      As for xcode vs intellij, I would never use xcode for java after trying intellij. I use xcode for c/c++ programming all the time though. Its a great ide. I like the debugger interface as it reminds me of microsoft's vb.net debugger in some ways. One thing microsoft doesn't do is add a decent spell check library to .net. Apple's got that covered. Its also incredibly easy to create an opengl window from what i've seen. Menus look better in cocoa than vb or c# as well.

      I don't think its fair to compare cocoa and .net. Cocoa is more like MFC and its obvious apple's winning there. .NET is more like java. Now maybe one could argue apple should beef up their cocoa to java bridge and document it better to compete with microsoft. Maybe they should add a third easier language to cocoa, i.e the vb for apple machines.

      Objective c vs C++ is what people should be comparing here. I can see objections to syntax with objective C. It is much different than modern languages using the "." notation and so forth. My wife and I both have trouble remembering the syntax for objective C, but I haven't tried that hard to use it yet either.

      If you think cocoa is so bad, try to write a .NET app in managed C++ sometime. C# is java and vb is easier c#. Its like comparing real basic to C and declaring real basic easier to write a graphical text editor in.

      Apple could add more libraries to cocoa. That would be helpful. I personally found it confusing to connect buttons and objects in interface builder to backend code compared to .NET. Coming from a windows background its weird and feels like extra steps.

    6. Re:Compared to Intellij IDEA, XCode sucks by SteeldrivingJon · · Score: 1


      Unlike C#, it isn't a pain in the ass to go outside of Objective-C. Therefore, you aren't limited to Cocoa, and you can use whatever regex package you like, whether that is implemented in C, C++, Objective-C, or whatever else.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    7. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0

      Three things jump right to mind. (1) IntelliJ IDEA has amazing refactoring support. For big projects, that's crucial because refactoring is something you do constantly, and that support eliminates a ton of tedium and makes many common errors impossible. Once you've had the refactoring support for it that IDEA gives you, going without it is like working with a hand tied behind you. (2) IDEA has really good code analysis, including as-you-type recommendations and highlighting. IDEA users rarely experience compiler errors because IDEA tells you about most before you've even finished typing. Unused code is highlighted, so you can delete it if you choose. That helps keep your teammates -- especially new hires -- from wasting time understanding code that is no longer even used. (3) IntellJ has really good support for unit testing. Point at a test class or suite or method and run it either in or outside the debugger, and IDEA presents the results really well, usually showing the result in such a way that the problem jumps out at you. Click a highlighted method in the stack trace and you'll jump right there to fix the bug (or the test case).

      [To be completely fair, the very latest XCode supposedly has unit test integration, but I haven't yet had a chance to investigate whether it compares favorably with IDEA's. But boy, they're only just getting around to something that important?]

    8. Re:Compared to Intellij IDEA, XCode sucks by samkass · · Score: 3, Insightful

      While I don't know about the motivations of the original poster, I'll answer your question if you want. I've developed in Visual Studio, CodeWarrior, emacs/gcc, CodeGuide, IntelliJ IDEA, and many of the older packages. In my humble opinion, Xcode is the worst development environment out there that's being actively maintained. Worse, it is being touted by Apple as the preferred development environment for Macintoshes. I can't imagine a better way to discourage developers. Combine it with Objective C, which while somewhat elegant has a cryptic, unapproachable syntax and for all practical purposes locks you into the Macintosh, and you have an anchor on your software development community.

      But back to the question at hand...

      Although it got better with 2.1, XCode suffers seriously from configuration problems. Determining where to go to set something, where a setting is overridden, or what it actually does is insane. A simple comparison with CodeWarrior is enough to show how far development has fallen for the Mac in this respect. Then there's the plist and such files that are an inevitable part of Mac development these days. Why can't there be some better editor for that sort of thing with a nice GUI? ResEdit from the 1980's beats it. Then there's the error window. You click "compile" and you get a "ding!"... then you hunt for what happened. When you find it, you get a difficult to use pane of errors buried below, but in the same pane as, your project. Huh? Then there's the editor... having lots of files open is a pain compared to almost any other IDE. Then search... for the company that produced Spotlight, searching is amazing primitive in XCode. The general layout is a mess, the build outputs are annoying to keep track of, and things like the class browser aren't nearly as helpful as something like IDEA or even CodeWarrior. Then if you compare it to many of the Java development advantages (since we're including the old ObjectiveC language in the rant,) you start to miss out on TONS of refactoring options that Eclipse and IDEA both offer. Those types of things become essential for keeping code maintainable over the long-term. Things like xgrid for distributed compiling are near-useless for most small developers, so I hope they didn't take away any resources to develop those features, either.

      In short, I think the Macintosh community would have been much better served if Apple had simply bought CodeWarrior and wrote a gcc4 plug-in for it for PPC/x86 codegen. Then they could start adding some of the intelligent refactoring, assuming such things are possible in Objective C. Alternately, they could start over with Java or even Mono/C# and provide an environment that would let you create Mac apps quickly and efficiently, as well as being able to use the same code on Mac, Win, and Linux.

      --
      E pluribus unum
    9. Re:Compared to Intellij IDEA, XCode sucks by badmonkey · · Score: 1

      IntelliJ sucks. Its the IDE without any concept of "background thread". Instead, it shows developers helpful tips to distract users that they are blocked from getting any work done while something builds.

    10. Re:Compared to Intellij IDEA, XCode sucks by heinousjay · · Score: 1

      While you may be a wonderful Objective-C developer, you don't understand .NET very well. That much is evident. One of the main design goals of the platform is implementation language independence. It's not only not a pain to go outside C#, it is practically transparent.

      --
      Slashdot - where whining about luck is the new way to make the world you want.
    11. Re:Compared to Intellij IDEA, XCode sucks by bani · · Score: 1

      My biggest gripes with xcode are that it's incredibly fragile and unstable. It's not fun to be in the middle of working on something, go to a menu to add a file to the project or change a project property and the thing dies with an internal error.

      Or try to build a project and the xcode gcc wrapper bombs out with an internal error.

      Even barring that, the ui is terrible, as you pointed out.

      I gave up and ended up using pico and scons.

      Too bad metrowerks slit their own throat when they sold off their x86 compiler. codewarrior for osx is basically dead now :-(

      Major gripe: coding for objc/cocoa locks you into the osx platform and guarantees your application isn't portable. not a lot of developers like this level of risk, especially on a platform with a market as tiny as apple.

      Another gripe: there's no way to cross compile osx target from linux. I can cross compile just about any target from linux except osx, even win32 (APIs and all). Thanks apple.

    12. Re:Compared to Intellij IDEA, XCode sucks by TheGS · · Score: 1

      The POSIX regular expression library should be in libc.

      %man regex
            :
            :

      NAME
                regcomp, regexec, regerror, regfree - regular-expression library

      LIBRARY
                Standard C Library (libc, -lc)

      SYNOPSIS
                #include

                int
                regcomp(regex_t * restrict preg, const char * restrict pattern,
                                int cflags);

                int
                regexec(const regex_t * restrict preg, const char * restrict string,
                                size_t nmatch, regmatch_t pmatch[restrict], int eflags);

                size_t
                regerror(int errcode, const regex_t * restrict preg,
                                char * restrict errbuf, size_t errbuf_size);

                void
                regfree(regex_t *preg);

      Or, if you prefer PCRE, link that in and include the appropriate header file.

      If there is a desire for an object oriented interface to this functionality, nothing is stopping you from writing your own lightweight wrapper. And, if you use Objective-C++, you can write an extremely lightweight stack-based wrapper class in C++ with inline functions and use it alongside your otherwise Objective-C code.

      If you're wondering about why there isn't widespread use of regexes throughout the native platform Cocoa APIs... well, it seems to have gotten by without them well enough for the most part over the years. Is there any place where they're urgently needed but not already there?

    13. Re:Compared to Intellij IDEA, XCode sucks by jim_keller · · Score: 1

      >I'm willing to bet that if you find yourself wanting to use regular expressions in a Cocoa program, one of two things is happening. Either you're coming from a scripting background and you haven't really figured out how to program in Cocoa yet, or you're using Cocoa for a job that could be better done with a script.

      I'm willing to bet that none of your apps dealt heavily with string parsing and/or validation. You can certainly avoid using regular expressions if you have to, but I suspect that anyone who's done any significant text analysis or parsing using regexp will sing the praises of PCRE to their deathbed. Regular expressions are an incredibly useful, robust tool that can and will save you hours and hours of tedious string parsing. Just because you haven't come across any reason to use them doesn't mean that they're not crucial to other applications, or that using them is some kind of cop out that die-hard coders would never consider. Also, I've never worked with Cocoa, but I'd be surprised if there really wasn't any way to get regexp support, even through a 3rd party library.

    14. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0

      > a quick way to sanitize input from sql injection and other attacks.

      Why should you need _any_ way? Don't you use bind values?

    15. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0

      You seem to be conflating the issues of using different managed-code languages in the CLR, and the issue of calling out to unmanaged code in arbitrary libraries.

    16. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0

      Badmonkey, sounds like you've not used IntelliJ much, if at all.

      It doesn't take much time with it to notice that things like building in the background are easy -- press the "Background" button in the build dialog and away it goes. All the build-like activities have an easy option to "always run in background".

      But honestly... what kind of work are you hoping to go do in the few seconds that a build takes? It sounds like you're more used to the C compiler world, where building a project can take a long time. In Java land, compilation takes moments. The project I'm working on this morning has 1700 classes or so, and compiles from scratch in under 20 seconds on my PowerBook. That's from scratch; for a more common incremental compile, the dialog flashes too fast to even read. And since IDEA highlights your syntax errors, you don't just compile reflexivly to check whether your changes compile ok.

      [Another possibility is that perhaps you've watched a build in IntelliJ over the shoulder of an incompetent. I've seen incompetently written Ant build processes that run for 15 minutes or more on screaming fast machines, that when rewritten ran in under 2 minutes on any machine.]

      The irony of your statement is that IntellIJ effectivly runs an equivalent to the front end of a compilation all the time in the background as you type, so that it can tell you more about your code than the superficial look for typos that programmers editors usually provide.

      As for the tips, they're never very intrusive, and any or all can be turned off easily, not that one is likely to want to.

    17. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0

      ...and our projects didn't involve a great deal of data retrieval and updating did they?

    18. Re:Compared to Intellij IDEA, XCode sucks by cosmo7 · · Score: 1

      I've been using regex in Cocoa to make an xml parser - the default parser isn't very robust. So I switch to Cocoa Browser, expecting to find NSRegularExpression. Nope. Maybe some grep calls in NSString? Nope. Perhaps something in CF? Nope.

      So I end up using something else, which means I have to translate my NSStrings into C-style strings and back, which means that everything is just that little bit more complicated and throughout the process I have the feeling that I - and probably thousands of other coders - shouldn't be distracted in this way. The beauty of Cocoa is that everything is there. How hard would it be to add regular expressions to NSString?

    19. Re:Compared to Intellij IDEA, XCode sucks by TheGS · · Score: 1

      Keep your NSStrings as NSStrings. There is always the option to adopt one of: OgreKit, the regex classes in MOKit, the AGRegex framework from AGKit, or the two regular expression classes in the OmniFoundation Kit frameworks. Every one of these options is Open Source with various different licenses, if you're not about to write your own classes.

      Adding a category to NSString is no problem, whatsoever. I'm sure it's been done (regex support as a category on NSString) a zillion times over.

    20. Re:Compared to Intellij IDEA, XCode sucks by Krach42 · · Score: 1

      If you've seen the regular expressions that most people use, you'd realize that they're practically worthless for anything but the barest of input validation.

      They usually catch too much, or catch too little, or just plain catch the wrong stuff.

      Most of the regular expressions I look at all day long wouldn't work if it weren't for perl's backtracing, which means that the regexes are slower than they should be.

      Think about it, using a mac you forget about security. I don't run antivirus on my mac, or spyware tools and i dont' worry when i open my email or surf. On my windows machine, I worry if my virus defs and anti spyware are current or when my last scan occured. Every time I open IE, I remember that i can only go to trusted websites.

      For me, these for for different reasons. Mac was built more secure to begin with, and in order for something to do some serious damage, it would have to have me enter my password, asking for admin rights.

      This doesn't happen on the PC.

      Apple's security isn't worse than the PC just becasue there are fewer threats; because in many ways Apple's security is default better than a PC. For starts, Apple Mac OSX installs default with no ports active. I can do a default install of Mac OSX, unpatched, and throw it on the internet, and wait for someone to attack it, but this will never happen, because about all it responds to is "ping".

      Objective c vs C++ is what people should be comparing here. I can see objections to syntax with objective C. It is much different than modern languages using the "." notation and so forth. My wife and I both have trouble remembering the syntax for objective C, but I haven't tried that hard to use it yet either.

      Most of this syntax stuff, is that ObjC is a proper superset of C, so the code that is ObjC only has to look quite different from C. Where as C++ tries to hide the C extentions behind code that looks like C, ObjC went the other route, and made it look different.

      Then the whole thing that ObjC is a proper Object Oriented langauge with message passing, rather than C++'s bastardized fake Object Oriented, which is little more than just function calls with a silent struct pointer (I know about virtualized functions, but they're not default).

      --

      I am unamerican, and proud of it!
    21. Re:Compared to Intellij IDEA, XCode sucks by Anonymous Coward · · Score: 0
      Maybe they should add a third easier language to cocoa, i.e the vb for apple machines.
      They did ... it's called Applescript ... and it's been there for a long time. There's even an IDE (added onto Xcode, of course -- gotta keep the religion pure) called Applescript Studio.
    22. Re:Compared to Intellij IDEA, XCode sucks by mdarksbane · · Score: 1

      I personally found it confusing to connect buttons and objects in interface builder to backend code compared to .NET. Coming from a windows background its weird and feels like extra steps.

      Those few extra steps are good design, a proven way of thinking about data. The data behind a text box should never be linked to the text box itself - what if you suddenly need another box that has to be linked to it? It's part of the model view controller design architecture that separates your data and logic from your display. You can do this in .NET, but it doesn't encourage you to at all, and it results in code that's a lot less neat much of the time. It can end up a little faster for throwing something together, but I honestly like the fact that interface builder encourages decent design that way.

      That's just on the coding side. How I wish visual studio had better auto guides for making interface elements line up or conform to standards. Every time I touch the form builder interface in VS.net it feels like a bloated, uglier version of interface builder. The code's even uglier, too - I can hand edit the code interface builder makes no problem, VS.net puts a giant *do not touch* comment around all of its stuff, and for good reason.

  5. objective-c is cool by matt4077 · · Score: 2, Informative

    I develop with both objective-c and c# and while I like the c# syntax and gc better, Interface Builder is the most elegant way of user interface programming out there.

    1. Re:objective-c is cool by spectre_240sx · · Score: 3, Interesting

      I hear that constantly, but actually it's the biggest thing that turned me away from Cocoa programming. I'm far from a professional coder, but I just can't get my head around building interfaces and connecting them to the code with all of these menus. I'd much rather just write the code myself. Maybe after working with it for a while I'd learn to like it, but it made it hard for me to get into it and I ended up going for Java instead.

    2. Re:objective-c is cool by matt4077 · · Score: 2, Insightful

      Well you don't HAVE to use Interface Builder. You can easily just init your interface programmatically. Although I don't see a reason to do it.

    3. Re:objective-c is cool by Anonymous Coward · · Score: 0

      Actually, I think you do. The interface doesn't exist as separate code. It's serialized as a nib file, then deserialized at application start-up time and instantiated. I guess you could write the nib out by hand, but at that point, why not just write your binary entirely in vi using control sequences? I mean, what the hell?

    4. Re:objective-c is cool by Weedlekin · · Score: 5, Informative

      The interface can exist as separate code, though. All the stuff that IB serialises is available through the Cocoa API (check out the docs on NSView and NSControl, for example), and can be instantiated directly with programming statements if you wish. Using IB to keep the UI code separate from the stuff that interacts with it is however a better way to work, as it allows modifications to be to made the UI without having to recompile the application (separation of concerns).

      MS recognise the above, and will themselves be following a similar route in the future with XAML, which is set to replace WinForms as the UI-building methodology of choice once Vista is launched (XAML will be one of the Vista technologies back-ported to XP). WinForms is thus in life-support mode at the moment: they will fix bugs, but not add more features to it because it is considered to be a deprecated technology.

      NB: I've adopted a mixed-mode approach to Mac programming that seems to work very well from a productivity viewpoint. I do a lot of the main stuff in AppleScript or F-Script, and "drop down" to Objective-C for performance-critical stuff, custom Cocoa sub-classes, Darwin-related tasks, and other things that AppleScript or F-Script either isn't good at, or does too slowly. One could of course do this equally well using (for example) Python with the PyObjC bridge, and I believe that there is something similar for Ruby (don't quote me on that, though!), so the scripting languages I use are just one of the options available to Mac developers. And XCode happily manages all the different language files from a single project, ensuring that Obj-C code is compiled before running the interpreted stuff, managing CVS repositories, and generally making the experience pretty holistic.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    5. Re:objective-c is cool by soft_guy · · Score: 1

      You do not need to use Interface Builder to write GUI for a Cocoa app. Although, I don't really understand your objection (it seems weird to you? Do RC files seem weird to you?)

      --
      Avoid Missing Ball for High Score
    6. Re:objective-c is cool by AnalystX · · Score: 1

      I use a Mac for my personal computing (due to a more productivity inducing interface and tools), but when I program (professionally) I can't stand Xcode + Objective C. I sympathize with spectre on this. I much prefer how the interface ties to the code in Microsoft's C#/VS.NET or even VB6 for that matter. Believe it or not, if I have to develop an application that needs to run on a Mac, so far I've stuck to making it work through a browser using PHP. I would love to see Apple create a real IDE (as in INTEGRATED, not Interface Builder and Xcode as separate environments) with more language choices. Maybe Apple could even dust off Dylan and add it to the language lineup.

  6. Making it "fun" by Rude+Turnip · · Score: 4, Funny

    "I agree with Dhanjani. What has Apple done recently to wow the developers, and make it fun to code Cocoa components?"

    What, a fun and whimsical name like "Cocoa" isn't enough for you? Perhaps you'd prefer to code in puppies and rainbows?

    1. Re:Making it "fun" by Anonymous Coward · · Score: 1, Funny

      Actually I think the best way to make Cocoa fun is to add milk.. who else here agrees?

      -Sj53

    2. Re:Making it "fun" by tomcres · · Score: 5, Funny

      Actually, if you pronounce the word "Cocoa" a certain way, with the accent on the second 'o,' it sounds like a Portuguese word meaning, well, to be polite, "excrement." You should have seen the look on my wife's aunt's face (they are from Angola) when we were walking through the cereal aisle of the supermarket and she saw "Cocoa Puffs." :-)

    3. Re:Making it "fun" by Anonymous Coward · · Score: 0

      > Actually I think the best way to make Cocoa fun is to add milk.. who else here agrees?

      I think the best way to make Cocoa fun is to add peppermint schnapps! :D

    4. Re:Making it "fun" by Anonymous Coward · · Score: 0, Troll

      Well, here's the problem. Development for Mac OS X, and in fact the entire Apple experience, is intuitive for a certain kind of person. Artists, fashion mavens, leftists, and other creative personalities can sit down with a Cocoa-native Xcode project replete with Objective-C implementation and interface files and comprehend its sensitive, tasteful aesthetic. It's a rare instinct, this appreciation for beauty and truth; accountants and other such pencil-pushers haven't a prayer.

      In summary, unattractive squares should stick to Linux and Windows. Objective-C is for different thinkers.

    5. Re:Making it "fun" by Anonymous Coward · · Score: 1, Funny

      "I'm Cukoo for Poo-Poo Puffs"

    6. Re:Making it "fun" by demigod186 · · Score: 1

      "Different Thinkers"
      And by "different thinkers" you mean "teeny boppers?" Listening to Hillary Duff and coding Objective C on a Mac must certainly be a different experience.

    7. Re:Making it "fun" by RobNich · · Score: 3, Funny

      "I'm caca for Cocoa P--"
      "Damn it! Take 47!"

      --
      Hello little man. I will destroy you!
    8. Re:Making it "fun" by Anonymous Coward · · Score: 0

      Im a linux user, you insensitive clod!

      My hot, french ex-girlfriend doesn't think Im unattractive (which is probably more than I can say about you) :P

      Go out and get laid between slashdot postings... then you might use linux too!

    9. Re:Making it "fun" by Anonymous Coward · · Score: 0

      YHBT. YHL. HAND.
      Translation for the acronymfinder.com impared:
      You have been trolled.
      You have lost.
      Have a nice day.

    10. Re:Making it "fun" by Sr.+Pato · · Score: 1

      Genius. Fucking Brilliant.

      --
      Nobody's gay for Mole-Man. :-(
    11. Re:Making it "fun" by Ohreally_factor · · Score: 1

      At the risk of being sued into oblivion by Apple's legal department, I'm going to break my NDA.

      At this January's MWSF, Steve is going to announce that every download of Xcode is going to include a monkey!

      And everyone knows that everything is better with a monkey.

      --
      It's not offtopic, dumbass. It's orthogonal.
    12. Re:Making it "fun" by Anonymous Coward · · Score: 0

      You guys made my day :-)

    13. Re:Making it "fun" by Ignominious+Cow+Herd · · Score: 1

      Oh yeah? Well, how are you going to _download_ that monkey mister smarty pants?

      I can see the headlines now:
          "Free Monkey Giveaway Bankrupts Apple Computer."
          (It was all the shipping and handling)

      --
      Lump lingered last in line for brains, and the ones she got were sorta rotten and insane.
    14. Re:Making it "fun" by Anonymous Coward · · Score: 0

      You've really got a thing for 16 year old jews with no skill in applying makeup, huh?

      I'm not too surprised - from your tone I suppose you could spend hours arguing the countless subtleties that separate acid house from jungle, all while juiced up on the designer drug of your choice. Hipsters are such in interesting breed, in the same way that the chimps in the cage are interesting.

    15. Re:Making it "fun" by Anonymous Coward · · Score: 0

      fuck. now i know what that idiotic acronym means. i prided myself on going years without actually understanding it.

      Now, that doesn't change my mind that using internet acronyms like that make you sound like a babbling cretin.

    16. Re:Making it "fun" by Anonymous Coward · · Score: 0

      It would be even more fun without the second 'o'.

  7. Dharma by Anonymous Coward · · Score: 1, Informative

    Jobs is must be hoping that other developers see the supposed benefits of Obj C as well with the rumored Dharma (Cocoa for Windows) project, if it does in fact exist.

    1. Re:Dharma by Anonymous Coward · · Score: 0

      i'm waiting for greg/++ the programming suite.

  8. Love it by Richard_at_work · · Score: 5, Informative

    Sure, Xcode could do with a little bit of work to add features missing, but I truely find Cocoa a dream to work with. One year ago I only developed for the web, then I bought a Mac and was introduced to Cocoa by a friend. I havent looked back since, and have produced several 'scratch the itch' applications that otherwise wouldnt have been made.

    1. Re:Love it by rplacd · · Score: 5, Interesting

      On the other hand, after several years of writing code in mostly python and other similar languages, the thought of going back to something like C (pointers!) doesn't really motivate me to write code for my mac. It's a good thing there are bridges like py-objc and such.

      (Disclaimer: I first became aware of Objective-C about a decade ago, and have used IB/etc on Openstep -- on a NeXT slab, even).

    2. Re:Love it by Mike+Savior · · Score: 1

      You used a NeXT machine? You're so lucky.. (seriously, my dad was teaching me batch files when I was a kid, not opening my eyes to stuff more advanced than DOS 5)

      --
      space is pretty cool.
    3. Re:Love it by Weedlekin · · Score: 1

      You don't have to use pointers with Objective-C. It has the ID type which is a general dynamic type that behaves very much like objects in dynamically typed languages such as Smalltalk, Ruby, etc., i.e. you store a reference to an object of any type in it, with the actual binding being done at run-time. If you only use ID types, you can write a substantial Objective-C application without using a single C-style pointer.

      C pointers are provided for two basic scenarios:

      1) They provide a mechanism for binding objects to variables at compile-time (early binding). In this scenario, the C pointer syntax is only used to declare the variable, not use it (instantiation and messaging is done using Objective-C's Smalltalk like OO syntax, from which C-style pointer de-referencing is completely absent). Early binding produces better performance than late binding, and lets the compiler perform static compile-time type checking.

      2) For interfacing with (or writing) C libraries. Unlike C++, Objective C is a pure C superset that is capable of both consuming and producing C libraries. Pointers are obviously necessary for this due to C passing all parameters by value.

      NB: if you want to write Cocoa apps without using Objective-C or Java, there is always AppleScript. It's even higher level than Python and Ruby, is much better integrated with the Mac itself, and has a no-brainer VB-like mechanism for connecting events to UIs made with Interface Builder.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    4. Re:Love it by laffer1 · · Score: 2, Interesting

      The visualization group has a next machine at my university. I got to crack the root password on it and work on it for a few hours when it was first donated. Its the best computer i've ever used. There are websites selling used ones for 500-1000 dollars if you look around. I've been half tempted to buy one. They are incredible. It is the best computer i've ever used. It felt very fast and it was one of the 68k models. Apps started like they do on my current ibook. The color reminded me of a computer several years newer. It didn't feel like a 256 color windows 3.x box from the early to mid 90s. I've never found a machine that was designed the way I think until that next box. I just wish OSX was more next like.

    5. Re:Love it by jiushao · · Score: 3, Insightful
      This is an interesting point, a lot of people will stick on a higher level no matter what you define the interface in. On the other hand it would clearly be bad to define the platform interfaces in Python, sure it would perform fine for 95% of all tasks (these are system calls and such to a great extent after all), but it would still be too inflexible in implementation. It is troublesome trying to wrap a powerful Python interface in a lot of languages and systems, even when not considering the language and call model features Python still has a lot of runtime features that show through (garbage collection is already in itself very troublesome at the system interface level).

      The historical lowest common denominator solution has been to define it in C (though C++ has slowly crept up in the last decade) and then use higher-level bindings to make it easy to use. Gnome is a very modern system that has taken this approach. Apple on the other hand has went one step up on the abstraction ladder, they have kept the basic C interface style and linking behaviour but used the OO added by Objective C. The strong point here is that a lot of higher-level languages can now wrap much closer to the interface (getting close to a natural 1:1 mapping) while still retaining most of the possibility to go with C-style to-the-metal stuff. Objective C is even a nice enough language to make taking another step in abstraction unnecessary for a lot of people.

      Personally I really like this. Defining the platform in C has aged (though it is still useful for maximum flexibility of implementation, though very archaic to use) but going straight for a high-level garbage-collected language is a step too far still. For example I think it would be a mistake to enforce a garbage collection model on the system level, removes much too many possibilities from the application. Add to this proper function pointer objects, co-routines, "global" reflection, continuations and so on and it becomes clear that too much power at the interface becomes a liability when it has to be fitted into another system.

      This extra power is of course then a good thing for Python users on OSX just as for Objective C programmers. A straight wrapper around Cocoa is a lot nicer than say a straight wrapper around GTK+. Some may argue that this is unimportant since a "good" wrapper around GTK+ will be just as good, but personally I find that a wrapper that stays close to the unerlying interface is a very good thing when possible. Less bugs, often much more clarity, more available documentation, the skills one learns carry over if one switches languages and so on.

      Man this post is long and rambling. Better push "Submit".

    6. Re:Love it by thoth_amon · · Score: 1

      So use PyObjC http://pyobjc.sourceforge.net/ or RubyCocoa http://rubycocoa.sourceforge.net/. I've programmed in both and like them both a lot. Cocoa is very easy to use. I mainly use XCode only for building and running projects, and I use IB for creating NIBs (form templates). I like it a hell of a lot better than Visual Basic and an it's an order of magnitude nicer than using C, C++ or Java. It's also a lot better than Objective C, where you still don't have garbage collection.

    7. Re:Love it by Yaztromo · · Score: 4, Interesting
      On the other hand, after several years of writing code in mostly python and other similar languages, the thought of going back to something like C (pointers!)

      If this is what is keeping you from developing with Objective-C, then you've picked a poor reason to avoid learning it.

      Pointers are as easy to avoid in Objective-C as they are in Java. In Java, all reference types are in fact a pointer, but simply a pointer which you don't need to think about. There is no pass-by-value for reference types, and no pointer arithmetic is allowed.

      In Objective-C, everything is again passed by reference (as opposed to by value). Pointer arithmetic is generally completely unnecessary (although it is technically permitted).

      I recently finished v1.0 of a decent sized Objective-C application, and the "&" operator isn't used once. The '*' operator is only used when defining a variable, return type, or parameter.

      I don't even think of pointers when coding in Objective-C. I tend to think of it as no different than Java. Extra capabilities to do pointer arithmetic are there, but I simply don't typically feel the need to use any of them.

      Yaz.

    8. Re:Love it by Anonymous Coward · · Score: 0
      On the other hand, after several years of writing code in mostly python and other similar languages, the thought of going back to something like C (pointers!) doesn't really motivate me to write code for my mac. It's a good thing there are bridges like py-objc and such.

      I have a similar background, but must differ on your conclusions. I now program exclusively in Python (moving to Ruby), and C -- often calling C libraries from Ruby.

      In my experience I couldn't stand going to one of the stupid hybrid not-quite-dynamic/not-quite-OO languages like Java/C#/C++ where they make annoying compromises that prevent them from being good at high-level programming tasks (static typing), and downright suck at low-level tasks.

      Objective-C might be the least offensive of that stupid one-language-fits-all-tasks philosophy; but I still think you'd be far better off with all the high-level code in Ruby and all the low level code in vanilla C.

      (Disclaimer: I first became aware of Objective-C about a decade ago, and have used IB/etc on Openstep -- on a NeXT slab, even).

      Indeed, my first experience programming in college was on a NeXT cube.

      (disclaimer - yes I overstated it that Ruby and C are the only right tools for the job. For some tasks a funcational language (Haskell/some ML) is best; and for others, nothing can compete with The K Language. But C++/C#/Java/ObjectiveC are IMHO never the right tool for the job)

    9. Re:Love it by waxwing · · Score: 2, Interesting

      "...a high-level garbage-collected language is a step too far..." Why not a systems-level statically compiled typesafe garbage-collecting language? There is such a thing, you know. There is even a modern OS running on x86, all without any C at all. (Ugh! Pointer aliasing!) It is called Bluebottle. And -- you can skin the GUI by editing an XML file! Woohoo! http://bluebottle.ethz.ch/

    10. Re:Love it by stewby18 · · Score: 1

      In Objective-C, everything is again passed by reference (as opposed to by value).

      That's not technically correct. Everything in Objective-C is passed by value (unless you explicitly pass by reference) just like in regular C. It's just that the values you pass are mostly pointers. BOOLs, ints, floats, etc. are still going to act like they are being passed by value--because they are. The object pointers you pass around only feel like they are being passed by reference because you think of them as objects instead of pointers.

    11. Re:Love it by mabinogi · · Score: 1

      Why do people obssess about pointers?
      Are you sure _that's_ what bothers you? Or is it manual memory management that bothers you?
      You can have manual memory management without C style pointers, and you can have garbage collection _with_ C style pointers.

      --
      Advanced users are users too!
    12. Re:Love it by Ice+Wewe · · Score: 1
      Sure, Xcode could do with a little bit of work to add features missing, but I truely find Cocoa a dream to work with. One year ago I only developed for the web, then I bought a Mac and was introduced to Cocoa by a friend. I havent looked back since, and have produced several 'scratch the itch' applications that otherwise wouldnt have been made.
      Xcode sucks, not the language. so, I have to disagree with both gentlemen.
    13. Re:Love it by javaxman · · Score: 1
      On the other hand, after several years of writing code in mostly python and other similar languages, the thought of going back to something like C (pointers!) doesn't really motivate me to write code for my mac. It's a good thing there are bridges like py-objc and such.

      Yet, if you do it 'right', exactly when in your Cocoa-based program do you end up directly dealing with pointers and dereferencing object references? Sure, I can use pointers directly, but... I don't. There's no need to use linked lists when NSArray objects are handy. I use accessors to get a object members, and almost never used structs directly, so there's no foo->bar where bar is uninitialized.

      Long and short, Objective-C does seem a bit barbaric coming from Java or Python, but it's nothing like a jump back to C or even C++.

      have used IB/etc on Openstep -- on a NeXT slab

      did picking up the whole retain/release/autorelease memory-management thing throw you for a loop? depending on where you picked up your NeXTStep programming, it was a little different back in the day, and I think that's what gave me the most issues picking up Objective-C again... that and the shock of learning that I had to think about memory management so much... it's not pointers per se that give me grief in Objective-C, it's using retain, release and autorelease properly. Not that it's that hard, it's just something that GC removes almost completely.

  9. well... by soapdog · · Score: 4, Insightful

    not being a troll but remember "if it's not broken, don't fix it"? Objective-C and the Cocoa Frameworks are an amazing combo, very productive to code using it. I don't think there's much to add. It's not bloated like VisualStudio.NET, it's easy to grasp and understand, code is small... well, I just like the way it is, and XCode is a lot better than Project Builder so I think we're on a nice path, I don't want to see Apple reinventing its development environment every couple years...

    --
    -- Por mais que eu ande no vale das trevas e da morte, meu PowerMac G4 Não Travará!!!
    1. Re:well... by the_instigator · · Score: 1

      Visual Studio is not a pre-req for .NET, and i'd like to see apple grow their own implementation of a next generation IDE. With extention libs for doing Tiger stuff. Tiger.Forms Maybe. The work IBM are doing with Eclipse is great, Apple should have an offering too.

    2. Re:well... by Anonymous Coward · · Score: 2, Insightful

      yeah, sure...not a troll but you throw out "bloated" and the obligatory .NET slam. Don't get me wrong I have some issues with .NET (personally I prefer java to .NET and old school C++ to both but just because I know it better....it's a personal bias not based on the technology itself) but it's not bloated. More important that what I like and to reiterate what someone said above if it doesn't have proper namespace support it isn't anywhere close to perfect. Keep trying, Troll.

    3. Re:well... by Rew190 · · Score: 2, Insightful

      There's things that can be taken away, however; being forced to manage memory being a key one if you want to attract Java/.NET developers.

    4. Re:well... by Frizzle+Fry · · Score: 2, Insightful
      Objective-C and the Cocoa Frameworks are an amazing combo, very productive to code using it. I don't think there's much to add. It's not bloated like VisualStudio.NET

      Did you just compare a language and framework to an IDE? How can that make sense?
      --
      I'd rather be lucky than good.
    5. Re:well... by Overly+Critical+Guy · · Score: 2, Interesting

      Memory management is pseudo-automatic as it is right now, but requires you to do all the retain/release stuff. That said, you can compile with automatic garbage collection enabled. It's not on by default. Presumably, it will come to the forefront in the next major version of Xcode. Automatic garbage collection can be so slow sometimes, and perhaps Apple wants to get it perfected before really pushing it out the door. But they ARE working on adding it.

      As an aside, I don't know what this guy is emailing Steve Jobs about. You can code for a Mac in C, C++, Objective-C, Pascal, Java, all the standard UNIX scripting languages, and any other language GCC supports, really. As for making Cocoa "fun," it already is--interface builder is awesome.

      --
      "Sufferin' succotash."
    6. Re:well... by ceoyoyo · · Score: 2, Insightful

      Use Python. No memory management necessary. With the pyObjC bridge you can do anything you could do in ObjC.

    7. Re:well... by ad0gg · · Score: 1

      Its slashdot, were you get modded +5 insightful for making stuff up on the spot.

      --

      Have you ever been to a turkish prison?

    8. Re:well... by nikster · · Score: 1

      This is developer ignorance speaking.

      I use features in my IDE (Eclipse) every day that are not available in XCode. I refactor project-wide. I rename things _all the time_. The IDE does it for me. I change method signatures. The IDE does it all. I never compile anything - the IDE keeps everything compiled in the background which means errors are immediately displayed after every line of code I type. I look at the calling chains for methods all the time. And there are about a zillion other features.

      The ease with which I can make previously scary project wide changes mean that I am able to improve the architecture on the go. So not only do I save huge amounts of time with these features, I also write better code as a result of it.

      There is no excuse for XCode. It sucks. The only people - and this probably includes all Apple employees - that think different here are people who have never used a modern IDE. Don't tell me how great XCode is if you have not spent some significant time with either Eclipse, IDEA, or VS .Net. You have no credibility.

    9. Re:well... by theAtomicFireball · · Score: 1
      This is developer ignorance speaking.
      Sounds like the pot calling the kettle black.
      There is no excuse for XCode. It sucks. The only people - and this probably includes all Apple employees - that think different here are people who have never used a modern IDE. Don't tell me how great XCode is if you have not spent some significant time with either Eclipse, IDEA, or VS .Net. You have no credibility.
      I spend quite a bit of time in Eclipse and VS .Net. I've used many others IDEs over the years.

      I'll be the first to admit that there are features in other IDEs that I wouldn't mind having in Xcode. However, your assumption that a lack of specific features makes it inferior has a fatal flaw - you are basing what the IDE should have on what your needs are when programming in other languages.

      Refactoring, one of your prime examples that Xcode doesn't support, is simply less of an issue, and therefore less of a priority in Objective-C. In Java, you have to refactor a lot because it's strongly-typed and has a much less dynamic messaging system (actually, calling it a messaging system is not even accurate). The design patterns you need to use to design well in Java often need to be refactored due to this nature. There is a price you pay for having the compiler keep you from shooting yourself in the foot. Objective-C will gladly let you shoot yourself in the foot in many ways, but in exchange, it allows design patterns that have much more flexibility and are much less likely to need significant refactoring down the line. In years of developing in Cocoa and OpenSTEP, I can think of maybe a half-dozen times where I've had to refactor at the class or application level. I've had to refactor within methods, but the IDE doesn't help much there. In the same time period, using Java, I've had to refactor dozens upon dozens of classes, both those written by me and those written by others. So, this lack that you claim makes Xcode suck is something that is just not really needed that badly in Xcode in the first place.

      Eclipse focuses on the needs and priorities of Java developers. Visual Studio focuses on the needs of C# and VB programmers. Xcode focuses on the needs of Objective-C/Cocoa programmers. If you are judging any of these IDEs on your needs from programming in something else, your premise is skewed. The fact that XCode is lacking features that you use every day in another environment while coding in another language using different libraries and frameworks is absolutely meaningless. Judge the IDE based on what you it's used for.

      I hate people who sit down to use something they're not familiar with and believe that any difference is a flaw.
  10. between himself and Steve Jobs by Dachannien · · Score: 5, Funny

    posted an e-mail thread between Steve Jobs and himself.

    I always knew Steve Jobs was just a little bit crazy.

    1. Re:between himself and Steve Jobs by R-2-RO · · Score: 1

      Glad to know I'm not the only one who focused on that sentence. :)

      --
      Thank you. Drive through. (:wq)
    2. Re:between himself and Steve Jobs by pembo13 · · Score: 1

      Same issue here!

      --
      "Thanks for all the money you paid to us. We've used it to buy off ISO among other things" -Microsoft
    3. Re:between himself and Steve Jobs by gotem · · Score: 1

      and who says talking to yourself is a sign of being crazy?

    4. Re:between himself and Steve Jobs by gotem · · Score: 4, Funny

      yes, I totally agree with you on that one!

  11. thread taken down? by furnk · · Score: 1

    It sure didn't take long for Dhanjani to reconsider posting the e-mail. Does anyone have the original string to post? I tend to agree with him that more choice in programming is usually better, but I guess I fear that opening up the environments will lead to less stability. In other words, is it better to use an inferior language really well, or use a lot of more "interesting and fun" languages haphazardly. Not sure I really agree with that logic, but I can at least understand where Apple is coming from.

  12. It's not like they're not doing anything by Anonymous Coward · · Score: 5, Informative

    The development environment is hardly static. Key-value-observing and bindings, Core Data; we get more toys for every system version and they are working on adding garbage collection to Objective C.

    1. Re:It's not like they're not doing anything by am+2k · · Score: 4, Informative

      Agreed. I just started using CoreData, and it's a pretty amazing technology. For instance, take a look at this tutorial. It's a whole working database-based app without writing a single line of code! If you want custom behavior, enhancing is very easy, too.

      Key-Value Observing has revolutionized Cocoa development, most developers just didn't notice (b/c it takes some time to get used to it).

    2. Re:It's not like they're not doing anything by daBass · · Score: 1

      CoreData is very nice for local apps, but what it really needs is drivers for database servers.

    3. Re:It's not like they're not doing anything by jcr · · Score: 3, Interesting

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    4. Re:It's not like they're not doing anything by i_finally_got_an_acc · · Score: 1
      Wow! Not a single line of code???

      Wow!!

      *Keeps scrolling down for several minutes* Gosh that's really simple! Wait, no, it looks like it'd be easier to just write the code.

      I'm kidding!! Mostly...

      --
      "I'm not religious, but at the same time I don't get why science always has to have something to prove."
    5. Re:It's not like they're not doing anything by eiserlohpp · · Score: 1

      The development environment is not standing still. In fact, a new language 'Objective Modula-2' based upon an old one 'Modula-2' is being worked upon. The compiler is based upon the GNU/Modula-2 compiler which intergrates with GCC. ObjM2 uses the same runtime as ObjC, and will seemlessly intergrate with Cocoa.

    6. Re:It's not like they're not doing anything by Mr2001 · · Score: 1

      It's a whole working database-based app without writing a single line of code!

      Visual Basic has been doing that for years; any intro-level VB course will probably involve creating such an application. Is it actually easier to write one with Core Data than with ADO[.NET]?

      --
      Visual IRC: Fast. Powerful. Free.
  13. I dunno by log0n · · Score: 2, Insightful

    I've always felt Visual Studio (at least with all the .Net stuff) was turning more into a Visual Basic type of dev platform. A lot of automation, you don't have to know why your doing things the way you are doing, fundementals and such aren't important anymore, etc. It's more for application development than actual (think CS rather than IT) programming.

    1. Re:I dunno by Anonymous Coward · · Score: 1, Insightful

      True, you have that choice but you can also start your apps from main(){} and move out from there. Choice is good, and the choices are also good.

    2. Re:I dunno by Khakionion · · Score: 0

      You can do than in Xcode, as well. OS X is like this silly operating system called UNIX, you may have heard about it.

      --
      OMG! Wau!
    3. Re:I dunno by Tim+C · · Score: 4, Insightful

      I've always felt Visual Studio (at least with all the .Net stuff) was turning more into a Visual Basic type of dev platform.

      I'm not entirely sure what that comment means - haven't you *always* been able to use VS as "a Visual Basic type of dev platform", with Visual C++ even ignoring Visual Basic itself? VS.NET does support Visual Basic .NET after all - is it really surprising that the drag and drop method of RAD is being further extended?

      It's more for application development than actual (think CS rather than IT) programming.

      Application development isn't actual programming? Theory is extremely important, and I'm the first to defend seeking knowledge for knowledge's sake, but to say that application development isn't real programming is to deny the entire point of programming - to automate processes and create applications in order to make tasks easier (or quicker) to perform, and to enable people to do things that previously they could not (eg edit video or audio).

    4. Re:I dunno by smenor · · Score: 1

      I'm not a huge fan of Microsoft, there are a few things Visual Studio does better than any other IDE I've used.

      The best example I can think of is auto-completion.

      Some sort of auto-completion is present in most IDEs, including XCode (Code Sense) and Eclipse (Code Assist).

      Microsoft's implementation (IntelliSense) just works better.

      You'd think that code completion would be easy to get right but it's almost painful how poorly most other versions work.

      IntelliSense does a better job of showing polymorphisms and makes it easier to fill in parameters. It also seems dramatically faster than most other auto-completion systems. True, this may just be my perception but I don't think that's the case. Even with the delay set to 0(ms), XCode's completion seems to lag. Visual Studio's completion is so fast that I don't even notice a delay.

      Visual Studio's debugger also seems pretty nice to me.

      Both Visual Studio and XCode are weak when it comes to re-factoring.

      XCode doesn't seem to have any facilities even for the simplest re-factoring operations.

      Visual C# 2005 at least has 'rename' and 'extract method'. I have seen a few third party plugins to do a bit more for Visual C++ but the one I tried was a bit flakey.

      Eclipse has a lot of re-factoring operations for Java that 'just work'.

      Eclipse also has a nice incremental compiling feature (again for Java) that shows compilation errors and warnings and offers 'quick fixes' for many of the simpler ones (missing imports; try/catch pairs; unimplemented methods; etc).

      The above are the main things that keep me away from XCode. I do like a lot of its features but don't see myself using it regularly without a few of the above.

      I guess I wandered a bit away from my point (and this post is getting a bit long / moving off-topic).

      What I wanted to say was simply that Visual Studio has a few features that make coding a lot easier. Making things easier for everyone means making things easier if you don't understand the fundamentals.

      At the same time, if you understand software engineering, at least some of the automation is actually useful and time-saving.

    5. Re:I dunno by Anonymous Coward · · Score: 0

      Totally wrong. What's actually happened is that .net has completely butchered any advantage VB ever had. It used to be a way to quickly throw together an app to show an idea of what you want to do: It was great for that. It had this horrible problem that it was inflexible. Things like file i/o were a nightmare if you didn't want to do it their predetermined way and you wanted any kind of optimization at all. So you had to be a VB God to do an application in it, but anyone could whip up a VB demo.

      Now VB.net exists, and it, like all .net 2.0 languages, appears to be nothing more than c# with a slightly different compiler.
      My inexperienced, well read, opinion of .net is that it's little more than a modern computer. The base languages Microsoft has provided are pretty much all copies of each other to support the paradigms the .net machine supports.
      Maybe someone will write a .net compiler for a language which is somehow slightly different (maybe ironPython?)? But right now it just looks like a lot of tiny shallow differences. .Net is a nice environment. I look forward to writing something in c# when I have time and a project to do. But my current impression is that it's a lot like c++: So over-sized and complex you could never understand a subset of it. Of course, I'm sure the compilers are better and don't give unreadable error messages.

  14. Wowing developers... by Svartalf · · Score: 3, Interesting

    While wowing the developers is important, also providing them with a high performance, high reliability, and easy to use framework is important as well- moreso than wowing them. It does no good if it's "cool" to develop for a programming language, etc. if I'm spending 2-3 times the coding time for the other one or 2-3 times the debugging time, etc.

    C#, for all of the claims of performance, is a a JIT based interpretive language. Ditto Java.

    C#, for all of it's nicety, is little more than Java taken in MS' desired direction. If it weren't for Mono, C# wouldn't even be a subject of discussion as it'd been an MS only tool for use only on Windows (or whatever MS ends up calling thier stuff in the future...)

    C, C++, and Objective-C are stable, robust languages that have been around for some time now. C# has not been around all that long, but since it's got all the "buzz" about it, people keep trying to deploy it everywhere.

    Objective-C is actually a fairly clean OO language, moreso than C++. C++, while it's really good, has been muddied up with a bunch of conflicting design ideas that make for some...fun...with your coding if you're not paying attention to what you're doing.

    All in all, I'd say that it's decent enough for doing Apple development- if you want to adapt Mono to that interface (Which, I believe, can be done...) knock yourself out.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    1. Re:Wowing developers... by oldCoder · · Score: 1, Interesting
      C# is not a jit-based interpretive language. .NET languages generate an intermediate form called IL that is similar to java byte codes but is compiled to native machine code before execution. That is, the IL is never interpreted in the sense that byte-codes are.

      I've always assumed that one of the motivations for publishing IL instead of machine code was so that a single binary could distributed for different architectures. The decision to go for IL was made when Intels Itanium looked a lot better than it does now.

      I don't know that MS has made claims for the execution speed of the .NET languages specifically. I am suspicious since the installation license forbids publishing benchmarks. I think that ought to be illegal. Really.

      Perhaps the most useful language and most widely used is also the slowest: javascript.

      --

      I18N == Intergalacticization
    2. Re:Wowing developers... by Rew190 · · Score: 3, Insightful

      Objective C is pretty nice to use, but I think Apple really needs to come up with a language that doesn't require memory management. Not everyone is designing more upscale applications where management is essential. Personally, this is a rather large "fault" of Apple's development platform. Give me something that supports Cocoa (not Java) with managed memory and I'd be much happier.

      It would also be nice if they would use something with a more conventional syntax (I'm looking at you, method calls). Wasn't a huge deal, but I think it would make it easier to dive into or attract developers who are more used to the Java/C#/etc way of doing things.

      As a side note, much of .NETs attraction seems to be that it is very simple to put together GUI-driven applications (that actually look they're Windows programs) quickly.

    3. Re:Wowing developers... by Svartalf · · Score: 1

      It's still interpreted, it's just interpreted all at once before execution (Hm... Sounds like Perl, Ruby, Python and a few others...). Try again.

      --
      I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    4. Re:Wowing developers... by ucahg · · Score: 2

      .NET languages generate an intermediate form called IL that is similar to java byte codes but is compiled to native machine code before execution

      So, a JIT-based interpreted language then?

    5. Re:Wowing developers... by Junks+Jerzey · · Score: 1

      C#, for all of the claims of performance, is a a JIT based interpretive language. Ditto Java.

      This comment makes no sense. You could easily write a C++ compiler that did final code generation at load time. Would that change your view of C++ performance? I'm no fan of C# (or Java), but there's no way I'd ever consider C# to be an interpreted language.

    6. Re:Wowing developers... by rplacd · · Score: 1

      That is, the IL is never interpreted in the sense that byte-codes are.

      Just because they're "bytecodes" doesn't tell us whether they're interpreted or compiled. It's the implementation of the virtual machine that compiles or interprets; it's not a property of the bytecode language.

      Java bytecodes (when run with Sun's JVM on Linux and Solaris) are compiled to native machine code. It's also possible to write an IL bytecode interpreter; mono, for example, compiled to machine code on x86 long before it did that on other platforms (where it interpreted IL).

    7. Re:Wowing developers... by jcr · · Score: 1

      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!

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    8. Re:Wowing developers... by Sanity · · Score: 1
      C#, for all of the claims of performance, is a a JIT based interpretive language. Ditto Java.
      1998 just called, they want their argument against Java 1.2 back (and yes, 2002 can have its joke back too).

      Read some recent performance comparisons between Java and C++, and studies on run-time versus in-advance optimization. Note how in many cases, run-time optimization can actually be more efficient than in-advance optimization in many (common) circumstances. Don't even get me started on the advantages of GC versus manual memory allocation/deallocation from a cache-efficiency perspective.

    9. Re:Wowing developers... by Rew190 · · Score: 1

      I don't know... most IDEs support autocomplete/intellisense/whatever which allows you to immediately see what the parameters do. It's not really an issue unless you're editing in Pico. It strikes me as being a waste of time when it must be used for EVERY SINGLE CALL.

      Making it optional, however...

    10. Re:Wowing developers... by deblau · · Score: 1
      C#, for all of it's nicety, is little more than Java taken in MS' desired direction.

      C# is absolutely nothing more than Java embraced and extended by MS. I'm sure you remember this lawsuit, followed just shy of three years later by this announcement.

      Let's not forget that C# is the closed-source bastard stepchild of another, mostly closed-source language. What does that make Mono??

      --
      This post expresses my opinion, not that of my employer. And yes, IAAL.
    11. Re:Wowing developers... by coolgeek · · Score: 4, Informative

      Memory management in Obj-C is really simple, and making issue of it is an extreme exaggeration. You merely have to follow the rule of "if you allocate it, you're responsible for it", and make sure to either send it [obj autorelease] upon allocation or [obj release] in the [parent dealloc] routine. It really is that simple. Maybe that's too much to ask of the sissy programmers coming out of school these days.

      --

      cat /dev/null >sig
    12. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Having the parameter names in the call would be really useful for maintaning code.

      I have done a lot of code maintainance, and when you are trying to suss out thousands of lines of code, it is a lot easier if you don't have to mouse over every single method for intellisense.

    13. Re:Wowing developers... by Rew190 · · Score: 1

      Why is it that basically being guaranteed that you're never going to have dangling pointers and reducing the chance of memory leaks is a bad thing, assuming that I'm not writing a processor-intensive app? If a garbage collector is going to speed up and ease development with a minimal loss of performance for a non-intensive app, why would you not be for it?

      I know manual memory management is simple, but what I don't understand is why it must be required, especially when there are languages out there that have clearly demonstrated that it doesn't need to be that way for many projects.

      Processing time is cheap, programming time/debugging time is not. I'm sure that having to deal with pointers in order to use Cocoa (excluding Java) has turned more than a few programmers off to coding for OS X.

    14. Re:Wowing developers... by slashdotnickname · · Score: 1

      C#, for all of the claims of performance, is a a JIT based interpretive language.

      That is completely wrong.

      All .NET languages, C# included, are compiled into CLI assemblies which are then compiled into native code before ever being executed. This native code is cached, so, as long as the CLI assemblies are unmodified, they're only compiled-to-native once on the hosting machine.

      Creating an intermediary CLI assembly provide 2 benefits. One benifit is that it's platform-independent and therefore easier for distribution (no need for seperate platform-specific distributions). Java's jar/class files have this benifit too. Secondly, since CLI assemblies are never interpreted, it allows the hosting machine to optimize the compilation-to-native step based on it's own architecture capabilities. Today, modern Java JVMs will also compile-to-native before execution instead of interpreting and I believe they implement some sort of caching mechanism as well, but .NET was designed from the start to always execute code natively.

    15. Re:Wowing developers... by Jeremi · · Score: 1
      Objective C is pretty nice to use, but I think Apple really needs to come up with a language that doesn't require memory management


      That would be nice, but I have to say that even in the cold, uncaring world of ObjC/C++, memory management can generally be handled quite easily. All you need is a good templated reference-count class, and then you can allocate your object, attach it to a ref-count object, pass ref-count objects around by value willy-nilly, and yet still rest assured that your object will be deleted when everybody is done with it.


      (the only potential "gotcha", of course, is that if there are cycles in the refcounts' dependency graph than you will still leak... but in my experience this problem rarely if ever comes up)

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    16. Re:Wowing developers... by MemoryDragon · · Score: 1

      You just gave the perfect explanation for a JIT compiler

    17. Re:Wowing developers... by Jeremi · · Score: 1
      It's still interpreted, it's just interpreted all at once before execution


      I'm confused. How is "interpreted all at once before execution" different from "compiled"? Because the computer invokes the compilation-step automatically, instead of forcing the user to type "make"? That seems like a rather trivial distinction...

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    18. Re:Wowing developers... by abradsn · · Score: 1

      You are an idiot. C# is standardized and the code for the whole .net framework is available.

    19. Re:Wowing developers... by prockcore · · Score: 1


      Objective-C is actually a fairly clean OO language, moreso than C++.


      Whatever you're smoking I want some. Objective-C's syntax is pretty awful. Whenever I use ObjC I feel like I'm writing with macros that get processed by a preprocessor and converted into regular old C.

      "Tacked on" is the best way I can describe ObjC's syntax.

    20. Re:Wowing developers... by avdp · · Score: 1

      His comment is correct, although performance issues in both Java and .Net are overblown. C# compiles into bytecode (or whatever MS calls it) and the .Net framework compiles that into machine code and runs it. Same exact concept as Java. There is a performance tradoff to this of course, but the .Net framework mitigates it by caching the generated machine code.

      As far as C++, as a matter of fact I believe Microsoft does the exact same thing with their newest flavor of C++, with the option to still generate machine code (no such option for C# and VB.net).

    21. Re:Wowing developers... by Lord+Crc · · Score: 2, Informative

      Just because they're "bytecodes" doesn't tell us whether they're interpreted or compiled.

      True, however in this interview with Anders (Chief C# Language Architect), he states that "I think one of the key differences between our IL design and Java byte code specifically, is that we made the decision up-front to not have interpreters". A bit further down he says "When you make the decision up-front to favor execution of native code over interpretation, you are making a decision that strongly influences design of the IL".

      Certainly you CAN interpret it, but it was designed to be JITed.

    22. Re:Wowing developers... by Weedlekin · · Score: 1

      To be fair, Brad Cox's original Objective C did have a garbage collector, so the problem isn't one that's inherent in the language itself, but rather Apple's implementation of it (or to be more accurate, Apple's implementation of the Objective-C run-time).

      --
      I'm not going to change your sheets again, Mr. Hastings.
    23. Re:Wowing developers... by Durandal64 · · Score: 4, Insightful
      I'm sorry, but I have to disagree. Objective-C has the most intelligent syntax of any language I've ever worked with. Just because none of the latest "miracle" languages, like C# and Java, have adopted a new function calling syntax doesn't mean there aren't problems with it. Frankly, the constructor naming for C++, Java and C# is brain-dead. What makes more sense?
      color = NSColor(128, 128, 64, 0);
      or
      color = [NSColor colorWithRed:128 Green:128 Blue:64 Alpha:0];
      I would much rather have an idea of what parameters are without having to refer to a header file. And being able to have initializers that are of different names is a HUGE plus. In C++ et al, all your constructors are forced to have the same name, varying only among their parameters. I could do a
      color = [NSColor redColor];
      call and still get a new color object. In C++, you'd have to pass in some sort of enumerated constant or something.

      And this says nothing about the ridiculous naming conventions of C++ and Java. Translate the following statements into English.
      value = object.getValue();
      and
      value = [object value];
      The first is C++ and translates to "Assign value to get the value of object". The second is Objective-C and translates to "Assign value to value of object". This is why Objective-C is called a self-documenting language.

      As for memory management, yes, it can be a pain. Any Cocoa developer could tell you tales of how he accidentally released an autoreleased object and spent a half-hour trying to figure it out. But Objective-C is a strict superset of C. Being able to work with pointers is absolutely necessary. That's one of the biggest strong-points of Objective-C. Virtually any C library will work with absolutely no modification at all.

      I'd love to see garbage collection added, but not as the primary method of managing memory. It should be there to catch what the developer misses, not to be the sole method of memory management. We'll never get rid of pointers. They will always be there.
    24. Re:Wowing developers... by Overly+Critical+Guy · · Score: 1, Interesting

      I don't know that MS has made claims for the execution speed of the .NET languages specifically.

      Well, they've done public comparisons to Java that showed C# being way faster, which Java devs pointed out was biased in favor of C#, but that's no surprise. .NET has lost a lot of steam--even Ballmer admitted that earlier this year. A lot of Vista will still be pure native code, and most of the major Windows apps will always be Win32 because companies aren't going to rewrite their codebases, and also they want to retain compatibility with Apple's Carbon, which behaves similarly to Win32 and therefore provides for easier porting.

      Of course, I hear rumors about Apple releasing their Cocoa/Obj-C stuff for Windows. Which would truly rock and would give Windows developers a reason to use those superior APIs. Photoshop could take advantage of things like CoreImage without losing Windows compatibility. But we'll see if that's just a geek fantasy.

      --
      "Sufferin' succotash."
    25. Re:Wowing developers... by ceoyoyo · · Score: 2, Informative

      Python. There you go. Have fun! Oh, don't forget to install PyObjC or you may be disappointed.

      Note: Apple didn't come up with it. Neither did MS. It's open source. Apple employees have a lot to do with PyObjC though, which is also open source.

    26. Re:Wowing developers... by Overly+Critical+Guy · · Score: 0

      Objective-C is a self-documenting language. C++'s function syntax is an abortion of pain. You're just a sissy programmer unwilling to learn something better.

      --
      "Sufferin' succotash."
    27. Re:Wowing developers... by ceoyoyo · · Score: 1

      Hey, I feel the same way when writing in C++! ;)

      ObjC is DIFFERENT. It took me a while to get used to, and I tag team ObjC and Python so sometimes I get a little bit of split personality going, but the different syntax is kind of cool once you get used to it. No, it's not just like everything else you learned in college.

    28. Re:Wowing developers... by Anonymous Coward · · Score: 1, Insightful

      You missed the point. Keyword arguments make code easier to READ, not easier to write. Of course Xcode does automatic, interactive code generation with things like method signatures appearing in-line as you type. That's not the issue. The issue is that sooner or later somebody's going to have to back and READ the code you wrote, and that's where Objective-C's very-nearly-self-documenting syntax becomes a big win.

      Making it optional, however...

      Would be a fucking waste of time.

    29. Re:Wowing developers... by CRCulver · · Score: 1

      Whenever I use ObjC I feel like I'm writing with macros that get processed by a preprocessor and converted into regular old C.

      Should I be irked that when I'm writing regular old C I'm just writing with macros that get processed and converted into regular old assembler? A higher-level syntax is usually regarded as a step forward, not a cause for complaint.

    30. Re:Wowing developers... by SteeldrivingJon · · Score: 1

      "I know manual memory management is simple, but what I don't understand is why it must be required, especially when there are languages out there that have clearly demonstrated that it doesn't need to be that way for many projects."

      On the other hand, those languages haven't been particularly successful when it comes to desktop apps, have they?

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    31. Re:Wowing developers... by squiggleslash · · Score: 1
      C#, for all of the claims of performance, is a a JIT based interpretive language. Ditto Java.
      There's an error message appropriate here, something like "Object type mismatch: JIT has "compiled" type output, expected "interpretive" from sentence" or something. Anyway, my debugger says your sentence should have been
      C#, for all of the claims of performance, is a a JIT based compiled language. Ditto Java.
      ...which takes the wind out of your sails for the remaining part of the argument, because it relies upon Java and C# being interpreted. Which they're not.

      C# is a compiled language, as is Java. You can't call something that's "JIT" compiled "interpreted". It isn't. It's compiled. It's distributed in semi-compiled form, and (with most, if not all, current implementations) stored on the user's PC as semi-compiled, but it's actually fully compiled before the CPU runs it.

      Neither language's performance problems, in any case, have anything to do with byte-code intermediate representations. The major problem is that Java (especially, I can't speak for C#) is distributed in a form that effectively means the entire thing has to be linked at run-time. That's slow, and means most Java programs have a painfully slow start-up time. Once running, they pretty much all run at a decent speed, and the benchmarks, repeated ad-nausium, generally show comparable performance to C++, largely because automatic garbage collection is fractionally more efficient than malloc() based manual memory management.

      The slow start-up times though have done a lot to discredit anything connected with Java, be it JIT, byte-code, platform independence, or C#. But let's be clear why the problem exists - it has nothing to do with the fact that Java and .NET apps are distributed using platform independent byte-codes.

      Bear in mind, also, that nothing stops you from compiling your Java program from the get-go right to assembler, distributing the code as a platform specific, machine code, fully linked executable. Nothing at all.

      --
      You are not alone. This is not normal. None of this is normal.
    32. Re:Wowing developers... by SteeldrivingJon · · Score: 1

      C# is actually the demonic hellspawn of Delphi and Java.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    33. Re:Wowing developers... by mildgift · · Score: 1

      I think all recent languages compile down into a processor-neutral assembly language. Other language vendors do the same thing with a neutral assembly language, but they don't make the intermediate representation a product.

      MS's CLI is just a public implementation intended for multiple languages, and that's being sold to the development market. That way, if you have a language, you'll only write the parts that create the CLI... and MS's JIT optimizes and compiles that code, saving you from having to pay for implementing that part of the compiler.

      In theory, the CLI is neutral. In practice, things like that are not really platform independent. Different VMs have different bugs. Big Java apps sometimes demand specific versions of a specific VM... and I don't see that changing.

    34. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Maybe that's [freeing their own memory] too much to ask of the sissy programmers coming out of school these days.

      Are we sissy for not writing machine language still? Are we sissy for using libraries instead of implementing everything by hand?

      Just because we can do something, does not mean it's best that we force developers to deal with that in every application they write -- because it'll usually be less efficient.

      In a language without a GC (like C++), if you ask developers whether it'd be better with a GC, some will say yes and some will say no. In a language with a GC (like Python or Lisp), if you ask developers whether it'd be better without the GC, nobody would say yes. This to me is evidence that programmers who say they need a GC-less language only think they do.

    35. Re:Wowing developers... by mj_1903 · · Score: 2, Insightful

      I agree. When programming Obj-C you will rarely see any memory related errors if you know what you are doing. It is not a beast to manage and the memory management is flexible enough to cover nearly all situations from some quick interface code (autorelease) to tight loops or backend components (managed retain/release). As a full time Cocoa programmer I can't really think of anything to change in that regard.

    36. Re:Wowing developers... by gnuLNX · · Score: 1

      Why not use a language like C++ were you have the option? In non compute intensive section you use smart pointers and in other sections you use raw pointers. For what it's worth I pretty much always use smart points and never ever notice performance issues. I write scientific code. Performance is everything to me.

      As a comparison I wrote a similar Molecular Dynamics simulator in Java and the performance was significantly worse...no numbers as this was a couple of years ago.

      My point is that you can use basic garbage collection facilities in a language like C++ and still retain the down-to-the-metal part of the language.

      --
      what?
    37. Re:Wowing developers... by Anonymous Coward · · Score: 0

      In a language without a GC (like C++), if you ask developers whether it'd be better with a GC, some will say yes and some will say no. In a language with a GC (like Python or Lisp), if you ask developers whether it'd be better without the GC, nobody would say yes. This to me is evidence that programmers who say they need a GC-less language only think they do.

      Funny, to me that looks like evidence for your lack of logical thinking. Ask those enlightened people that wold shove G down any language's throat about memory footprint optimizations techniques, efficient allocators for intensive butterfly-type memory use patterns and so on and count how many actually know what you're talking about. But I guess that happens when schoolkids start venturing opinions about what a language should or should not have.

    38. Re:Wowing developers... by Zeneris · · Score: 1

      That is a pathetic cheap hit and plain wrong, plenty of desktop applications exist for GC based languages now, there are many .Net and Java applications which work fine on the desktop, even for minority platforms like OS-X (it supports Java and has Cocoa support in Java). I've made usable, powerful and secure desktop apps in Java, if you can't do this, then you either don't know Java properly or haven't tried. Objective-C is a backwater language with poor security which, for some strange reason, only Apple prefer over other more mainstream and IMHO more productive languages. IMHO Objective-C is pointless to learn unless your are an Apple OS-X owner/developer or a language nerd. I've seen lots of Apple fan boy hype, but the reality is that Apple are a niche player and don't have that great products once you get past all the hype, even their security and performance benefits were and are proven hype.

    39. Re:Wowing developers... by Leimy · · Score: 3, Interesting

      Non-sissy programmers make mistakes that can let in all sorts of problems with buffer-overruns and other fun vulnerabilities. C is a terrible language for trying to write "secure" or "safe" code.

      I'm not saying C is bad for all situations. I just wouldn't use a saw to drive a nail.

      By the same token I try not to find problems for my solution.

      It may be very simple to do the refernce counting by hand, I'm just saying that it's possible to do a lot of this stuff automatically in a language design. See Limbo. It even has a way to get out of dreaded cycles that cause reference counting to leak memory [a cyclic keyword]. It's a shame Limbo only really works with the Inferno OS.

      Also C++ has libraries of things like shared_ptr that do the reference counting in the constructors and destructors of the object. It also can suffer from the cyclic reference leaks of course but the need to double check code or even suspect it of being wrong at the "use" level is greatly diminished.

      At the end of the day it's worth noting that no language is perfect, and just knowing the syntax doesn't make you a good coder. It takes practice... and just having a degree in CS isn't gonna make you great.

    40. Re:Wowing developers... by CableModemSniper · · Score: 1

      Ok, I like Objective-C, but some of the things you say about other languages are just wrong.

      In C++, you'd have to pass in some sort of enumerated constant or something.

      False. Nothing stops you from having a factory object, or adding factory methods to your class, which is all Objective-C does anyway. It just happens to be the convention in Cocoa/NextStep.

      [object value] vs. object.getValue( )

      Once again nothing stops you from using a different coding style, you can write classes that do object.value(), where the only difference is choice of punctuation.

      As for garbage collection, the goal of garbage collection is not to "get rid of" pointers, it is to avoid memory leaks, repeated deallocations of the same object, and dereferencing of invalid pointers (ie premature deallocation). A C compiler/runtime could be created that incorporated garbage collection. Assuming you didn't do anything "evil" like xor pointers with a "secret code", you would be fine.

      --
      Why not fork?
    41. Re:Wowing developers... by Rew190 · · Score: 1

      Are you kidding? .NET?

    42. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Everybody bitches about Objective C's method call syntax, but that combined with named parameters is what makes Objective C code so easy to read. Which of the following is more descriptive when read aloud?

      [point setX: 5 andY: 10];
      OR
      point.set(5, 10);

      The above is an obviously trivial example, but it illustrates what makes Objective C code so much easier to go back and maintain later. With a point, most people will (correctly) guess that the first argument to set is the X coordinate and the second is the Y coordinate. But try that with something more complicated, and C++ syntax quickly degenerates into something that's completely incomprehensible without full class library documentation.

      You can actually usually understand what Objective C code is doing without having to look up the documentation for the methods being called. Changing the syntax back to C style totally ruins that readability.

    43. Re:Wowing developers... by coolgeek · · Score: 1

      Maybe that's [taking responsibility for recycling resources their programs allocate] too much to ask of the sissy programmers coming out of school these days.

      There, fixed that for you

      --

      cat /dev/null >sig
    44. Re:Wowing developers... by man_of_mr_e · · Score: 1

      Um.. actually, no. Microsoft released an open source version of C# and the ISO standard CLI framework, called Rotor.

      While this doesn't encompass the entire .NET framework, it does encompass everything you need to write code using C#.

    45. Re:Wowing developers... by man_of_mr_e · · Score: 1

      C# is a compiled language, as is Java. You can't call something that's "JIT" compiled "interpreted". It isn't. It's compiled.

      Actually, Java CAN be interpreted, it can also be compiled. Microsoft (particularly Anders Hejlsberg, C#'s principal author) claims that IL is designed strictly to be compiled, rather than interpreted, and this give it certain performance advanatages of a Java Byte Code. I don't know if that's true or not, but it does make a certain amount of sense.

      One thing is for sure, the Java hotspot compiler is much more complex than the IL jitter, and that smacks of scalability problems. Also, from what I understand, the hotspot compiler will actually interpret code if no Jitted code is available yet, which means the byte code can't be generated assuming no interpretation.

    46. Re:Wowing developers... by sl3xd · · Score: 1

      plenty of desktop applications exist for GC based languages now, there are many .Net and Java applications which work fine on the desktop

      Care to name one that I might use (or see in a store for purchase)?

      I've made usable, powerful and secure desktop apps in Java, if you can't do this, then you either don't know Java properly or haven't tried.

      Funny... I know more than a few (highly experienced) Java programmers who believed thier code was usable, powerful, and secure. The problem is that the software was none of the above, and I had the privilege of having to 'prove the impossible' before the Java coders would admit there was a problem.

      Java, .Net, C# ... these are just tools, just like C++, C, Objective C, and Assembler. I've seen far too many people who somehow think that Java (or .Net, or whatever the 'new' language dujour happens to be) make claims about a language being some sort of magic bullet.

      Magic bullets do not exist.

      Objective-C is a backwater language with poor security which for some strange reason, only Apple prefer over other more mainstream and IMHO more productive languages.

      Obscure? Funny, I think the same thing about Java programmers; every thing I see is written in either C, C++, or Fortran. Java is still widely reguarded as little more than a 'toy' language used by web developers. Its performance hit is simply too large to be taken seriously.

      Apple prefers Cocoa because it's the native API for their OS. ObjectiveC is a big part of that; OS X is a decendant of NeXTStep and OpenSTEP; it shouldn't be a suprise, then, that OS X will use ObjectiveC to its advantage. It's a nice thing to be able to directly use core OS components in your own programs; this isn't something that .Net or Java allow. (For that matter, Microsoft keeps much of the Windows API unavailable to non-Microsoft shops.)

      I'd say it's not much different than Microsoft promoting .Net, except that major portions of Windows are not written in .Net.

      ObjectiveC has poor security?!? No worse than any other language (actually, much better than most). The fact that ObjC doesn't have garbage collection isn't a strong argument about its security.

      Garbage Collection isn't a magic bullet, it doesn't fix all of the world's problems, and it comes with its own unwanted baggage. Pointers are not a bad thing; nor is doing your own memory management. Believe it or not, if a coder can see beyond his own arrogant level of self-importance, he finds that his time (and cost) is frequently inconsequential compared to the cost of slow and inefficient code. (ie. a developer and his time are worth far less than he wants to believe.)

      Performance does matter to users, and it does make the difference between a sale and a rejected offer. There are times when execution time costs a few dollars per minute, and taking five minutes to execute code that would take two minutes in a different language is an inexcusable offense.

      This is espescailly true in my field; when you have to wait weeks just to get cycles on a supercomputer, then you had better take the time to write your code for performance. A garbage-collected language is a liability; its performance penalty is simply unacceptable, as is its resident memory size, and the amount of jitter that garbage collection adds to code executing in parrallel. Neither Java or .Net hold a candle to C and Fortran in this arena. (ObjC isn't there either; make no mistake. C++ is only starting to take a weak hold.)

      It's trivial to write insecure applications in any language. Java is not immune, nor is .Net. Choice of a programming language does not provide insurance against a coder's incompetence. Stability and security have far less to do with the language it's written in than it does with the coder's ability. The 'saf

      --
      -- Sometimes you have to turn the lights off in order to see.
    47. Re:Wowing developers... by penguin-collective · · Score: 1

      Memory management in Obj-C is really simple, and making issue of it is an extreme exaggeration. You merely have to follow the rule of "if you allocate it, you're responsible for it",

      If that simple rule always worked, then people wouldn't have invented garbage collection. Unfortunately, it fails miserably in many applications.

    48. Re:Wowing developers... by squiggleslash · · Score: 1
      Actually, Java CAN be interpreted
      Well, yeah, but it's not when JIT is applied. That was essentially the point - the GGP was dismissing JIT compiled code as "interpreted", which by definition it isn't.

      I know people can and do interpret Java (early versions of Java, for one, only came in that form.) But technically one can do the same with C++ (relatively easily, just run Bochs ;), so that's not "the problem" with Java. That's all I was trying to address.

      --
      You are not alone. This is not normal. None of this is normal.
    49. Re:Wowing developers... by soft_guy · · Score: 1

      The difference is that when you write a MacOS X application with Objective-C you compile the application into PowerPC assembly. You then distribute the binary. With a JIT language, you distribute the IL and the virtual machine "compiles" the IL into assembly every time the user runs it.

      From a business perspective, with IL, I do need to use an obfuscator with my Java or .NET app, which I don't really need to do with more traditional languages that do not use an IL.

      --
      Avoid Missing Ball for High Score
    50. Re:Wowing developers... by nikster · · Score: 1

      Huh? I thought dumb, macho-programmer-posturing was a thing of the past?! Sissy programmers?

      "If you allocate it, you are responsible for it"

      Um, yes, that was what we mean by "manually" having to take care of memory management. It's 2005.

      "It's really that simple"

      Um, yeah, all you have to do is write programs without bugs. It's really that simple. Jesus! How did such a non-statement get modded to informative?

      Now why again should I have to manage memory allocation manually when the system can do it and can actually do a better job of it? Aren't computers supposed to rid us of mundane, repetitive tasks?

    51. Re:Wowing developers... by Praxx · · Score: 1
      I'm sorry, but I have to disagree. Objective-C has the most intelligent syntax of any language I've ever worked with. Just because none of the latest "miracle" languages, like C# and Java, have adopted a new function calling syntax doesn't mean there aren't problems with it. Frankly, the constructor naming for C++, Java and C# is brain-dead. What makes more sense?

      color = NSColor(128, 128, 64, 0);

      or

      color = [NSColor colorWithRed:128 Green:128 Blue:64 Alpha:0];
      Sure, if you're using notepad.exe to edit, I agree with you. Modern editors (like Eclipse and VS.NET) have some intellisense feature that will tell you what the parameters are. Even better, you can often get comments about the parameter displayed right inside the editor.
      --
      http://www.policystew.com/
    52. Re:Wowing developers... by Jeremi · · Score: 1
      With a JIT language, you distribute the IL and the virtual machine "compiles" the IL into assembly every time the user runs it.


      Or it could just compile the IL into assembly the first time the user runs the app, and cache the resulting executable for quicker loading next time -- somewhat analogous to what Python does with its automatic .pyc file generation. In either case though, I don't see why this is a problem -- it could actually allow an efficiency improvement, since doing the final "compilation" step on the target CPU means that you can enable all the appropriate processor-specific optimizations, whereas if you compile to machine code on the developer's PC you are typically limited to the common denominator to ensure compatibility with older processors.


      From a business perspective, with IL, I do need to use an obfuscator with my Java or .NET app, which I don't really need to do with more traditional languages that do not use an IL.


      So the problem is that the bytecode isn't "obfuscated enough" in its natural state, and therefore you have to run an obfuscator on it? Putting aside for the moment the fact that in most situations obfuscation is considered a bad thing (because it makes the code harder to work with), I still don't see any real problem here -- if it bothers you, run your code through an obfuscator and be happy.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
    53. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Objective-C is better here. I can read Objective-C code and understand what is happening, because the code is self-documenting. The C#/C++/Java syntax is clearly inferior.

    54. Re:Wowing developers... by soft_guy · · Score: 1

      So the problem is that the bytecode isn't "obfuscated enough" in its natural state, and therefore you have to run an obfuscator on it? Putting aside for the moment the fact that in most situations obfuscation is considered a bad thing (because it makes the code harder to work with), I still don't see any real problem here -- if it bothers you, run your code through an obfuscator and be happy.

      Anyone can take non-obfuscated java IL code and get source code back out of it. Same problem with .Net. For some things, who cares, but do I really want to distribute a commercial application this way? Most companies I work for would want to avoid this. I write in C and C++, not Java or .Net, so I do not have this problem myself.

      --
      Avoid Missing Ball for High Score
    55. Re:Wowing developers... by dancpsu · · Score: 1

      Intellisense helps when you are writing the code, but I don't want to have to click on every single obcure API call when reading code afterwards. It also helps when you print out a function for later reference.

      --
      "Scientists don't change their minds, they just die." -- Max Planck
    56. Re:Wowing developers... by aCapitalist · · Score: 1

      t's still interpreted, it's just interpreted all at once before execution (Hm... Sounds like Perl, Ruby, Python and a few others...). Try again.

      And guess what, C and C++ are "interpreted" by a compiler too. And you can AOT(Ahead of Time) your assemblies to native - which the .NET framework libraries are. You try again.

    57. Re:Wowing developers... by aCapitalist · · Score: 1

      Maybe that's too much to ask of the sissy programmers coming out of school these days.

      A sissy programmer, eh? Why do you pussies need a high-level language. Real programmers write assembly.

    58. Re:Wowing developers... by Anonymous Coward · · Score: 0

      As soon as you pass an object as an argument or take one as a return value, it becomes impossible to guarantee that object can never be used again and safely destroy it. Most people realize this about halfway through a project, panic, and bolt on reference counting--the slowest and least reliable form of garbage collection.

    59. Re:Wowing developers... by amliebsch · · Score: 1
      Care to name one that I might use (or see in a store for purchase)?

      http://www.eecs.wsu.edu/paint.net/ is a great example of a highly usable, nicely polished .NET desktop application.

      --
      If you don't know where you are going, you will wind up somewhere else.
    60. Re:Wowing developers... by Praxx · · Score: 1
      Intellisense helps when you are writing the code, but I don't want to have to click on every single obcure API call when reading code afterwards. It also helps when you print out a function for later reference.
      Valid point about printing out code.

      In VS.NET 2005 anyway, merely hovering over the function with the mouse is enough to get a help tooltip giving you all the parameter types and names. Honestly I've never been frustrated by the lack of clarity in knowing what the intent of specific parameters are. In the cases I don't know, it's simple and quick to figure out.
      --
      http://www.policystew.com/
    61. Re:Wowing developers... by Prothonotar · · Score: 1

      There are many cases where you need a method to allocate something and either return it or store it in a collection, etc. In that case, it's impossible for the method itself to free it. Any programmer worth his salt would know this.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    62. Re:Wowing developers... by Prothonotar · · Score: 1

      I don't understand all this "it's 2005 and programmers still have to worry about memory management?" nonsense.

      I primarily write Java these days, and you know what? You still have to worry about memory management, you just don't have to worry about freeing pointers.

      When you're writing software, you ought to have to worry about what the software is doing, whether your worries are at the pointer level, or remembering to unregister listeners that are keeping unused observable objects in memory, or whatever else it's doing. You can only 'drag-n-drop program' so much before some knowledge and wisdom about programming come into play.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    63. Re:Wowing developers... by Prothonotar · · Score: 1

      color = NSColor(128, 128, 64, 0);

      While technically legal, this is probably not what you want, because it's a constructor of one object (on the right) and then an assignment to another (on the left).

      If you want just an initializer, do this:


      NSColor color( 128, 128, 64, 0 );


      color = [NSColor colorWithRed:128 Green:128 Blue:64 Alpha:0];

      Blecch. You mean I have to re-type all the parameter names just because someone can't figure out how to use a modern IDE or an editor with tags support? I mean if you really must spell that out for people, you could always use *gasp* comments.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    64. Re:Wowing developers... by Prothonotar · · Score: 1

      [object value] vs. object.getValue( )

      Once again nothing stops you from using a different coding style, you can write classes that do object.value(), where the only difference is choice of punctuation.


      Not only that, but in C++ you can use a myriad of operator overloading (such as the * operator), including conversion operators. Using a conversion operator, you may not need to write a method call at all.
      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    65. Re:Wowing developers... by Prothonotar · · Score: 1

      Oh yeah, [receiver doSomething:3 magicnumber:2 code:1 msg:"boom"]... that makes a lot more sense.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    66. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Those cases are actually still handled reasonably well by rules (although not by the rules the GP stated).

      Manual deallocation becomes impossible when pointers form general graphs. Those cases are infrequent enough that many programmers fool themselves into thinking that rules always work, but they are frequent enough that no general purpose language should be without garbage collection.

      (And let's cut the bogus use of emotive language like "any programmer worth his salt".)

    67. Re:Wowing developers... by Anonymous Coward · · Score: 0

      AHHH HHAAAAA BIEEAATTCCHH!!

    68. Re:Wowing developers... by Prothonotar · · Score: 1
      (And let's cut the bogus use of emotive language like "any programmer worth his salt".)

      This ain't Wikipedia my friend. I think any programmer worth his salt *does* understand these issues, and so I see no reason to refrain from expressing my opinion on here, any more than you should refrain from expressing your *opinion* that "no general purpose language should be without garbage collection."
      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    69. Re:Wowing developers... by jbtule · · Score: 1

      Actually that's a commonly held over simplification, and if you trust it, at some point you are going to have nasty confusing crashes, and you are going to wonder what's going on. One of the most common things new cocoa developer ignore is autorelease pools, there are occasions in which you need to create and release your own, because if you accumulate too many autorealeased objects before you your pool is released, it will crash your program. Other problems come from the fact that there are cocoa classes that if following the ownership rule should retain a parameter but don't, which means you could get a nasty surprise if you didn't check the api doc for that method.

    70. Re:Wowing developers... by squiggleslash · · Score: 1
      Ever had a call to one of those functions/methods where there are so many parameters, and the parameters so non-trivial, that you've had to spread the call out over several lines?

      I think it'd help there too. I've lost count of the number of times I've had to go through one of those and try to work out which line is which parameter. The RGB example everyone keeps giving really isn't that good. I think it's a good idea.

      The AmigaOS used to have a cool thing with the more complicated C calls which was intended to solve another problem (that of having to make way for future extensions) but, as a side-effect, made code more reliable too. I've used it a lot in both C and, surprisingly, JavaScript. You would make certain functions variadic, and then have named constants preceed each parameter, like so:

      Window *mywin = OpenWindowNew(TAG_WIDTH, 400,
      TAG_HEIGHT, 350,
      TAG_POSITIONX, 0,
      TAG_POSITIONY, 10,
      TAG_END);
      (that's probably not working code ;)

      Very easy to implement, though a little inefficient for oft-called functions.

      --
      You are not alone. This is not normal. None of this is normal.
    71. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Yes since those of us worth our salt know that objective-c uses reference counting and has an autorelease mechanism for delaying release until then end of the event loop, we'll will just laugh at those ignorant enough to believe that you can only release an object in the method it was created.

    72. Re:Wowing developers... by Anonymous Coward · · Score: 0

      And my dick is four inches longer than your dick.

      You dick.

    73. Re:Wowing developers... by Prothonotar · · Score: 1

      Laugh away, because if you'd read my posts, you'd know I'm not one of those people.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    74. Re:Wowing developers... by Anonymous Coward · · Score: 0

      Maybe if you read the parent you realize what you wrote.

    75. Re:Wowing developers... by SkipNewarkDE · · Score: 1

      ... which is why in Cocoa when you allocate an object, within the init you take the newly allocated object and add it to the autorelease pool before returning it to the calling routine. That routine retains it when it is added to the collection. When the collection is ditched, it will do a release. No big deal.

    76. Re:Wowing developers... by miguel · · Score: 1

      Not really.

      JIT compilers translate the code to the target architecture just-in-time; Any use of the code afterwards is completely native.

      Both Microsoft's .NET and Mono offer pre-compilation of code so that you can take out JIT out of the equation. In Microsoft this is done with the "ngen" tool, in Mono this is done by requesting Mono to batch compile the code with the --aot flag to "mono"

      Miguel.

    77. Re:Wowing developers... by Anonymous Coward · · Score: 0
      Paul Graham used a garbage-collecting language to single-handedly write the Yahoo Store interface. He and his two buddies made about $20 million each. He's stated that garbage collection is one of the key features that makes his favorite language, Lisp, so productive. Is he a sissy programmer? What about the Lisp programmers who wrote the Orbitz routing software?

      Personally, the fewer lines of code it takes to express what I'm trying to do, the happier I am. All those retain/release lines of code just take up valuable screenspace.

      I still can't figure out why Apple doesn't make Smalltalk a supported Cocoa language. Same object model, same dynamic capabilities, even the same parameters-by-name convention, plus garbage collection and a few other nice features.

    78. Re:Wowing developers... by Durandal64 · · Score: 1
      That's interesting, although your example code highlights another problem with the C++ naming conventions in general. The tendency is to name a function based on what it does, rather than what it returns. Now, you could argue either way, but Objective-C naming conventions would have you example code looking more like
      Window mywin = [Window windowWithWidth: 400 Height: 350 ...];
      Personally, I prefer to have naming conventions which read easily in English; that's what makes a language self-documenting.

      But there are legitimate cases for naming a function based on its actions. Sometimes you don't care about the return. For example, I wrote a bin-packing program for my algorithms course, and I named a function
      itemWasPlacedInBin(...)
      because it returned a Boolean value. Now, a case arose where I was guaranteed success when calling this function, so I didn't assign its result to anything. So that function name in the code looked a little weird. What I did was use a macro to alias a call
      placeItemInBin(...)
      to that function.
    79. Re:Wowing developers... by Durandal64 · · Score: 1
      False. Nothing stops you from having a factory object, or adding factory methods to your class, which is all Objective-C does anyway. It just happens to be the convention in Cocoa/NextStep.
      Are you talking about having an object method that populates the class with certain values? Because that seems a little clunky to me. In Objective-C, you can do it all in one call. In C++, you'd have to split those actions.
      Once again nothing stops you from using a different coding style, you can write classes that do object.value(), where the only difference is choice of punctuation.
      True, but C++ makes it a little harder. If memory serves, in a class, you can't have a method named "value" and a member with the same name. You have to use "_value" for your member name.
      As for garbage collection, the goal of garbage collection is not to "get rid of" pointers, it is to avoid memory leaks, repeated deallocations of the same object, and dereferencing of invalid pointers (ie premature deallocation). A C compiler/runtime could be created that incorporated garbage collection. Assuming you didn't do anything "evil" like xor pointers with a "secret code", you would be fine.
      I agree. In fact, I think Apple is working on adding garbage collection to Cocoa / Objective-C. But a language like Java simply takes care of all deallocations for you with its garbage collection. Granted, this is nice, but I think that people are taking Java's popularity to imply that the way it does things is the way things should be done.
    80. Re:Wowing developers... by stripes · · Score: 1
      Also C++ has libraries of things like shared_ptr that do the reference counting in the constructors and destructors of the object. It also can suffer from the cyclic reference leaks of course but the need to double check code or even suspect it of being wrong at the "use" level is greatly diminished.

      For data structures with cycles you can use the "non-counting" weak_ptr template. It'll give you a shared_ptr to the managed object, or a NULL shared_ptr if there were no non-weak references. It is also handy for keeping cached things around, or having references that are easier to check for deletion at use time then to track them all down ahead of time.

    81. Re:Wowing developers... by Zeneris · · Score: 1

      1. Java is not a magic bullet, like any language it needs skill and reasoning to use properly, that is not in dispute.

      2. Objective-C is a native 'C' compiler based language with no defined security model, thus has many flaws which VM and GC based languages, like Java, lack.

      3. I don't care about super computing mathematics, that is a niche activity; all out speed is not my target, reliablity, security, development speed and good enough processing speed are very important to me, my employer and their clients.

      Developer time is pretty critical, I don't have the luxury of loads of time to hunt down nasty pointer and buffer overflow bugs, data type glitches or write vast amounts of wrapper code to secure some dated language, a client can lose serious money in that time, I need the language to be secure so that I can concentrate on getting new features and bug fixes out fast, with minimal surprises. The Java compiler and virtual machine has several levels of built-in security, which can be further tightened using code and/or properties files, this prevents most of the classic bugs and security issues of less secure (native) runtime environments. The JVM also automatically profiles running code and compiles busy sections to machine code, so that you can get pragmatic speed optimisation almost for free! Garbage collection is not a significant concern in Java 1.5 and can be greatly reduced with minimal extra design/coding effort. As a bonus the range of support libraries for Java is truely vast and due to the standard file format you don't have the dialect, compiler, linker or make issues of C, C++ etc, even Java version differences can be worked around by using free third party libraries.

      As for Java applications:
      (most are multi-platform and some are multi-lingual too)

      "DBVisualiser" A multi-platform database tool
      http://www.dbvis.com/products/dbvis

      "Force Field Explorer" A computational chemistry and molecular engineering tool
      http://dasher.wustl.edu/ffe

      "Azureus" A multi-platform Bittorrent P2P client/server
      http://azureus.sourceforge.net/
      http://sourceforge.net/projects/azureus/

      "Eclipse" A multi-platform IDE and GUI framework
      http://www.eclipse.org/
      http://www.eclipse.org/downloads/

      "Net Beans" A multi-platform IDE and GUI framework
      http://www.netbeans.org/

      Many of Borlands development product e.g. JBuilder, C++Builder, C#Builder etc., all multi-platform.
      http://www.borland.com/us/

      Numerous graphics, video, audio and graphical modelling and visualisation tools.

      Various GUI charting libraries (Free & commercial), including Crystal Reports...

      Loads of web servers, web frameworks and order types of servers: Tomcat, Web Sphere etc.

      Loads of XML Tools and libraries, both free & commercial!

    82. Re:Wowing developers... by Anonymous Coward · · Score: 0
      Objective-C has the most intelligent syntax of any language I've ever worked with.

      Check out Haskell. It won't be challenging the big guys for heavy duty work any time soon, but the syntax is beautiful.

      What makes more sense?
              color = NSColor(128, 128, 64, 0);
      or
              color = [NSColor colorWithRed:128 Green:128 Blue:64 Alpha:0];

      Colors are a bad example, since RGBA is the most obvious order. The only sensible alternative is ARGB, so any possible ambiguity is very minor. If you need tagged values, it's usually not too big of a deal to do multi-stage construction. Or, heaven forbid, add comments.

      (Haskell does this for records, I believe.)

      In C++ et al, all your constructors are forced to have the same name, varying only among their parameters.

      I agree that this is a bit limiting, but there are many ways to get around that. eg, you can have a static member function:

      static NSColor rgba(int r, int g, int b, int a);
      static NSColor redColor(void);

      or a static constant:

      static const NSColor redColor;
      const NSColor redColor(255, 0, 0, 0);

      (btw, Haskell? Constructors can have different names, or even be operators.)

      And this says nothing about the ridiculous naming conventions of C++ and Java.

      There is no universal naming convention for C++.

      value = object.getValue();

      "Get value from object and copy it to value."

      This is why Objective-C is called a self-documenting language.

      There is no such thing. Just looking at the code, can you tell me *why* this is done?
    83. Re:Wowing developers... by Junks+Jerzey · · Score: 1

      His comment is correct, although performance issues in both Java and .Net are overblown. C# compiles into bytecode (or whatever MS calls it) and the .Net framework compiles that into machine code and runs it. Same exact concept as Java. There is a performance tradoff to this of course, but the .Net framework mitigates it by caching the generated machine code.

      It's correct, but irrelevant. Almost all compilers--save some simplistic ones--compile to some sort of internal intermediate language, then machine code is generated from that language. This is Compilers 101 :) It doesn't matter if the final machine code is generated at compile time or load time.

    84. Re:Wowing developers... by Listen+Up · · Score: 1

      Frankly, you are wrong, and constructor naming in Java is not brain-dead. Your ranting post is what is brain-dead.

    85. Re:Wowing developers... by dloose · · Score: 1

      I hate to get involved in this discussion due to its religious nature and my more-or-less agnostic stance, but what the hell.

      Blecch. You mean I have to re-type all the parameter names just because someone can't figure out how to use a modern IDE or an editor with tags support?

      You don't actually have to retype all of the parameter names because your IDE will likely auto-complete them for you. XCode will write out the entire method inserting place-holders for the argument values. There's a key combo (which my head can't remember but my fingers can) that will highlight each of the place-holders in sequence so you can insert the actual parameters. This gives you the best of both worlds -- it cuts down on your typing while maintaining code readability.

      I mean if you really must spell that out for people, you could always use *gasp* comments.

      Of course you could use comments. The only problem is that I've never seen an IDE that will auto-complete a comment for you (OK, Eclipse will help you with Javadoc, but it won't describe the method for you [unless it's a getter/setter... damn it]). Also, the main reason CS professors harp on comments is because so many programmers don't write them. Methods with named parameters don't really give you a choice. You either say what the parameter is or you get an error.

  15. .NET is a bit complex by netwiz · · Score: 4, Interesting

    Personally, I prefer Obj-C to .NET, mostly due to the (IMO) superior organization and layout of the object model. It's simpler than .NET's API, which tends toward "everything and the kitchen sink." Not that Cocoa doesn't have it's problems. It's probably more difficult to write big projects using it, but for quick development, I find it faster to just throw something together in Xcode. Besides, it doesn't hurt that Xcode and it's related dev tools are free on OSX, whereas it's a $600 investement on Windows for the equivalent software.

    A good example of the complexity is the file access models for both APIs. .NET has something like three different objects to deal with different types of file access. Cocoa implements these in a single object with multiple methods for the data access style (streaming, read the whole thing once, etc.) Now, it's probably just personal preference on my part, but why invent multiple objects when you could just roll them up as separate methods for what is essentially the same data structure? There's probably a reason, and I'd be interested in learning why this is so, but it just seems to me that Cocoa did it right in the first place.

    1. Re:.NET is a bit complex by Timesprout · · Score: 1, Insightful

      There is a perfectly good reason, its called choice. There is no one solution that fits all approach. .NET is like Java in that its a minimilist rather that a Ruby style humanitarian interface approach were you can take the basics or roll your own implemenation. The chiice is yours.

      --
      Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
      What truth?
      There is no dupe
    2. Re:.NET is a bit complex by rplacd · · Score: 3, Interesting

      Actually, that points to another place where objective-c trumps Java or .Net: you can add (your own) methods to classes you don't necessarily have the source code for; see this bit on categories.

    3. Re:.NET is a bit complex by Anonymous Coward · · Score: 0
      Personally, I prefer Obj-C to .NET

      Objective-C is a programming language, .NET is a class library. Maybe you mean to say "I prefer Cocoa to .NET" ?

      "I prefer C to Linux".

    4. Re:.NET is a bit complex by CaymanIslandCarpedie · · Score: 1

      Not very familiar with objective c, but categories do seem interesting. That said, it really seems more a matter of style than function. You can accomplish the same things with inheritance, interfaces, over-riding methods, etc. Doesn't seem anything functionaly is too different, objective c categories just seem a new way to do an old thing, where java/c# use the standard old OOP methods for the same thing.

      Now I just did a quick read, so perhaps I'm missing something but that is my take on it.

      --
      "reality has a well-known liberal bias" - Steven Colbert
    5. Re:.NET is a bit complex by Anonymous Coward · · Score: 1, Informative

      "Besides, it doesn't hurt that Xcode and it's related dev tools are free on OSX, whereas it's a $600 investement on Windows for the equivalent software."

      Nope. Have you tried the new Visual Studio 2005 Express Editions? They are almost the full IDE, minus some enterprise stuff, for free. They're perfect for small projects and pretty much any sort of desktop application. Visual C++ Express Edition is probably the best free (as in beer) C++ IDE on Windows and although I haven't tried alternative C# IDE's like SharpDevelop, Visual C# 2005 is very powerful. If using free (as in beer) Microsoft products irks you for some unknown reason, there are very good OSS alternatives such as SharpDevelop.

    6. Re:.NET is a bit complex by wlnjr · · Score: 1

      Implementing these in a subclass requires you to ensure that the objects you are working on belong to that subclass. Categories allow you to apply your methods to objects returned by frameworks without casting/modifying them.

    7. Re:.NET is a bit complex by coolgeek · · Score: 1

      Perhaps the poster meant he'd rather write his own class libraries than use .NET.

      --

      cat /dev/null >sig
    8. Re:.NET is a bit complex by rplacd · · Score: 1

      You also can't subclass final classes in Java ("sealed" in C#), so the traditional OOP method won't help you here.

    9. Re:.NET is a bit complex by Weedlekin · · Score: 1

      You are missing something. Unlike inheritance, which implements new behaviour at the point of inheritance only, categories allow one to add to or alter methods of _existing base classes_, meaning that you can modify the behaviour of entire class hierarchies without having to touch their source code, recompile them, etc. This feature is not unique to Objective-C (Dylan and Oberon have similar capabilities), but by the same token, it is not something that the majority of OO languages support explicitly.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    10. Re:.NET is a bit complex by hughperkins · · Score: 1

      Note that C# is free, as in beer, on Windows platforms. It is part of the .Net Framework runtime. Just look for the csc.exe executable.

    11. Re:.NET is a bit complex by jcr · · Score: 4, Informative

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    12. Re:.NET is a bit complex by rplacd · · Score: 1

      It's only free for a year...

    13. Re:.NET is a bit complex by penguin-collective · · Score: 1

      Personally, I prefer Obj-C to .NET, mostly due to the (IMO) superior organization and layout of the object model.

      Well, then you should love Smalltalk. Smalltalk is roughly what you get if you try to create a .NET-like language with Objective C's object model.

      Of course, historically, Objective C was actually derived from Smalltalk in an attempt to bring Smalltalk-like features into a world dominated by C programming.

    14. Re:.NET is a bit complex by Mr2001 · · Score: 1

      You can also download Visual C# Express for free from microsoft.com.

      --
      Visual IRC: Fast. Powerful. Free.
    15. Re:.NET is a bit complex by Anonymous Coward · · Score: 0

      Just a quick argument about the $600 price tag figure - You can download "express" versions of all the visual studio products that are prefectly adequate for personal development for free from the microsoft site. They may not match up to XCode for large projects but they let hobbyist and casual OSS developers program without the investment the full suite requires.

    16. Re:.NET is a bit complex by Benski · · Score: 1

      VS express edition doesn't include the resource editor, making it utterly worthless for "pretty much any sort of desktop application"

    17. Re:.NET is a bit complex by Anonymous Coward · · Score: 1, Informative

      From http://forums.microsoft.com/MSDN/ShowPost.aspx?Pos tID=126606&SiteID=1:

      "Until November 7, 2006, we are promotionally discounting the downloadable versions of Express to free. This doesn't mean that the product turns off after a year, but rather that as long as you download the product before November 7, 2006, you can get it for free and you can use it forever."

    18. Re:.NET is a bit complex by Dr_Barnowl · · Score: 1

      Hmm.

      I have VS.Net Express installed. All of it (except J#).

      That's VB, C#, C++ and Visual Web Developer.

      The only one of these that does not, by default, have "resource file" listed amongst it's "New Item" template list is VB. All the others permit you to add a resource file and edit strings, and add images, icons, audio clips, and other material to the file. The file iteself is an XML file, and could thus feasibly be edited by hand.

      You can get around the lack of the template in VB by the staggeringly hard step of adding a new text file to the project and sticking ".resx" on it instead of ".txt", henceforth the resource editor will be used to open it.

      Ok, you can't edit icons, bitmaps and cursors. For that, you might need to get a free editor.

      Or is there something staggering that the VS.NET 2003 does for you that the VS Express one doesn't (other than those pesky bitmaps)? (no, really, I want to know what I'm missing...)

    19. Re:.NET is a bit complex by tbien · · Score: 1

      Actually people should stop muttering about choice but start caring about the "right thing" to do. Choice is for people which don't comprehend the subject at hand.

    20. Re:.NET is a bit complex by penguin-collective · · Score: 1

      Objective C's approach, copied from Smalltalk, is the traditional object-oriented approach. The restrictions in Java and C# are decidedly non-object-oriented, inherited from C++.

    21. Re:.NET is a bit complex by rjshields · · Score: 1
      Actually, that points to another place where objective-c trumps Java or .Net: you can add (your own) methods to classes you don't necessarily have the source code for

      From TFA:
      Categories provide an elegant solution to the fragile base class problem for methods.

      Also from TFA:
      A category has full access to all of the instance variables within the class, including private variables.

      Seems kinda contradictory to the first statement. I don't see how this is any better than extending a class and overriding a method or providing a new on as you would in Java. Methods being virtual by default in Java, you can do this pretty easily as many developers don't bother to mark classes or methods as final (java.lang.String being an obvious exception).
      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    22. Re:.NET is a bit complex by rjshields · · Score: 1
      If you add methods to a class with an Obj-C category, all instances of that class gain those methods
      That reminds me of the prototypical inheritance model used in Javascript.
      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    23. Re:.NET is a bit complex by rjshields · · Score: 1
      No, you can't.
      Yes you can, so long as you've followed the OO panteon of programming to interface rather than implementation, but you would have to cast to a derived type.
      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    24. Re:.NET is a bit complex by The+Cookie+Monster · · Score: 1

      Damn!
      That's been a wish of mine for a while.

      I regarded it more an irritating OO model shortcoming, since I'd not yet seen a language that allowed it.

      Good to hear the feature is out there, and in a language that actually gets used.

      Unfortunately in this regard, my next platform will be .net and I presume (possibly incorrectly) that that .net isn't flexible enough to grant any of its languages that ability.

      You get a +1 Educational virtual mod from me ;)

    25. Re:.NET is a bit complex by Anonymous Coward · · Score: 0

      C# 3.0 gets extension methods to "inject" methods into classes you don't have the source code for.

    26. Re:.NET is a bit complex by jbellis · · Score: 1

      newbie.

      you can't just magically cast a superclass instance to a subclass. ... and btw, a lot of the JDK and especially .NET stdlib classes are sealed -- you can't subclass them, at all, anyway.

    27. Re:.NET is a bit complex by Prothonotar · · Score: 1
      Objective C's approach, copied from Smalltalk, is the traditional object-oriented approach. The restrictions in Java and C# are decidedly non-object-oriented, inherited from C++.
      Hmm, does Simula have that feature? C++ (or the OO additions to C within it) and Smalltalk are both descendants of Simula, which was arguably the first OO language. Just because Smalltalk added a feature that the C++ line did not does not make it a more object-oriented approach.
      The fact is that all of the mentioned languages are "object-oriented" because they revolve around objects (structures with both data and behavior). The things the languages let you do with those objects is just different.
      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    28. Re:.NET is a bit complex by Prothonotar · · Score: 1
      I guess the library designers thought it was more important to be able to know that the classes in a library would behave the same without having to wonder if somewhere in an application someone added some custom methods to it.

      I don't like Java's 'final' classes, but I can see why one wouldn't necessarily want apps being able to modify the functionality of a class by adding new methods.

      But if you really really want to do it, you can use aspects, available for at least Java and C++.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    29. Re:.NET is a bit complex by penguin-collective · · Score: 1

      Alan Kay said about this: "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

      So, Simula-67 doesn't have the feature, but then Kay's comment applies to Simula-67 as well: the language is defective as an object-oriented language. Inabilitiy to add new methods to existing classes is a huge deficit in C++, to this day.

      Misapplying the label "object oriented" to Simula-67/C++ was an big boost to those languages at a time when Smalltalk was enormously popular and influential.

    30. Re:.NET is a bit complex by Anonymous Coward · · Score: 0
      Sounds somewhat similar to C# 2.0 partial classes. Where you can "extend" a class without subclassing. C# requires you to specifically declare classes with the partial keyword to denote intent.

      Visual Studio 2005 uses this feature very nicely by auto-generating partial classes for you when using visual designers. This allows you to add-on to the class without worry about the IDE re-generating its code and beating up yours.

    31. Re:.NET is a bit complex by Prothonotar · · Score: 1
      Alan Kay said about this: "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

      It's true that Smalltalk was the first language to use the term "object-oriented", but it is disingenuous to say that just because Kay came up with the term, that is can only apply to language features that Kay helped to develop.
      Inabilitiy to add new methods to existing classes is a huge deficit in C++, to this day.

      That's an opinion. I'm sure you find a use for that feature, but personally I've never found myself wishing I could do it, and I can think of reasons why I wouldn't want to do it (specifically, the ability to know what a class does without having to locate parts of it throughout the sourcecode). You can come up with examples of why its useful, and I could come up with counterexamples of why it would not be required if the design were extensible.

      I don't have anything against Objective-C, I'm just tired of all this object-oriented elitism. When I want to get something done with a program, I want to use the right tool for the job. I don't care if someone in the 70s considered some feature essential to be certified "object-oriented". If you feel like you need the feature, use a language that has it, and let others use the language they want to use.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    32. Re:.NET is a bit complex by penguin-collective · · Score: 1

      but it is disingenuous to say that just because Kay came up with the term, that is can only apply to language features that Kay helped to develop.

      No, what is "disingenuous" is that Simula/C++ were hyped up using the term "object oriented", popularized by Smalltalk, even though Nygaard and Stroustrup both full well knew that their languages weren't as powerful. Stroustrup overpromised and underdelivered, and the industry fell for it (including myself).

      and I can think of reasons why I wouldn't want to do it (specifically, the ability to know what a class does without having to locate parts of it throughout the sourcecode). You can come up with examples of why its useful, and I could come up with counterexamples of why it would not be required if the design were extensible.

      The problem comes up constantly in large software systems developed by multiple groups. There are some patterns you can use as workarounds. But, then, you don't even need any object-oriented features in your language at all in order to do OOP, so why do you even bother with C++ and don't just use straight C?

      If you feel like you need the feature, use a language that has it, and let others use the language they want to use.

      In what way does our discussions about what features we want to see in languages prevent you from using whatever you want?

      The question I'd rather ask is why people like you feel compelled to try to stop discussion of new languages or new language features.

    33. Re:.NET is a bit complex by Prothonotar · · Score: 1

      No, what is "disingenuous" is that Simula/C++ were hyped up using the term "object oriented", popularized by Smalltalk, even though Nygaard and Stroustrup both full well knew that their languages weren't as powerful. Stroustrup overpromised and underdelivered, and the industry fell for it (including myself).

      Nothing I've read from Stroustrup has ever billed C++ as anything more than what it is- a systems programming language based on C with object-oriented idioms.

      Simula came out before Smalltalk and introduced the concepts of objects. That being said, I've never heard it "hyped" to be anything- in fact it's not really in wide usage.

      I'm not experienced with Smalltalk, but from talking with people who are, I've gotten the impression that one of the reasons it hasn't caught on is that it's damned slow (at least, back in the days it had a chance to catch on). Stroustrup designed C++ so that it did not have to be any slower than C (admitting that using certain of its features might sacrifice speed for elegence).

      The problem comes up constantly in large software systems developed by multiple groups. There are some patterns you can use as workarounds. But, then, you don't even need any object-oriented features in your language at all in order to do OOP, so why do you even bother with C++ and don't just use straight C?

      I assume you've worked on such large software systems, and so have I. You've found a need for it, and I haven't; which is exactly what I argued.

      Why not use straight C? I do, for some tasks. I use Perl for others, and Bash for others, Java, C++, whatnot. For most larger programs, I find object-oriented idioms much easier to work with, and so I prefer C++ or Java. If someone finds the idioms of Obj-C useful, they should use it; but I'm not going to start criticizing their choice because it doesn't have some feature of C++.


      In what way does our discussions about what features we want to see in languages prevent you from using whatever you want?


      What's the point of labelling one language which has objects to be "true" OO and another language which has objects not to be, other than to dissuade people from using it? What's the point of saying that a language "overpromised and underdelivered", other than to dissuage people from using it? The fact is, C++ is used much more than Object-C and Smalltalk, so whatever you think it has underdelivered, there are many people out there who must disagree.


      The question I'd rather ask is why people like you feel compelled to try to stop discussion of new languages or new language features.


      Smalltalk and Objective-C are not new languages, and according to you, the ability to add methods to existing classes without access to those classes source is "traditional" OO, so I don't know what new features I'm trying to stop discussion of.

      You seem to be trying to mischaracterize what I originally was saying in this thread, so I'll repeat it: there's no reason to say that any one feature is required of an "object-oriented" language.

      I could make the same case for templates, or generics, or garbage collectors, but it's all nonsense. Different languages are designed for different purposes. I'd rather use a language because it is the right one for the job instead of worrying about purists' definition of abstract language concepts.

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    34. Re:.NET is a bit complex by Anonymous Coward · · Score: 0
      newbie.
      Newbie? I'll take that with a pinch of salt coming from someone who has an amateur looking gaming site as a homepage ;) I presume you are yet to develop hair on your balls, come back when you have 15 years programming experience.
      you can't just magically cast a superclass instance to a subclass.
      Well that shows what you know! Congratulations on being a first-class fucktard!
      a lot of the JDK and especially .NET stdlib classes are sealed
      Sealed? You must be a .NET programmer then. May I be the first to congratulate you?
    35. Re:.NET is a bit complex by rjshields · · Score: 1
      you can't just magically cast a superclass instance to a subclass
      FYI it's called downcasting, and yes you can do it. There is no magic involved, just runtime type checking.
      and btw, a lot of the JDK and especially .NET stdlib classes are sealed -- you can't subclass them, at all, anyway.
      No shit, Sherlock. BTW "sealed" is a .NET term, the equivalent Java term is "final".
      --
      In this world nothing is certain but death, taxes and flawed car analogies.
    36. Re:.NET is a bit complex by penguin-collective · · Score: 1

      You seem to be trying to mischaracterize what I originally was saying in this thread,

      You responded to my simple statement that original object oriented languages, like Smalltalk, did, in fact, allow addition of methods outside the class, so this feature isn't some amazing new development.

      I could make the same case for templates, or generics, or garbage collectors, but it's all nonsense. Different languages are designed for different purposes. I'd rather use a language because it is the right one for the job instead of worrying about purists' definition of abstract language concepts.

      Yes, different languages are designed for different purposes. C++ is great for highly experienced teams developing certain kinds of high performance software, or for academics. Based on using C++ as my main programming language ever since cfront prereleases, I can confidently say: C++ is not a good choice for mainstream developers developing mainstream desktop or server applications (and Windows, OpenOffice, KDE, MS Office, etc. are clear evidence of that).

      I'm not experienced with Smalltalk, but from talking with people who are, I've gotten the impression that one of the reasons it hasn't caught on is that it's damned slow (at least, back in the days it had a chance to catch on). Stroustrup designed C++ so that it did not have to be any slower than C (admitting that using certain of its features might sacrifice speed for elegence).

      I have seen many organizations facing that kind of decision over the years. C++ caught on in the 1980's and 1990's because it was cheap/free, interoperated perfectly with C, and required no retraining; whether the alternatives were fast or slow, better or worse, generally didn't matter.

    37. Re:.NET is a bit complex by Anonymous Coward · · Score: 0

      C# 3.0 gets extension methods to "inject" methods into classes you don't have the source code for.

      And once again, Microsoft plays catch-up to Apple. :)

    38. Re:.NET is a bit complex by Anonymous Coward · · Score: 0

      You might be thinking of the Java 2 Platform Standard Edition and the .NET Framework Class Library (or the Base Class Libraries, though maybe you don't know the difference yet). "JDK" is the name of some development tools from Sun, while "stdlib" is the name of a header from C.

    39. Re:.NET is a bit complex by Prothonotar · · Score: 1

      You responded to my simple statement that original object oriented languages, like Smalltalk, did, in fact, allow addition of methods outside the class, so this feature isn't some amazing new development.

      Followed by your statement "The restrictions in Java and C# are decidedly non-object-oriented, inherited from C++." That's what I took issue with. Later in the thread, you said this:

      Alan Kay said about this: "I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."

      Implying that C++ is not object-oriented, then you added:

      Inabilitiy to add new methods to existing classes is a huge deficit in C++, to this day. ...and finally:

      Misapplying the label "object oriented" to Simula-67/C++...

      Moving along...

      C++ is great for highly experienced teams developing certain kinds of high performance software, or for academics.

      How ironic it is then that C++ enjoys much wider-spread usage than Smalltalk (primarily used by academics) and Obj-C (primarily used by acamedics and MacOS X developers). ;)

      C++ caught on in the 1980's and 1990's because it was cheap/free, interoperated perfectly with C, and required no retraining; whether the alternatives were fast or slow, better or worse, generally didn't matter.

      Those were actually the intentions of its creator; I guess he got them correct. Sometimes the purist's idea of "better" does match the constraints the realists are looking for.

      That being said, there's been plenty that has held up C++ progress, such as ABI standardization, lack of high-level standard (de facto or de jure) library, garbage collection, etc. (Just because I prefer C++ for high-level programming in many cases doesn't mean I think the language or its deployment are perfect.)

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    40. Re:.NET is a bit complex by penguin-collective · · Score: 1

      Followed by your statement "The restrictions in Java and C# are decidedly non-object-oriented, inherited from C++." That's what I took issue with.

      The source of the problem is that the term "object-oriented" has changed its meaning. Object-oriented-1980 isn't the same as object-oriented-2005. The term object-oriented-2005 includes C++ and Simula, object-oriented-1980 does not. Object-oriented-2005 is a much less interesting term because it includes languages (like C++ and Simula) that lack important functionality that object-oriented-1980 languages have. I leave it to you to assign the correct values of object-oriented-1980 and object-oriented-2005 to the various statements in this discussion.

      Those were actually the intentions of its creator; I guess he got them correct. Sometimes the purist's idea of "better" does match the constraints the realists are looking for.

      Again, you're confusing the same term at different times. C++-1986 and C++-2005 are not the same language. Just because C++-1986 was a good design doesn't mean C++-2005 is. C++-1986 was good because it helped people cope better with mountains of existing C code, because of the computing environment at the time, and because the language was simple; that's why I chose it, for example. None of those constraints apply anymore. C++-2005 is only successful still because vendors and users have invested so much in it already. If C++-1986 or C++-2005 came onto the scene today as a new language, people would have a good laugh and not look twice.

      "C++ is great for highly experienced teams developing certain kinds of high performance software, or for academics."

      How ironic it is then that C++ enjoys much wider-spread usage than Smalltalk (primarily used by academics) and Obj-C (primarily used by acamedics and MacOS X developers). ;)


      Academics don't use either Smalltalk or Objective-C, and I wouldn't recommend you do either. Smalltalk simply illustrates a bunch of features that modern general purpose programming languages should have and that C++ lacks.

      And, no, the widespread usage of C++ isn't "ironic", it's sad. Using C++ for desktop and server applications is the reason we have so many programs with buffer overflows, security holes, and delayed ship dates. It's responsible for easily avoidable crashes and corrupt data. It makes software hard to change, hard to use, and hard to extend.

    41. Re:.NET is a bit complex by stripes · · Score: 2, Informative
      I don't see how this is any better than extending a class and overriding a method or providing a new on as you would in Java

      If you use a category add a method to a class in ObjC when someone passes you a object of that class (or I assume a subclass) it has that method and you can use it. If you extend the class in Java and someone passes you an object of the original class you can't use the new method. E.g. even if Java's string class were not final, adding a "encode to UCS-2 and frobnicate any combining marks" method to a subclass wouldn't let you call that method on string people pass you.

      In C++ the "way around" that is to use an overloaded non-member function. I don't recall being able to do anything like that in Java though.

  16. the Wow factor. by revery · · Score: 4, Insightful

    What has Apple done recently to wow the developers, and make it fun to code Cocoa components?

    When you pull in developers by "wowing" them, you get a certain type of developer. I certainly don't want my buildings and bridges built by engineers who were attracted to pastel concrete and click-and-deploy girders. Having said that, I realize that sometimes, small quirky apps written by "poet coders" can make a platform a lot more interesting, I just doubt that that's what causes innovation or platform acceptance.

    1. Re:the Wow factor. by aurumaeus · · Score: 1

      Ironically, I'd argue that there are more poet-coders writing fascinating little apps for Apple than for any other platform. See Dashboard.

    2. Re:the Wow factor. by Overly+Critical+Guy · · Score: 0

      Having said that, I realize that sometimes, small quirky apps written by "poet coders" can make a platform a lot more interesting, I just doubt that that's what causes innovation or platform acceptance.

      And OS X already has those fun, quirky apps anyway. Specifically because of Cocoa (well, and Dashboard too). And the fact that the Mac has an active shareware market you can actually make money in.

      --
      "Sufferin' succotash."
    3. Re:the Wow factor. by mj_1903 · · Score: 2

      It's not like Obj-C doesn't have a wow factor anyway. For starters you can create basically the entire interface of an application without writing a line of code by using bindings. What's even better is you know you will never see a crash in that code and it acts how a normal Mac OS X app should work removing tons of testing and freeing you up to do cooler things to sell your application. Secondly the ability to rapidly prototype a working application using the above glue code and the already built objects allows you a near unprecedented ability to experiment with the user interface. And finally I guess is what you get for free. Everything from Core Image to threading, it's all there and works perfectly every time. There are so many objects which I guess shows its age... if you need something then quite likely it has already been built or tacked on to an existing object allowing you to continue on and again produced the cooler items that sell your app.

    4. Re:the Wow factor. by Anonymous Coward · · Score: 0

      Comparing this to this makes me go WOW!!

  17. Objective C is hard to beat by brindle · · Score: 5, Insightful

    Objective C is a very good language. I has a lot of the atractive OO features and still it lets you get as close to the machine as you'd like. For example you can drop into C and do your own memory management for parts of the code where you are allocating and deallocating lots memory. You can also code in assembly if you feel the performance gain is necessary.

    Objective C appears to be a good development environment. Apple for example, has developed a lot of software in a short amount of time that is of very good quality: Safari, ITunes, Page, Keynote, mail...

    The ability of .Net to use any language is kind of sexy, but I'm not sure you are going to gann anything in the long run.

    -b

    1. Re:Objective C is hard to beat by jcr · · Score: 3, Informative

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Objective C is hard to beat by mrsbrisby · · Score: 2, Informative

      Actually, Safari is largely written in C++ (the KDE rendering engine)

      Actually, Safari IS written in Objective-C. So is WebKit. WebCore on the other hand is written in Objective-C++ (KWQ), and yes, includes a significant amount of C++ code (KHTML).

      I think this adequately demonstrates the flexibility of Objective-C: to be able to interoperate with C and C++ code on their terms, while C++ code can only interact with Objective-C the same way C can.

    3. Re:Objective C is hard to beat by jcr · · Score: 3, Informative

      You're splitting hairs, here. Safari is factored into an App and a couple of frameworks. The bulk of Safari is webcore.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    4. Re:Objective C is hard to beat by coolgeek · · Score: 1

      I disagree completely. Just because my app uses WebCore (to fetch web images for invoices) does not mean that the majority of my app is WebCore.

      --

      cat /dev/null >sig
    5. Re:Objective C is hard to beat by Chucker23N · · Score: 1

      Let's go ahead and split hairs! You said "bulk".

      The Safari bundle is 20 MB and is without doubt Objective-C, at least for the most part.

      The WebKit bundle, containing WebCore and JavaScriptCore, is only 13.6 MB. ;-)

    6. Re:Objective C is hard to beat by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:Objective C is hard to beat by penguin-collective · · Score: 1

      Objective C is a very good language. I has a lot of the atractive OO features and still it lets you get as close to the machine as you'd like.

      That's a nice combination, but Objective C's fundamental flaw is that it not just allows you to, but forces you to, get close to the machine--you must make decisions about pointers and memory allocation, whether you want to or not. Furthermore, the language lacks runtime safety: an error in any piece of code makes the entire application crash.

      Languages like C# give you the same combination of high level and close to the machine features as Objective C, but, unlike Objective C, they are safe and automated by default.

      I think the best thing for Apple would be to go back to the beginning and do what they should have done 20 years ago: move to Smalltalk as the programming environment. Smalltalk has all the good stuff of Objective C and none of the disadvantages.

    8. Re:Objective C is hard to beat by ceoyoyo · · Score: 1

      So use Python. Python is a first class language on OS X using the pyObjC bridge. Automatic access to all ObjC frameworks, both system and the ones you write yourself.

      This "objective-C is the only language you can use on OS X" is nonsense.

    9. Re:Objective C is hard to beat by Anonymous Coward · · Score: 0

      What is iTunes coded in?

    10. Re:Objective C is hard to beat by Anonymous Coward · · Score: 0

      Actually Safari uses Webkit.. so Safari is actualy written in Cocoa

    11. Re:Objective C is hard to beat by jiushao · · Score: 1
      On the other hand that is one of the strengths of using Objective C. There are a lot of very competent codebases in C and C++ which you might want to run on the platform. Writing the extra interface glue in Objective C is a very straightforward thing when the rest of the code is in C/C++, no special gains to be done from going "pure" one way or the other.

      .NET does try to make it as simple as possible to work together C/C++ and such classic platforms, but Objective C really has the edge when it comes to interoperability there. Throw in a small Objective C module to make it work nice on OSX and you are done.

      Assuming that the whole of the app is going to be tailored for your platform is a luxury that only Microsoft can afford (and I have my doubts there too). So Apple maximizes the pontential here; Use the most powerful language you can while still sticking close to C/C++ interfaces.

    12. Re:Objective C is hard to beat by GroovBird · · Score: 1

      I don't see how a language can be "first class" if you have to use a bridge. I don't think that's what "first class" means.

    13. Re:Objective C is hard to beat by penguin-collective · · Score: 1

      So use Python. Python is a first class language on OS X using the pyObjC bridge.

      Python is a scripting language, not a general purpose programming language.

      This "objective-C is the only language you can use on OS X" is nonsense.

      Yeah, so why are you stating such nonsense?

    14. Re:Objective C is hard to beat by bani · · Score: 1

      xcode is a bad example -- it is notoriously fragile. losing work from the xcode ui going poof in the middle of a session is not fun. neither is the xcode wrapper around gcc when it dies with internal errors.

      porting to osx was a real chore, far more than porting to win32. that just doesn't seem right somehow :-(

      then there are silly things in osx like linking a character based application vs carbonlib results in an application which refuses to run via remote ssh session unless a user is logged into the gui (carbonlib wants to access the gui even if the application doesnt). apple still hasnt heard of headless servers or something :-) :-(

    15. Re:Objective C is hard to beat by ceoyoyo · · Score: 1

      Well, your system libraries have to be written in one language right? So if you want to use them from a second language, you have to use SOME sort of bridge. I suppose if you say that only a single language can be first class on a given system then your position makes sense. Practically though, there's no difference between writing apps on OS X in Python and in ObjC, besides a bit of speed (which you're perfectly willing to sacrifice given your choice of an interpreted language) and differences between languages. That's how I'd define first class.

    16. Re:Objective C is hard to beat by ceoyoyo · · Score: 1

      Never used really used Python, have you? It is indeed a general purpose, object oriented, interpreted language. It makes a very good scripting language as well, yes.

    17. Re:Objective C is hard to beat by Anonymous Coward · · Score: 0

      You're the one who's splitting hairs. Yes, 90% of the code is in the rendering engine. But 90% of the user functionality is implemented in Cocoa. And in fact, 90% of THAT is implemented in Interface Builder.

      Which is kind of the point, isn't it? Cocoa makes it very easy for you to create GOOD user interfaces (and other kinds of interfaces) quickly and reliably, so you can spend the bulk of your time working on the behind-the-scenes stuff that makes your program worth using. And, if you want, you can use C or C++ for that behind-the-scenes stuff without having to worry at all about calling conventions or cross-runtime compatibility.

    18. Re:Objective C is hard to beat by Guy+Harris · · Score: 1
      What is iTunes coded in?

      Carbon:

      $ otool -L /Applications/iTunes.app/Contents/MacOS/iTunes
      /A pplications/iTunes.app/Contents/MacOS/iTunes:
      /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.2)
      /System/Library/Frameworks/Carbon.framework/Versio ns/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
      /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.0.81)
      /System/Library/Frameworks/IOKit.framework/Version s/A/IOKit (compatibility version 1.0.0, current version 271.0.81)
      /System/Library/Frameworks/QuickTime.framework/Ver sions/A/QuickTime (compatibility version 1.0.0, current version 47.0.0)
      /System/Library/Frameworks/vecLib.framework/Versio ns/A/vecLib (compatibility version 1.0.0, current version 182.0.0)
      /System/Library/Frameworks/AGL.framework/Versions/ A/AGL (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/OpenGL.framework/Versio ns/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/CoreAudio.framework/Ver sions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/AudioUnit.framework/Ver sions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/CoreServices.framework/ Versions/A/CoreServices (compatibility version 1.0.0, current version 18.0.0)
      /System/Library/Frameworks/SystemConfiguration.fra mework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/Security.framework/Vers ions/A/Security (compatibility version 1.0.0, current version 222.0.0)
      /System/Library/Frameworks/AudioToolbox.framework/ Versions/A/AudioToolbox (compatibility version 1.0.0, current version 1.0.0)
      /System/Library/Frameworks/AddressBook.framework/V ersions/A/AddressBook (compatibility version 1.0.0, current version 472.0.0)

      (note more the lack of Cocoa than the presence of Carbon - otool -L on Safari reports both Cocoa and Carbon).

    19. Re:Objective C is hard to beat by hkb · · Score: 1

      Specifically, iTunes is a Carbon app, and it wasn't written from scratch; it began life as "Jam" and was bought by Apple.

      --
      /* Moderating all non-anonymous trolls up since 2004 */
    20. Re:Objective C is hard to beat by bnenning · · Score: 1

      The Safari bundle is 20 MB and is without doubt Objective-C, at least for the most part.

      Actually it's mostly non-code resources. The Safari executable itself (Safari.app/Contents/MacOS/Safari) is 1.1MB, and the WebCore binary at (WebKit.framework/Frameworks/WebCore.framework/Ver sions/Current/WebCore) is 5.3MB.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    21. Re:Objective C is hard to beat by penguin-collective · · Score: 1

      Never used really used Python, have you? It is indeed a general purpose, object oriented, interpreted language. It makes a very good scripting language as well, yes.

      Python is, in fact, my favorite language for most day-to-day work. However, I'm not blind to its limitations, and it simply isn't in the same league as Smalltalk. It's not so much what the languages do (Python has a lot of neat features), it's how they are defined.

    22. Re:Objective C is hard to beat by ceoyoyo · · Score: 2, Interesting

      No language does everything perfectly, but to say Python is just a scripting language is not correct. It is a general purpose language, and a very good one at that. You probably don't want to code your MPEG4 transcoder in it, but it's wonderful for the GUI and general purpose stuff. Do your transcoding on the video card, combine it all using Python and PyObjC and you've got a great system.

      You can write apps on Mac OS X using Python that you can't distinguish from ObjC apps without inspecting the contents of the packages. Far better than Java in fact, since the .app is totally self contained -- a copy of the interpreter and all Python modules included.

      If you like Python and you have a Mac, try out PyObjC. It's my favourite development environment by far.

    23. Re:Objective C is hard to beat by Chucker23N · · Score: 1

      Good point (and I knew someone was gonna bring it up), but then, does size matter? ;-)

      Mac OS X's kernel, XNU, is written in C and C++. There is no Objective-C in it, nor Objective-C++. Yet many of Mac OS X's frameworks not only rely on Objective-C (or ObjC++), but also only offer APIs for that.

      So, does that make Mac OS X an operating system that doesn't rely on Objective-C? :-)

      I think for the most part, Mac OS X focuses on ObjC *almost* as much as NeXT Step did. I say almost because many commercial applications are still evolutionary ports from Mac OS Classic and therefore Carbon. Photoshop, BBEdit, MS Office, you name it. But the bulk of new applications and clearly the bulk of *Apple* applications is Cocoa and ObjC.

      Sadly, Cocoa bridges such as RubyCocoa never much mattered.

    24. Re:Objective C is hard to beat by pomo+monster · · Score: 1

      Surely the point is that all the stuff that makes Safari Safari--all the stuff that makes it so much more of a pleasure to use than Firefox or IE--is written in Objective-C using the Cocoa frameworks. The rendering engine is just the guts of the thing, and they're a dime a dozen these days.

    25. Re:Objective C is hard to beat by Darius+Jedburgh · · Score: 1
      I has a lot of the atractive OO features and still it lets you get as close to the machine as you'd like. For example you can drop into C and do your own memory management for parts of the code where you are allocating and deallocating lots memory. You can also code in assembly if you feel the performance gain is necessary.
      All of this misses the point. C++ allows you to write code that is similarly at a fairly high level of abstraction and yet that performs as well as C. There's no need to use silly coding styles where you use one approach for fast code and another approach for code whose performance you care less about. In fact, many of the ways of getting good performance out of C++ require you to use relatively high level techniques.
    26. Re:Objective C is hard to beat by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    27. Re:Objective C is hard to beat by NutscrapeSucks · · Score: 1

      IMO, Safari got to the head of the pack because it was the first Mac browser that wasn't dog slow. And that's mostly the rendering engine. IE/Mac had a lot more GUI features.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    28. Re:Objective C is hard to beat by jcr · · Score: 1

      I think for the most part, Mac OS X focuses on ObjC *almost* as much as NeXT Step did.

      I wish.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    29. Re:Objective C is hard to beat by pomo+monster · · Score: 1

      Nah. If we Mac users cared about speed, we'd have switched to Windows long ago. :)

      IE/Mac was a great OS 9 program, but when it got ported to OS X, the GUI just didn't fit in. Tastefulness is a pretty important GUI feature, at least to me, and IE was missing that essential quality on OS X. Firefox is still almost as bad. Safari and Camino are really the only OS X browsers that match Aqua.

    30. Re:Objective C is hard to beat by GroovBird · · Score: 1

      No, actually you don't.

      If your system libraries are written in a language that producese executable code of which the interface is based on common standards, then it can be called from any language that is capable of interfacing with these same standards. That way, you don't need to have a bridge. This may or may not be the case with Objective C, but sure isn't with Python.

      I can write libraries in .NET for example, using C#, and if I stick with the CLS compliant stuff for my interfaces, someone else can call them from VB.Net or JavaScript.NET without any need for a bridge, because they all produce executable code that follows a common standard.

      If a library is written in C, and is compiled into standard library format, or if it conforms to DLL specifications or it's a shared library, then I can call it from whatever language that produces the same sort of binaries and that can be linked with the library.

      But being a first class language is not what that means, in my opinion. I think a "first class language" means that it's supported by those who decide where to go with the operating system and its libraries. I suppose C is a first class language on many platforms, but it isn't on MacOS X because it's not the language promoted by the vendors of the product to which they pledge support.

      Of course you can give whatever meaning you want to the term "first class". It's a marketing thing.

    31. Re:Objective C is hard to beat by ceoyoyo · · Score: 1

      Okay, take CLS then. If I just got and write some random VB code, it won't work with your C++ code. I need .NET and CLS to make that happen. The compiler may well help me do it, in fact, it may do the whole thing, but it's still bridging between the two standards. With Python, since it's interpreted, this happens at runtime and it actually gives us a choice about what syntax we'd like to use. Do you want to call the straight Objective-C functions? Go ahead. Would you like to use this nice Pythonic interface we've designed for you? Go ahead. Sort of like with C++ calling C code. I can call the C functions directly, or I can write a C++ object to call them, then expose that object to the programmer so he can have an object oriented interface.

      I guess I take a more functional view of what "first class" means. I can do anything in Python on OS X that I can do in objective C. If I were using a language that cannot link to the Objective C system frameworks I couldn't use Cocoa, Interface Builder, CoreImage, CoreData or the high performance math libraries.

      Whether or not Apple officially promotes Python they've put a considerable effort into supporting it, and it works, very well.

      By the way, you can use C and C++ on OS X. That's what the Carbon libraries are for. Photoshop uses Carbon, for example.

    32. Re:Objective C is hard to beat by mrsbrisby · · Score: 0

      You're splitting hairs, here. Safari is factored into an App and a couple of frameworks. The bulk of Safari is webcore.

      I completely disagree:

      The fact that Objective-C is a strict superset of C, Objective-C++ is a strict superset of C++, and C++ is _NOT_ a strict superset of C is extremely important.

      The fact that Apple could leverage work written in C++ by the KHTML people is extremely important.

      The fact that so much functionality can be passed through WebCore via Objective-C in so little code is also extremely important.

      I think that's interesting that you bring up the "bulk" of anything- the fact that khtml, written in C++ is so gigantic while offering so little in the way of a functional interface whereas the WebKit/WebCore written in Objective-C and Objective-C++ are able to offer so rhobust and flexible an interface is extremely important.

      Finally, Safari's actual source size is unknown. What is known is the amount of code necessary to make a minimal web browser using WebKit versus KHTML. What is also known is the amount of code necessary to make a web browser as capable as Safari using WebKit versus the size of the web-browser parts of Konquerer as in KHTML.

      These hairs you refer to are extremely important and paint the absolute best light on Objective-C: That it helps people do hard things easier.

    33. Re:Objective C is hard to beat by feijai · · Score: 1
      No language does everything perfectly, but to say Python is just a scripting language is not correct.
      My benchmark for whether or not a language is a "scripting language" is its speed. Generally there's a trade-off between speed and rapid-development nicety. On that count, Python is way out on the scripting language end. In nearly all of my own tests, Python with psyco comes out just about 1/10 the speed of Java 1.4.2.

      As a result, I certainly wouldn't use Python for anything but the least demanding apps speedwise. That puts it way far in the scripting language category.

  18. application domains by rheotaxis · · Score: 2, Insightful

    Let your application domain suggest the development tools you need. Listen to art, science, and your own experience before listening to people who own lots of stock in giant corporations. They are motivated by the need to sell their own product first.

    --
    Software freedom...I love it!
  19. Learning ObjC/Cocoa (and others) now... by piyamaradus · · Score: 5, Interesting

    As an old-school programmer (20+ years of Fortran, C, various assembly languages, C++ many many years ago), who's spent the last dozen years or so focused almost exclusively on server-side high-performance networking systems (in other words, heavy-duty C/Unix/threading), I've taken my 'spare time' in the last few months to teach myself ObjC/Cocoa, Java, and some of the .NET technologies. I found it unfortunate that Apple deprecated Java + Cocoa in the last XCode release -- not because I particularly enjoyed Java but because it was easier to learn both Java and ObjC at the same time when I could be doing the same things with it.

    Comparing ObjC to what MSFT offers nowadays seems to be apples and oranges (no pun intended) and the learning curve is much different -- coming from straight C, ObjC is much cleaner, and I can slide more extensive Cocoaization in as I go. On the other hand, the ObjC syntax is a mess and weird for people who've never done Smalltalk ... and I'm guessing the set of people who have is extremely small nowadays.

    As for development environments, so far I've _hated_ everything to do with visual * -- it seems to be a monster to use, to customize, and to work with efficiently, at least for this old Unix hack. XCode is far far far from perfect -- I wish the SCM integration were better, that the whole thing were a _lot_ faster, and that they'd release incremental documentation updates rather than 250M batches every couple weeks -- but since it's all wrapped on gcc/g++/gdb/make at the back end, you can entirely do your stuff with vi/emacs/whatever at the command line and never use the GUI much at all, if that's your preference...

    1. Re:Learning ObjC/Cocoa (and others) now... by NutscrapeSucks · · Score: 0

      As an old-school programmer (20+ years) (...) coming from straight C, ObjC is much cleaner (...) I'm guessing the set of people who have (done smalltalk) is extremely small nowadays.

      Well, not that many developers come from "straight C" anymore either. College curriculums are heavily biased towards Java (and maybe C#), with OO C++ being the professional app language, and plain C is positioned as low-level or embedded language rather than an application language like Jobs is discussing. So, for the non-old-school, it's not clear that being rooted in C is a big plus it was 20 years ago.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    2. Re:Learning ObjC/Cocoa (and others) now... by andemann · · Score: 1

      I started with Perl and moved on to asp and vbscript. Worked a little with vs 6 and Visual basic, just got frustrated over the simple syntax (just like when working with AppleScript). Starting to develop with Visual Studio .NET and C# i learned to use C# very fast.

    3. Re:Learning ObjC/Cocoa (and others) now... by coolgeek · · Score: 1

      You got that all wrong, whipperschnapper. You would do well to visit C and see what you missed. I think you might just end up being pissed at your university for making C++ so much harder to learn by not teaching you C first. You have no idea how your "modern college curriculum" has deprived you from greater understanding of what is happening with the computer you are writing code for.

      On another point altogether, IMO Obj-C kicks C++'s ass as an OO language. Granted, Obj-C does not do multiple inheritance, a feature once I discovered it was missing, I thought I would have a hard time doing without. The workarounds I have had to implement instead have actually resulted in a more logical and cleaner object structure overall. So it turns out this single shortcoming is actually more of a benefit.

      --

      cat /dev/null >sig
    4. Re:Learning ObjC/Cocoa (and others) now... by thogard · · Score: 2, Funny

      At the end of the day I want a makefile and I'm going to keep using vi (or a good clone). I've recently converted all my last 5 years of documents (that I could still read) into LaTex. I've given up on the glitter and eye candy. I'm going back to the old school and I'm not coming back.

      The code I've written in the last 10 or so years thats still in production has been in either C, lex, yacc, perl or assembly. None of the C++, Java, Python, php, Visual Basic, Modula 2, or Pascal is still in production. If I go back back 20 years then I can add in Fortran and APL to the still running pile and an Ada module in the maybe list. I was recently contacted about someone wanting a new feature for a program that I wrote 23 years ago that was a hybrid C and GWBasic.

      I used to use computer 100% to get a specific task done. Now it appears that the thing has replaced the TV set as the thing to sit in front of. A modern desktop is too distracting. Email keeps showing up, IM is going off all the time and the calendar is reminding me of stuff that I don't need to pay attention to. The easy solution is turn off email checks but then what happens when the boss needs something urgently? The silly thing needs a "do not disturb" level feature that all programs respect.

      I've got programs that watch my every move and record how much time I spend on different projects and the time wasting on OS X is less than time wasting on Windows but its still a long way away from my efficiency on the old Blit terminal. I've been looking for a way to get OS X to tell me what the title is of the window that has focus that won't eat up all the cpu time.

      What I'm after is a hook I can build into `make test` that starts by turning on email, im, my todo list, enable /. on the proxy and then when make finishes turns it all off again. It would be even better if thats built into the IDE.

    5. Re:Learning ObjC/Cocoa (and others) now... by Anonymous Coward · · Score: 0

      Wow, aren't you l33t

    6. Re:Learning ObjC/Cocoa (and others) now... by rplacd · · Score: 1

      Applescript is the hook you want.

    7. Re:Learning ObjC/Cocoa (and others) now... by Anonymous Coward · · Score: 0

      The hook you are looking to use for Make is a shell script...

      Substitute make for a script calling make, which also does all of those other tasks, perhaps in response to an environment flag.

      Now what I want for OSX/Aqua is a function key combination (like that on Linux) where I can press ctrl-option-something and get a virtual VT-100 for my laptop. Effiecient if you are good at bash/vi/screen, and easy on the eyes.. I need to get around to making this.

    8. Re:Learning ObjC/Cocoa (and others) now... by Anonymous Coward · · Score: 0

      Objective-C looks nothing like Smalltak. The only similarity in syntax is the use of keyword arguments in message selectors.

      I think the real test to determine which Apple developers have never programmed in Smalltalk, is how readily they perpetuate the myth that Objective-C has anything visually in common with Smalltalk. The similarities between Objective-C and Smalltalk are more about semantics.

      Objective-C is a mediocre language. Actually, it's more like two languages: C and an embedded object language.

    9. Re:Learning ObjC/Cocoa (and others) now... by NutscrapeSucks · · Score: 0, Flamebait

      OK Geezer, time for the Alzheimer test. You've responded to two of my posts now, and both times you've exhibited severe mental frailness. Either that or your college curriculum has deprived you from basic reading comprehension.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    10. Re:Learning ObjC/Cocoa (and others) now... by pilkul · · Score: 1
      As for development environments, so far I've _hated_ everything to do with visual * -- it seems to be a monster to use, to customize, and to work with efficiently, at least for this old Unix hack.

      You have a point, but I don't know of any better C/C++ debugger than Microsoft's. gdb at least is a total pain compared to it. I always end up coming back to it for that reason.

    11. Re:Learning ObjC/Cocoa (and others) now... by gnuLNX · · Score: 1

      Piss on Makefiles. I have basically converted my entire project over to Jamfiles at this point. It was quite a pain, but wow is it ever easier to maintain than make files.

      As for the IDE debate. I used Kdevelop for quite awhile. Then ported my app to windows using visual c++. Finally gave up on both. Vi/Emacs are both simply better for fast coding. yeah you have to take the time to learn them, but they really are better. Combine Vi with bjam and you are golden. At least that is my current opion.

      --
      what?
    12. Re:Learning ObjC/Cocoa (and others) now... by man_of_mr_e · · Score: 2, Insightful

      Indeed. I think there are some kick ass comercial unix debuggers available (or so i've heard, haven't really seen them), but Microsoft's debugger has always been bone simple to use, though not very featureful.

      That's really changed with VS 2005, the debugger can be extended in many ways that leave your jaw laying on the ground. You can create custom "visualizers" to visual data structures in memory, and the popup "drilldown" features are a dream come true.

      Want to be able to visual your HTML data buffer? XML? Custom document? Images? the visualizers are really cool.

      For example, here's a regex visualizer:

      http://regex.osherove.com/Articles/RegexKit.html

      And here's an XML visualizer:

      http://blogs.conchango.com/howardvanrooijen/archiv e/2005/11/24/2424.aspx

    13. Re:Learning ObjC/Cocoa (and others) now... by drauh · · Score: 1

      Vi? Pah! Ed is the one true way!

      LaTeX? Luxury! I still use troff.

      --
      This is a tautology.
    14. Re:Learning ObjC/Cocoa (and others) now... by Pray_4_Mojo · · Score: 1

      I just want to chime in here and agree with the parent poster: Source Control Integration with XCode needs to be easier.

      The whole point of Apple's development environment is that you can *DO EVERYTHING* in XCode. Except set up a CVS or SubVersion repository (they could have a set up GUI) and importing your project into the repository via a bulk import (its problematic on XCode 1.5, had to upgrade to 2.1) .

      I know I'm just nit picking (I'm not afraid of the commandline and that's how i set up CVS and imported my project) but its Integration with unix tools like CVS and SubVersion, frankly, SUCKS. I want them to make it easier so I spend less free time configuring my development tools to work properly and more time USING my tools.

  20. they're all hard by Anonymous Coward · · Score: 1, Funny

    I've always had problems getting my turtle to move using both Objective-C and VS.net.

  21. Objective-C is well-done by Improv · · Score: 1

    Objective-C was unfortunately the path not taken when C++ was starting to take off. The syntax is a bit odd, but it does OO in a cleaner and more featureful way than C++. It's a pity that, even after all this time, it has not gained the popularity it deserves, especially given that there are new checklist items in recently-developed programming languages that it hasn't added to its resume, but it is still an excellent development environment that in its time was ahead of everything else out there (not unlike NeXTStep itself). I should disclaim that I am a former NeXTStep user/developer who moved on a very long time ago to more vanilla Unices, and now program in primarily in C, Java, and Perl.

    --
    For every problem, there is at least one solution that is simple, neat, and wrong.
    1. Re:Objective-C is well-done by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Objective-C is well-done by mrsbrisby · · Score: 1

      Actually, Objective-C is actually Object-Oriented, which generally means that the object itself knows what its doing, while C++ is Class oriented, which means that the class knows what its doing. Thanks to data encapsulation, C++ is really just an extremely complicated way to have a "this" variable passed to all the functions.

      That's not true.

      Overloading operators and "methods" and templates, and the four casts, and the complete lack of coding standards are all available in C++, and not with Objective-C. Whether this is a good thing or not is still in debate....

    3. Re:Objective-C is well-done by coolgeek · · Score: 1

      Objective-C was unfortunately the path not taken when C++ was starting to take off.

      My sentiment exactly the second day of working through Hillegass' book.

      --

      cat /dev/null >sig
    4. Re:Objective-C is well-done by smenor · · Score: 1

      I agree and like Objective C.

      The syntax really is a bit of a stumbling block for people coming from a Java / C++ / C# background, though. Unfortunately, most developers experience with object-oriented programming comes from a C++ lineage language and that makes Objective C seem unnatural.

      It took awhile for me to get used to the SmallTalk like message calls [object message] and dashes. After getting used to them, I realized how nice they are and really think it's a shame that C++ was the model for newer languages rather than Objective C / SmallTalk.

      Since there's a GCC front-end for Objective C, I would encourage any developers reading this to try it out sometime, if they haven't already.

    5. Re:Objective-C is well-done by John+Nowak · · Score: 1

      Not as simple as LISP? I'd argue it is much simpler. You can teaching Objective-C in a day (assuming C knowledge!), but even teaching proper use of Lisp macros could be a week for a solid introduction. It is true that Lisp is simpler on some level, but the implications of its simple mechanisms are very complex.

    6. Re:Objective-C is well-done by jcr · · Score: 1

      Not as simple as LISP? I'd argue it is much simpler. You can teaching Objective-C in a day (assuming C knowledge!)

      Exactly: "assuming C knowledge".

      You can't teach C in a single lecture, like you can with LISP.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:Objective-C is well-done by John+Nowak · · Score: 1

      You can't teach Lisp in a single lecture either! I think we have fundamentally different understandings of what is meant by "teach" here. :-) FP is a course in itself...

  22. Network Mirror by BushCheney08 · · Score: 4, Informative

    Network mirror still has the original blog post up.

    --
    Be a real patriot: Question authority. Think for yourself. Formulate your own conclusions.
    1. Re:Network Mirror by Anonymous Coward · · Score: 0

      Nice find!

      Interestingly, his first message to Jobs is just two short sentences, the second of which is simply "Objective C sucks." He's got to be quite pally with Jobs to get a polite reply to that kind of a message.

    2. Re:Network Mirror by Anonymous Coward · · Score: 0

      No,Jobs will reply to most emails if he's got the time.

  23. Dev tools plus/minus by boatboy · · Score: 4, Interesting

    As a .NET developer, I haven't looked too hard at Mac dev tools, but I will say I could see an argument that Microsoft's rich development environment has some unexcpected consequences. Microsoft has made it easy for just about anybody to pick up software development, and as a result, just about anybody has picked up software development. =)

    This can be good, but a downside is that some of the emphasis on design, best practices, etc. is lost. An office nerd who happens to get into VB is not traditionally pushed to think about things like standard UI guidelines. So in a sense the rich toolset can detract from good software. MS seems to be aware of this, and you can see a definite push for more guidance from them. Still, they have a ways to go IMO, and finding the balance between making development easy and making it "good" is difficult.

    1. Re:Dev tools plus/minus by Monkelectric · · Score: 1

      amen to that. I am stuck in that position at my work place. A bunch of electrical/mechanical engineers wrote a bunch of very critical software in visual basic which now is failing left and right. Not only are there no best practices, there is no documentation, no requirements specifications, nothing. We are stuck migrating all of this code to appropriate platforms by reverse engineering it.

      --

      Religion is a gateway psychosis. -- Dave Foley

    2. Re:Dev tools plus/minus by Anonymous Coward · · Score: 0

      > A bunch of electrical/mechanical engineers wrote a bunch of very critical software in visual basic which now is failing left and right.

      As has been said many times before, you can pay for professional developers *now*, or you can pay for them later!

    3. Re:Dev tools plus/minus by infosinger · · Score: 1

      The learning curve for Xcode was much steeper, but once I got there I found it much easier to use than VS .NET. The thing I miss most(probably the only thing) is the examples that are included in each help reference page on .NET. To find examples for Cocoa I usually have to prowl around the examples directories.

    4. Re:Dev tools plus/minus by Peter+Bonte · · Score: 1

      "As a .NET developer, I haven't looked too hard at Mac dev tools, but I will say I could see an argument that Microsoft's rich development environment has some unexcpected consequences. Microsoft has made it easy for just about anybody to pick up software development, and as a result, just about anybody has picked up software development. =) " You mean more virus writers?

    5. Re:Dev tools plus/minus by ElitistWhiner · · Score: 1

      This post cuts pretty close to the truth. MS has to produce tools that Industry needs. Industry doesn't need CS majors pulling down megabucks salaries just to keep the organization running. Industry needs $25K/yr, first-year grads who can do some programming. This is where I read MS .NET is on_target.

      Obj-C's real problem is that few have the resources of Jobs to make an Obj-C language play, strategic and cost effective. The few that do, Apple makes it impossible to "one off" your own objects without the obsolescence risk or license restriction into the future. Its at this point, decisions are made-safe and .NET et. al. get short listed.

      When Jobs says that Obj-C is perfect, in the service of Apple's interests the language_is_perfect.

  24. Xcode rocks. by wangmaster · · Score: 3, Interesting

    There are legions of NeXT fans that would disagree with your statement regarding .NET. The Interface Builder component has always been considered one of the most elegant, easy to use, intuitive UI constructing tools out there. It does what it needs to do, is well integrated into the rest of the tool (and the language) and just plain rocks. I have yet to use a UI layout tool that comes near the ease of use and effectiveness of InterfaceBuilder.app. When it comes to Xcode (or ProjectBuilder.app as the old NeXT fans were used to), it's also an intuitive, easy to use project management system. I don't like IDEs, I hate IDEs. I prefer vi/vim to do all my code editing. The nice thing about ProjectBuilder in old days (I'm not sure about Xcode, I haven't had the opportunity to do much with my mac mini yet) was that it did what I needed (collect all my files in a nice visual fashion, manage my building and integration with UI components, and built skeleton files). It does all those things well, without forcing the user to be hampered by some built in editor components. There are legions and legions of developers out there that consider the NeXT development tools to be the ultimate developer toolkit (and objective c is a pretty nice language). It's nice to see it didn't disappear into history :)

  25. Inane Question by Anonymous Coward · · Score: 0

    The question is inane and has been endlessly debated in the language flame wars on Slashdot. It is neither "News for Nerds" or "Stuff that matters". Both of these languages are tools to accomplishing a goal. If you like C# and .NET, then show us what you can do with it and impress us. Otherwise, stop inciting flame wars.

    rus

  26. WTF? by Anonymous Coward · · Score: 0

    Hey, there's no email thread on that page...

    Looks like it's been slashdotted!

    (Btw, "Objective-C gives you the full power of a true object-oriented language with exactly one syntax addition to C and a dozen additional keywords. Its power lies in its elegance and simplicity." -- GNUstep: Introduction)

  27. Qt? by Anonymous Coward · · Score: 1, Informative

    Use Qt and STFU. Qt is available on all major platforms natively and that includes MAC. It makes C++ development completely pain free and if your idea is that of hating C++, there are python bindings available and there will be supported Java bindings available soon. (Q1 2006).

    Plus, Java has been an alternative option that doesn't suck on only one platform - MAC. The UI looks native, the development tools are good (XCode, Eclipse, NetBeans ...). What else do you want - .NET? If so, there is Mono for ya on OSX.

    So what else does Jobs need to do and believe in?

    1. Re:Qt? by daBass · · Score: 1

      Unfortunately, Apple is no longer developing Java/Cocoa. And all the cool Mac stuff these days (CoreImage/Data/Audio) are Obj-C only.

    2. Re:Qt? by mrsbrisby · · Score: 0, Flamebait

      Use Qt and STFU. Qt is available on all major platforms natively and that includes MAC.

      Use GNUStep and STFU. GNUstep is available on all the major platforms natively, and MAC users can use Cocoa.

      It makes C++ development completely pain free

      Nothing can make C++ development pain free. Not with four casts, operator and function overloading, and templates.

      By the way, Qt isn't written in C++, and doesn't make it easy to write in C++- it makes you write in "moc" C++, which adds one of the best features in Objective-C to C++, while still managing to make it ugly and difficult to use.

      With GNUStep, you'll be writing Objective-C, which is actually very pleseant to use. There's a reason you never hear about C++ users that love C++: They talk about how "it's good for some tasks", or "they use python when not using C++" but there are tonnes of people who write the code you write in python in Objective-C, and do it faster and cleaner than you ever could.

      Yes, GNUStep runs on Windows, and with Yellow box (Dharma), you have yet another choice in what kind of cross-platform compatability you like.

      What else do you want

      How about a complete and coherant environment that works? That's why we want Objective-C. I highly recommend everyone try it. You'll find that there's a good reason people get more done faster with it, and there's an even better reason why people actually love it.

      So how about you STFU before you start telling everyone about all the other things they could use as long as they don't use Objective-C, and just realize that they use Objective-C because it is the best.

    3. Re:Qt? by iJed · · Score: 1

      Qt on the Mac looks anything but native! A swing Java app looks much much more native than Mac Qt!

      If you don't want people to use your app, use Qt on the Mac.

    4. Re:Qt? by Scarblac · · Score: 1

      Suppose I want to add Objective C to the list of languages I know a little about. My preferred way of doing that is to get a good book about it (and then play around a bit of course, but the book is the most important).

      Any good book recommendations? I guess "Programming Objective C" by Stephen Kochan, or is there a better one?

      --
      I believe posters are recognized by their sig. So I made one.
    5. Re:Qt? by jcr · · Score: 1

      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 only title of honor that a tyrant can grant is "Enemy of the State."
    6. Re:Qt? by Anonymous Coward · · Score: 0

      Now come out of history, will you? Qt3 didn't look native, but check out Qt4 - looks and feels and acts the same as any other "native" Cocoa app.

    7. Re:Qt? by Anonymous Coward · · Score: 0

      Did you know that there are more C/C++ and Java Developers than there will ever be Objective-C developers? Learning an obscure programming language is not everyone's idea of fun. Plus not every one wants to stick to single platform. For such professionals, Qt is the best bet.

      Don't crack jokes like GNUStep runs on Windows and with Dharma you have another choice - talk something real which exists, is supported and is proven and widely used on that platform.

      Objective-C might be Ok for the ones who are already up to speed with it - no one will ever want to switch to that language newly. People have less time for such wasteful excercises in obscurity.

    8. Re:Qt? by bnenning · · Score: 1

      Unfortunately, Apple is no longer developing Java/Cocoa.

      Not unfortunate at all. Java was never a good fit for Cocoa because it's insufficiently dynamic. (For example, every ObjC method had to be manually exposed as a Java native method, because Java has no way to intercept unknown method calls at runtime and forward them to other objects). Check out PyObjC which gives you full access to Cocoa from Python.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    9. Re:Qt? by daBass · · Score: 1

      Nah, I'll stick with Obj-C. I have nothing against it (well not enough, anyway) and apart from pure Cocoa, like I said, all the cool things like CoreImage and WebKit are Obj-C.

    10. Re:Qt? by Weedlekin · · Score: 1

      Agreed. And one can still write Java apps that have the full Mac "look and feel", because the direct Swing / Aqua bindings are supported, and will continue to be. IMO this is a far more sensible use for Java than the bridge was anyway: the whole point of using Java is being able to target multiple platforms from a single code base -- as you say, there are a number of better alternatives for writing native Mac stuff that don't try and shoe-horn a dynamically-typed framework into a statically-typed language.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    11. Re:Qt? by mrsbrisby · · Score: 1

      Did you know that there are more C/C++ and Java Developers than there will ever be Objective-C developers?

      I think you use the term "developer" a lot more loosely than I do.

      For example, Objective-C is a strict superset of C, and thusly anyone who writes C can and is writing Objective-C. In contrast, C++ isn't a strict superset of C, and it's barely C-like in anything but it's name. As a result, only people writing C++ are writing C++.

      Worse: QT isn't even written in C++, but an incompatible superset of C++ that I believe is called "moc" - a translator that brings some of the features of Objective-C to C++ programmers.

      Furthermore, most of these people writing C++ and Java aren't what I would call developers.

      Learning an obscure programming language is not everyone's idea of fun.

      Fortunately it's enough peoples' idea of fun: Without you wouldn't have C++ or Java which both started as seriously obscure.

      You promote QT and yet the QT language (moc) has even less developers than Objective-C?

      Plus not every one wants to stick to single platform. For such professionals, Qt is the best bet.

      You are confusing the term platform: QT is a single platform that happens to run on more than one operating system. *step is also a single platform that happens to run on more than one operating system- and in fact, runs on more systems than QT.

      It's also written using a language (C or Objective-C) that is better understood than moc.

    12. Re:Qt? by mrsbrisby · · Score: 1

      You really should just dive into it.

      Install GNUstep on your system, along with ProjectBuilder.app and Gorm.app - then take a look at the many example programs- the calculator and text editors are really excellent and terse examples.

      Look at the Objective-C FAQ for comp.lang.objective-c

      If you have any C-background, Objective-C will be a snap- you just see lines like this:

        [foo bar:z baz:m];

      and mentally translate them into something like:
        SEL bar_baz = sel_get_any_uid("bar:baz:");
        IMP foo_bar_baz = objc_msg_lookup(foo, bar_baz);
        foo_bar_baz(z, m);

      and remember: sel_get_any_uid() and objc_msg_lookup() are extremely fast and often cached. Of course the Objective-C code (with the square-brackets) is easier to read.

      Eventually, you stop translating them and just start reading as "send the bar:baz: message to foo with the bar=z and baz=m arguments" and things become easier.

  28. No garbage collector by plopez · · Score: 1

    When I first got my Mac I did a few small projects in Objective C. From where I was sitting, it looked like some of the C++ like problems of garbage collection and proper invocation of destructors were still present.

    Having grown used to garbage collection under Perl, .Net and Java I found that to be a 'deal breaker'. Machine time is getting cheaper as we speak. Programmer time is very expensive, however. So trading garbage collection overhead for more efficient programmer use (no need to chase down dangling references or improperly called destructors) is a good trade, IMO.

    --
    putting the 'B' in LGBTQ+
    1. Re:No garbage collector by Svartalf · · Score: 2, Insightful

      Garbage collection is a bad thing in many cases...

      GC causes all kinds of load spikes that can bog down end user apps and blow server apps clean out of the water. GC makes things "easier" for the developer at the expense of overall performance. But, with at least C++, there are ways of accomplishing the same thing without needing a GC subsystem spooling up CPU cycles- smart pointers handle most of the same features that GC does in a safe and efficient manner. The code knows when a variable has dropped out of scope (it's compiled into the code itself...) and frees memory as opposed to a separate thread of execution periodically polling all the active objects to see which ones have dropped out of scope.

      --
      I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    2. Re:No garbage collector by the+eric+conspiracy · · Score: 3, Interesting

      GC does not necessarily cause load spikes - as modern Java collectors have proven it is possible to to do GC without machine pauses.

      On the other hand, smart pointers fall well short of what Java offers - since smart pointer based software typically suffer from reference count bugs, and don't handle references loops. And doing the memory collection inline rather than in a seperate thread is a real disadvantage - but then it isn't like C++ has a threading model anyway.

      C++ really suffers in many ways by not having modern GC and threading support. It is really starting to look like modern technology is passing it by. THis is becommng more and more of a problem as processors become increasingly parallel.

    3. Re:No garbage collector by tsnorri · · Score: 1

      From the cc man page:
      -fobjc-gc
      Enable garbage collection (GC) for Objective-C objects. The resulting binary can only be used on Mac OS X 10.5 (Leopard) and later systems, due to additional functionality needed in the (NeXT) Objective-C runtime.

    4. Re:No garbage collector by Decaff · · Score: 1

      GC causes all kinds of load spikes that can bog down end user apps and blow server apps clean out of the water. GC makes things "easier" for the developer at the expense of overall performance.

      This used to be the case, but the performance of modern Java VMs shows this is definitely not the case these days. Java VMS don't get blown up and don't suffer load spikes, and the garbage collection is so efficient that Java can be (and is) used effectively for real-time and time-critical applications.

    5. Re:No garbage collector by bani · · Score: 1

      What GC does do is add uncertainty to scheduling of realtime apps. This is a focus of much research in GC, because right now it's a showstopper which is preventing some languages from being used in realtime applications.

      GC today is much better than say 10 years ago when java was new, but it's a fundamental problem that is _still_ being worked on.

    6. Re:No garbage collector by IamTheRealMike · · Score: 1
      Ref-counting definitely has a performance impact, except it's a "death by a thousand cuts" type impact which is difficult to measure, so people don't, and they end up with this warm fuzzy feeling that it's free relative to GC.

      I've looked at Cocoa, briefly, because I have a Mac-nut friend who wanted to learn programming. So he downloaded their tutorial. Oh my god, I have never seen such a convoluted tutorial in all my life. And Obj-C the language is far from "perfect" in my eyes: combine all the faults of C with the weird syntax of Smalltalk, along with a horrifically slow implementation (Mach-O inter-library jump for every method call!), and you get something that whilst it has many virtues is far from being perfect.

      But it doesn't surprise me Jobs has such a bizarre attitude. The man IS bizarre, a study in contradictions. He clearly hasn't done much programming himself in the last 10 years if he truly believes Cocoa is state of the art, and the dropping of Java/Cocoa support in recent OS X releases can only be a side-effect of this warped worldview. But what do you expect from "visionary" billionaires?

    7. Re:No garbage collector by gnuLNX · · Score: 1

      "On the other hand, smart pointers fall well short of what Java offers - since smart pointer based software typically suffer from reference count bugs, and don't handle references loops."

      Yeah you need to kinds of smart points.

      boost::shared_ptr
      boost::weak_ptr

      They work great and they give you the good parts of garbage collection without the bad parts.

      --
      what?
    8. Re:No garbage collector by sl3xd · · Score: 1

      More programs than realtime have this fundamental problem with garbage collection.

      Take a massively parallel program (such as an MPI program on a thousand-node cluster). The jitter induced by garbage collection causes a huge decrease in systemwide efficiency, and as a result, the app runs much slower than it would on a non-GC language.

      Cosidering the cost of running these systems, runtime is more expensive than a developer's time, and as a result, it's much more cost-effective to use an 'old fashioned' language like C, C++, or Fortran.

      --
      -- Sometimes you have to turn the lights off in order to see.
    9. Re:No garbage collector by Svartalf · · Score: 1

      For most applications, that might be the case, but it still injects bizarre loading behaviors in Real-Time apps, massively parallel apps, and high frequency data processing (i.e. the Stock Markets...) apps. I know, I develop code for the last category, and any Java apps we write (and we do write code IN Java as well as C++) avoid doing any code that does any dynamic allocations- otherwise we get little spikes (And, this is with modern JVMs...) that cause us to drop packet traffic like mad. JVMs don't do GC in a nice manner when you deal with data streams that swallow an OC-3 whole.

      Don't get me wrong, GC's a nice thing to have- IF you can have it. For many problem sets, which actually comprise most of what goes for software engineering, GC's not a viable answer. For that matter, C++ is a tough call as well. C's better for many of those tasks as is something like Forth. If you think that a given tool is suitable for all tasks, you'd be mistaken. If you don't like dealing with something that doesn't do GC, then you probably ought to stay away from dealing with systems level programming, embedded systems, or HPC coding.

      --
      I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    10. Re:No garbage collector by Svartalf · · Score: 1

      It might be a death by a thousand cuts impact on performance, but unlike GC, it can be precisely and predictably controlled, GC can't. Therefore, if you're talking hard real-time tasks where late answers are failures, GC is a BAD idea as it soaks up CPU cycles because you're largely unable to do a task while memory's being GC'ed. Really, there is a place for all the different types of memory management, and trying to JAM one of them through that is utterly unsuitable for the task at hand is why we have the train wrecks we do in the IT industry.

      --
      I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    11. Re:No garbage collector by Decaff · · Score: 1

      For most applications, that might be the case, but it still injects bizarre loading behaviors in Real-Time apps, massively parallel apps, and high frequency data processing (i.e. the Stock Markets...) apps. I know, I develop code for the last category, and any Java apps we write (and we do write code IN Java as well as C++) avoid doing any code that does any dynamic allocations- otherwise we get little spikes (And, this is with modern JVMs...) that cause us to drop packet traffic like mad. JVMs don't do GC in a nice manner when you deal with data streams that swallow an OC-3 whole.

      This is interesting, as I know that there are Java VMs that really do handle real-time apps with no problems whatsoever - I guess they must be specially tailored ones.

    12. Re:No garbage collector by IamTheRealMike · · Score: 1

      Oh sure, I'm not saying GC should always be used for everything. There are places where it's not appropriate. But, in nearly all the places Objective-C is appropriate I'd say GC is appropriate.

    13. Re:No garbage collector by stripes · · Score: 1
      [...shared_ptr and weak_ptr...] They work great and they give you the good parts of garbage collection without the bad parts.

      Well a lot of the good points. But, it isn't pervasive like a real GCed language, so you may have to interface with code that doesn't use it (and has leaks or unhappy ways to use it). It also actually has a higher (but more predictable) cost.

      It also has some advantages over GC the perceptibility isn't just for CPU load, the exact lifetime of objects is predictable, which is very useful for RAII. E.g. a shared_ptr to a lock object will destruct exactly when the last reference goes away releasing the lock...on a GC system the destructor fires "sometime" after the last reference goes away. Very useful with exceptions and other complex control flow.

  29. email by Anonymous Coward · · Score: 0

    From: Nitesh Dhanjani
    Subject: Re: Will XCode+ObjC ever suck less?
    Date: December 25, 2005 5:27:02 PM CST
    To: sjobs@apple.com

    I look forward to the improvements! Thanks,

    Nitesh.

    On Dec 25, 2005, at 5:10 PM, Steve Jobs wrote:

    I guess we disagree. First of all, .NET with CLI and managed code runs SLOW, so most serious developers can't use it because of performance. Second, the libraries in C# are FAR less mature and elegant than those in Cocoa. We are working on a better implementation for garbage collection than we've seen out there so far, but in the end its a performance hit and an unpredictable time that is not good for some kinds of apps.

    Steve

    On Dec 25, 2005, at 2:36 PM, Nitesh Dhanjani wrote:

    Objective C is old and clunky. Its almost 2006, and I _still_ have to look out for yucky pointers? I'd love to be able to write native apps with Ruby (or even C#!.) There are open community projects in progress that are trying to bind ruby and C# (mono) with Cocoa, but I'd love for Apple to step in and make this happen faster. Today, Microsoft seems to be _way_ ahead of the development curve - with their .NET implementation, you are allowed to code using a plethora of languages (C#, Python, VB, etc), as long as the interpreter/compiler follows the IL specification - pointers don't matter, garbage collection is done for you - ah the beautiful world of managed code.

    Having said that, most native OSX apps are still beautiful and well designed. Imagine how much better we could do if the developers had a more flexible choice of languages? I can _bet_ you a lot of OSX app developers use Objective C because they have no other choice.

    Nitesh.

    On Dec 25, 2005, at 3:11 PM, Steve Jobs wrote:

    Actually, Objective C is pretty great. Its far nicer than most other ways of writing apps. What don't you like about it? What do you like better?

    Steve

    On Dec 25, 2005, at 11:59 AM, Nitesh Dhanjani wrote:

    Hi Steve

    Will it ever be easy to write native OSX GUI apps? Objective C sucks.

    Thanks,
    Nitesh.

  30. Every time the ObjC/C++ discussion comes up... by squarooticus · · Score: 4, Insightful

    ...I fire back with the almost-certainly-true statement that "You don't know C++ well enough to judge its value as a language."

    I have been coding in C++ for about 15 years; I have seen the language evolve over that time; and while there are aspects that I don't like, for the most part I think C++ is wonderful and natural to program in, as long as one takes the time to design API's in an extensible way. This is no different from any other language, though C++ certainly gives you more rope if you are already inclined to hang yourself; but, OTOH, the extra slack makes it possible to type-safely do things that cannot be done in languages without multiple inheritance or parametric polymorphism.

    FWIW, the same is true of me for Objective C: I can make only the most shallow, uninformed observations about it, so I generally avoid doing so. Perhaps one day I'll learn it so I can make an informed judgment about it, but until then, I'll keep my mouth shut.

    --
    [ home ]
    1. Re:Every time the ObjC/C++ discussion comes up... by Colonel+Panic · · Score: 1

      ...I fire back with the almost-certainly-true statement that "You don't know C++ well enough to judge its value as a language."
      I have been coding in C++ for about 15 years;


      The problem is it takes about 15 years to really get to know C++.

      With Objective-C, if you know C you only need to learn a couple of syntax additions. Objective-C does OO much more like Smalltalk: method dispatch is determined at runtime, not a compile time. This makes Objective-C much more dynamic than C++.

    2. Re:Every time the ObjC/C++ discussion comes up... by bhima · · Score: 1

      Forgive me if I'm wrong but I don't think this is a ObjC vs. C++ as much as it is Managed .Net vs. XCode (and then by extension ObjC) and the core question being does Apple stand to gain more that the cost of developing an managed code extension to XCode. I've never used MS Visual Studio at work so I don't really know but I presume that all the available languages in the current flavor can be managed or not. I have to admit I like using ObjC... well that I and I don't really mind FORTRAN.

      --
      Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
    3. Re:Every time the ObjC/C++ discussion comes up... by squarooticus · · Score: 2, Insightful

      Objective-C does OO much more like Smalltalk: method dispatch is determined at runtime, not a compile time.
      So does C++: they're called virtual function tables.

      Unless you mean that in ObjC the possible methods for an object are not available at link time, in which case type safety is not available. I don't know enough about ObjC; perhaps you can explain it to me succinctly?

      Kyle

      --
      [ home ]
    4. Re:Every time the ObjC/C++ discussion comes up... by Colonel+Panic · · Score: 2, Informative

      So does C++: they're called virtual function tables.

      true. However, this sort of dynamic dispatch is limited to objects which are members of a certain inheritance hierarchy. In Obj-C, when a message is sent to an object the determination of whether or not that receiver can respond to the message is determined at runtime. It doesn't matter that the receiver is a member of a particular class which inherits from some class which defined some virtual functions.

      With virtual functions in C++ it's sort of a cross between compiletime and runtime: The receiving object must be a member of a certain class hierarchy with the virtual functions defined in a parent somewhere. If you try to pass a class pointer of the wrong class (meaning it's not part of an exclusive hierarchy) then you'll get a compile time error. In Obj-C on the otherhand, we don't care what the class pedigree of an object is as long as it can respond to the message being sent (or to put it another way, as long as it's interface matches the expectations of the user).

      Perhaps it could also be said that virtual functions are C++'s hack to allow limited dynamic dispatch. But it's not as dynamic as what is possible in Obj-C (or other very dynamic OO languages like Smalltalk and Ruby).

    5. Re:Every time the ObjC/C++ discussion comes up... by penguin-collective · · Score: 4, Insightful

      "You don't know C++ well enough to judge its value as a language."

      Ease of learning is an important part of language design.

      I think C++ is wonderful and natural to program in, as long as one takes the time to design API's in an extensible way

      The amount of effort a language forces you to invest up-front in design decisions is also an important factor to consider.

      Personally, I think C++ is a great language--but only for specialty applications and very skilled programmers.

      For most mainstream desktop applications, people are better served with Python, Visual Basic, or Smalltalk, precisely because those languages are easier to learn and require less experience to use well.

    6. Re:Every time the ObjC/C++ discussion comes up... by jcr · · Score: 1

      "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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    7. Re:Every time the ObjC/C++ discussion comes up... by jcr · · Score: 2, Insightful

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    8. Re:Every time the ObjC/C++ discussion comes up... by Mattintosh · · Score: 1

      Ugh.

      C++ is easy to learn. Damn near impossible to master, but very easy to learn.

      I started off with QBASIC. VB was just strange when I started playing with it, but not impossible to deal with. I learned some other useless crap for a while (COBOL, Pascal, RPG).

      Then I got to C. The syntax took some gettting used to, but almost instantly, it made sense. Braces set off blocks of code. Functions wrap up a single task into a single place so you don't have to keep putting the same stuff in your main code block. Operators don't have to be a single character. Logic operators are useful. Standard I/O is not a given; it has to be included if you want it. Pointers are used because you don't really care where data is, just that you can get to it when you need it. Arrays are just pointers to the first item. Suddenly it all was clear: you can do anything with C. So if you can do anything with C, what the heck is this C++ stuff?

      So I started learning about C++ and OOP and overloading and inheritance and all that good stuff. I looked back at C and thought, "Wow, I thought I could do anything, but I was so wrong." C++ syntax makes as much sense as C's does, only this time, there are a few added constructs (classes, obviously). So if you can do more than anything with C++, why would you need Java?

      So I started chunking away learning Java. And I learned the answer to the above question: "You don't. Java just mucks things up and screws the nice, clean OO principles you learned all to hell. It wrecks any control you might have over your objects and forces you to do things in Sun's One True Way. Fuck Java." So with Java out of the way, I went on hiatus from programming. I couldn't get a job in the industry without moving a long way away from my family, so I simply gave up programming for a time. I tried a bit of Objective-C (I'm a Mac guy, as if you couldn't tell from my username) and found it to be wholly confusing, as it lacked that familiar and sane C-style syntax. Then I stumbled across PHP. So, if you can't do shit with Java, and C++ is supposedly falling by the wayside, what does PHP offer?

      PHP offers two things: a job in the industry, and experience as to why you should love C++. PHP's OO stuff is shaky and weird. It works well enough, if you stick to a few principles: (1) don't pass objects around, only pass scalar types (2) don't use static members, because PHP is kinda shitty (3) design is everything, if you don't have a decent object model, your app is screwed. So... if PHP is kinda shaky but taught me all of this... could it work for C++?

      I'm still trying to answer that question. In the meantime, C++ is coming back to me very quickly, and it's showing a lot of improvement due to proper design. It's kinda odd how you have to hit the bottom of the barrel before you know how to get out. No, wait, the bottom of the barrel would've been Perl. Sorry.

    9. Re:Every time the ObjC/C++ discussion comes up... by Alioth · · Score: 1
      So does C++: they're called virtual function tables.

      They don't work for 'new' though. You can't, say, trivially replace something halfway in the inheritence tree in a library you're using (and have it replace it in all instances of the code). With Objective-C, I can override methods in the base NSObject *for code I do not even have the source for* by writing a category. My own version of NSObject will get made instead. The ObjC runtime is so much more than C++ virtual function tables.

      There is a way of doing this in C++, it's called 'exemplars' (and was written about in James O. Coplien's hideous book 'Advanced idioms in C++ programming' - title paraphrased, because I don't remember what it is exactly, other than this is the first book I read that managed to make an interesting subject seem about as interesting as paint drying - his writing style is simply terrible). But that only does you any good if the code you're using has been written that way. Exemplars, in any case, feel very much like a big hack (and they are).
    10. Re:Every time the ObjC/C++ discussion comes up... by penguin-collective · · Score: 1

      C++ is easy to learn. Damn near impossible to master, but very easy to learn.

      Nice quip, but it doesn't change the facts: languages need to be easy to learn and easy to master. C++ is not, and that's a big problem with the language.

    11. Re:Every time the ObjC/C++ discussion comes up... by Karma+Farmer · · Score: 1

      the extra slack makes it possible to type-safely do things that cannot be done in languages without multiple inheritance or parametric polymorphism.

      Beautiful troll. I'll admit that I'm not a big fan of the hideous macro language that C++ has used to simulate a cirppled, limited compile-time-only version of parametric polymorphism, but I do admire anyone who can pretend to be fond of it.

    12. Re:Every time the ObjC/C++ discussion comes up... by cpu_fusion · · Score: 1

      >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?

      I like your analogy on the surface, and this may be somewhat off topic, but let me supply another analogy:

      Bread-lines are to communism what Diebold is to (representative) democracy.

      A broken implementation far more representative of the corruption of those in power than the ideals of the system. It is truly sad that the ideals of communism and socialism are tainted by Soviet corruption in the same way that (representative) democracy will be tainted by the ongoing corruption in the U.S.

      Anyways, good analogy otherwise ;)

      And to put this back on track for Objective C vs. C++, I'd weigh in having used both by saying that I find myself far more productive in VM environments that focus on references and GC. Reliability, security, and stability trump performance.

    13. Re:Every time the ObjC/C++ discussion comes up... by Leimy · · Score: 1

      C++ has changed by leaps and bounds since 89... In fact, I know very few people who are even slightly interested in it for OOP.

      That said, I still think it's a freaking mess and that you'd be far better off learning Lisp of Haskell for a well thought out language.

      C++ has evolved... and it shows. It's got some really pointy edges you can cut yourself on.

      Objective-C is a pretty decent OOP language extension for C... I just hate having to do reference counting myself.

    14. Re:Every time the ObjC/C++ discussion comes up... by gnuLNX · · Score: 1

      No. That is a big problem for people who are asked to develop large applications that are compute intensive and are to damned lazy to learn a Hard langauge.

      Why must people resort to one or the other? Why not combine C++/Python. Or C++/Ruby. You get the quick dirty hacks form the scripting languages to test ideas and then you get the power of C++ to re-write the backend in a computationally efficient manner IF YOU NEED to.

      Oh I no why? It is hard. Yeah but it is worth it. Most things in life that are worth it are hard. C++ is a touch language to master. Deal with it. Programming is a tough profession to master.

      --
      what?
    15. Re:Every time the ObjC/C++ discussion comes up... by tbien · · Score: 1

      Just because you call something communism it certainly must not be communism. Communism is until this day nothing more or less than a fundamental and true critique of capitalism. You might want to try to simply read up some of Marx' writings (http://www.marxists.org/archive/marx/works/1867-c 1/). Communism and the reality in states like the Soviet Union have no more in common than a bread and a piece of concrete...

    16. Re:Every time the ObjC/C++ discussion comes up... by Ohreally_factor · · Score: 1

      No, wait, the bottom of the barrel would've been Perl. Sorry.

      I'm reminded of the Alcoholics Anonymous saying, "You've hit bottom when you stop digging."

      Note: I am not a programmer, and I have friends that use Perl and don't seem to damaged in any way.

      --
      It's not offtopic, dumbass. It's orthogonal.
    17. Re:Every time the ObjC/C++ discussion comes up... by HuguesT · · Score: 1

      In 1989 ObjC was a much better OO language than C++ but the world has moved on since C++ was simply an Object Oriented Language.

      Personally I think C++ in 1989 was far less defensible than it is now. Compare the NIH Class library of 1990 or so with the 1998 ISO C++ Library, in particular the STL, or far more interestingly the BOOST libraries.

    18. Re:Every time the ObjC/C++ discussion comes up... by penguin-collective · · Score: 1

      Why must people resort to one or the other? Why not combine C++/Python. Or C++/Ruby.

      Because those kinds of systems are a maintenance nightmare and because training costs for them are far too high.

      C# and Objective C both had the right idea, by combining a high level language with low-level escape hatches. C#'s problem is its bloated runtime (in .NET and Mono), while Objective C's problem is its lack of runtime safety.

      Hopefully, Apple will take C# as a challenge to develop a version of Objective C that keeps Objective C's advantages while separating safe and unsafe code better.

    19. Re:Every time the ObjC/C++ discussion comes up... by mcc · · Score: 2, Informative

      Unless you mean that in ObjC the possible methods for an object are not available at link time,

      Correct.

      in which case type safety is not available. I don't know enough about ObjC; perhaps you can explain it to me succinctly?

      You are actually almost right. The way to put it should be that type safety is available but not required. Method type safety is a compile-time warning, not a compile-time error, because while a program which passes the type safety checks is guaranteed to function without type errors at runtime, a program which fails the type safety checks is not guaranteed to encounter type errors at runtime.

      If this sounds "bad", consider it in context of what happens when a type safety violation does occur at runtime-- the object is given a chance to deal with the "method not found" error itself, in the form of a forwardInvocation: method call basically saying "hey, I tried to execute the method named 'blah' on you and it didn't work"; if that fails, an exception occurs. The penalty for a type error is not all that bad, especially compared to what happens in this point in C++ (you get a messy crash). Also consider that while compile-time type safety is not totally accurate, there is also run-time type safety available which is much more accurate. All objects accept a respondsToSelector: (methodSelector) method which basically ask, "do you accept this method?", and this method has the ability to determine side-effects of dynamic dispatch that the compiler could not.

      These are somewhat advanced techniques within Objective C, and one should not be running programs which emit type safety warnings unless you really know what you're doing. However, when used correctly these things are quite powerful. Performing type safety checks at runtime instead of compile-time allow objective c libraries to leverage the Delegate pattern in a way most languages can only dream of; an objective c object can accept any other object as a delegate, and then simply say "do you accept this method? if so, run it. if not, never mind". In Java, the analogous construct would require a potentially very messy use of interfaces and probably a lot of blank methods to satisfy those interfaces. ForwardInvocation: allows even stranger and more interesting constructs, for example "proxy objects"-- Objective C offers a concept called "distributed objects" which are much like Java RMI, except that distributed objects lack any of the stub hassle and are in fact entirely transparent to any code interacting with the distributed object in question.

      (Full disclosure: Absolutely everything I describe above as an advantage in Objective C can be fully implemented in Java by use of the reflection classes. However, people rarely take advantage of this, perhaps partly because the reflection classes are not very fun to use, and perhaps partly because the Java reflection functionality is quite slow.)

    20. Re:Every time the ObjC/C++ discussion comes up... by GnuDiff · · Score: 1

      Communism and the reality in states like the Soviet Union have no more in common than a bread and a piece of concrete...
      Which is pretty much, actually.
      As somebody who has spent his first 15 years of life in the SU, and today reads Marx et al for the 19th century German philosophy course, I must say it sure looks to me like the SU was a pretty good example of communist ideas applied to the reality. When Marx declared himself materialist, he sure was being idealistic about that.

    21. Re:Every time the ObjC/C++ discussion comes up... by Geoffreyerffoeg · · Score: 1

      I gave up on C++ in 1989

      1989? Hm, wasn't that before STL? Boost? Templates? The latest version of iostream? wchar_t? Leaving off the .h? Before people started using C++ in operating systems (Windows, Linux, etc.)? When there were still active 16-bit computers?

      And if indeed those features were present in the language standards, it's not like too many compilers supported them in 1989. I know modern compilers that struggle with them, and compilers from just 5 years ago that don't support some of those features.

      If your memory of C++ reminds you of C, I respectfully ask you to look at it again.

    22. Re:Every time the ObjC/C++ discussion comes up... by jcr · · Score: 1

      1989? Hm, wasn't that before STL? Boost? Templates?

      Exactly. That's why it was more defensible then.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    23. Re:Every time the ObjC/C++ discussion comes up... by jcr · · Score: 1

      Bread-lines are to communism what Diebold is to (representative) democracy.

      The difference being that bread lines were pervasive throughout the soviet union for all of its history, while the diebold voting machines are a recent problem which is being vigorously fought in court.

      It is truly sad that the ideals of communism and socialism are tainted by Soviet corruption

      The true ideals of Communism and Socialism have always been vicious misanthropy, cloaked in the language of compassion. To paraphrase the Bible, by their body-counts shall ye know them.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    24. Re:Every time the ObjC/C++ discussion comes up... by jcr · · Score: 1

      I wouldn't say that C++ has "evolved" so much as "metastasized".

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    25. Re:Every time the ObjC/C++ discussion comes up... by gnuLNX · · Score: 1

      "Because those kinds of systems are a maintenance nightmare and because training costs for them are far too high."

      Actually mainentance costs are minimal on these kinds of systems. Training levels are at a minimum. Usually one person exports the various C++ classes to Python. Python coders/application devleopers code in python. C/C++ guy's code the backend. Once the basic integration system is implace coding is much faster than on pure compile language systems. You also get the benefit of being able to quickly move computationally expensive parts of your code to a compiled language while still maintaining the useability of Python/Ruby etc.

      For more information on this approach you should check:

      http://www.boost-consulting.com/writing/bpl.html

      As an aside many computataional chemistry companies are taking this appoach. Mine included (Dynamol).

      --
      what?
    26. Re:Every time the ObjC/C++ discussion comes up... by Anonymous Coward · · Score: 0

      Ah, yes. The old "but that wasn't REAL communism" red herring.

      So tell me: why is it that not ONE of the so-called "Marxist" states has ever managed to "get it right"? Why does it devolve into slavery, starvation, and mass-murder EVERY SINGLE TIME?

      Hmm... maybe because communism DOESN'T FUCKING WORK?

      Ya think?

    27. Re:Every time the ObjC/C++ discussion comes up... by sickofthisshit · · Score: 1

      1989? Hm, wasn't that before STL? Boost? Templates? The latest version of iostream? wchar_t? Leaving off the .h?

      I can't speak for jcr, but I gave up on C++ around 1992, when it became clear the Stroustrup was going to announce, with every new feature, that it was "essential" to programming in C++, hinting that the design up to that point had been half-assed, even after several major feature additions.

      Template meta-programming is impressive, in the sense that it allows people to do computation using the C++ compiler as something just above a Turing machine. This was not obviously part of the design of templates, but the fact that the C++ crowd crows about this "feature" of the language just goes to show how little they care about actual language design.

      Folks, life is much easier when meta-programming is done with a real, honest-to-goodness programming language, instead of gross hack of a mechanism originally intended to provide limited type genericity.

    28. Re:Every time the ObjC/C++ discussion comes up... by tbien · · Score: 1

      You're just a troll who doesn't know anything Marx did write about. For a start communism doesn't even mention the concept of a "state". And for slavery and starvation just take a look at the history of capitalism and colonization.

    29. Re:Every time the ObjC/C++ discussion comes up... by Anonymous Coward · · Score: 0

      Marx called for a popular revolt against the rulers, not a parody of it imposed from above at gunpoint. AFAIK the only time this has ever happened was Nicaragua, which was actually off to a fairly promising start until the US gave the nearest thugs enough support to take over and wreck the country. Everywhere else turned into a police state hellhole because that was the goal of the guys in charge. Any would-be dictator knows enough to make themselves sound like a communist, or a theist, or a racist, or a nationalist (whichever is more likely to appeal to the population at the moment) but it's just a charade.

    30. Re:Every time the ObjC/C++ discussion comes up... by Scudsucker · · Score: 0, Flamebait

      Ah, yes. The old "but that wasn't REAL communism" red herring.

      But there has never been a pure laissez faire capitalist state, so your point is stupid.

      Why does it devolve into slavery, starvation, and mass-murder EVERY SINGLE TIME?

      Oh? And how many communist countries have done this recently? And if you're willing to bring up stuff that happened decades ago, it is perfectly fair to do the same for capitalist democracies - colonialism, slavery, Japanese internment, slaughter of native americans, and so on and so on.

      Ya think?

      Maybe you should take a history course and try it sometime.

  31. Yay for Objective-C, Boo for X Code by Anonymous Coward · · Score: 0

    I honestly feel I can adapt to most programming languages with easy. Objective C was quick to pick up, but most of my frustrations were with X Code. I'd love to see an environment like Eclipse for Objective C and Cocoa.

    1. Re:Yay for Objective-C, Boo for X Code by Anonymous Coward · · Score: 0

      I honestly feel I can adapt to most programming languages with easy.

      What is this "easy" of which you speak? Is it some kind of brain upload thing like in The Matrix? Where can I get one?

  32. Resources by fm6 · · Score: 1
    I've looked into the Objective C and Xcode environment but compared to Microsoft's .NET solutions, it doesn't impress me at all. I think Apple can do a lot better.
    Sure it can — as long as Apple is willing to spend as much as Microsoft spends on Visual Studio for a user base that's a tiny fraction of the size.

    I'm not saying you can't compete with Microsoft. But there's an advantage that Microsoft has that gives them a huge advantage, and that nobody seems to want to consider: Economies of Scale.

    1. Re:Resources by daBass · · Score: 1
      as long as Apple is willing to spend as much as Microsoft spends on Visual Studio for a user base that's a tiny fraction of the size

      And don't forget Apple gives theirs away for free, while MS charges an arm, 2 legs and several vital organs for Visual Studio, let alone an MSDN membership.

    2. Re:Resources by thogard · · Score: 1

      Have you seen any figures of how much Microsoft spends on IDE development vs Apple? Some of the figures can be dug out of of the annual reports but Microsoft seems to include far more of the other support costs in that group. Maybe someone can dig out the info?

    3. Re:Resources by bani · · Score: 2, Informative

      i hate m$ as much as the next /.'er, but you're wrong on both counts.

      MS gives theirs away for free, too.

      MSDN membership is comparable to the price of ADC, when you compare the same ADC and MSDN levels. (msdn level 1 costs $500, level 2 costs around $1500).

      one really annoying thing about apple -- I can use the latest versions of microsoft visual c on my clunky old W2K installation just fine (no way in hell am i "upgrading" to xp!). however apple's latest xcode requires me to upgrade osx -- it won't install on osx 10.3.9. it will only install on osx 10.4, and i can't see any good reason for it. this means for apple, i have to shell out $130 just to be able to upgrade xcode.

    4. Re:Resources by minniger · · Score: 1

      If you get the 500$ ADC membership you get a shiny cd with 10.4 on it, and a monthly update of DVD/CDs.

      And a black t-shirt.

      And one hardware discount at the apple developer store. If you're buying a new high end machine it's pretty much the only deal you'll get.

    5. Re:Resources by bani · · Score: 1

      wow with an ADC membership I get a whole $20 off a mac mini, $100 off an ibook, or $130 off an imac. color me impressed.

    6. Re:Resources by minniger · · Score: 1

      Urr and about 600 off a quad, and something like 150 of a 23in cinema...

      It adds up after a while. Note that i said a NEW HIGH END SYTEM. not a mini. not an ibook. And >I just re-read my post. I certinely wasn't being a fanboy about it. Was just pointing out that you do get something from it.

      Whattya want? They are macs. Good luck finding any bigger discounts on them.

    7. Re:Resources by bani · · Score: 1

      Good luck finding any bigger discounts on them.

      Well yeah, this is the other major problem with apple. The core hardware is single-sourced.

    8. Re:Resources by daBass · · Score: 1

      If you call a crippled version that is only free for one year the same as giving away your flagship product, then yes, you are right, Visual Studio is free too.

      ADC ain't free, you are right. But the point is, you CAN develop on a Mac (like I do) with the same tools - not some crippled version - as the rich folks without paying a dime over the price of your hardware + OS.

      And the cool thing is, with so much GPL software integrated into XCode (GCC, gdb, etc) there is no way they'll ever be able to charge for XCode.

      But if you do pay, you get OS X 10.4 included, no paying for an upgrade required, just like MSDN.

    9. Re:Resources by bani · · Score: 1

      even "crippled", it has miles more functionality than xcode.

      it's certainly more stable than xcode by far.

      it's a much better ide than anything on linux (sadly). and yes i have tried them all.

      metrowerks codewarrior is the only thing which comes close. and metrowerks sealed their fate (at least on osx) when they sold off their x86 c compiler.

      one other thing. i can cross compile on linux targeting win32 with mingw. this is incredibly convenient and a major time saver. i can build multiple targets (linux/win32) from one devel machine.

      there's no way to cross compile for osx. so much for flexibility? bah humbug.

    10. Re:Resources by Ohreally_factor · · Score: 1

      On the other hand, if you were buying a top of the line G5 with a 30" Cinema Display, you'd be getting a very impressive discount that would more than cover the price of the ADC membership. You're not impressed because you're thinking small.

      --
      It's not offtopic, dumbass. It's orthogonal.
    11. Re:Resources by daBass · · Score: 1

      I work with VS at work, XCode at home. I much prefer XCode, probably because it has less functionality. Just because one product has more functionality, doesn't make it a better way to develop.

      The XCode/NIB/Cocoa/Obj-C combo isn't very beginner friendly, but it does force you into a proper MVC framework from day one. There is no simply double clicking a widget and writing your logic in all the wrong places; it forces you to think about these things.

      Plus you don't find Cocoa code filled with TextField324, Class189 and Button17897632! :)

      Now if only it gave me a tabbed editor!

      XCode has yet to crash one me once, so I am not sure where you "stabilty" comment comes from. My experience is the opposite, actually. Plus the number of times I had to shut down VS because it locked some DLL I had to replace with a new version, those might as well be counted as a crash.

      Different strokes for different folks, I guess.

    12. Re:Resources by daBass · · Score: 1

      I think the key difference is that with all the MSDN subscriptions out there, Visual Studio is probably a profit maker for Microsoft.

      Apple only makes their money back only by people buying their boxes to run software on developed by XCode users.

    13. Re:Resources by bani · · Score: 1

      the stability comment comes from porting enemy territory (and other stuff) to osx.

      xcode ui blew up all the time, and the xcode wrapper around gcc would die all the time with internal errors.

      in the end i used pico and scons, because i was tired of losing work from xcode blowing up on me.

      fwiw my contacts at id software had similar comments about xcode. "doggie poo" was the most common.

      most longterm mac developers i know prefer codewarrior, too bad it's all but dead now.

    14. Re:Resources by bani · · Score: 1

      developers are not made of money (which i believe, was the point behind developer discounts).

    15. Re:Resources by Ohreally_factor · · Score: 1

      Then why in hell are you considering that level of ADC membership? Have you looked at what you can get for the $0 level? Or the student ADC membership (if you're a student)?

      If you are a professional developer earning money, you can certainly afford whatever equipment you need or want for the job and can afford to pay for a higher level of developer support. If you are a hobbyist or a student on a budget, maybe you don't need that higher tier of support anyway.

      The point to developer discounts is to encourage development, not completely subsidize it. Tell me, does MS subsidize hardware purchases?

      --
      It's not offtopic, dumbass. It's orthogonal.
    16. Re:Resources by bani · · Score: 1

      Then why in hell are you considering that level of ADC membership?

      Because I am not. I was refuting the parent poster's claim that microsoft charges and arm and a leg for developer membership and tools while apple does not.

      MS doesn't have to subsidize hardware purchases; PC hardware generally isn't overpriced like apple hardware is.

    17. Re:Resources by Ohreally_factor · · Score: 1

      MS doesn't have to subsidize hardware purchases; PC hardware generally isn't overpriced like apple hardware is.

      Now you're just trolling.

      --
      It's not offtopic, dumbass. It's orthogonal.
    18. Re:Resources by daBass · · Score: 1

      Ah, that would be the difference then, I have not ported anything, just straight Cocoa from scratch.

      I guess Metrowerks felt quite stupid when Apple anounced the intel switch. Oh well, at the same time they were probably rejoicing about XBox 360 going to a POWER architecture, meaning they could sell their dev tools to PS2 and XBox 360 developers alike.

    19. Re:Resources by Anonymous Coward · · Score: 0

      With the release of XCode, Apple made it pretty clear it was going to eat MW's Mac business. Apple does one thing well, and that's eat its ISVs' lunches.

  33. Old-time Objective-C advocate by bfwebster · · Score: 1

    Objective-C probably remains my all-time favorite programming language (from some 30 years of programming) simply because it was so clean: ANSI C with a handful of syntactical and semantic extensions for OO development. I used it professionally for 5+ years and found it a delight (compared to, say, C++).

    On the other hand, it's been 10 years since I did any Obj-C coding, so I don't know how the current Obj-C implementation compares to the current implementations of Java and C#; there may well be features in Java and C# that I'd be unwilling to give up to go back to Obj-C.

    I remember hearing a rumor back in the early 1990s that Microsoft considered Obj-C for its nascent Visual development tools, but ended up going with C++. Sigh. ..bruce..

    --
    Bruce F. Webster (brucefwebster.com)
    1. Re:Old-time Objective-C advocate by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  34. Mangaged code good | .Net / Mono Bad by bhima · · Score: 2, Interesting

    The idea that the OS X development environment should include the option of using managed is code is fine (although I shudder to think just how much work this truly encompasses). But I haven't yet seen the real benefit of using .Net or Mono while I have successfully used Objective C.

    I think sometimes we get caught up in the tinkering with latest wizbang language and loose sight of the fact that if we simply paid attention and used the languages we already know we could solve whatever we are programming much simpler.

    Over the winter break I have run into two miserable examples of this...

    ONE the program Autopano-sift (100% managed C# code developed using mono) This program does nothing couldn't be done in C++ and little that couldn't be done in C. I've lost count of the megabytes I've downloaded to access the functionality of a program that has no cause to occupy much over a half meg... it's like having the bloat of windows and the user friendliness of circa '92 Linux all at the same time.

    TWO Canon and the "software" that accompanies their cameras, specifically the 350D AKA Digital Rebel XT. I am very interested in controlling that camera by computer (any computer) so I have also signed up for their development program. So I can tell that all of the canon software that came with my camera was developed with the current version of Microsoft Visual Studio and also uses the SDK canon uses to obfuscate the camera's true API. Because of the user interface and some truly bizarre design decisions this is the worst software I have ever installed on any of my computers. With the possible exception being Arcsoft's image management application which was also included. I must admit, I have seen Arcsoft's applications before and while technically they work... the user interface is so poor and has such arbitrary limitations as to make it unusable, so this is not really surprising. Bottom line... sending a few hundreds of kilobyte of data through a USB should be easily accomplished by an 8 bit Microcontroller mounted on a board the size of my thumbnail... and IT IS NOT... thanks to manged code.

    --
    Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity.
  35. There is no perfect language by bratboy · · Score: 1
    Visual Basic is great for creating prototypes and simple apps. Game developers generally use C++ with assembly and microcode. Web apps are written in PHP, Ruby, Java, Python, JavaScript, Flash, etc. The point is choice - if you have a big tool chest, and if you've been willing to stretch your mind and learn how to use each of the tools, then you'll know what is most appropriate for the situation. Single language zealots (like single-platform zealots) generally haven't taken the time to learn more than one tool.

    Having said that, since most of us haven't read the email thread, we have no way of knowing what SJ was really saying.

    1. Re:There is no perfect language by tbien · · Score: 1

      I strongly disagree... Common LISP is a perfect language. :-)

  36. Jobs thinks a lot of things. by Anonymous Coward · · Score: 0

    Correct me if I'm wrong, but as far as I've heard he can be a pretty neurotic fellow, subject to *ahem* exaggerated statements such as this.

    Granted, I do think that objC has many strengths over C++, and I do think it's a shame that most Mac developers have adopted Carbon or CoreFoundation instead of the NS* classes. The Mac had a potential for a pretty good development platform and I think many of the developers blew it.

    It was also silly of Apple to get rid of the Java bindings to Cocoa.

  37. Objective C was a neat idea in the 80's BUT... by halfdan+the+black · · Score: 1, Flamebait

    It is a really outdated 'language' today compared to Java, C#, and even C++.

    If you look closly to objective C, it is really not a language, it is just C with a enhanced macro pre processor.

    Performance is ABYSMAL compared to any modern language because message sends (the objective C equiv of a method call) has to go through a dispatch map. This is how it works:

    1: you send a message to an object like [anObject doSomething]; this sends the doSomething message to the anObject object.

    2: under the covers, this calls a function called regular function called objc-msg-send, this is part of the Objective C runtime.

    3: this function looks up the object, then looks up the dispatch table to see if if can accept this message, then finally invokes it.

    Overall, objective c message call performance is comparable to Javascript.

    Now, of course you can just call C functions, but then what is the point of objective C?

    Modern languages like Java, C# provide all the dynamsism of objective C, but do it effciently thougth vtables and reflection.

    For a while I thought about porting some software we have to the Apple platform (it is currently written in C#), but with the abysmal performance of Objective C, the portion of the app turned out to be not usable (this is a parser that needs to make several thousand method calls per second). We ended up porting it to Java, and performance was a bit better than the original C# version.

    So, while Objective C was a neat idea in the 80's, it is time to move on Apple.

    Objective C was a great idea in the 80's but it is time to move on. Steve Jobs, why don't you try some Java?

    1. Re:Objective C was a neat idea in the 80's BUT... by joto · · Score: 4, Insightful

      This looks all good in theory. Fortunately, the objective C developers have thought about the problem, and they have come up with a solution that is quite fast. So in the real world, and objective C message send is about 2x-3x as slow as a C function call. Which is not too bad. The obvious implementation you hint at, would probably be more like 50x-100x slower. Fortunately, it's not the one that's used in practice, and I doubt you will ever find it in an objective C compiler (unless you were to write one yourself, just to prove your point).

    2. Re:Objective C was a neat idea in the 80's BUT... by caerwyn · · Score: 3, Interesting

      "Now, of course you can just call C functions, but then what is the point of objective C?"

      The point of any programming language is to give the developer the tools they need to efficiently (programmer time + machine resources) accomplish the goal they set out to do. No more, no less.

      Not using C functions simply because objective-C has methods is ridiculous; the language has the direct functional call built in for *exactly* the reason you're discussing. I write performance code for simulation data display in Objective-C; it simply requires a little thought into what functions require absolute maximum performance (and can therefore tolerate the lack of flexibility) and what functions (such as GUI functions) are better off with the dynamism that Obj-C methods provide.

      I don't care what language you're programming in, but if you completely ignore one of the tools that the language provides you and then claim that the language sucks, it's difficult to lend any credence to your opinion.

      --
      The ringing of the division bell has begun... -PF
    3. Re:Objective C was a neat idea in the 80's BUT... by fpillet · · Score: 5, Insightful
      Overall, objective c message call performance is comparable to Javascript.
      You haven't written any real code with Objective-C, have you ? I have a couple commercial apps written in full Obj-C and I can tell you that what you're saying is plain wrong. The message dispatcher is fast, uses caching techniques, and in case you have a really tight algorithm that neeeds to send millions of messages to perform some computation, you can always get the IMP pointer to the final address instead of going through the dispatcher. But I certainly never felt the need for that.

      A dumb developer will write bad code in ANY language. And of course, he'll blame the language ;-)
      Now, of course you can just call C functions, but then what is the point of objective C?
      ... or what's the point in any OO language, when you can code in straight C? Exactly the same: designing and structuring your code. The single selling point with Objective-C / Cocoa is the NSAutoreleasePool mechanism. This mechanism is like a garbage collector finally done right.
      Modern languages like Java, C# provide all the dynamsism of objective C, but do it effciently thougth vtables and reflection.
      Reflection is insanely costly to use. Actually MS recommends to avoid it if you can, especially on mobile platforms. Besides, are you saying that Java or C#, both JITted languages, are faster than Objective-C ? Think twice. Microsoft itself says that C# is slower than the less optimized C compiled code you can find. And I have yet to see a Java app doing anything significant that is not slow as molasses.
    4. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 0
      with the abysmal performance of Objective C, the portion of the app turned out to be not usable (this is a parser that needs to make several thousand method calls per second).


      You are either a troll, or you are badly misinformed.

      On PPC, Apple's Objective-C runtime can do about 20,000 message sends per MHz per second. Other runtimes have similar performance. This means that on a 1GHz machine, you can do 20 million message sends per second. If you couldn't even make "several thousand method calls per second", that means your computer must have been even slower than the Commodore 64 that I started programming with.

      Cocoa apps routinely make tens or hundreds of thousands of message sends per second. Cocoa apps routinely spend less than 5% of their execution time in objc_msgSend(). Cocoa apps are still capable of being fast. Your objection is a wild departure from reality.
    5. Re:Objective C was a neat idea in the 80's BUT... by metamatic · · Score: 4, Interesting
      If you look closly to objective C, it is really not a language, it is just C with a enhanced macro pre processor.

      C++ started out as C with a special preprocessor. So what?

      Performance is ABYSMAL compared to any modern language because message sends (the objective C equiv of a method call) has to go through a dispatch map.

      I'd be interested to see some up-to-date figures to back up your assertion. GCC 3.1 gave a 2x speed increase in method dispatch, and GCC 4.0 has -fobjc-direct-dispatch.

      msgc_ObjSend without the GCC 4.0 optimization is 22 cycles. Somehow I doubt that's really your big performance issue.

      Modern languages like Java, C# provide all the dynamsism of objective C, but do it effciently thougth vtables and reflection.

      This is the usual Java/C++ argument of 'There is no value in dynamic typing, because I can write a program that does the same thing using static typing'. Well, yes, and I can write a program that does the same thing in machine code, but that doesn't mean high level languages have no value.

      Some of us like having introspection, metaclasses, true parametric polymorphism and so on, without having to implement ugly workarounds. Personally, I think that ubiquitous (implicit) dynamic typing is a major aid to code reuse and software development agility.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    6. Re:Objective C was a neat idea in the 80's BUT... by uwmurray · · Score: 3, Informative

      Dude you're nuts. Have you even *looked* at gcc's objective C support and the runtime or are you just pulling this out of your ass? Obj-C messages are highly optimized and incur about 2x-3x the overhead of C function calls.

      Objective-C / Cocoa has it's warts, speed is not one of them.

      As slow as javascript my ass. I doubt you've ever coded in obj-c. Please study a bit before you spread this kind of FUD.

    7. Re:Objective C was a neat idea in the 80's BUT... by halfdan+the+black · · Score: 1

      msgc_ObjSend without the GCC 4.0 optimization is 22 cycles.

      This might be true in an absolute best case scenario, compare this with a method call in Java, C#, C, C++, etc). Here you depending on the architecture, for a static function, push the function adress on the stack or load the function adress in a register, push or load each function argument, and do an unconditional branch. For a virtual function, it takes another 2 - 3 instructions to get the function adress from the vtable. So, even for a virtual function, you are looking at around 5 instructions for a function call.

      The message send overhead in objective c is in the absolute best case a 2 - 3 times slower than Java, C#, C, C++, and in the worst case 20 times slower.

      even in the best case of a 2 - 3 times slowdown, this will kill performance in a loop where you call numerous other functions (msg sends in the case of objective c).

      Now I did not even mention the lack of gargbage collection in objective c. C/C++ are great languages for operating systems and performance intensive libraries. Java / C# are great for applications. Objective C pretty much sucks at everything.

    8. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 0

      Objective-C does not have true parametric polymorphism. It doesn't even have true ad-hoc polymorphism. Objective-C has a terrible type system, stemming from the fact that it's basically a DSL embedded within C without any type unification. As for Objective-C, the GNU runtime has a slower dispatch than Self.

    9. Re:Objective C was a neat idea in the 80's BUT... by Alioth · · Score: 2, Interesting
      Overall, objective c message call performance is comparable to Javascript.

      That's highly inaccurate. The ObjC runtime is not as fast as a function call in C, I'll grant you that. However, it isn't that slow - see my signature for a 3D OpenGL game written in Objective C. Objective C overall is certainly faster than Java, and orders of magnitude faster than Javascript.
    10. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 0

      Obviously you have never used Objective-C. If you actually write a program to test method call overhead, it is about 2x slower than a standard C function call. Of course, 99% of code doesn't need this tight of performance for the calling overhead to even be an issue. For the 1% case where it matters, Objective-C can call standard C functions at full C performance.

    11. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 1, Informative

      There is not a single modern architecture where one instruction equals one cycle. This is particularly wrong when discussing Java or C#, where it will depend heavily upon your VM, JIT compiler, and how much optimizing it has decided to do. In any case, your estimates are highly optimistic to say the least.

    12. Re:Objective C was a neat idea in the 80's BUT... by IamTheRealMike · · Score: 2, Informative
      The single selling point with Objective-C / Cocoa is the NSAutoreleasePool mechanism. This mechanism is like a garbage collector finally done right.

      I must strongly disagree. In no sense is the auto-release pool equivalent to garbage collection. For one, you still have to think hard about memory management in any complex application - for temporary objects that are just part of the internal works of a function, they work OK, but then stack allocation works better. For actually passing objects around inside a program they don't work at all and you must still manage refcounting and ensure there are no refcount cycles.

      For those who have not encountered this particular construct (which is not unique to Cocoa), an NSAutoreleasePool basically keeps memory around until the main loop is reached. So you can allocate objects inside one and not worry about freeing them, as long as they don't have to survive beyond this particular event. It's a bit more involved than that : there are stacks of them, and you can create them and flush them manually outside the context of a GUI thread. But it's a bit of a cludge and not a substitute for full automatic memory management (though I would agree that a language which forces you to use GC for everything is not suitable for implementing desktop applications).

    13. Re:Objective C was a neat idea in the 80's BUT... by IamTheRealMike · · Score: 1
      msgc_ObjSend without the GCC 4.0 optimization is 22 cycles. Somehow I doubt that's really your big performance issue.

      The expensive part is not so much the function itself, it's the jump into the standard runtime library. Dynamic linking always imposes overhead for inter-library function calls, however the best implementations reduce it to an instruction or so in the best case (for ELF after lazy linking is complete, it's basically one jump opcode). Unfortunately MachO is not a terribly well designed format and the cost of an inter-library jump is far higher there, so the cost of an Objective-C method call is actually not only the instructions inside msgc_ObjSend (or whatever it's called) but also the time required to get there and back.

    14. Re:Objective C was a neat idea in the 80's BUT... by tbien · · Score: 1
      Modern languages like Java, C# provide all the dynamsism of objective C, but do it effciently thougth vtables and reflection.

      They do not. No strong typed language can do that. Reflection is a PITA. I you want a dynamic language use a dynamic language.

    15. Re:Objective C was a neat idea in the 80's BUT... by fpillet · · Score: 1
      In no sense is the auto-release pool equivalent to garbage collection. For one, you still have to think hard about memory management in any complex application - for temporary objects that are just part of the internal works of a function, they work OK, but then stack allocation works better

      No, it's not at all like stack allocation. It's an order of magnitude better. I think the retain / release mechanism in Objective-C is quite intuitive. Moving to using it requires to change the way you think code (and this alone is a major benefit). And once you've tasted refcounted objects, you don't want to look back (I wonder how I could survive all these years of C++ without them built in the language).

      There are two major good things with NSAutoreleasePool. First, you have full freedom to use it or not. You can choose to release your objects when you want it, instead of deferring to the current autorelease pool. Second, if you choose to autorelease, you know that the final collection is going to happen soon (before the end of the current event cycle) and maybe even sooner.

      though I would agree that a language which forces you to use GC for everything is not suitable for implementing desktop applications

      That's exactly my point. Objective-C and Cocoa give you the best of both worlds: the convenience of garbage collection, and the flexibility and freedom of manual memory management.

      I stick by what I said: NSAutoreleasePool is garbage collection done right. Instead of relying on the system (which will eventually have to stop your application for a certain length of time to collect the zillion of objects that stick in memory), you are guaranteed that collection happens at very close and regular intervals.

      It's not full garbage collection the way it is done in other languages like Java and C# and IMHO this is a major benefit.
    16. Re:Objective C was a neat idea in the 80's BUT... by HuguesT · · Score: 1

      Some of us like having zero-overhead generic container classes. It comes in rather handy in practice.

      There is no such thing as a perfect language.

    17. Re:Objective C was a neat idea in the 80's BUT... by metamatic · · Score: 1

      Mach's dynamic linking overheads apply to all languages, though, not just Objective-C.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    18. Re:Objective C was a neat idea in the 80's BUT... by metamatic · · Score: 1

      It seems to me that people are saying "Don't use Objective-C, it has [list of defects], use C++ or Java"--and ignoring that C++ and Java have most or all of the same defects.

      e.g. C++ and C don't have garbage collection either, and Java has wretched performance. (I can only think of one Java application that approaches the responsiveness of a native Objective-C Cocoa application; and why the hell is ANT so goddamn slow, even compared to Rant?)

      If you have an application where you need a tight loop calling a particular piece of code, and profiling shows that Objective-C overheads are significant in that case, then you optimize that piece of code to remove the overheads. That doesn't mean Objective-C is too slow for use; worrying about method call overheads when choosing your language is just a classic case of premature optimization.

      I wrote a screensaver in Objective-C. The particle system was Objective-C. I wondered if dynamic method dispatch would be a performance problem, but profiling revealed that it simply wasn't an issue. So I maintain that outside of highly specialized contexts, Objective-C performance isn't a problem. And where it is a problem, you can optimize the one or two small pieces of code causing the issue.

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    19. Re:Objective C was a neat idea in the 80's BUT... by metamatic · · Score: 1

      It's C, of course it has a terrible type system. That's par for the course whether it's Objective-C or C++ or ANSI C. What do you think is not 'true' about its polymorphism?

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    20. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 0

      Define a function in Objective-C that can take as its first argument a pointer to a function f : 'a -> 'a and as its second argument a iterable container c : B 'a. Define a class in Objective-C such that it implements a protocol with a type parameter 'a called Iterable such that the class can be parameterized on types like int, float, or NString.

      That means native types, structs, and instances of object types. Of course you can't, because C types and object types aren't unified. There isn't even a concept of type parameters anyway, such that l : [int], m : [float * int], n : [Iterable] are all instances of ['a] parameterized on some type.

      The only polymorphism available is only available to instances of objects. That polymorphism itself suffers from a number of caveats. For one, if you actually specify a type in a selector rather than leave parameters untyped (typed as id, really) these are supposed to be enforced across the codebase. Another caveat is that because there's no type unification you get lots of extra messages which are specialized on various structs, native types, and if you bother to use a type more specific than id on various object types.

      Objective-C has a pretty nasty type system, because it's just C with an embedded object language. I mean it could be worse, but it's not that great either. C is a bad language, really. You can't really add anything to it and have it be a good language. C++ at least attempts to unify what it adds to it, but C++ is a bloated, nasty monster of a language. It has parametric polymorphism, though, buried within its Turing-complete template system.

      C as a language should die for most things, and especially general application development. No one should be dealing with char* anywhere anymore. That should just stop. Few people should be dealing with malloc and free anymore, and naive reference counting like OpenStep's autorelease pools. No one should be developing new data formats susceptible to endian issues. Few people should be dealing with collections where if you exceed their boundaries, then the program crashes with a segfault or a GPF. Pointers to objects that don't exist? Yeah, almost no one should ever be working where this is possible.

      All of these unsafe, exceptional cases should be off on the fringe where they belong, and really anyone that's a booster for a language that doesn't do this is cheering on obsolete technology that will be gone in the following decades.

    21. Re:Objective C was a neat idea in the 80's BUT... by IamTheRealMike · · Score: 1
      No, it's not at all like stack allocation. It's an order of magnitude better.

      Can you justify that please? Stack allocation has many performance benefits - it's only an instruction of two to allocate or deallocate memory, and the stack is usually hot in the cache.

      And once you've tasted refcounted objects, you don't want to look back (I wonder how I could survive all these years of C++ without them built in the language).

      It's certainly not hard to add refcounted objects to C++ using smart pointers and the like, it's a very common technique.

    22. Re:Objective C was a neat idea in the 80's BUT... by fpillet · · Score: 1
      Can you justify that please? Stack allocation has many performance benefits - it's only an instruction of two to allocate or deallocate memory, and the stack is usually hot in the cache.


      Sure, stack alloc is fast but is limited to the current function. Using an autorelease pool, your objects are destroyed only when the current pool is released. This has a lot advantages. Depending on what you're doing, either one can be more suitable.

      It's certainly not hard to add refcounted objects to C++ using smart pointers and the like, it's a very common technique.


      Sure. You can add most of the Objective-C features to C++. But then it's not built in the language, you need to explicitely do it. I think Obj-C enforces a certain way of thinking and designing the code that leads to high productivity. I've been coding in C++ for over 10 years and I don't see this level of productivity there.
    23. Re:Objective C was a neat idea in the 80's BUT... by metamatic · · Score: 1

      OK, so you're issuing another "Objective-C is crap for the same reasons C++ and Java are crap" objection. I don't disagree with that, but it's really beside the point. The discussion wasn't about how Cocoa should be built around Common Lisp or Ruby, was it?

      --
      GCHQ Quantum Insert installed. If only our tongues were made of glass, how much more careful we would be when we speak
    24. Re:Objective C was a neat idea in the 80's BUT... by Anonymous Coward · · Score: 0
      It seems to me that people are saying "Don't use Objective-C, it has [list of defects],...


      Or even [objC defectList];

    25. Re:Objective C was a neat idea in the 80's BUT... by feijai · · Score: 1

      I made a microbenchmark in C, ObjC and in Java. In it I create an instance variable q, do a loop 1000000000 times, calling a method doit which returns ++q. I accumulate and print the results at the end to make sure the compiler doesn't optimize out the loop. In the java version, I create a subclass bar which overrides doit, and makes sure at least one instance of bar is created. This forces hotspot to not inline the doit method in the foo class. In the C version I'm just using a global variable q and a function doit.

      Results on my system (OS X Tiger, GCC 4, java 1.4.2):

      gcc -lobj -O2 -fobjc-direct-dispatch foo.m; time ./a.out
      44.9 seconds

      gcc -O2 foo.c; time ./a.out
      21.3 seconds

      jikes foo.java; time java foo
      19.3 seconds

      jikes foo.java; time java foo [bar removed, so method gets inlined]
      10.8 seconds

      gcc -O3 foo.c; time ./a.out [inlines out the function -- hardly fair of course, no instance lookup overhead]
      2.4 seconds

      So there you have it.

    26. Re:Objective C was a neat idea in the 80's BUT... by Cally · · Score: 1

      I'm absolutely *not* a Java fan, but feel compelled to mention that an app that's vital for my work (infosec stuff) - the WebScarab web proxy, which allows easy drilling into HTTP requests, on the fly manipulation of cookies, form arguments and so on, and which is perfectly quick enough for me.

      --
      "None are more hopelessly enslaved than those who falsely believe they are free." -- Goethe
  38. Python by truthsearch · · Score: 2, Informative

    There's also a Python bridge for Obj-C. So for those that prefer a very different language, with its interpreter already distributed with the OS, Python's a great option. You get the native objects exposed by OS X available to Python.

    And let's not forget OS X is built on top of BSD. So effectively anything which can be written for BSD can be written for OS X. There are, of course, limited GUI tools, but options are available. Qt libraries, for example, will display native GUI elements when possible.

  39. almost perfect... by chasingporsches · · Score: 1

    interface builder is great. xcode is pretty good. but the whole thing could be easier to use for people like me that don't have the entire NS* libraries memorized, and don't feel like going to developer.apple.com for each call we want to do. meaning: they need "intellisense"-like support. .NET allows me to get programs done really fast because i can quickly find the proper name for a function by hitting period. xcode makes me go to developer.apple.com, and doesnt tell me its incorrect until i try to build. sure, this is like old days. but we're past the old days. xcode is *NOT* a tool for rapid app development. and other solutions like wxwindows and all those others for mac are a joke. x11 development for mac is a joke. real basic is a joke. we need a RAD solution for mac, and apple is almost there with xcode. they could even do the intellisense with the bracket notation, like whenever you do [NSString then space it would show a list of methods or whatever. its just too hard to get anything done. java makes things a little easier on the mac, but i still have to look up every NS* call i have to do.

    1. Re:almost perfect... by Anonymous Coward · · Score: 0

      Um, check Xcode preferences, that option is already there.

    2. Re:almost perfect... by chasingporsches · · Score: 1

      are you effing serious? i've been struggling this whole time? *hits self on head*

    3. Re:almost perfect... by grikdog · · Score: 1

      Oh woe, I dorked off all my mod points yesterday, because this guy needs some serious modding up. Absolutely dead right on the head of the nail with maximum perpendicular force straight down delivered economically by a skilled wrist, a cunning eye and minimum elbow.

      --
      ``Tension, apprehension & dissension have begun!'' - Duffy Wyg&, in Alfred Bester's _The Demolished Man_
    4. Re:almost perfect... by Anonymous Coward · · Score: 0

      While XCode does have Code Sense for in-object message or method calls, it lacks the ability to see what events your object will respond to in the responder chain. For me, this is all Apple would need to add. In Visual C#, there is a tab that lists all the events an object will fire. For Cocoa, it may be a little harder for Apple to implement given ObjC's dynamic nature, but it would benefit everyone if they did add this feature. It would accelerate everyone's learning curve of Cocoa's object model.

    5. Re:almost perfect... by Yaztromo · · Score: 1
      hey could even do the intellisense with the bracket notation, like whenever you do [NSString then space it would show a list of methods or whatever.

      Take a look at Preferences -> Code Sense. It's the second preference panel icon at the top.

      Personally, I find automatic suggestion annoying and have it disabled -- but even with the automatic option disable, just hitting "Esc" on the keyboard will bring up a pop-up containing all of the potential completions.

      Next time, you might be better served asking if something is possible, rather than assuming it isn't and then ranting about how an existing feature is "missing".

      Yaz.

    6. Re:almost perfect... by chasingporsches · · Score: 1

      was it available in jaguar or panther's xcode? i havent done much development in tiger. if it was, i dont know how i missed it.

      but still, i started using it today after finding out about it from other /.ers above, and its no where near as usable as microsoft's intellisense, although it is a big help. for example, i was looking for the runModalInDirectory function or the setAllowedFileTypes and setAllowsMultipleSelection of the NSOpenPanel and it didn't show any of them at all. maybe there's some modifier key i'm missing or something, but they aren't showing up. intellisense is more intuitive.

    7. Re:almost perfect... by Yaztromo · · Score: 1
      was it available in jaguar or panther's xcode? i havent done much development in tiger. if it was, i dont know how i missed it.

      Xcode typically has a separate release cycle from the OS itself. I'm pretty sure this feature has been available in all of Xcode 2.x, but really don't recall if it was there in the v1.x days or not.

      I think I still have a v1.2 disc somewhere, but am hardly going to downgrade from v2.2 on any of my systems to check :).

      Yaz.

  40. OS X does have Java you know... by SuperKendall · · Score: 1

    If you want to use a C# stlye language, simply use Java on OS X.

    If you want to build more performant apps, use Objective-C.

    I've used Visual Studio and many Java IDE's. I think XCode is one of the nicer IDE's around (it also has code completion and other modern IDE features), and as others have noted the Cocoa approach to GUI development is really, really quick.

    Frankly I really like the message-passing style of Objective-C as it's a very pleasing mental model for interapp data flow. People who are complaining are generally just too used to a C++/C/Java stlye language, and need to broaden horizons a bit... yes having no garbage collection is a bit annoying but there are autorelease pools you know.

    The final word on how useful Objective-C is comes down to Apple applications themselves. Look at the size of Apple and the broad range of pretty impressive applications they are able to develop. It speaks louder than any other argumnet as to why Apple should keep Objective-C as a preferred base for development, as they have had great success with it thusfar.

    Besides, don't we all want real choices as opposed to everyone developing in various flavors of Java across every OS?

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  41. Re:That guy is an idiot by halfdan+the+black · · Score: 1

    Really?
    Why is Objective C perfect?
    Why does .net suck?

  42. [syntax sucks] by DrStrangeLoop · · Score: 1
    [ObjC isHardTo: [format nicely] because: [you cannotFitOneStatementIntoOne: Line]]
    [andDontEvenThinkAboutUsingAn: array[ofObjects]]


    also, I dont like how the syntax forces you to know exactly how many open brackets (==levels of dereferencing) you will need at the start of a statement. in java and c++, it is possible to just start with one object and dereference happily on your way along the object chain without ever looking back.
    on the other hand, Cocoa and especially Interface Builder are both easy and lots of fun. great GUI API, would definetly use again!!!!11!
    1. Re:[syntax sucks] by coolgeek · · Score: 1

      Why not?

                NSObject array[10];
                array[0] = [[NSObject alloc] init];


      Of course I would rather use an NSMutableArray object for any task that requires an array. It really simplifies those situations where you're not sure if you need a 10 or a 10,000 element array.

      --

      cat /dev/null >sig
    2. Re:[syntax sucks] by DrStrangeLoop · · Score: 1
      because it looks just plain ugly mixing array brackets and selector brackets like this:
      [array[i] doStuffWith: [array[j] childObject]];
      also, while NSMutableArray is a nice and versatile container class, c style arrays are faster as well as shorter to use. Sometimes you want to just say a[i++] instead of [a objectAtIndex[i++]]
      but I see your point, I just think that it would be nice having yet another style of brackets apart from () [] {} , because appearantly there are subtle ambiguities with the c++ . dereference operator also.
  43. Jobs doesn't get it by NutscrapeSucks · · Score: 2, Insightful

    What Jobs is ignoring is that Macintosh customers are primarily non-technical, and have no need or want for a "religious war" around programming languages. Even if Obj-C and Cocoa are perfect, they are still for all intents-and-purposes a proprietary Apple-only environment (please don't pretend GNUStep has any wider importance), and is only used by True Believer devs.

    What the Mac platform needs the most is applications, good ones. And if the apps are good, the users simply don't care if the language frameworks are slightly faster or nicer to program with.

    ObjC/Cocoa is one set of good tools, but so is the .NET framework and C# and it is considerably more popular as well. Withholding .NET (and Java) from Mac users only hurts the variety of applicaitons, which in turn hurts the strength of the platform.

    NeXT was a developer tool company and he could get away with this approach. Mac is a mainstream platform (or trying to be), and there needs to be "more than one way to do it".

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
    1. Re:Jobs doesn't get it by coolgeek · · Score: 1

      Steve's response to your position (taken from http://www.networkmirror.com/KzGXfxw7VjFRGzty/orei llynet.com/pub/wlg/8849.html, which some other /.'er posted out here)

      On Dec 25, 2005, at 5:10 PM, Steve Jobs wrote:

      I guess we disagree. First of all, .NET with CLI and managed code runs SLOW, so most serious developers can't use it because of performance. Second, the libraries in C# are FAR less mature and elegant than those in Cocoa. We are working on a better implementation for garbage collection than we've seen out there so far, but in the end its a performance hit and an unpredictable time that is not good for some kinds of apps.

      Steve

      --

      cat /dev/null >sig
    2. Re:Jobs doesn't get it by Alioth · · Score: 1

      GNUstep is good enough that we ported Oolite (written for Cocoa on the Macintosh) to Linux and *BSD using GNUstep. Even the OpenGL stuff works in GNUstep (although we did end up changing this to SDL since it has better functionality for games, such as full screen support and joystick support).

    3. Re:Jobs doesn't get it by NutscrapeSucks · · Score: 1

      First of all, I'm responding to his position, not visa-versa. Second, you completely failed to understand my point.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    4. Re:Jobs doesn't get it by dr.badass · · Score: 1

      What Jobs is ignoring is that Macintosh customers are primarily non-technical, and have no need or want for a "religious war" around programming languages.

      What you're ignoring is that Jobs runs a company whose future depends somewhat on what programming languages and APIs they support and the control they have over them.

      What the Mac platform needs the most is applications, good ones.

      It has them, in scores.

      And if the apps are good, the users simply don't care if the language frameworks are slightly faster or nicer to program with.

      Exactly. That's why Cocoa is good enough.

      --
      Don't become a regular here -- you will become retarded.
    5. Re:Jobs doesn't get it by coolgeek · · Score: 1

      That's funny, I thought your point was:

      Withholding .NET (and Java) from Mac users only hurts the variety of applicaitons, which in turn hurts the strength of the platform.

      My reply illustrates why withholding that tech is a Good Thing for the platform.

      --

      cat /dev/null >sig
    6. Re:Jobs doesn't get it by metallic · · Score: 1

      Have you ever used a program written in .NET? I'd challenge you to download Paint.Net and tell me if the performance in unacceptable. Steve Jobs has no fucking clue what he is talking about in that department and it is quite obvious.

      --
      Karma: Positive. Mostly effected by cowbell.
    7. Re:Jobs doesn't get it by NutscrapeSucks · · Score: 1

      What you're ignoring is that Jobs runs a company whose future depends somewhat on what programming languages and APIs they support and the control they have over them.

      Actually, I intentionally didn't want to 'go there'.

      But, fine, Jobs ran a company down from a 10% marketshare down to a 2% share. If you want to discuss what that collapse had to do with continually shifting developer tools directions, go right ahead.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    8. Re:Jobs doesn't get it by dr.badass · · Score: 1

      But, fine, Jobs ran a company down from a 10% marketshare down to a 2% share

      That's quite a claim given that he wasn't even at Apple while that was happening.

      --
      Don't become a regular here -- you will become retarded.
  44. Did nobody actually READ the emails? by Trollll · · Score: 2, Interesting

    Steve Jobs never calls Objective-C/Cocoa perfect, he just thinks that it makes for a much better development tool than .NET.

    How the hell did that even get posted to Slashdot in the first place? Does anyone actually check anything before these things go live?

    Check a few comments up for the incredibly boring emails back and forth, where basically the guy starts off by telling Jobs that Objective-C sucks without giving any reason. Makes me wonder why (and IF) he got a response in the first place.

    1. Re:Did nobody actually READ the emails? by Anonymous Coward · · Score: 1, Insightful

      How the hell did that even get posted to Slashdot in the first place? Does anyone actually check anything before these things go live?

      Sigh. I don't know how many times I have to point this out, but Slashdot has nothing to do with accuracy or "news". It is about PAGE HITS. PAGE HITS = ADVERTISING BUCKS. That is all you need to know about it.

  45. learning curve by Anonymous Coward · · Score: 0

    The bad thing (or good thing depending your viewpoint) about Cocoa is the steep learning curve; Cocoa leans _heavily_ on some design patterns; once you're up to snuff on those, developing in Cocoa with IB and XCode, becomes a snap. The enforcement of the strict guidelines laid up by the design patterns is actually a Good Thing. Anyone argueing that has merely glanced over Cocoa and development environment, and has not climbed said learning curve, and as such cannot appreciate the advantages of such approach.
    Objective-C, being one of the OO-languages done right, has an added benefit of filtering out the herds of low-quality C++ and Java hackers, leading to better apps in the end. If only they'd add automatic garbage collection ... ;)

  46. Get this guy off my platform by INeededALogin · · Score: 1, Insightful

    From his thread:

    I _still_ have to look out for yucky pointers?

    I hate these fucking developers like this. These people that don't want to write code, but would rather have everything taken care of them in an unpredictable manner.

    Garbage Collection==excuse for not writing better code and don't give me the excuse that you can write your code faster. The time spent writing nasty code results in memory problems, garbage collections freezing an application, and numerous bugs. Not to mention that these developers use memory like its candy... Not knowing that every one of their objects in a list uses 2 megs of memory.

    pointers==I don't understand how my computer allocates, deallocates and references memory so I would rather have Sun wrap all that confusion and trust that they did it well. Sorry... but if you have never used pointers then you obviously do not understand the benefit of using them. And while it is nice that Sun can take away the need to use them, they should still be available in some manner to the developer. I feel I can optimize my code a lot more than sun can.

    IDE whores==hold my hand while I code. Honestly, developers that depend on an IDE and the hitting of a period to find the Integer.parseInt() method end up writing some of the worst code. I work at a company where I refuse to write Java code for them. Basically because these developers are morons and don't understand any of the hardware and software that they implement. A good example was a lot of developers started implementing JGroups which is a multicast memory replication useful for clustering. It worked great except every developer copied the same code snippet and every application was using the same multicast group and port. Instead of changing the address, they decided to handle it at the application level and filter it after they had read the packets off the socket. Gross.

    Bytecode is great==I don't understand how fast a computer really is with native code. Bytecode solves a few problems, but it is totally unacceptable for large applications. Whatever happened to Sun's Web Brower? It died despite being Java. Everyone says Eclipse is a great IDE, but its bloated and slow. I worked at a company that put all its Apples(No Pun Intended) into Java/Swing combination. When I left, 4 years after the project was started, they were still having UI speed problems. When I develop, I don't want anyting getting in my way and I don't want to have to buy a 3ghz processor to do it/run it.

    Now, I know all the Buzz word slashdot people will disagree with me, but Object Oriented programing adds a layer of abstraction, taking away pointers adds another layer of abstraction and then adding in a garbage collection adds another layer of abstration. And also having Sun hide all those pointers behing an extrememly gross hierachy of classes that always seem to hand-off work to another class has its penalties.

    1. Re:Get this guy off my platform by the+eric+conspiracy · · Score: 1

      I agree with you to a certain point - but the fact is that a large part of programming today is not worth spending the time on to go to a low level implementation. Who cares if that UI is somewhat bloated? It isn't on the critical path. Likewise a lot of that Java code is spending most of its time waiting for a stored procedure to run, etc. For this sort of stuff (probably 95% of what a programmer does in this day and age) the correct answer is to write generic maintainable code. And that means OOP, Java, GC - all the things you don't like.

      One of the basic rules of pragmatic programming is that you don't optimize until you have to - carefully optimized code tends to be a lot more fragile than generic code.

    2. Re:Get this guy off my platform by StrawberryFrog · · Score: 1, Insightful

      Garbage Collection==excuse for not writing better code and don't give me the excuse that you can write your code faster

      Yeah, that's why Java and C# will never catch on. Troll.

      --

      My Karma: ran over your Dogma
      StrawberryFrog

    3. Re:Get this guy off my platform by lubricated · · Score: 1

      >> probably 95% of what a programmer does in this day and age

      yes, I can make up statistics too. That 95% of the programing that can be done in java, will be outsourced.

      There are things you just can't optimize in java. Only knowing the simple way of doing things, makes you disposable.
      Even if you write C++ code and don't do a single delete, most of the time your leaky ass program will use a ton less ram than the java equivalent. I haven't used a single java program that I thought wasn't hindered by java's slowness, or memory hogishness.

      --
      It has been statistically shown that helmets increase the risk of head injury.
    4. Re:Get this guy off my platform by penguin-collective · · Score: 2, Insightful

      I hate these fucking developers like this. These people that don't want to write code, but would rather have everything taken care of them in an unpredictable manner. Garbage Collection==excuse for not writing better code and don't give me the excuse that you can write your code faster.

      And (to use your language) I hate fucking morons like you: people who don't understand that they can't do memory management as efficiently as a machine, people who don't understand that pointer-based code is usually slower and inhibits optimization opportunities, and people who overestimate their own ability to avoid pointer errors.

      After programming in C for nearly 30 years, I can confidently say: I am incapable of writing a substantial C program without memory and pointer error bugs, I don't see the point in doing so, and I have yet to meet anybody who can. And the people who are the ones usually producing the most bugs are usually people like you, people who don't even understand their own limitations.

      And also having Sun hide all those pointers behing an extrememly gross hierachy of classes that always seem to hand-off work to another class has its penalties.

      Java is a bloated P.O.S., but Java is not representative of garbage collected or safe languages.

    5. Re:Get this guy off my platform by CharlesEGrant · · Score: 1
      Now, I know all the Buzz word slashdot people will disagree with me, but Object Oriented programing adds a layer of abstraction, taking away pointers adds another layer of abstraction and then adding in a garbage collection adds another layer of abstration. And also having Sun hide all those pointers behing an extrememly gross hierachy of classes that always seem to hand-off work to another class has its penalties.

      Ooooh! Those evil layers of abstraction! I suppose you've figured out some way to write directly to microcode because, after all, you understand how to optimize your program better then Intel does. Doubtless you drop your own memory manager into all your applications, since lord knows what the OS will do when you call alloc or free.

      Looking at the bug list for any substantial application will demonstrate that even very talented programmers cannot write software using C and C++ without buffer overruns, heap corruption, and memory leaks. Sometimes the requirements dictate that's what we have to live with, but sometimes it is sheer masochism or machismo. Every hour you spend chasing down dangling pointers is an hour you can't spend improving the algorithms you are implementing.
    6. Re:Get this guy off my platform by INeededALogin · · Score: 1

      Where in my post did I say that Java and C# weren't popular? Also, just because something is popular does not make it right, or even something nice to use. Most companies got pushed into Java because Sun had created so much buzz around it. What I can't understand is that some of the people in this thread are "asking" for Java bindings of Cocoa. Why? Java's strength is its write-once, deploy-anywhere capabilities. I hate seeing Java code that is tied to a platform due to a developer using some Microsoft media library instead of the JMF or Quicktime bindings(yes, Windows and Mac only).

      What is worse, is that if you are tied to only 1 platform, their are plenty of better languages to write in. I personally don't believe in bytecode if you are writing for 1 platform because of the speed differences(yes, you can show me all the studies you want... but do use these languages before citing a study). And since I don't believe in bytecode, this means that I consider .NET highly inferior to Microsofts previous offerrings and with it largely being pushed out to aid Microsoft(think of the problems Microsoft has had maintaining multiple languages across multiple platforms).

    7. Re:Get this guy off my platform by INeededALogin · · Score: 1

      How is intel optimizing my code? As far as I can tell... I use a gcc compiler on PowerPC processor. Regardless of that, how exactly would intel be optimize my code?

    8. Re:Get this guy off my platform by swagr · · Score: 1

      The "Industrial Revolution" was a period where manual labor was replaced by machine labor.
      Letting machines do the grunt work enables (capable) humans to work on more interesting problems.

      Except in extreme cases, sales people, management and even customers almost always prefer features and usability enhancements to speed/memory/stability enhancements. Any experienced programmer knows that.
      While you're spending time tweaking your code, I'm creating value for my business and customers.

      If you work in a field where code optimization and memory management are huge concerns, then your comment isn't appropriate for most of developers, and my comment isn't appropriate for you.
      If not, your job will soon end up in India. No doubt the developer there will have a better attitude than you.

      --

      -... --- .-. . -.. ..--..
    9. Re:Get this guy off my platform by CharlesEGrant · · Score: 1
      Regardless of that, how exactly would intel be optimize my code?

      A CPU contains multiple sub-devices that carry out functions like arithmetic logic, floating point logic, memory address decoding, instruction decoding etc. In many CISC processors (or CISC descended like current Intel x86 chips) a microcode language that controls the sub-devices is embedded in the processor. As the instructions from a program are decoded, each "machine code" instruction will be turned into a sequence of microcode instructions. The CPU may execute the microcode instructions out of their natural order to improve efficiency. For example, moving an arithmetic operation between two memory fetches. This is what I was meant by "Intel optimziing your code". See this article for more information.

      My point was that even programming in machine language is still at least one layer of abstraction above what is happening on the CPU.
    10. Re:Get this guy off my platform by bani · · Score: 1

      Nice strawman.

      You'll notice he never claimed java and c# weren't popular. Or maybe you won't notice since you obviously can't read.

    11. Re:Get this guy off my platform by bani · · Score: 1

      Java is a bloated P.O.S., but Java is not representative of garbage collected or safe languages.

      Shhh. Don't tell sun, they'll have you lynched. That's heresy round there.

      Just curious what you think the end all to all GC/safe languages is?

    12. Re:Get this guy off my platform by supertsaar · · Score: 1

      ... Except in extreme cases, sales people, management and even customers almost always prefer features and usability enhancements to speed/memory/stability enhancements. Any experienced programmer knows that....

      Pfft....Except in extreme cases, sales people, management and even customers dont know their arse from their elbow. Anybody who has worked in IT for more that one year knows that

      Still, your point is valid, because in the end, those sales, busines & management types pay us....unfortunately....
      --
      The Bigger The Headache The Bigger the Pill
    13. Re:Get this guy off my platform by tbien · · Score: 1

      It began with LISP and it will end with LISP... Why not simply use the original?

    14. Re:Get this guy off my platform by bani · · Score: 1

      may you die a thousand deaths in parenthesis hell.

      but it all started with fortran.

    15. Re:Get this guy off my platform by penguin-collective · · Score: 1

      Just curious what you think the end all to all GC/safe languages is?

      I think it would be batch compiled, safe (unless you use an explicit escape hatch), efficient, and usable by current mainstream programmers. It would also have a small, streamlined standard library. It's not rocket science--we have had such languages: Algol, Modula-3, Oberon, Simula, gcj-Java, and various Pascal variants.

      These days, I think a gcc-sharp batch native code compiler, analogous to gcj, would be what I would be wishing for. An cleaned up version of Objective C would be another reasonable alternative.

    16. Re:Get this guy off my platform by Anonymous Coward · · Score: 0

      > It began with LISP and it will end with LISP... Why not simply use the original?

      ((((((((Because)it)drives)me)up)the)friggin)wall!)

    17. Re:Get this guy off my platform by bani · · Score: 1

      I think it would be batch compiled, safe (unless you use an explicit escape hatch), efficient, and usable by current mainstream programmers. It would also have a small, streamlined standard library.

      I think you just described ADA.

    18. Re:Get this guy off my platform by tbien · · Score: 1

      Actually those parenthesis are a nice thing to have. Sure, it does requires you to understand what LISP is about first (s-expressions), but those parenthesis serve a well defined purpose.

    19. Re:Get this guy off my platform by the+eric+conspiracy · · Score: 1

      That 95% of the programing that can be done in java, will be outsourced.

      Along with everything else including CPU design, writing device drivers, and everything else that you normally don't write in Java.

      Even if you write C++ code and don't do a single delete, most of the time your leaky ass program will use a ton less ram than the java equivalent.

      Assuming your program handles trivial amounts of data, and isn't a daemon or a server. Not trivial programs - boom.

      Only knowing the simple way of doing things, makes you disposable.

      Only knowing one way of doing things makes you disposable.

    20. Re:Get this guy off my platform by GnuDiff · · Score: 1

      I think it would be batch compiled, safe (unless you use an explicit escape hatch), efficient, and usable by current mainstream programmers. It would also have a small, streamlined standard library. It's not rocket science--we have had such languages: Algol, Modula-3, Oberon, Simula, gcj-Java, and various Pascal variants. The funny thing is that the languages you mention are generally pretty dead. And (correct me if I am wrong) have never really catched on. Might be a trend there?

    21. Re:Get this guy off my platform by penguin-collective · · Score: 1

      Ada does not have garbage collection. It's also a poorly designed language (unnecessarily complex).

    22. Re:Get this guy off my platform by penguin-collective · · Score: 1

      The funny thing is that the languages you mention are generally pretty dead. And (correct me if I am wrong) have never really catched on. Might be a trend there?

      C became popular in the 1980's because of UNIX, because other compilers were expensive, because most people didn't have a clue about OOP or SE, and because machines and applications were small (by today's standards).

      Today, machines, applications, programmers, and requirements are completely different.

      In fact, gcj-Java and C# are the right kind of languages and they are rightfully popular, they just need a little fine tuning in terms of their implementations.

    23. Re:Get this guy off my platform by bani · · Score: 1

      How exactly is it unnecessarily complex?

      It is surely verbose, but this does not mean it is complex. and if you criticize ada as "complex", then your analysis of java must be absolutely scathing.

    24. Re:Get this guy off my platform by penguin-collective · · Score: 1

      I think it's pointless to debate the finer points of Ada's design flaws (and I'd have to dig my notes up anyway). Ada doesn't have garbage collection or full reflection, and that alone means it's not a serious contender for being a modern mainstream language.

      As for Java, I think Java 1.1, while limited, was a reasonable and simple design. (Let's not get into Java 5...)

    25. Re:Get this guy off my platform by bani · · Score: 1

      Well, you made the claim that ADA is unnecessarily complex, so don't be suprised if I don't take the claim seriously without supporting evidence.

      Just because you think a language without GC or reflection isn't a "serious contender" for being a modern mainstream language doesn't mean it's true. Any self appointed arbiter of The One True Language can throw up whatever roadblocks they like as reasons why some specific language can't possibly compete.

      You remind me of the java fanatics from 1995 making "dire predictions" that C++ was "doomed to extinction within a decade" because it didn't have x or y or z.

      Continue holding out for The One Hammer(tm) which will turn all problem domains into Nails(tm). I think you'll be waiting quite a while.

      The rest of us will continue on without you thank you very much :-)

    26. Re:Get this guy off my platform by penguin-collective · · Score: 1

      Well, you made the claim that ADA is unnecessarily complex, so don't be suprised if I don't take the claim seriously without supporting evidence.

      It's not a claim, it's an opinion.

      Just because you think a language without GC or reflection isn't a "serious contender" for being a modern mainstream language doesn't mean it's true.

      You're absolutely right: my opinion doesn't matter per se, but the fact that all the languages that have experienced big growth over the last decade have these features supports my assertion.

      Continue holding out for The One Hammer(tm) which will turn all problem domains into Nails(tm). I think you'll be waiting quite a while.

      Congratulations, what an astute observation. And, in fact, I frequently make the point myself that there isn't one true language but that there are many needs that need to be filled by many languages. However, I believe that any language entering the niches that C++, Java, VB, and C# currently occupy must have garbage collection and reflection.

      The rest of us will continue on without you thank you very much :-)

      Well, one thing is clear: the rest of us appears to be continuing without Ada.

    27. Re:Get this guy off my platform by dmdimon · · Score: 1

      >people who don't understand that they can't do memory management as efficiently as a machine, people who don't understand that pointer-based code is usually slower and inhibits optimization opportunities, and people who overestimate their own ability to avoid pointer errors.

      People you are talking about actually are bad programmers. Kinda fools that don't know who they are.

      And you want to tell that you program in C since 1975 and still have troubles with speed, memory and pointers?
      Man who probably begun on 4-8 mHz with 64-512 kB memory minicomputer? C'mon.

    28. Re:Get this guy off my platform by bani · · Score: 1

      You're absolutely right: my opinion doesn't matter per se, but the fact that all the languages that have experienced big growth over the last decade have these features supports my assertion.

      Well when you are starting from 0, even 1000 users is "big growth". :)

      java hasnt quite managed to dominate anything -- let alone c++ -- despite java fanatics "dire warnings" to the contrary.

      if you really think buzzwords define a practical/usable language, then why hasn't ruby taken over the world?

    29. Re:Get this guy off my platform by penguin-collective · · Score: 1

      Java hasnt quite managed to dominate anything -- let alone c++ -- despite java fanatics "dire warnings" to the contrary.

      Java had a good chance of doing that, but Sun dropped the ball after Java 1.1 and Sun never got around to working out some serious problems with Java.

      Well when you are starting from 0, even 1000 users is "big growth". :)

      Java usage seems to have grown to about the same level as C++, but in less than half the time, so Java growth has been bigger--and that despite serious flaws in the Java language.

      if you really think buzzwords define a practical/usable language, then why hasn't ruby taken over the world?

      No, I just think garbage collection, runtime safety, and reflection are a necessary part of a good, general-purpose language. That these are now buzzwords is just an indication that the industry is catching up with that view.

      As for Ruby, at least for now, it is only competing in the crowded field of scripting languages, where there are already lots of good choices (personally, I use Python).

  47. Can't go home again by TapestryDude · · Score: 4, Insightful

    Objective-C was my first object-oriented language (this was back in 93 - 95). I loved the syntax and the integrated vision of the tools and frameworks ... but I hated memory management. The whole retain/release/autorelease thing was always a bug waiting to happen, and I spent many wasted hours tracking those down (basically, retain/release works great for trees but flops around like a dying fish for graphs).

    Anyway, I simply can't go back to a non-memory managed environment again.

    I have seen that, as I've matured as an OO developer, and as I've distanced myself from Objective-C, my style has changed. The Objective-C libraries are heavily based on inheritance, but I've learned that "composition trumps inheritance" ... meaning that its better to combine many small focused objects. In Objective-C, you have a layer-cake approach, where each layer of inheritance mixes in a particular concern. This makes sense when you want to minimize the number of objects allocated, but in a GC language (Java, Ruby, etc.) you end up with better, more testable code when you let the GC do its thing.

    You can see this in Tapestry, where currently (through the 4.0 release) you extend base classes. I'm starting to gear up to break this limitation for 4.1 (where you will use simple objects and have framework dependencies injected into your classes).

    ProjectBuilder was great in its time, but compared to Eclipse, it's hopeless. IB still rocks, and I wish Sun had demostrated some intelligence when first designing Swing by investigating IB. That is, Swing treats UIs as a coding problem, IB treats it as a configuration problem.

    But, as I said, you can't go home again.

    --
    Howard M. Lewis Ship -- Independent J2EE / Open-Source Java Consultant -- Creator, Apache Tapestry and HiveMind
    1. Re:Can't go home again by jcr · · Score: 1

      Are you the Howard I worked with briefly at Stratus?

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Can't go home again by SteeldrivingJon · · Score: 1

      IB still rocks, and I wish Sun had demostrated some intelligence when first designing Swing by investigating IB.

      They could have used the Internet Foundation Classes and NetCode Constructor, which was probably the most IB-like Java UI builder. NetCode was a bunch of skilled ex-NeXT types, including the guys who now develop the two Cocoa apps NoteBook and NoteTaker.

      Netscape bought NetCode, but their framework and gui builder got lost in the shuffle on the way to Swing.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    3. Re:Can't go home again by Anonymous Coward · · Score: 0

      Just out of curiosity why do you believe Objective C libraries (particularly Foundation, AppKit, etc.) rely greater on inheritance than Java? Most classes I have come across inherit from NSObject in the reference documentation, and you aren't forced to inherit classes any more than your programming style dictates. Heck, if you just use the language, you don't even have to inherit from NSObject whereas Java requires it from Object.

      The AppKit doesn't use inheritance any more than Swing does. Composition has always trumped inheritance IMO, but that's something you learn only after coding a few projects. Perhaps you just improved in your coding style later but you associate your earlier style with Objective C?

      I do agree that Xcode (ProjectBuilder) needs some work now when IDEs like Eclipse are so much better (plugins, code folding, automation, refactoring where applicable).

  48. Remember this guy hasn't coded in years by Lead+Butthead · · Score: 1

    A lot of quirks in programming langauges don't show until one is actually trying to code something useful with them. More likely than not, the said comment by the Apple Egomaniac (tm) originated from opinion of MANGLERs in his organization; since they tend to quantate work performed by coders in terms of number of lines. If enough MANGLER said to him "my coders write more lines of code in Objective C than in it's not so far fetched that the Apple Egomaniac (tm) would conclude Objective C is a better languge to code in.

    --
    ELOI, ELOI, LAMA SABACHTHANI!?
    1. Re:Remember this guy hasn't coded in years by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Remember this guy hasn't coded in years by SteeldrivingJon · · Score: 1

      A lot of quirks in programming langauges don't show until one is actually trying to code something useful with them.

      Yeah, like all those Java projects (Wordperfect? Sun's ports of the Lighthouse apps? Etc?) that were stillborn when the development teams ran into the quirk of Java that it couldn't be used for such applications.

      --
      September 2011: Looking for Cocoa/iOS work in Boston area Cocoa Programmer Quincy, MA
    3. Re:Remember this guy hasn't coded in years by Ohreally_factor · · Score: 1

      Yes, let us remember the words of His Assholiness*, "Real artists ship!"

      *I am a koolaid guzzling cultist.

      --
      It's not offtopic, dumbass. It's orthogonal.
    4. Re:Remember this guy hasn't coded in years by Decaff · · Score: 1

      Yeah, like all those Java projects (Wordperfect? Sun's ports of the Lighthouse apps? Etc?) that were stillborn when the development teams ran into the quirk of Java that it couldn't be used for such applications.

      The only issue (not a 'quirk') was speed. That issue has gone.

  49. TFA makes This News Article Worthless by mattwarden · · Score: 1

    After giving some though to one of the responses to this entry below, I have decided to take down the email thread between Jobs and myself. I have no way of knowing if Jobs would be OK with me posting the e-mail publicly, even though the contents of the e-mail didn't contain anything private or sensitive.

    Ok, so now we're just talking about Objective C. So much for the news aspect of the story...

  50. Xcode sucks, not Objective C by bran880 · · Score: 1

    I believe Jobs is mostly correct. Objective C is a pretty nice language for what it is; you get a lot of very nice message passing features and notification passing in the base ("foundation") library that is pretty far ahead of most C++/Java frameworks I've seen.

    Cocoa GUI apps require very little anonymous class/callback cruft compared to most C++/C#/Java apps I have seen. Also, most hacked together Cocoa apps appear to be significantly better than most hacked together C#/Java apps (better dnd support, better saving/import/url support, highly responsive).

    Apple would do well for itself to offer first class support for other language bindings and to move from XCode to Eclipse (and figure out a way to keep Interface Builder around). The KDE/Qt people are able to provide good bindings to Python, Perl and Ruby with very little resources. C/C++, Python, Perl and Ruby are much better known to most of the devs I know than Obj C. The PyObjC (Python) bridge is good, but it could use better documentation and treatment from Apple.

    Brandon

  51. "perfect" depends on your point of view by TomRushworth · · Score: 1
    No development system can be perfect for everyone because each developer has a different set of needs and desires for his development.

    In very general terms there is a sort of trade-off to where the programming knowledge is stored. In a higly automated, do-it-all-for-you type of system, the programmer does not need to know very much, but can't change or customize the application as much, because the knowledge is wired into the development system. In a system at the other end of the spectrum, the programmer has to know quite a bit more, but can make the application do just about anything, including, for example, new types of data display or UI feedback. Cocoa and Objective-C are at the flexible end of the spectrum.

    Objective-C lets you add methods to any object, so that if you are having trouble with something in the Cocoa libraries you can add methods to those objects to help you debug the problem, or even work around bugs. The language is reflexive enough that you can actually go and find all the internal methods of the problem object(s). Yes, you do need to know what you are doing or you end up shooting your toes off at the kneecap, but the point is that if you hit a hard problem, there _is_ a solution.

    Cocoa may be the most mature, complete and flexible set of libraries in general use today. Remember Cocoa isn't new with OS X, it was new with the NeXT. Of course, it can't be perfect to everyone, but it has had many years to evolve to be "pretty darn good" to a large number of different developers.

    I'm a little less happy with Xcode, but then it's the newest part of the development environment and you've got to expect a few problems. On the negative side, I sometimes find it very hard to figure out where a particular setting or path can be found and changed with Xcode, and I find it very annoying from a version control point of view that Xcode stores things like window positions and sizes. On the positive side, since the Xcode data is XML, I can close Xcode and edit the Xcode file with vi rather than spend more time trying to find the setting in question, and Xcode does have separate files for the dependency data and personal preferences, so I could probably find a workaround for the version control issues if I wanted to put a little more effort into it. It gets the job done, and it's no worse than other systems.

    I haven't made too much in-depth use of Interface Builder, but I find it is almost always a very nice stepping stone to whatever UI I'm trying to build. I can rough the UI elements in in just a few minutes, and then continue refining behavior programatically. It's sort of the best of both worlds, I can get the simple stuff out of the way easily, but then it gets out of my way when I want to do more exotic things.

    Over all, from the viewpoint of an experienced programmer who usually wants fine control over the UI elements, I'd have to say it comes closer to perfect than any other development environment I've used.

  52. Cocoa *is* fun to program for by ian+stevens · · Score: 1, Informative

    Having recently introduced myself to Cocoa through Cocoa Programming for Mac OS X by Aaron Hillegass, I would have to say that Cocoa is quite fun to program for. Specifically, Apple's Interface Builder allows you to quickly build up a GUI without writing a single piece of code. A lot of common tasks require next to no code at all. For instance, adding tabular data requires only that you create your model in XCode and perform all other tasks in Interface Builder. Within seconds your application can have a table with movable, sortable, editable columns. The only code you have to worry about is your model. Of course, should you want to do something more complicated with tables you can.

    Tabular data is just one example, but there are many other ways in which programming for Cocoa is quite easy. Copy and paste using multiple types is a snap, and drag and drop is just a slight extension on top of that, accomplished in minutes. Can Windows' Visual environment say the same? Friends of mine who have implemented drag and drop on Windows spent days doing so, and it still didn't work quite right. The broken nature of drag and drop in many Windows apps is the result.

    Since Mac OS X uses PDF as its native format, creating PDF versions of your data requires only a few lines of code. Similarly, Cocoa provides support for many data formats such as RTF, PNG and TIFF so saving and reading images is a no-brainer.

    --
    ian
    1. Re:Cocoa *is* fun to program for by jcr · · Score: 1

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
  53. Delphi... by Kr3m3Puff · · Score: 1

    I gotta get my Delphi plug in here. It would be great to have Borland but its weight behind OSX. IMO Delphi has always combined the power of of object oriented programming and a visual RAD environment while still maintain the ability to do the most low level stuff that you need. All the power, none of the crap. Visual Studio has taken a lot from Delphi (including 30+ Borland engineers a couple years ago).

    There is still a lot to learn from Borland and Apple seems like the logical place to apply their design methods. It wouldn't be over difficult to apply Object Pascal to wrap all the Cocoa APIs and create a native environment.

    --
    D.O.U.O.S.V.A.V.V.M.
  54. Notes from a Cocoa AND .NET developer by hkb · · Score: 3, Informative

    I code various C#/.NET things at work, and code Cocoa stuff at home for fun. I'm well-versed in both environments.

    - The environments are apples and oranges (no pun intended). The languages, the workflow, everything is much different.

    - Moving away from ObjC would require some significant reworkings of Cocoa, as its workflow is based on the "ObjC way". Take a look at the mess that is the Cocoa/Java bridge, or Cocoa#.

    - Objective C is WAY more descriptive than other languages (take a look at how you pass arguments in functions, for example).

    - Objective C is easy to learn. Yeah, it's a lot different than the usual paradigms, but when you learn it, you'll enjoy its simplicity.

    Things I hate about Cocoa:

    - It's not managed code. Why should application developers in this day and age have to worry about memory management? (autorelease doesnt count)

    - Having to keep two different programming paradigms in my head. I never even learned C#, I learned Java and jumped right into C#, because they were so similar.

    - Practically no one else in the world uses Objective C, so it's not a very valuable (salary-wise) skill to have.

    - The X-Code/Interface Builder dance is quite clunky. It was cool back in the day, but Microsoft has a much better system developed.

    - VS.NET 2005 > Xcode

    --
    /* Moderating all non-anonymous trolls up since 2004 */
    1. Re:Notes from a Cocoa AND .NET developer by bani · · Score: 1, Insightful

      pico > xcode

      really, i got tired of all the crashes. edit project properties in the ui, boom. internal error. build project. boom. internal error.

      i ended up writing everything in pico and using scons for builds. no boom.

    2. Re:Notes from a Cocoa AND .NET developer by tyrione · · Score: 1

      When Apple reaches 10% current quarter market sales what will be the excuse? They've been projected to hit 5% this Winter quarter. When the Intel push comes the rate will increase much more so. Your value as an ObjC developer will increase accordingly and moreso if you are a seasoned developer who knows the strengths and pitfalls of the system frameworks.

    3. Re:Notes from a Cocoa AND .NET developer by hkb · · Score: 1

      I hope so. After the initial learning curve, I really love Objective-C and almost prefer most aspects of it to that of Java/C#/C++/etc

      --
      /* Moderating all non-anonymous trolls up since 2004 */
    4. Re:Notes from a Cocoa AND .NET developer by hkb · · Score: 1

      I'm not sure why you got modded as a troll, it seems you were trying to make a legitimate point. However, I don't recall Xcode or IB ever crashing on me (which is odd, since everything seems to crash once in a while).

      --
      /* Moderating all non-anonymous trolls up since 2004 */
    5. Re:Notes from a Cocoa AND .NET developer by bani · · Score: 1

      I'm not sure why you got modded as a troll

      You're obviously new around here. Welcome to /.

    6. Re:Notes from a Cocoa AND .NET developer by Anonymous Coward · · Score: 0

      Is there a reason that you preferred pico to vim? I only ask because pico has to be right after ed for shittiest unix text editors to write code in.

  55. thats why google uses python by Anonymous Coward · · Score: 1, Informative

    python

    garbage collection - no
    pointers - yes
    ide - no
    type '.' and get function names - no

    i strongly suggest you try out python.
    a perfect language for brilliant folks
    such as yourself

  56. Jef Raskin on Steve Jobs by Savantissimo · · Score: 3, Informative
    Jef Raskin, the creator of the Mac, wrote a piece, Holes In The Histories in which he gives the inside story on Steve Jobs:

    Another cause for inaccuracy is the deliberate misleading of reporters, coupled with some reporters' tendency to believe an apparently sincere and/or famous source. Levy's book gives prominent thanks to Apple's PR department, which learned the history of the Mac from Steve Jobs, whose well-deserved sobriquet at Apple (and later at NeXT) was "reality distortion field." Many times I had seen him baldly tell a lie to suppliers, reporters, employees, investors, and to me; Stross's book provides many examples of this. When caught, Jobs's tactic was to apologize profusely and appear contrite; then he'd do it again. His charm and apparent sincerity took in nearly everybody he dealt with, even after they'd been burnt a few times. For those who didn't know him he seemed utterly credible. In his defense it should be pointed out that some reality distortion is necessary when you are pioneering: when I am conveying my vision of the future I create a non-existent world in the minds of listeners and try to convince them that it is desirable and even inevitable. I'm pretty good at this, but Jobs is a master, unconstrained by "maybe" and "probably." His attractive creation-myth--swallowed whole by susceptible reporters--wherein Apple's computers were invented exclusively by college drop-outs and intuitive engineers flying by the seats of their pants became legend. To hear him tell it, the Macintosh had practically been born, homespun, in Abe Lincoln's log cabin. That it had been spawned by an ex-professor and computer-center director with an advanced degree in computer science would have blown the myth away. A good story will often beat out the dull facts into print.
    --
    "Is life so dear, or peace so sweet, as to be purchased at the price of chains and slavery?" - Patrick Henry
    1. Re:Jef Raskin on Steve Jobs by jcr · · Score: 5, Insightful

      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

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:Jef Raskin on Steve Jobs by theAtomicFireball · · Score: 5, Informative
      Jef Raskin, the creator of the Mac,

      Jeff Raskin was NOT the creator of the Mac. He was the originator (IIRC) of the Macintosh project, and its first manager, but his vision of the Macintosh was so at odds with Jobs', that to give Jef any credit for what the Macintosh became is unfair and incorrect. If you want to see Jeff's vision, go look at the Canon Cat, which he designed after being asked to leave teh Macintosh project.

      Raskin was a smart guy, but he wanted to design interfaces for smart people; interfaces that had a learning curve associated with them due to all sorts of key combinations to remember. Though he backed away from this a little later in his life, when he saw how successful GUIs were (and, perhaps, wanting to claim an unfair amount of credit for that), all his interfaces were designed to be incredibly efficient for the intelligent geek who wanted to take the time to learn how to use them.

      That doesn't really go along with the Mac's tagline "The computer for the rest of us."

      Remember that history and fact are not the same thing. Jef & Steve both have (well, in Jef's case, had) their versions of what happened; neither is fact, and the real truth, if there is one, probably lies somewhere in the middle, probably a touch closer to Jobs' version, that is, if you know how to interpret the Jobsian language and make sure to read it outside of the RDF.
  57. Where is all the Mac Software? by ChicagoDave · · Score: 1

    All of us developers have personal preferences and employment reasons for adhering to a certain technology standard. I write .NET code (VB or C#) and although there is voodoo within the IDE, it's not so horrible that I would choose another platform.

    I can't speak for Objective C, but I know a few developers that love it and say more or less the same thing about it...that it has warts, but they prefer it over anything else.

    So the evalutation should be in another area....and I will pick on the lack of choice where Mac software is concerned.

    I bought a mac-mini for my wife and kids, feeling it provided a more stable environment for there mistake-probe usage. I feel vindicated over the past few months in that I have had almost no interaction with the mac and they've been happily doing their thing.

    But when it comes to finding software for it, I have a huge problem. There is almost no kids software for OSX. Not only is there a ton of commercial software for Windows, but there is also a ton of shareware software for Windows. Where is the shareware software for the Mac.

    I still believe that one of the primary reasons Windows proliferated over other OS's is that Microsoft created Visual Basic. The original VB made the creation of windowing software easy enough so that nearly anyone could do it. Obviously some of these efforts were a joke, but many of these efforts ended up being extremely useful applications. There was a period of time, in the BBS days and pre-Internet, that VB shareware was everywhere and had an enormous impact on why people purchased Windows computer systems.

    So Objective C may be a wonderful platform for developers, but it has a fairly high learning curve for the average joe, and this is where you win OS battles. Quality will keep the professionals interested, but quantity of software is where you will win more users.

    So if Apple really wanted to put a dent in Windows, they would adopt some platform that would mimic the ease of development that VB gave Windows 15 years ago. Granted, professional developers won't touch it and will likely scoff at it, but all of the entry level and non-professional developers might take a shot at creating one off shareware type applications that there will then be a buzz about all of the really cool apps you can download for your mac.

    --
    http://chicagodave.wordpress.com
    1. Re:Where is all the Mac Software? by theolein · · Score: 1

      try macupdate.com or versiontracker.com

    2. Re:Where is all the Mac Software? by Weedlekin · · Score: 1

      "So if Apple really wanted to put a dent in Windows, they would adopt some platform that would mimic the ease of development that VB gave Windows 15 years ago. "

      They already have one called AppleScript. It evolved from HyperCard which is a much older technology than VB -- people were using it to write commercial and shareware apps for Macs while Gates was still telling the world that 640K should be enough for anyone.

      AppleScript is a much easier language to learn than BASIC (it looks a lot like plain English), and it also has more "levels" of applicability: you can use it to do little things like automate the workflow of existing applications, build full Cocoa applications with Interface Builder and X-Code, and everything in between.

      So plain Joes can indeed build full OS X applications using an easy, fully garbage-collected language that attaches events to UIs made with Interface Builder using a paradigm that is very similar indeed to that of RAD Windows IDEs such as VB and Delphi. Everything they need is there on their OS X disks, they won't even need to spend any extra money to get it.

      BTW: those who really do want to use BASIC can. RealBASIC is a pretty comprehensive commercial system that runs on Mac, Windows, and Linux, and can be used on any of those platforms to cross compile for any of the others (it is a true compiler, not an interpreter). FutureBASIC is another commercial offering, but is Mac-specific -- it is however a blazingly fast compiler that produces well-optimised executables.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    3. Re:Where is all the Mac Software? by theAtomicFireball · · Score: 1
      So Objective C may be a wonderful platform for developers, but it has a fairly high learning curve for the average joe, and this is where you win OS battles. Quality will keep the professionals interested, but quantity of software is where you will win more users.
      Do you really think so? You think by having lots of mediocre quality third-party software available, Apple will win? I mean, for the "average joe", there's RealBasic. For real developers, Objective-C just isn't that hard to learn... the language itself can be learned in a few hours. Trying to dive right into Cocoa without any programming experience can be a bit of a challenge, but perhaps the state of software quality would be better if we didn't think that people should be able to program without actually learning how to program.
    4. Re:Where is all the Mac Software? by NutscrapeSucks · · Score: 1

      Just to underline your point -- AppleScript Studio* appears to be a very "VBish" RAD enviornment. However this tool gets no hype in the Mac community, and even a lot of the Mac defenders in this comment secition don't seem to be aware of it.

      I think this is because there's a huge divide in the Mac world between the commercial application programmers (ObjC, C++) and the regular users. For both Windows and Linux there's a huge number of lower-level integration/solution programmers, and thus scripting/interpreted solutions have a lot more popularity and hype surrounding them. Apple just doesn't have that many of the Power User/Hack Coder-type user that would cause A.S.S. to gain momentum.

      (* IMO, the AppleScript language is so annoying that I'd rather learn to program ObjC with my toes than play with this thing, but, well, it does exist.)

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    5. Re:Where is all the Mac Software? by Foerstner · · Score: 1

      Broderbund and Software MacKiev have quite a bit of fairly good quality children's software for the Mac. (KidPix 3X is a gem.) You can occasionally turn up something else on Amazon as well. As a last resort, choose "Mac OS X Software" from the Apple menu; Apple's own database is sometimes out of date and doesn't distinguish marketing hype froom reality.

      Someone else mentioned Versiontracker and MacUpdate, the major Mac shareware sites. Shareware was never unique to DOS or Windows. CompuServe and many BBS's had Mac shareware areas, too.

      And it never hurts to Google for "mac WindowsSoftwareTitle"; you may not find an actual Mac version, but you just might find an equivalent.

      No, the quantity will never match that of The Dominant Platform, but the quality is often as good or better than anything for Windows. The developers that do target the Mac are usually more established players with offerings that have proven themselves in the marketplace. Mac users aren't tolerant of low-quality ports; Microsoft learned this the hard way a few years back. I'm not sure I'd want hordes of Visual Basic programmers rushing into the Mac marketplace; it would probably result in a lot of disappointed users and almost as many disappointed developers. Writing Mac software that is successful requires a lot of attention; many popular Windows titles (WordPerfect and Lotus 1-2-3 in the early '90s, CorelDraw more recently) flopped on the Mac.

      --
      The US free market: two halves of a government-granted duopoly are free to set the market price.
    6. Re:Where is all the Mac Software? by Weedlekin · · Score: 1

      I think it's the fact that Apple's primary market is desktop users, whereas the primary Linux market is servers. Servers tend to be managed by system administrators, and system administrators are accustomed to scripting using the shell, awk, sed, etc., so powerful scripting languages such as Perl and Python fit naturally into their way of doing things. And a lot of those servers are web servers of one sort or another, which means LAMP, and part of that is again powerful scripting languages.

      The situation is pretty much the same in the Windows world. Microsoft ship Office with Visual Basic for Applications (VBA), but how many users (as opposed to programmers) actually take advantage of it? Its main claim to fame seems to be as a vector for viruses, not a technology that allows people to write entire workflow applications in much the same way as AppleScript does. About the only thing even power-users tend to take advantage of is Excel macros and the sort of very simple Access stuff that can be constructed entirely by wizards, no programming required.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    7. Re:Where is all the Mac Software? by NutscrapeSucks · · Score: 1

      > I think it's the fact that Apple's primary market is desktop users,

      Apple's primary market is consumer desktop users. Microsoft's is corporate desktop users. The need for custom hacked solutions is just far less in the Mac world.

      One thing to keep in mind is that even if only a small percentage of Windows users take advantage of VBA/VB/Access, you are still talking about huge number of people numerically. At least in my experience the Windows Power User is alive and well inside the corporate walls.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    8. Re:Where is all the Mac Software? by Weedlekin · · Score: 1

      I think Apple also have a fairly big professional market: Macs have a substantial presence in the sciences, art and design, animation, music production, etc. However, most of these users (with the likely exception of scientists) tend to take advantage of specialist software that incorporates all the necessary workflow stuff, so they have little need of AppleScript. Windows power users on the other hand are frequently working with rather more generic applications that can benefit greatly from custom work-flows, which is great as far as MS are concerned, because it effectively ties those users to Office for ever (note that this is not a criticism, but merely a statement of fact).

      NB: I also think that the lack of user Mac scripting has a lot to do with Apple's marketing (or in this case, lack thereof). The first time they made any real commotion about Mac scriptability it in recent years was when pushing Automator as one of the significant new technologies in OS X 10.4. Before that, most potential and existing Mac users were probably unaware of the fact that there is a powerful and pretty easy to use scripting environment sitting there waiting to be used. Perhaps more people would be inclined to experiment with it if they actually knew it was there, and didn't have to hunt around for information on how to use it.

      --
      I'm not going to change your sheets again, Mr. Hastings.
    9. Re:Where is all the Mac Software? by ChicagoDave · · Score: 1

      This makes sense to me, but it still leaves an opening. TrueBASIC is nice, but it's no VB. I tried monkeying around with AppleScript and the GUI builder thingy and was lost almost immediately. It's all separate tools that I can't see how it all pulls together.

      With a VB like tool or one-stop-shop IDE, you'd have a lot more people building semi-professional apps and then the Mac might do some crossover into the commercial desktop user. It's probably too late, but it might also open up the shareware/educational markets more to teachers and such.

      No matter what, I just don't see enough software for me to take the Mac seriously beyond being a toy for my iPod or for my girls to play Nanosaur or my wife to manage her PTO work.

      --
      http://chicagodave.wordpress.com
  58. ObjectiveC good/bad isn't the issue. by minniger · · Score: 2, Interesting

    The issue for me is how much time and effort is it worth learning a language and framework that only exists on a single minority platform?

    I personally feel that OSX is a beautiful combination of unixy goodness and gui usability. So much so that I dropped a load on a quad-g5 last month. And i've been playing with objectivec/cocoa/xcode/ib long enough to develop a few opinions:

    1. Cocoa is the best thing going for the mac. It's feature rich and has loads of good documentation and examples. Far nicer (at a code level) to build GUIs in than say... Swing.
    2. XCode/IB - Hello? 1992 called and wants it tech back. Once you get the hang of it's not a bad combo. But Delphi showed the way forward to today and not having two way tools is painful.
    3. Objective C ditto. As a java guy I-CANT-STAND having to deal with .h files again. Copy and pasting message signatures around sure is a lot of fun. But that's just me. Bigger issue is memory management. It's a pain but it's better than c at least.
    4. Libraries - As long as there is a cocoa lib for what you want to do you're good. As soon as you have to start calling c or c++ based libs you're screwed. It's nice an familiar to c/c++ guys. But it's rather jarring to be running along in objc and all of a sudden have a load of pointers hit you in the face, throw in the CoreFoundatiaon and carbon stuff... ech!. Every time I see it i'm just "argh... this is why I prog in java".
    5. Deprecated Java-Cocoa bridge - Nice idea but making java behave like objc does in cocoa is pretty messy from a java prospective. Probably is better than they just killed it off.

    So, back to the point. ObjC has some good and some bad. If you could hope to even just port your code to another platform I'd be all over it. But without that ability what business is going to let you build an app with it? What business is going to buy an app that is osx only? Given these two constraints what left? Server based apps? Java pretty much has that wrapped up in all but the most fervent windows only shops.

    The good news is that the mac market is expanding like crazy. It's only ~4% or so.. but that's millions and millions of users who actually buy software. Dunno if it's enough to make a living off of yet, but perhaps someday.

    1. Re:ObjectiveC good/bad isn't the issue. by bani · · Score: 1

      the problems for mac application development is this:

      1) writing in objc guarantees your application will be osx-only. try porting an osx objc application to win32/linux? no chance in hell.

      2) even with c++, the carbon api is so radically different from linux/win32 to make porting a major pita.

      by focusing so much effort on objc/cocoa, apple are artificially limiting their audience and markets.

      in essence, apple is busy preaching to the choir when apple should be trying to get converts instead.

    2. Re:ObjectiveC good/bad isn't the issue. by bnenning · · Score: 1

      try porting an osx objc application to win32/linux? no chance in hell.

      Not necessarily.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    3. Re:ObjectiveC good/bad isn't the issue. by bani · · Score: 1

      that's just the nextstep classes (NS*). none of cocoa. if you target gnustep, you give up cocoa and all the osx "magic" that goes with it, because cocoa is not portable.

      you'd be better off using qt.

    4. Re:ObjectiveC good/bad isn't the issue. by bnenning · · Score: 1

      that's just the nextstep classes (NS*). none of cocoa.

      The OpenStep classes are a large portion of Cocoa, and GNUstep is adding many of Apple's new ObjC APIs. Some recent additions like bindings and CoreImage aren't supported, but you can write nontrivial programs that work on both OS X and GNUstep.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
  59. "What has Apple done recently" by jcr · · Score: 2, Interesting

    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

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  60. ObjectiveC and Cocoa by macpeep · · Score: 2, Interesting

    I've been programming since I was 7. I've done Basic, Pascal, C, x86 assembly, Modula 2, SML, C++, Java, plus a large bunch of scripting languages. I've programmed for the Java VM (ME, SE and EE), Amiga, DOS, 16 and 32 bit Windows, most UNIX variants and a large number of mobile OS's including Symbian, PalmOS and Windows Mobile.

    When I got a Apple PowerBook, my intention was not to use it for programming. ObjectiveC and Cocoa was totally irrelevant for me and I didn't bother to learn it. That is, until one evening when I decided to just take a look at some of the ADC docs included with XCode. After reading for about an hour, I was very surprised. It couldn't possibly be this easy and straightforward. It felt like it Cocoa must be seriously limited in functionality. The API was so easy and so compact, and ObjectiveC was like a halfway mix of Java and C++. I bought a book on Cocoa and read through it in about a week. It covered everything from basic GUI programming to drag and drop, printing with pagination, OpenGL, making custom widgets, data binding and persistence, preferences, making and using frameworks (think DLL's), and so much much more. And all of this was amazingly simple compared to any other OS and language combo I had ever used. And not just easier, but dramatically easier.

    As an example, the chapter on drag and drop was something like 5 pages and covered making drag sources, drag targets, controlling the icon you see while you drag, data flavors, and so on. The classes involved were all extremely simple, easy and intuitive. Printing is even easier!

    I haven't really had any need to do any apps of my own lately, so admittedly I haven't used Cocoa for anything in particular other than simple test applications, but I'm thoroughly impressed!! I would give about 80% of the credit to Cocoa, and 20% to ObjectiveC. You can use Cocoa with Java too, but it seems a tad bit more compatible and elegant with Cocoa. Also, looking at the more recent API's like CoreImage, it seems there's more and more functionality in the Cocoa family of API's but the simplicity remains. I strongly recommend picking up ObjectiveC if you know C++ or Java!

    Peppe

  61. better solution by penguin-collective · · Score: 3, Informative

    The next generation Objective C and Xcode already exist: Smalltalk and Smalltalk programming environments.

    Smalltalk is a language with Objective C's object model, but runtime safety, garbage collection, and reflection. Objective C was an attempt to create a very low overhead version of Smalltalk that would interoperate more easily with C code, but most of the technical reasons for making the compromises that were made in the design of Objective C are gone.

    The only thing that would need to be done would be to extend Smalltalk with a notion of "native" or "unsafe" methods; that has been done multiple times before, and it can be done either by permitting C code to be embedded in Smalltalk (reversing the Smalltalk/C situation from Objective C) or by defining a Smalltalk subset that's close to the machine (as Squeak has done).

    1. Re:better solution by tbien · · Score: 1

      I'm pretty troubled by the whole Smalltalk "image" idea... I just don't like it. For me Objective-C is clearly the better Smalltalk but YMMV. And to be fair there's only one language on the planet that got everything right - Common Lisp with CLOS! :-)

    2. Re:better solution by penguin-collective · · Score: 1

      Smaltalk does not need to be implemented as an image, it can be implemented as a batch compiler.

      Furthermore, even image-based Smalltalks usually have an option for creating a stand-alone application that eliminates everything that's not used by the application.

      I think Smalltalk is a better language than CommonLisp because it's easier to use and less complex.

    3. Re:better solution by Anonymous Coward · · Score: 0

      Smalltalk and Cocoa are a great fit. See F-Script.

  62. One more data point that /. is stupid by Kris+Magnusson · · Score: 0

    some guy sends steve jobs an email, gets a canned response, sends another email, gets another canned response, and the ensuing result is that the four-email thread makes it to the front page of /.

    there have got to be more than enough bottles of champagne to go around in the world to drink than to be concerned about things like this . . .

    ....... kris

    --
    "I thought I could organize freedom. How Scandinavian of me."
  63. ...Between Steve and Himself by xrayspx · · Score: 1

    Hello me, it's ME again....

    Now Steve's Sweating BULLETS.

  64. What about Dylan? by johansalk · · Score: 1

    Does anyone use Dylan?

    1. Re:What about Dylan? by Ohreally_factor · · Score: 1

      I tried once, but the resulting code was tangled up in blue.

      --
      It's not offtopic, dumbass. It's orthogonal.
  65. Apple blew off Metrowerks. Now they must suffer. by Animats · · Score: 2, Interesting
    Metrowerks was there for Apple when all Apple had was MPW, which was a clone of the UNIX Programmer's Workbench, circa 1979. Metrowerks made the PowerPC transition possible. And recently, Apple made it hard for users of the Metrowerks environment to convert their programs.

    Metrowerks offered a stable, reliable development environment, even as Apple was frantically moving from one development platform to another. (Use Rhapsody! Prepare for Copeland! Use OpenDoc! Dump OpenDoc! Use Carbon! No, use Cocoa! Use OpenStep! Use Objective-C! Switch to XCode!.) Each time Apple pulled one of these stunts, more developers dropped their platform.

  66. Free speech plus/minus by Anonymous Coward · · Score: 0

    "As a .NET developer, I haven't looked too hard at Mac dev tools, but I will say I could see an argument that Microsoft's rich development environment has some unexcpected consequences. Microsoft has made it easy for just about anybody to pick up software development, and as a result, just about anybody has picked up software development. =) "

    Well that certainly explains the open source programming tools.

    "Still, they have a ways to go IMO, and finding the balance between making development easy and making it "good" is difficult."

    Free speech is like that. I think we should gag all those that say something we don't want to hear. The overall environment should improve.

  67. Don't ruin Steve, please by hkb · · Score: 5, Insightful

    The one thing I really like about Steve Jobs... well there are lots of things. The thing I like most about Steve Jobs is that he's unusually candid in email. I have written him a few times in the past from everything about OS X to vegan recipes and he's replied, often with expressed interest and candidness. This is something not to be abused. When this kind of stuff is publicized, I worry about two things:

    1. Steve gets inundated with tons of dumb emails just to get a "response from steve" to hang on the wall. End effect is that Steve stops reading his email.

    2. Steve stops being so personable because he figures anything he says will end up splattered all over the web. Within a few days, this simple "Dear Steve, I don't like Objective-C" thing will be blown out of proportion by cnet, dvorak, and other journalists who are entirely too clueless, et al. Remember, what Steve says could affect stock prices, etc. And Steve will just sigh and stop responding.

    It's really, really nice having a CEO that doesn't just communicate through press releases, folks. Don't ruin it. It was my hope that those few who knew Steve responded to his email would keep it on the down low.

    --
    /* Moderating all non-anonymous trolls up since 2004 */
    1. Re:Don't ruin Steve, please by Anonymous Coward · · Score: 0

      It was my hope that those few who knew Steve responded to his email would keep it on the down low.

      What's that? Steve Jobs responds to his emails?? Time to inundate him with emails! Thanks for not keeping this on the down low!

    2. Re:Don't ruin Steve, please by hkb · · Score: 1

      I'm sorry but one of my comments shoved under a headlining story about it ain't gonna make a difference anymore. Cat's out of the bag, anonymous dickwad.

      --
      /* Moderating all non-anonymous trolls up since 2004 */
    3. Re:Don't ruin Steve, please by Anonymous Coward · · Score: 0

      Steve's a big boy, don't you think? I'm sure he can handle it. I doubt he sends out ANY communications without prior thought and his taking full responsibility for his words.

    4. Re:Don't ruin Steve, please by oudzeeman · · Score: 1

      Steve has several people that screen his emails - and I wouldn't be surprised if they occasionally respond for him...He gets thousands per week and they need to make sure that legitimate emails don't get lost in all the lame emails from douchebag fanboys asking him about vegan recipies

    5. Re:Don't ruin Steve, please by hkb · · Score: 1

      You're a dumbfuck.

      --
      /* Moderating all non-anonymous trolls up since 2004 */
  68. Objective-C by theAtomicFireball · · Score: 1

    At a risk of diving into a holy-war topic, I have to say I think both the author and Steve are right.

    Jobs is right in stating that Objective-C and Cocoa are perfect. In a sense at least. The approach, and the high level concepts behind it are so much better and more elegant than those that drive .Net, or for that matter, most any application building toolset out there. Once you grok the way it works (which take a bit of learning; don't snap-judge it until you've spent some quality time with it), you come to realize that NeXT was so far ahead of the pack as to not even be funny. I've never used anything to compare with it in terms of quickly creating maintainable, robust desktop applications. Other solutions, like VB.net, trade off maintainability and organization in order to lower the bars to entry, which is a trade off that I think, in the long run, has hurt the state of the industry. I don't think it's necessarily a good thing to make it so anyone can develop software, because then anyone does. Once you grok Cocoa, you can build applications incredibly fast with it, but you do need to understand a bit about how it all fits together, and that's not a bad thing in terms of overall software quality.

    And, as to the author's question about what has Apple done for Cocoa developers lately? Well, I'd say Core Data, Cocoa Bindings, Key Value Observing, refinements to the project templates and Xcode would all count and all have been happening at a steady pace since before Jaguar came out.

    Now... on the other hand, there is a valid argument that Xcode and Cocoa lag behind Visual Studio/.Net and Eclipse/Java in many respects. There are many refinements and features in Microsoft's current development tools that are extremely nice and which do not have a comparable feature in Apple's tools. Eclipse also has several features that I would love to see added to Xcode. Java and Microsoft's CLR have things that I would like to see incorporated into Objective-C's runtime. To say it's "perfect" is quite a stretch if you look at the big picture and aren't sitting in the RDF.

    But having used both Apple's and Microsoft's tools quite a bit (and Eclipse as well), I have to say I still prefer developing in Cocoa over anything else. And not just a little: by far. Despite the fact that it's missing some bells and whistles, and in a few places lacks the polish of the competition, from a high-level view, it's the most elegant tool/language/framework combination I've ever used. I didn't take to it right away, though. You really have to spend some time with Objective-C and Cocoa before the little light bulb goes on in your head and you "get it". But once you do, it's undeniably cool. If you don't see it, then you don't get it.

    Now, before you jump on me... "better" is a subjective term. I have and will continue to recommend other solutions to my clients based on the practical considerations of the specific project. I have Visual Studio sitting open on one of my computers at the moment not because my client mandated it, but because I recommended it after looking at the whole situation. Is "Cocoa" better? In a vacuum, probably. In reality, sometimes yes, sometimes no.

  69. The Open Source Wow factor. by Anonymous Coward · · Score: 0

    "When you pull in developers by "wowing" them, you get a certain type of developer. "

    Oh, wow! Open Source is cool!

  70. Re:That guy is an idiot by theAtomicFireball · · Score: 1

    Not to state the obvious or anything, but Objective-C is perfect because that was a troll. Please don't feed the trolls. :)

  71. PyObjC is where it's at by burris · · Score: 1

    PyObjC is the best way to develop software on the Mac. The bridge is reasonably comprehensive and complete. You can always drop down to Objective-C if necessary. Python is just a good of a programming language as C# yet much more mature. Cocoa is by far the best and most mature set of APIs available for writing software on any platform.

    Personally, I have used PyObjC to build an application that won a MacWorld Eddy and has enjoyed millions of downloads. PyObjC saved me tons of time and allowed me to focus on making my app work well rather than simply work. The developers are responsive and seem committed to making PyObjC the best environment for writing Mac software. I think they have succeeded and I have nothing but good things to say about PyObjC.

    Check it out, http://pyobjc.sourceforge.net/

    1. Re:PyObjC is where it's at by mihalis · · Score: 1
      PyObjC is the best way to develop software on the Mac

      ... maybe, but it needs a catchier name, seriously!

    2. Re:PyObjC is where it's at by Anonymous Coward · · Score: 0

      PyObjC on Rails?

  72. You should try jrMan by magoghm · · Score: 1

    You should try jrMan. It's a renderer written in Java, and it's over twice as fast as other renderers written in C++ with the same algorithm.

    1. Re:You should try jrMan by Anonymous Coward · · Score: 0

      Put down the kool-aid and back this assertion up please.

  73. I've used Cocoa, .NET and C++/MFC by ClearlyPennsylvania · · Score: 1

    I done professional development with Objective-C/Cocoa, .NET, and C++/MFC, and .NET is by far the fastest and easiest to work with. Cocoa's ok - far better than C++/MFC when it comes to building apps with a GUI - .NET is still more powerful. Furthermore, Xcode just kinda sucks. It's not stable and very buggy, especially when it comes debugging. Visual Studio is bloated, I can't deny that, but it does an excellent job. Compare, for example, the amount of steps it takes to build a simple app with button on the center that'll close when run it. In .NET, it's something like this: 1. Drag button on to form 2. Double click button to create the Close method 3. Type "this.Close()" in the form In Cocoa, it's more like this: 1. Open up MainMenu.nib in interface builder 2. Drag a button on to the form 3. Subclass Object to create a controller class 4. Ctrl-drag from Controller icon to the class 5. Add an action to the controller class's header file 6. Ctrl-drag from button to the action 7. Save everything 8. Open up the .m file 9. Type the close code into the .m file (I may have even missed a few steps in there. And yes, you have to do all this dragging in Cocoa - you can't write that stuff by hand) Now, which one is more complicated? The speed it takes to do the GUI stuff very much matters when you're writing a desktop application. In C++/MFC you have to spend a lot of time on the GUI stuff, instead of on the core code. That's somewhat true about Cocoa, although not quite as extreme.

    1. Re:I've used Cocoa, .NET and C++/MFC by theAtomicFireball · · Score: 1
      Compare, for example, the amount of steps it takes to build a simple app with button on the center that'll close when run it.
      Sorry, but this is a bullshit example. Your two solutions shows that you clearly have a lot more experience with .Net than with Cocoa, and if you ever did "professional" Cocoa work, your clients got ripped off if they paid by the hour.

      To accomplish your example application, you need to write a single line of code with VB .net. Not bad. But you need to write zero lines of code to accomplish it in Cocoa. The steps to do it would be to drag a button onto the window, control drag from the button to the window's icon and select the performClose: action. That's it. Job done. It's only faster in .Net if you don't know what you're doing in Cocoa.

      On top of that, compare the size of the two generated applications. The VB .net application will be noticeably larger (roughly 10-20X larger depending on version and settings)- your one line of VB code created bloated application.
    2. Re:I've used Cocoa, .NET and C++/MFC by Dollar+Sign+TA · · Score: 1

      Great - you can write a specialized application with zero lines. Hey, here's an idea - I'll create a dev tool where you can write an entire photo editting tool with zero lines of code. Know how I'll do that? I'll just supply a "template" with my dev tool which does exactly that. As you can see, what you can write with "zero" lines of code doesn't prove anything. But, let's discuss what you've said above: (1) The example I gave above was to illustrate the steps it takes to make a button perform a simple action (the action itself isn't the point). So, while I could've done something like have it use a built in action, I chose not to because it's not the point. (2) The code I gave was clearly not VB - it was C# (3) Even with your solution for a very specific action, it STILL requires more steps (4) I'm willing to bet that if you actually timed the number of seconds it takes to "write" the two apps, .NET would still win out. (5) It's called terminate:, not performClose: - at least in Xcode 2.1 (6) "Compare the size of the two generated applications". Great idea, let's compare the sizes! TheClose.exe (C#.NET) is 20.0KB TheClose.app (Obj-C/Cocoa) is 104KB. (that's for your performClose: / terminate: approach) Or perhaps you would talking about the project folders themselves? Ok, then: Project folder for .NET version: 124KB Project folder for Cocoa version: 4MB. I'm sorry, you had a point somewhere about the size of the applications? (7) my "professional" Cocoa work was at Apple so I was on salary, not paid by hours. Even my teammates there admitted that Xcode sucks and Visual Studio is much better. Many people would even use emacs because Xcode was that bad. You can say what you want about my Cocoa experience, but I think if Apple employees with years of experience will admit that Xcode sucks then, yes, it probably does.

    3. Re:I've used Cocoa, .NET and C++/MFC by coupling · · Score: 1

      Yep, you're quite right. Xcode 2.1 does create a 104Kb executable. A debug executable. Try the release build style; it's 56Kb, of which 20Kb is binary. And performClose: works fine as it closes the active window whereas terminate: closes the app. You say your "professional" Cocoa experiance was at Apple. Was that on Aperture's RAW converters ? I wish I could get your contracting gigs...

    4. Re:I've used Cocoa, .NET and C++/MFC by ClearlyPennsylvania · · Score: 1

      Hmm, so much for that whole "bloated executable thing." Looks like .NET is, at worse, the same as Cocoa as far as executable size. At best, much smaller. And it wasn't a contracting gig - I was an Apple employee.

    5. Re:I've used Cocoa, .NET and C++/MFC by theAtomicFireball · · Score: 2, Insightful
      Great - you can write a specialized application with zero lines. Hey, here's an idea - I'll create a dev tool
      You set up the example, not me. I was just correcting your inefficient and exaggerated Cocoa solution to it. Don't compare the two using a simplistic example and then complain about the fact that it's a simplistic example.
      (1) The example I gave above was to illustrate the steps it takes to make a button perform a simple action (the action itself isn't the point). So, while I could've done something like have it use a built in action, I chose not to because it's not the point.
      How is it a fair comparison if you do it in .net the standard way and then intentionally choose a convoluted, non-standard approach with several unnecessary steps in Cocoa? All methods defined with IBAction can be accessed directly from interface builder without writing code, so I have trouble understanding why you would intentionally choose not to take advantage of such a fundamental feature.
      (2) The code I gave was clearly not VB - it was C#
      You are absolutely 100% right. Sorry about that.
      (3) Even with your solution for a very specific action, it STILL requires more steps
      What I suggested was not a solution to a specific problem, it is the standard way of doing the specific task you set up as an illustrative scenario, as you (of course) know. Despite that, how is it possibly more steps? You have to place the button on the window in both environments. It took me one more step to connect the button to the performClose: action method (two if you count each click of the mouse as a separate action) so it's hard to see how it could be more steps, since you have to drop to the code editor and type in a line of code in .net.
      I'm willing to bet that if you actually timed the number of seconds it takes to "write" the two apps, .NET would still win out.
      I would take that bet. I might just go ahead and do it for grins and giggles since I've got both environments open at the moment.
      Great idea, let's compare the sizes!
      Interesting. Not the same results I'm seeing, but I'll take your word for it. No point in arguing it, since it's a relatively minor issue.
      5) It's called terminate:, not performClose: - at least in Xcode 2.1
      No. You said to close the window. On Windows, that's the same as terminating the application, but on the Mac, it's not the same (as I'm sure you know); I was doing what you said - I sent the NSWindow instance a performClose: method, but we could just as easily have sent the application delegate a terminate: message (NSWindow does not have a terminate: method) - it would take no longer. The IDE version we used wouldn't affect which outlets were available in either NSWindow or NSApplication, however.
      my "professional" Cocoa work was at Apple so I was on salary, not paid by hours.
      Good thing, it would seem.
      Even my teammates there admitted that Xcode sucks and Visual Studio is much better. Many people would even use emacs because Xcode was that bad.
      I don't doubt that some people even at Apple admit that Visual Studio is a better editor. I wasn't arguing about which one was a better code editor; I was arguing about the flawed comparison you made between how long it takes to build a simple application in the two environments.
      You can say what you want about my Cocoa experience,
      I don't know anything about your Cocoa experience so have no comment on it; your resume could be absolutely amazing for all I know. The fact that you approached a matter as simple as closing a window in Cocoa by doing a half-dozen unnecessary steps does make me question your competence in Cocoa... but not your experience. If you know better, than it looks like you were intentionally trying to overstate the case to make Cocoa look bad. Neither of the two likely possibilities endears you to me.
    6. Re:I've used Cocoa, .NET and C++/MFC by ClearlyPennsylvania · · Score: 1

      What I intended to illustrate was the steps it took to create an app, put a button on a form and make pressing the button execute some piece of code. That is, after all, the building blocks of desktop applications: controls which respond to events by executing chunks of code. I probably should have left the specifics of which action it is out of the equation, as every development environment has specifics actions which can be performed with less code than another dev environment That being said, I think Xcode has its advantage. It has some features that are very nice when building large apps (like the search tool for locating a file). It also tends to produce more attractive UIs (that's a combination of the design of OS X and the fact that Xcode enforces the OS X design guidelines). Nonetheless, I've found Xcode (with Cocoa / Obj-C) more painful to work with than Visual Studio (with .NET). There are pros and cons of each, however.

    7. Re:I've used Cocoa, .NET and C++/MFC by tbien · · Score: 1

      Somehow that "was" comforts me a lot :-)

    8. Re:I've used Cocoa, .NET and C++/MFC by homesteader · · Score: 1

      As a Non-Programmer who occasionally builds an application to do a sysAdmin/NetAdmin task, I fully agree with ClearlyPennsylvania. For me, again not-A-programmer, the point is to start a project and accomplish a task. A single button application where clicking the button does "something©" is extremely quick to start in VS, in a matter of seconds I'm thinking about my "something©" and not thinking about the vagaries of a programming environment. While I can appreciate the Build UI:Write Class Method:Connect UI to Class Method process, I think the Double Click UI(Method Autocreated in Form Class):Write Class Method is pretty slick. Maybe the inherent weakness here is that you end up with your Class comingled with the Form Class when they should really be separate.

      This is where the Obj-C/Cocoa/XCode weakness really hits home for me. I'm not a programmer. The purity of the application created isn't necessarily the utmost of concern for me. It's great if the IDE helps keep things clean, but I've found it much harder to break into learning Obj-C/Cocoa/XCode than VB/.NET/VS. That said, I know that the methods for binding the UI to the code aren't the primary reasons I've had difficulty here.

      There, I've said it. I write small basic apps in VISUAL BASIC.NET. It gets the job done. It makes my job easier. It makes me more productive.

    9. Re:I've used Cocoa, .NET and C++/MFC by theAtomicFireball · · Score: 1
      What I intended to illustrate was the steps it took to create an app, put a button on a form and make pressing the button execute some piece of code. That is, after all, the building blocks of desktop applications: controls which respond to events by executing chunks of code

      And I still disagree with your basic premise. Both .NET and Cocoa are very fast for putting applications together if you're comfortable with them. There are some specific tasks that can be done faster on one than the other, but neither is clearly faster than the other from an application building perspective. I can put together the basic shell of a Cocoa app just as fast as I can a .NET application. Times for building more complex applications are comparable, usually, though there are a few certain things that one can do noticeably faster in one or the other.

      Visual Studio has a lot of nice features that Xcode doesn't, no doubt about that - I don't contest that point at all. But the two toolsets use different approaches and take a different way of looking at the problem. If you use one platform a lot then switch to the other, it will be slower for you for a while, but that is you more than it. I experience that when hopping between IDEs and languages a lot.

      I've been doing a lot of Cocoa the last month or so, though, and only a small amount of Visual Studio work, and I can tell you that for me, Cocoa is much faster than .NET at the moment because I'm in that mode.

      Another thing: when using the older outlet/action paradigm, you might be able to make a case for what you are arguing (albeit still not a strong case), except that it's unfair to compare the current .NET tools to a somewhat outdated way of doing things in Cocoa. Cocoa Bindings make connecting the interface to your data model and handling common user interactions even easier, often obviating the need to write any code at all for much of the day-to-day stuff an application needs to do. It's good stuff and simply not a slower app building tool overall than .NET if you're familiar with it. I'm not arguing that Cocoa is better in every single aspect, but simply that it's not worse than .NET in the primary way you stated (speed of development), which I stand by.
    10. Re:I've used Cocoa, .NET and C++/MFC by Dollar+Sign+TA · · Score: 1

      I think Xcode / Interface Builder complicates the process of building a GUI. It's more difficult to learn than .NET, and there are some things that really frustrate me the 'drag' paradigm of connecting controls to actions. Namely, I have no choice *but* to do this ctrl-drag thing. If my controls aren't doing the action I expect them to, how do I fix it? I just re-ctrl drag. I can't, for example, really look at the code behind it all. That's frustrating, but not my primary gripe. My primary gripe is with Xcode, which in my mind, is indisputably inferior to .NET. It's very buggy and unstable. Searches take *forever*, and one they're started, you can stop them (yeah, there's a stop button , but the UI freezes up during big searches). Because Xcode doesn't have any tabbed interface, you have a tendency to have lots of files open making it difficult to find the one you're looking for (and you have no effect way of toggling between two files you're actively using, because apple-tilde rotates the files in a circle). The debugger doesn't always stop on the correct line. Syntax highlighting messes up a lot. Code completion (aka, if I type "[foo " or "foo." I get a list of the methods for foo) is painfully slow, to the point where it's useless (if implemented well, like in Visual Studio, it's a wonderful thing). The debugger pops up its own window, leading you to get multiple views of the same window (yes, Xcode synchronizes the changes across the views, but it's still confusing). Recently, I've hit this problem where I miss an end brace and Xcode spends the next 15 minutes generating 500,000 errors - and there's no way to stop it, short of killing the app, because the UI has totally freezed up (literally, 500000 errors and 15 minutes) - it should give me a way of stopping the build (yes, there's a stop button, but the UI is frozen). Oh, did I mention that it's unstable? These are just some of the things that frustrate me with Xcode. Very few of those can you say "oh, you're just not used to using Xcode."

    11. Re:I've used Cocoa, .NET and C++/MFC by theAtomicFireball · · Score: 1

      I have no choice *but* to do this ctrl-drag thing.

      You do have a choice. You can also bind the invocation target without control dragging on the bindings inspector, or you can create your interface items in code and specify its target using a selector.

      If my controls aren't doing the action I expect them to, how do I fix it?

      The the control is not doing what you expect, and your expecations are in line with the HIG, then the problem is in your code, not the underlying interface code, so not having access to it shouldn't matter. If you need to change that behavior, you simply subclass the control or cell object whose behavior you want to change. That's the beauty of OO when implemented well.

      It's very buggy and unstable. Searches take *forever*, and one they're started, you can stop them (yeah, there's a stop button , but the UI freezes up during big searches)

      With the exception of some pre-release developer seeded copies of Xcode, I have had no stability problems with Xcode. Early versions of Xcode 1.0, were problematic, but I haven't had problems or heard from people having problems in quite some time. Searches can be canceled, and if you're on Tiger (10.4), they're very fast since they use Spotlight's indices to speed up the results (much, much faster than in VS).

      Because Xcode doesn't have any tabbed interface, you have a tendency to have lots of files open making it difficult to find the one you're looking for (and you have no effect way of toggling between two files you're actively using, because apple-tilde rotates the files in a circle)

      Tabbed interfaces in an IDE sucks IMHO. Unless you work on small projects with only a few source files, a tab interface quickly becomes unmangeable. It's actually one of my biggest pet peeves with both Eclipse and VS, since I do tend to work on very large projects and often have a dozen files or more open at once. I find the open file combo box and the Groups & Files pane in Xcode to be a much faster way to work on complex projects. I have to admit I've spent some time over the years adjusting the custom key bindings to fit the way I work, though, but that's to be expected. No IDE is going to please everyone out of the box. I've done the same thing with Eclipse, though I do tend to use VS pretty much out-of-the-box.

      The debugger doesn't always stop on the correct line.

      Are you developing in Objective-C? I've never head of anyone having this problem unless they changed their code after launching the debug executable. Maybe you've got a corrupted installation or something. The problems you're describing could be an indication of more serious problems.

      The debugger pops up its own window, leading you to get multiple views of the same window

      Preference thing. I like it better this way. I don't want the debugger changing which file is open in my editor. I often continue working on code while other apps or libraries are compiling, and would rather go to it when I'm ready to look at the problem.

      Recently, I've hit this problem where I miss an end brace and Xcode spends the next 15 minutes generating 500,000 errors - and there's no way to stop it, short of killing the app, because the UI has totally freezed up

      This is not the default behavior of Xcode that you're describing here.

      Oh, did I mention that it's unstable?

      Yes, more times than necessary, to be honest. And I'm thinking there's a problem with your installation or something, because I work with Xcode constantly and work with many people who work with Xcode and I can tell you that what you're describing is not typical. I've left close-brackets off countless times, and it stops after an error or three.

      "oh, you're just not used to using Xcode."

    12. Re:I've used Cocoa, .NET and C++/MFC by Dollar+Sign+TA · · Score: 1

      The the control is not doing what you expect, and your expecations are in line with the HIG, then the problem is in your code, not the underlying interface code, so not having access to it shouldn't matter.

      Absolutely it's in your code, or how you connected the controls. The problem is that when you ctrl-drag between outlets, controls, and actions, Interface Builder writes "code" for you - but you can't see what it's doing. I can't, for example, double check the code it's written and make sure that this is what I intended. All I can do is cross my fingers and hope I connected everything correctly.

      Searches can be canceled, and if you're on Tiger (10.4), they're very fast since they use Spotlight's indices to speed up the results (much, much faster than in VS).

      Is there something you have to do to tell Xcode to use Spotlight's indices? If so, then that would explain why searches are so slow (but would be odd behavior). By default (or perhaps always), at least on the several computers I've used Xcode on, it does not index your files. In fact, it opens up every file and reads it. Yes, it literally does this. In fact, sometimes when your project includes AppleScript which (for example) access iTunes, iTunes will just start running! It's funny, really, that a search would actually quasi-run your applescript, but gets very annoying very quickly. Seriously, searches are slow. Very slow. And yes, like I said, there is a cancel button, but it doesn't always work because the UI will freeze up. Perhaps you're not seeing this behavior because you've worked on smaller projects, but searches have been slow for all the major projects I've worked (and this is behavior I've seen on multiple computers). On Visual Studio, I can search a very large projects with hundreds and hundreds of files in 2 seconds. It's instananeous. I don't see anywhere near this performance on Xcode.

      Unless you work on small projects with only a few source files, a tab interface quickly becomes unmangeable

      Don't you find that having 12+ files each in their own windows worse? You can in fact configure Visual Studio to not use tabs, though I don't know why you'd want to. I find Visual Studio to be far more pleasant for large projects. For one, when you're writing code, even if you have 30+ files opens as I typically do (in projects containing hundreds of files), you tend to spend most of your time in only 2 - 3 files. You can hit ctrl-tab to toggle between those files very quickly and effectively. Additionally, if you hit alt-W-W (or go to Window > Windows) you can get a list of all your current files that way. For opening up an un-opened file (not creating a new file), however, I'll admit that Xcode's search toolbox is much better.

      Are you developing in Objective-C? I've never head of anyone having this problem unless they changed their code after launching the debug executable. Maybe you've got a corrupted installation or something. The problems you're describing could be an indication of more serious problems.

      Yep, Objective-C. I've seen this behavior on multiple computers across multiple versions on both 10.3 and 10.4. Former teammates of mine have had the same issues. It's not that it always breaks on the wrong line, but it does often enough to annoy you and cause you to be skeptical of where Xcode says it's breaking.

      Recently, I've hit this problem where I miss an end brace and Xcode spends the next 15 minutes generating 500,000 errors - and there's no way to stop it, short of killing the app, because the UI has totally freezed up

      You: "This is not the default behavior of Xcode that you're describing here."

      What do you mean, this is not the default behavior? What's not the default behavior? Freezing isn't? It's not like I clicked a checkbox to say "Please generate half a million errors for me and comple

    13. Re:I've used Cocoa, .NET and C++/MFC by Anonymous Coward · · Score: 0

      A couple of points:

      1. Searches

      Yes, searches in XCode are slow. I've filed a bug on this and the XCode team are aware of the problem, so we can expect this to be fixed. In the meantime, there are two levels of this bug, one where it will be really intolerably slow (almost a minute to search a medium sized project) and anothere where it will take a couple of seconds (OK, but still significantly slower than find + agrep from the command line).

      2. "Hidden code" from Interface Builder

      The reason you can't see the "code" that IB generates is that there is none! IB wires up real-live instances of your objects, and writes an object archive, it does not generate code.

      3. Debugger stopping on wrong line

      This is almost certainly due to the fact that you are debugging optimized code. Gcc will let you debug optimized code, but the optimizations tend to reorder code significantly, which is why the program that is executing doesn't necessarily map back to the source code linearily. AFAIK, most other dev. environments simply won't let you debug optimzied code. The way to get around this is to turn optimizations off when you're debugging. I actually leave them on and have gotten used to this fact. Then again, I tend to not use debuggers that much, because they tend to have much too narrow focus and actually impede debugging in many cases.

      Anyway, I am not a big fan of XCode myself, because it is moving way too much towards Eclipse-like bloat (and I couldn't even get Visual Studio installed, kept telling me I had to install some web components that I didn't have and didn't need...and when I took it up on its offer to "skip" it rebooted and took me straight back to that requirement...yikes!!).

      However, I think the original discussion was about Objective-C, not XCode...

    14. Re:I've used Cocoa, .NET and C++/MFC by aristotle-dude · · Score: 1
      I call bullshit. You claim to have experience with various languages and platforms but your example shows your ignorance of Cocoa and the true power it offers. You also harp on about the the qualities of the IDE. Do you lean on your IDE like a crutch? Have you used VS 2005? It is not very stable and very buggy.

      How about an example involving a To do list application with saving enabled written in .NET and Cocoa utilizing Core Data. Which one will be easier to implement? Which one is easier to deploy? Have fun getting all your users to install the right version of the framework.

      Have you ever written a multi-tiered data centric enterprise level app? Have you ever observed it in production? The non-deterministic approach to garbage collection can quickly bring a large server to its knees forcing frequent app server restarts. In the real world production environment, .NET is not the panacea some of you seem to think it is.

      I have news for my fellow developers, if it is not broke, don't fix it. Another observation is that just because .NET may appear to you to be the best solution as a developer, it does not necessarily mean that it is the best solution to the business need you are all paid to fulfil. Stop trying to push the latest and greatest technology fads in your IT shops without considering whether it will perform well and provide more business value than other solutions.

      It seems to me that most of my fellow developers in the world seem to completely ignore the promotion to production phase or real world performance when developing a solution because most of them have never worked in internal IT support. I worked in IT Support prior to moving to the development department. I feel that it has helped me immensely in my relationship with the Support and Sys Admin departments and as Programmer Analyst. When creating a technical design for a new product or feature to an existing product, production performance is one of my key design considerations in addition to user friendliness.

      --
      Jesus was a compassionate social conservative who called individuals to sin no more.
  74. Visual Development in Visual C++: Hah! by Prototerm · · Score: 1

    haven't you *always* been able to use VS as "a Visual Basic type of dev platform", with Visual C++ even ignoring Visual Basic itself?

    As far as I know, you have never been able to do "Visual Basic" type of developing (i.e., "drag and drop programming") using Visual C++. In VS-6, the C++ instructions were to use Visual Basic to design your screens, then import the resources into C++ for coding. WTF? This is nearly as bad as the old Amiga OS, where you had to create the GUI entirely in code, using hex to encode any bitmaps you wanted. Arrgh. Unless there's a configuration setting I don't know about, Visual C++ .Net (at least 2003) works the same way as Visual C++ 6. At least you now have the C# language (which appears to be Microsoft's attempt to combine Borland's Delphi and Sun's Java using a C++ syntax), which can be developed visually.

    But it would be nice if "Visual C++" was really "Visual", as the name implies. If MS can't figure out how to make their C++ truely visual, they can always steal some of Borland's C++ Builder developers to help, just as they did the Delphi developers to help with C#.

    Sorry if I'm a bit grumpy. I wanted coal in my stocking to keep warm this Christmas, but the EPA told me I couldn't have any due to Global Warming. Ay Caramba!

    --
    "My country, right or wrong; if right, to be kept right; and if wrong, to be set right." --Senator Carl Schurz (1872)
    1. Re:Visual Development in Visual C++: Hah! by Hellraisr · · Score: 1

      Since when does someone who codes in C++ ever bitch when you have to do something the hard way? Isn't it implied?

      In Visual Studio .NET 2005 (dunno about the other versions, but I would assume that any version that uses the CLR which is all of them), if you use the CLR managed code option when you create a C++ windows app, you certainly can drag and drop to create whatever you want on the screen just like any of the other .NET languages.

      I think a lot of the problem here is you've got a bunch of people that like the Apple method better because this is what they have used, and actually haven't really used the MS stuff that much if at all.

      I'm not about to comment on Cocoa because I've never used it. I like that it's free though, and wouldn't be adverse to trying it.

      However, there's a lot of bullshit out there from people who haven't even used something on a daily basis talking like they created the damned thing.

      I also noticed a lot of people bitching that you don't have to know anything to code in C# or .NET and this is also bullshit from a person that hasn't done it. Or maybe they've created a hello world without reading any docs and now think they are master coders. You can actually create a Windows GUI app in C# without ever dragging and dropping a single thing onto a form, you can do it entirely programatically. And for the record, there's a lot more to .NET than meets the eye.

      Welcome to Slashdot, where people talk out their ass without any actual knowledge or experience.

      This site should be called Slashdot Debate because very few people here actually know anything except how to sell their own point of view to the gullible.

    2. Re:Visual Development in Visual C++: Hah! by gromitcode · · Score: 0

      ahhhh yes always fair to compare a 10 year old product (vs 6 was 1996). VS.NET 2002+ has had VC++ with proper display editors. if you are going to troll at least try and use something from this decade.

  75. Re:Apple blew off Metrowerks. Now they must suffer by theAtomicFireball · · Score: 5, Informative

    Well, Copeland and OpenDoc are pre-Jobs Apple, so go yell at Amelio or Sculley about those two.

    On the rest of it, Apple never made a blanket "use Carbon", or "use Cocoa" claim. They said, consistently, to use Carbon if you have a lot of legacy toolbox code, and to use Cocoa if you were starting a project from scratch or were bringing things over from NextStep. OpenStep is just the old name for Cocoa and Rhapsody is just the old name for OS X, so you're kinda overstating your point just to make it look more schizophrenic than it really was.

    Metrowerks was in it for the money just as much as anyone else; they weren't "there" for anybody but themselves (and later, their shareholders). Once Metrowerks released a Windows version, they stopped giving the Mac priority and the tools stagnated. Apple inherited a perfectly good IDE from NeXT and Metrowerks gave no indication that they were chomping at the bit to upgrade their tools in a urry so that developers could be ready when OS X came out. Metrowerks wanted to play it cautious and didn't want to gamble on Apple's transition to OS X, so what else was Apple to do? I've met relatively few people except a few cranky old Toolbox guys who didn't want to make the transition to OS X, who aren't happy with Apple Developer support compared with what it was historically. The Inside Macintosh books used to cost an arm and a leg and weren't available in soft editions, MPW was a nightmare, as you stated, and the only other way to create applications was to buy third party IDE.

    Life has been pretty good (not perfect, but pretty good) since Apple bought NeXT. It's been tumultous at times, but has steadily been heading in the right direction, and as a matter of fact, developers have not been leaving the platform in droves; there has been a well-documented and steady increase in the number of developers using OS X as their primary platform.

    I'd hardly say they're "suffering".

  76. Ten years ahead of its time seventeen years ago by blake182 · · Score: 2, Insightful

    I characterize Objective C and the Interface Builder integration and a lot of those concepts to have been ten years ahead of its time when it was in its heyday (let's say 1988). So it's a 1998 environment in 2005 -- it's not really getting any younger -- they used up their "ahead of their time" card awhile ago.

    As much as everyone loves the warm fuzzy "objects send messages" purity, it all starts falling apart on hardcore refactorings (renaming messages and classes) which I consider to be a Large Problem with maintaining a large codebase. Don't get me wrong, I like Objective C. But man, it was a sad day when I learned that they're not going to keep Java up-to-date. Maybe Cocoa# is my savior.

    I programmed in Windows for 15 years before becoming more of a "server guy" and now an "OS X guy". I do agree with the comments that the API is far easier to grasp than the mishmash of shit that Microsoft shovels on you (Win32/COM/WinFX/MFC/ATL/Etc. etc.) But that doesn't have anything to do with Objective C or Xcode. That's just smart API design which isn't language or environment dependent.

    1. Re:Ten years ahead of its time seventeen years ago by theAtomicFireball · · Score: 1
      I characterize Objective C and the Interface Builder integration and a lot of those concepts to have been ten years ahead of its time when it was in its heyday (let's say 1988). So it's a 1998 environment in 2005 -- it's not really getting any younger -- they used up their "ahead of their time" card awhile ago.
      NeXT's heyday was a year before the v1.0 release of NeXTSTEP, huh? Interesting. And, if they used up the "ahead of their time" card, why are most other application building tools still using code generation, ferchrissakes? Cocoa has lost ground, especially in terms of spit and polish, that's for sure, but if you value smart design, then it's hard to say they've totally squandered their lead, especially since Cocoa is not stagnating... Core Data, Cocoa Bindings, Key Value Observing... Cocoa's not getting younger, but it is getting better.
  77. Clearly... by eluusive · · Score: 1

    Clear... Apple needs to fund the development of the D programming language and switch to that! :P

  78. Arrrgghh! Top posting! by macshome · · Score: 1

    The worst part of all of this is that the e-mail messages he put on the blog were all top post replies!

    For the love of all there is, wipe out top posting now!

  79. You're forgetting one thing.... by Paladeen · · Score: 1

    Objective C code is *fast* -- .NET is dead slow.

  80. ObjC problems are many by I'm+Don+Giovanni · · Score: 3, Insightful

    Here are a few ObjC problems off the top of my head.
    1. No proper namespace support. If multiple teams are working on a project, each team is advised to prepend the method names of its classes with a two or three letter abbreviation to avoid name-collision. WTF?? Hence, why all Cocoa methods are prepended with "NS" (short for NextStep). Apple should fix this asap.

    2. Horrible constructor support for derived classes. ObjC makes one proclaim one or more of a class's init methods to be "designated initializers", and these are the init methods that derived classes must override, no more, no less. Oh, and the proclamation of "designated initializers" is informal; there's no formal support by the language or runtime.

    3. All methods are public. To implement private methods, one must "simulate" them by not declaring them in the interface header file, but they're still accessible. Implementation of protected methods is even more of a hack, where one must create class Categories that are only known internally, and place the "protected" methods in those Categories. But the Categories are still accessible, and there's nothing stopping a third party from implementing a Category of the same name on his own, causing namespace-collision.

    4. Lack of proper support for abstract classes. One has to use [self doesNotRecognizeSelector:_cmd] to implement abstract classes (either in the init method or the individual abstract methods), another ugly hack.

    (Lack of garbage collection may also be a problem, although refcounting never bothered me and I rather do like autoRelease, by which one can achieve something akin to garbage collection (for objects, at least). :-))

    There are some other problems, all of which (and the above) stem from ObjC being an "old" language, having not added any of the advancements in language and runtime design that other languages adopted in the 90's.

    --
    -- "I never gave these stories much credence." - HAL 9000
    1. Re:ObjC problems are many by theAtomicFireball · · Score: 5, Interesting

      Many of your complaints with the language seem to be much more a "it's different from other things, therefore wrong."

      Namespaces is the one I see foisted around the most. I can see some value to adding namespace, but not enough to muck up the language. Objective-C was designed to be the simplest wrapper around C as possible while enabling an OO approach. With the much flatter hierarchies Objective-C's weak-binding and dynamicism encourage, the lack of namespaces is a relatively minor thing. Some people want them, but there's really no compelling need for them. I, for one, am glad that Objective-C has avoided the "throw in everything but the kitch sink" approach that has caused C++ to bloat in recent years.

      Abstract class support? Again, why? The language doesn't need this. Objective-C's approach is to trust that the developer knows that he or she is doing. It doesn't take the paranoid approach that C++ and Java and the other Modula-3 inspired languages do, but that's not a flaw, it's a design choice. Objective-C is bad for stupid programmers, that I'll readily admit.

      All methods are public, but they don't have to be advertised in your header file. Again, it's the nature of the language, and the result of a conscious design choice, not a flaw. You don't need this, even though many programmers have been indoctrinated into thinking they do.

      I give you some points on the constructor issue. A language-level support for the DI or an official "constructor" method would be a good addition and add relatively little to the language and runtime. Garbage Collection is not something I personally want, but I know many people do; it's in the works. GCC 4.0 has support for it, it just hasn't been fully integrated into Cococa yet. Probably with the next release (is it Puma? I can't even remember all the cat names any more).

    2. Re:ObjC problems are many by Mike+Buddha · · Score: 0, Flamebait

      Gotta love you apologists showing us all that these are not flaws, they're features.

      --
      by Mike Buddha -- Someday the mountain might get him, but the law never will.
    3. Re:ObjC problems are many by argent · · Score: 1

      #1 and #3 are the same complaint - that instead of having a syntactically distinct component part of the name is used to distinguish who is responsible for an object.

  81. It's not Steve Jobs by Pedals · · Score: 1

    He doesn't have time to read email. They just ask one of the interns, " Hey, you wanna be Steve Jobs today?"

  82. Excuse me but.... by Anonymous Coward · · Score: 0

    Why should a computer language be made to be "fun"? If you want a computer langauge that's easy to extend, fine. If you want to make it fast, simple, and good for writing good code with, right on. But computer languages are not toys, although Java and .NET languages come pretty close.

  83. Christmas -- Kinda Sad by Anonymous Coward · · Score: 0

    I thought the most interesting thing about the exchange was the date. Kinda sad that with all the opportunities life offers, he spends time on Christmas answering emails like this.

    I do hope it was really some peon who got holiday pay.

  84. Re:Apple blew off Metrowerks. Now they must suffer by NutscrapeSucks · · Score: 1

    Metrowerks wanted to play it cautious and didn't want to gamble on Apple's transition to OS X, so what else was Apple to do?

    Obvious answer: They could have bought out the Mac version of Metrowerks, since at the time nearly 100% of their developers were using it, and then instituted an orderly roadmap to transition devs to ProjectBuilder.

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
  85. to RAD or not to RAD by trainwrek · · Score: 1

    .net is targeted at RAD development, hence it being easy to use and slow. The payoff is that good developers can build stable, native applications at blinding speeds. I think the author's point is that Apple doesn't have an answer to that and needs one. Love it or hate it, MS has done extremely well with RAD because there is a huge need for it.

    A few years back there were more VB developers than any other language on the planet. Think about that. You might hate everything RAD stands for, but its hard to argue it isn't needed when it's so popular.

    1. Re:to RAD or not to RAD by theAtomicFireball · · Score: 1
      .net is targeted at RAD development, hence it being easy to use and slow. The payoff is that good developers can build stable, native applications at blinding speeds. I think the author's point is that Apple doesn't have an answer to that and needs one. Love it or hate it, MS has done extremely well with RAD because there is a huge need for it.
      No, this isn't correct. .Net's payoff is that mediocre developers can build moderately stable (but spaghetti-code) applications at moderately fast speeds.

      If you're comparing good developers, than Cocoa is the clear winner. Good Cocoa developers are as fast as VB .net programmers. Once you get over the learning curve hump, Cocoa is a very fast development suite, so much so that I would say it was the first RAD. And the applications, even though created quickly, are much more likely to be maintainable and well organized because the design of Cocoa encourages that, unlike .net which sacrificies it for the sake of lowering the bars to entry so that mediocre intellects can take a six week course before selling themselves as "professional" developers.
    2. Re:to RAD or not to RAD by trainwrek · · Score: 1

      Does that mean that if I learn Cocoa I'll instantly become a good developer? Nonsense. There isn't anything built into either platform that forces you to write good code, and the notion that either platform encourages bad code is just silly. You can see ease of use as a lower bar or you can see it as increased productivity. I'll take the latter, thank you, and hire good developers.

    3. Re:to RAD or not to RAD by theAtomicFireball · · Score: 1

      No. If you're an idiot, you'll still be one. It's not magic, you know.

      Spend some time looking at the overall design and the so-called "best practices" of the two environments, and yeah, you can make a definite argument that the increased up-front productivity in .net has a price in terms of overall maintainability of your application. Lowering the bar to entry does not increase productivity except for the people who couldn't make it over the bar in the first place. If you're truly hiring good developers, you're not going to see any increased productivity because good developers are already over the hump. But if you want people learning while you pay them... well, hey... it's your money.

    4. Re:to RAD or not to RAD by NutscrapeSucks · · Score: 1

      Really, there are so few professional Cocoa developers that it is ridiclous to make any generalizations about them.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
    5. Re:to RAD or not to RAD by Anonymous Coward · · Score: 0

      I agree. I know of at least one investment bank likes Objective C so much that they migrated a trading system from Next over to OS X.

  86. BS meter exploded by melted · · Score: 1

    >> C#, for all of the claims of performance, is a a JIT based interpretive language. Ditto Java.

    True for Java (partially), not true AT ALL for C# (or any other .NET language for that matter). MSIL gets compiled into machine code BEFORE executing it. There's no interpreter in this infrastructure AT ALL (and that's the main difference from Java). While MSIL can, of course, be run using interpreter, its primary design objective was lightning fast, on-demand JIT compilation and as such it won't run well in the interpreter. Java bytecode is the exact opposite - it was designed to be efficient when run on the interpreter, and as such it will never be as fast at JIT compilation as MSIL.

  87. What's wrong with pointers? by Mr.+Underbridge · · Score: 2, Interesting
    I don't understand why people hate pointers. Is it the fear of memory math? What's going on? Because pointers have a ton of advantages. Make it easy to save memory, and also make it easy to allow generic function prototyping through function pointers.

    Function pointers are probably my favorite thing about low-level languages (and even a few higher-level languages that provide such support).

    1. Re:What's wrong with pointers? by bnenning · · Score: 2, Insightful

      I don't understand why people hate pointers. Is it the fear of memory math? What's going on?

      It's the nondeterministic bugs when you read or write to invalid pointers, and the risk of security holes via buffer overruns.

      Function pointers are probably my favorite thing about low-level languages

      Any decent high-level language has equivalent or superior functionality.

      --
      How to solve most of our problems: 1.Lots of nuclear plants. 2.Cure aging.
    2. Re:What's wrong with pointers? by John+Nowak · · Score: 1

      While it is true that a high-level language has equivalent functionality to function pointers (my main languages are Io (www.iolanguage.com) and Scheme), most language aren't nearly as fast as C. Pointers to functions in C can give you both high performance and full flexibility, provided that you're careful. Personally, I don't find function pointers and the like very difficult to conceptualize -- I've actually found that have some OOP background helps out a bit.

    3. Re:What's wrong with pointers? by Abcd1234 · · Score: 1

      Right, so you can do it in C, and it'll be faster, but more prone to error, or you could do it in a high level language, and it'll be slower, but more safe (and probably more concise and easier to understand). How is this a surprise? :)

      Hell, people probably made the same arguments vis a vis C vs assembler... IOW, this argument is as old as the hills, and in the end, the solution is always the same: pick the right tool for the job.

    4. Re:What's wrong with pointers? by LegendLength · · Score: 1

      ...most language [function pointers] aren't nearly as fast as C. Pointers to functions in C can give you both high performance and full flexibility...

      I get the feeling function pointer speed isn't all that important these days.

    5. Re:What's wrong with pointers? by Anonymous Coward · · Score: 0

      They aren't high performance any more. Self and Smalltalk implementors found that inline subclass tests are usually faster than vtables for method dispatch, because you can speculatively execute a lot of conditional branches in less time than you lose stalling a pipeline to follow a single function pointer.

    6. Re:What's wrong with pointers? by mkiwi · · Score: 1
      Any decent high-level language has equivalent or superior functionality.

      And that's just the problem. With a high-level language, there's more assembler code to put together and the routines are thus much slower than with a regular C app.

      Name for me a decent high level language that can deliver the power and performance of C. Steve is right in this case- he wants to stress performance of code with ease of development. We could write everything in C, but it would take a long time and it would be more difficult. However, Objective-C takes the middle ground between performance and ease of coding.

      I will guarantee you that all the code written for the largest supercomputers is either C, C++, or assembler. Why? Performance.

    7. Re:What's wrong with pointers? by geoffspear · · Score: 1
      I will guarantee you that all the code written for the largest supercomputers is either C, C++, or assembler.

      All of it? And is there some cash payment backing up this guarantee if I can show you one of the largest supercomputers running Fortran programs, genius?

      --
      Don't blame me; I'm never given mod points.
  88. 100% agree by bani · · Score: 2, Insightful

    Apple's "our way or the highway" attitude is annoying. carbon is grudgingly provided for "those delusional c++ developers who refuse to walk the enlightened path of objc", but it is a second class citizen compared to cocoa, no matter how much apple waves their hands to the contrary.

    the problem here is that apple's obsession with objc means c++ is neglected, and it makes porting applications to osx a major pita (it doesn't help that carbon's api is wildly different from anything unix or win32 either.)

    apple is spending all their time and effort preaching to the choir. they aren't doing enough to get new converts. and objc/cocoa simply isn't the way to do it.

    1. Re:100% agree by Anonymous Coward · · Score: 0

      (it doesn't help that carbon's api is wildly different from anything unix or win32 either.)

      This is *why* it's a second-class citizen. They know it's weird, and basically only useful for people porting from MacOS 9. They aren't really all that interested in Win32 ports. If they were, they might act that way, but they aren't, so they aren't.

      apple is spending all their time and effort preaching to the choir.

      You misspelled "supporting their users and developers".

      Your mistake is in assuming that Apple is desparate for Win32 developers, which it is not. They want control over their platform as much as Microsoft wants control over theirs.

    2. Re:100% agree by bani · · Score: 1

      Your mistake is in assuming that Apple is desparate for Win32 developers, which it is not. They want control over their platform as much as Microsoft wants control over theirs.

      Thats the problem though. By not wooing developers they dont get the apps -- or worse, they drive developers _away_ from apple to other platforms, as has happened numerous times.

      It's a common complaint of apple users who we service at work. Mac apps are often hard to find.

      It's often easier to find apps for linux than for osx. That says a lot.

      Maybe osx is an uber platform for developers, but it sucks for end users. And since end users drive the economic viability of a platform, it's a vicious circle if you aren't courting new developers and growing the platform. Status quo is not growth.

      I worked with Id and Aspyr to port Enemy Territory to OSX. It hovers around #4 or #5 on the top most popular online FPS. You know how many mac users there are? I can count them on one hand. There are orders of magnitude more linux users.

      Many apple devs I talk to express the same frustration. Apple is not doing anything to grow the platform. Pretty soon some of them are going to be ex-apple-devs. Because the platform is economically terrible develop for.

      The platform will not be attractive for new developers until it is simple and easy to port to. And that won't happen until apple abandons this objc/cocoa-centric worldview.

    3. Re:100% agree by NutscrapeSucks · · Score: 1

      No reply, except that I played a ton of Wolf ET, so thanks for ETPro and all the other things which kept it fun.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  89. Good point TheAtomicFireball by dafing · · Score: 1

    You made a great point. Thanks for taking the time to type it.

    --
    --- ...or a new slashdot signature. Dear aunt, let's set so double the killer delete select all
  90. Re:Apple blew off Metrowerks. Now they must suffer by theAtomicFireball · · Score: 1

    Sure, they could have. But why would they? They already owned a perfectly good IDE in Project Builder. Why buy a product that would have to be pretty much re-architected from the ground up to work with OS X? That wouldn't make business sense.

  91. Re:Apple blew off Metrowerks. Now they must suffer by NutscrapeSucks · · Score: 1

    Yeah, why would a platform company want to make life easier for their ISVs? Gee, that's a tough one -- try mulling it over for a while.

    (BTW, CodeWarrior is a native OSX app, and like most classic Mac apps, it didn't need to be "re-architected from the ground up" to get there.)

    --
    Whenever I hear the word 'Innovation', I reach for my pistol.
  92. The wow factor is there (fixed formatting) by mj_1903 · · Score: 1

    It's not like Obj-C doesn't have a wow factor anyway.

    For starters you can create basically the entire interface of an application without writing a line of code by using bindings. What's even better is you know you will never see a crash in that code and it acts how a normal Mac OS X app should work removing tons of testing and freeing you up to do cooler things to sell your application.

    Secondly the ability to rapidly prototype a working application using the above glue code and the already built objects allows you a near unprecedented ability to experiment with the user interface.

    And finally I guess is what you get for free. Everything from Core Image to threading, it's all there and works perfectly every time. There are so many objects which I guess shows its age... if you need something then quite likely it has already been built or tacked on to an existing object allowing you to continue on and again produced the cooler items that sell your app.

  93. Categories by vandel405 · · Score: 2, Interesting

    Categories are *the* best feature of Objective-C. They let you keep problems object orrient when subclassing isn't avaiable. Simple example. Say you're working with a class library that exports a string class, and that string class doesn't have a 'spit/explode' function. In languages without categories you would write a static method some place, or a method on some unrelated 'toolbox' class that takes a string and splits it. In objective-c, you can just put a category on string that is a split method. This way the string is doing the split. If you later hve some subclass of string that can do a more efficent split, well override split, dont' swtich on the class type in your static method. YAY OO.

    I hinted on a much more important feature above. When you have to work with many objects that you know little about, categories are awesome. Take GORM for example. GORM should integrate with many flavores of objects but it really only knows a lot about a couple of base-classes. Classes like view, object, and window. GORM might need to know if a view acts as a container. To do this, it might put a category method on view called 'isContainer'. It could return NO by default and be overrided in all containers to return YES. Now when working with a view, GORM just has to say [view isContainer] to find out if the view is a container. This is much better than looking asside in some table, or manually coding up the reflection hack that would be nessecary to ask such a question in other statically bound/typed languages.

  94. OT by StrawberryFrog · · Score: 1

    Nice strawman. ... you obviously can't read.

    And speaking of such.

    We are the hollow men
    We are the stuffed men
    Leaning together
    Headpiece filled with straw. Alas!

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  95. OT Re:Get this guy off my platform by StrawberryFrog · · Score: 1

    Where in my post did I say that Java and C# weren't popular? Also, just because something is popular does not make it right, or even something nice to use

    Of course, Java and C# are popular, ins pite of being not nice or right, they are "Nasty code resulting in memory problems, garbage collections freezing an application, and numerous bugs." (unlike C, which is perfect, no buffer overflows etc here, nope), and the developers who use them are all clueless: "use memory like its candy... Not knowing that every one of their objects in a list uses 2 megs of memory."

    That's just a troll.

    "don't give me the excuse that you can write your code faster"

    Well, why not? You can, and it matters that you can.

    So stop trolling.

    --

    My Karma: ran over your Dogma
    StrawberryFrog

  96. Re:Apple blew off Metrowerks. Now they must suffer by tyrione · · Score: 2, Insightful

    BULLSHIT. Apple gave Carbon to Metrowerks and the rest of the ilk back in 1997 at WWDC and we told them to get ready to transition to Cocoa/ObjC. Seven years was plenty of time. Get over your loss and embrace change.

  97. Your own words contradict by SuperKendall · · Score: 1

    What Jobs is ignoring is that Macintosh customers are primarily non-technical, and have no need or want for a "religious war" around programming languages...

    Exactly why the users will not care if Apple continues to use Objective-C. ...ObjC/Cocoa is one set of good tools, but so is the .NET framework and C# and it is considerably more popular as well.

    If you're going to base language choices on popularity, then perhaps OS X should include extensive Java support. Oh wait, they already did that!

    Just because Microsoft has managed to market a lot of developers into using a Shadow-Java is no reason for Apple to switch.

    Fundamentally what you do not realize is that Apple basing application development on Objective-C is a strength, not a weakness - you'd almost think Jobs and McNealey had colluded in tricking Microsoft into taking the path of playing endless catch-up with Java while Apple continued to mature the libraries and features they offer with OS X.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Your own words contradict by NutscrapeSucks · · Score: 1

      No, it's not contradictory, Apple should and does have top-notch Java support. Just that Java doesn't have much relevance to desktop applications, while .NET is the successor to technologies that currently dominate that market (VB, MFC, etc).

      But the reality is that Apple is cutting Java support, and Apple is also the company playing endless catch-up there (Java 5 support was nearly a year behind Windows/Solaris/Linux).

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  98. Best example why top posting just sucks by gullevek · · Score: 2, Interesting

    I read through this and suddenly I asked myself, do I walk back in time, or is something wrong.

    But sadly Top posting is so common nowadays, that managers complain if you don't do. Last time I normaly answered an email to an management person in our office and he complained later why my answer was not on top like "normal" people do ...

    oh where there world went thanks to preset outlook settings ...

    --
    "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
    1. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      You have a point, but on the other hand top posting is nice for being able to quickly see the latest message. Otherwise, you have to constantly scroll to the bottom of the email to get to the latest comment.

    2. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      Let me introdue you to my little friend. His name is the end key...

    3. Re:Best example why top posting just sucks by LegendLength · · Score: 1

      99% of the emails replies i receive are top posted. Why try to change something that is such a standard for email?

    4. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      says someone with an @hotmail.com address. muhahahahahaha.

    5. Re:Best example why top posting just sucks by gullevek · · Score: 1

      yeah sure. standard for whom? For those who use outlook, because it was preset there. That it makes no sense in logic and actualy work. Who cares. Managers really don't work, they just write crap. And if they say "yeah okay" and then send back a 120kb crap loaded quote mail. fine. who cares. they are idiots. fact.

      --
      "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
    6. Re:Best example why top posting just sucks by Sketch · · Score: 1

      Heh. Right before I read this comment, I just had to send a reply to someone who asked why I sent them a message with no reply. I guess he must not have read below the "On such-and-such, so-and-so wrote:" line, since I had in fact replied to his message.

      --
      -- OpenVerse Visual Chat: http://openverse.com
    7. Re:Best example why top posting just sucks by Bob+Uhl · · Score: 1

      Well, it wasn't 'standard' until recently; for the entire history of the net top-posting has been discouraged. It's poor style, and only exists because of certain popular proprietary mailers.

    8. Re:Best example why top posting just sucks by TekPolitik · · Score: 1
      top-posting ... only exists because of certain popular proprietary mailers

      Not really. It's a usability thing - it presumes people are most interested in what is being said to them, and leaves the earlier content there as context if the recipient needs it.

      Obviously real geeks are in a different position, having learnt the "proper" way long ago, but for untrained people, top-posting comes across as more usable.

    9. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      Let me introdue you to my little friend. His name is the end key...

      And his little other friend, page up for when the reply is over a page long. Oh and don't forget to dart you eyes around needlessly as you search for the first line of the reply as you scroll up, which is different for every email.

    10. Re:Best example why top posting just sucks by gullevek · · Score: 1

      Well, there is a supercool thing called "correct quoting". Nobody forces you to quote the whole text and write a "me too" below.

      --
      "Freiheit ist immer auch die Freiheit des Andersdenkenden" - Rosa Luxemburg, 1871 - 1919
    11. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      > yeah sure. standard for whom? For those who use outlook, because it was preset there.

      It's standard in Mac Mail.app 2.0 too. You might want to e-mail Steve and ask him why that is. In fact, while you're at it, ask him why Mail.app 2.0 is such complete and utter shit!

    12. Re:Best example why top posting just sucks by funduk · · Score: 1

      'untrained' people... not to mention BUSY people.

      I send you an email. You reply BELOW my email?... Why would I want to read what I already wrote? I KNOW what I wrote. I'm paying attention, I don't need to read that again. If I want to read it again I scroll DOWN, into the past.

      It makes way more sense, just because you (and I) have been geeks for >15 years doesn't mean a newer way can't be better. It's far more sensible to want to read the latest in a conversation instead of the beginning of a conversation.

      Yes the end key is helpful, if I want to go BACK to the beginning of a conversation... which = NOT THAT OFTEN. 99% of the time I'm interested in reading the most recent reply and then replying again. Not to mention I want the idiot luser to actually see my reply quickly and respond so I can, in short order, not have to correspond with them anymore.

      --
      10 kinds of people in the world... etc etc...
    13. Re:Best example why top posting just sucks by Anonymous Coward · · Score: 0

      Why would I want to read what I already wrote? If I'm quoting a portion of what you wrote, it's because I want to call your attention to it. Quoting the entire text is stupid and wasteful, no matter where I put it.

    14. Re:Best example why top posting just sucks by dangitman · · Score: 1
      Not really. It's a usability thing - it presumes people are most interested in what is being said to them, and leaves the earlier content there as context if the recipient needs it.

      No, it;s a bullshit thing caused by proprietary email clients, and people's unwillingness to edit their quotations.

      Obviously real geeks are in a different position, having learnt the "proper" way long ago,

      No, everbody learns to read English top-to-bottom, and this standard of quoting has been standard in the print media well before email. For some reason, email clients and many blogs want to reverse our fundamental top-to-bottom training, and also the conventions of dialogue in written conversation that have been around for hundreds of years.

      --
      ... and then they built the supercollider.
  99. Mirror by Anonymous Coward · · Score: 0
    Someone posted a link to a mirror before the post was edited; here's a copy of it before that mirror updates.
    ----

    Although I am a die hard Apple and OSX fan, I've never cared for Objective-C much. As far as the development world is concerned, it is my opinion that Microsoft has done wonderful things with .NET, while Apple hasn't churned out much innovation (not recently atleast.) With that thought in mind, I wondered if I should try e-mailing Steve Jobs about my frustrations, and so I did. I have to admit I purposefully chose the subject line of "Will XCode+ObjC ever suck less?" to attempt to grab his attention, and it worked! I admire the man, and so it is an honor to have had the chance to communicate with him. Here is the complete thread, best read bottom-up. Enjoy!

      (NOTE: Jobs and I are probably on different time-zones, hence the confusing time-stamps within the thread.)

    From: Nitesh Dhanjani
      Subject: Re: Will XCode+ObjC ever suck less?
      Date: December 25, 2005 5:27:02 PM CST
      To: sjobs@apple.com

      I look forward to the improvements! Thanks,

      Nitesh.

      On Dec 25, 2005, at 5:10 PM, Steve Jobs wrote:

      I guess we disagree. First of all, .NET with CLI and managed code runs SLOW, so most serious developers can't use it because of performance. Second, the libraries in C# are FAR less mature and elegant than those in Cocoa. We are working on a better implementation for garbage collection than we've seen out there so far, but in the end its a performance hit and an unpredictable time that is not good for some kinds of apps.

      Steve

      On Dec 25, 2005, at 2:36 PM, Nitesh Dhanjani wrote:

      Objective C is old and clunky. Its almost 2006, and I _still_ have to look out for yucky pointers? I'd love to be able to write native apps with Ruby (or even C#!.) There are open community projects in progress that are trying to bind ruby and C# (mono) with Cocoa, but I'd love for Apple to step in and make this happen faster. Today, Microsoft seems to be _way_ ahead of the development curve - with their .NET implementation, you are allowed to code using a plethora of languages (C#, Python, VB, etc), as long as the interpreter/compiler follows the IL specification - pointers don't matter, garbage collection is done for you - ah the beautiful world of managed code.

      Having said that, most native OSX apps are still beautiful and well designed. Imagine how much better we could do if the developers had a more flexible choice of languages? I can _bet_ you a lot of OSX app developers use Objective C because they have no other choice.

      Nitesh.

      On Dec 25, 2005, at 3:11 PM, Steve Jobs wrote:

      Actually, Objective C is pretty great. Its far nicer than most other ways of writing apps. What don't you like about it? What do you like better?

      Steve

      On Dec 25, 2005, at 11:59 AM, Nitesh Dhanjani wrote:

      Hi Steve

      Will it ever be easy to write native OSX GUI apps? Objective C sucks.

      Thanks,
      Nitesh.


      Update: A few people have e-mailed me and asked me to provide additional comments on Jobs' latest response to me, so here it goes: I'd like to see Apple developers gain more choice. With every iteration of OSX, there seems to be so much effort put into innovation of desktop components, but the development environment is age old. Objective C may be OK with some, but take look at with Microsoft is doing with .NET: you can write your own .NET compiler, but you just have to make sure it spits out the required IL code. It's beautiful and elegant, and you aren't locked onto one language. It's managed, and of-course a bit more expensive, but unless you are writing real time code, it doesn't matter today: it's not _that_ slow for writing most desktop applications. In Jobs' latest response, he complains about .NET being too slow - I'd have agreed with him 2 years ago.
  100. Say this 3 times fast.. by glitch23 · · Score: 0

    code Cocoa components

    code Cocoa components

    code Cocoa components

    --
    this nation, under God, shall have a new birth of freedom. -- Lincoln, Gettysburg Address
  101. No garbage collector-A time for everything. by Anonymous Coward · · Score: 0

    There's two kinds of "realtime". Hard and soft. The "uncertainty" is less a problem in the latter, than the former. Second most programmers GC before sections of "critical" code, and then lock-out the GC during. For the majority of realtime this will suffice. The rest might be using something like Forth were the view of resources is much more fine-grained.

  102. books by meatball_mulligan · · Score: 1

    The best Obj-C & Cocoa intro:

    Cocoa Programming for Mac OS X

    m.m.

  103. Elegance by meatball_mulligan · · Score: 1

    Someone earlier in the thread used the word "elegance". That, in my opinion, is the key word. Java and C# are decent languages with powerful (though somewhat bloated) platforms in J2EE and .Net. But they're not fun. The code at the end result for any major undertaking just feels ugly. Better than C++ perhaps, but rarely (if ever) something I could call elegant or beautiful. And that's a web app. The code for a GUI app written in Java or C# is just downright ugly, even in the best of cases.

    Objective C code, on the other hand, just seems to be more elegant. Some of this is due to the structure and syntax of the language itself and a large part is due to Cocoa.

    When I'm coding in C# or Java, I feel like I'm a hack writing up the police blotter and obit for the local paper. When I'm coding in Objective C (or Ruby), I feel like I'm writing poetry.

    m.m.

  104. For the record by tod_miller · · Score: 1, Insightful

    This guy is as retarded as he sounds ("yucky pointers").

    Gee I wish there was a 10 year old mature language available on Mac's that was better than .net....

    *thinks*

    yeah that would be cool. *thinks* You could name it Java if you want.

    This guy really sucks, not objective C.

    --
    #hostfile 0.0.0.0 primidi.com 0.0.0.0 www.primidi.com 0.0.0.0 radio.weblogs.com
    1. Re:For the record by Anonymous Coward · · Score: 0

      No. I think YOU are retarted: one of your earlier posts on /. has the subject line of "Fruit Fucker" !

      The guy seemed pretty straight forward and to the point.

    2. Re:For the record by Erik+Hollensbe · · Score: 1

      Sure, you can write java apps on the Mac, and even get the OS X feel with your application.

      Good luck getting at webkit, or the input manager system, or heck, even native SSL support. It ain't gonna happen (without extra non-portable glue that isn't provided by apple).

      While java is nice to get at some highly-portable apps and for some developers is an option to target an OS X feel when there's a java edition being written of the software, it's not anywhere near what .NET is to Windows.

      That said, none of his questions seemed to bite from that angle, which implies that he wasn't familiar with the java layer.

    3. Re:For the record by ichigo+2.0 · · Score: 2, Funny

      You must be new here. Go and read some of the comics here, and maybe the meaning behind the words "Fruit Fucker" will present itself.

    4. Re:For the record by Anonymous Coward · · Score: 1, Informative

      The Java bridge was sacked. It's no longer supported, and there won't be any future additions to it.

  105. I hear on the grapevine that... by Darius+Jedburgh · · Score: 1

    ...Pixar are being pushed to use Objective C++ and have plans to rewrite their tools using it. I also hear that the developers are pretty unhappy about it - partly because of the potential drop in performance that it might bring for much of the type of code Pixar write.

  106. Doesn't work with programming. by mcc · · Score: 2, Interesting

    With programming, the correct cliche would be "evolve or die". Yes, it's true that "good enough" systems can stay around forever and ever and ever in programming, but it's also true that this only tends to happen if the system gets established. Apple is not established, they are still in a position of attempting to sell Cocoa to others. Worse, Apple is competing directly against one clearly-thus-inspired platform which attempts to replicate Apple's functionality (Java), and against another clearly-thus-inspired platform which attempts to replicate Java's functionality (.NET). .NET and Java have not learned from the greatest of Cocoa's triumphs. But they have both learned from Cocoa's mistakes, and each offer interesting new triumphs of their own.

    And there are definitely mistakes in Cocoa, things that are broken and need fixing. Many things in Objective C feel like they're from a 20 year old language-- because they are. The new features in Java 1.5 (generics, real generics not this C++ template crap, and foreach/iterator support) make the cast-filled use of collections in even a simple Objective C program simply painful to contemplate, and objective c could stand to incorporate a few more of C++'s modern features without requiring you to go whole-hog to objective-c++. "Fix and run" or whatever it's called is a neat nod to dynamism, but ultimately is just part of a tendency within the Objective C language and Cocoa tools to go halfway to a state of perfect python-like dynamism but stop halfway. Cocoa is in some ways even more dynamic than Java, but it must be compiled, which offers a sort of dynamism gap which the tools need to bridge. Right now they don't. The tools, amazing as they were compared to the alternatives two or five years ago, really, really need work. The work you must go through to use a language other than Objective C in a Cocoa program is, frankly, bullshit. PyObjc and Camel Bones are clumsy add-ons; they should be built into the developer tools from the moment I install it. In general XCode is too prone to freaking out if I do something unexpected as opposed to just using the expected interface paths, and after you run into this problem where you're afraid to do anything unpredictable in XCode in case everything stops working. In general meanwhile XCode consistently engages in behavior that I can only describe as "mysterious". The great and interesting features XCode offers-- features which are truly necessary to get the most out of Cocoa-- cease to be of use, because XCode's general unreliability prevents you from making use of them. The worst thing about Cocoa comes in when you have to use any library which is written by one of Apple's Carbon-centric groups instead of one of the Cocoa-centric groups. Leave the little cloystered world of cocoa classes and try to work with, say, Quicktime, or CoreAudio, and suddenly you are in a strange and incoherent land, suddenly needing a crash course in new and interesting types of strings and something called the Component Manager, and suddenly devoid of the high documentation standards common in the Cocoa classes. Spend a few weeks using one of these "alien" APIs, and suddenly you won't care how great the core Cocoa APIs are, you'll be simply yearning for an operating system where the GUI library and the sound library are based on OS APIs which vaguely resemble one another.

    Basically, Cocoa was without a doubt the best available developer system five years ago. But that was five years ago. The APIs have received new and interesting additions (KVM and coredata come to mind), but some things have not improved at all, for example the base language (in fact if anything the base language has devolved, thanks to the recent removal of Java as a future-proof coding option), the documentation, in many ways the tools, and the cross-language compatibility. Objective C and Cocoa are in many ways standing still while Java and .NET are constantly on the move, in some ways surpassi

  107. not standardized by John+Nowak · · Score: 1

    The biggest problem with Objective-C is that it isn't standardized. It is great if you're writing OS X apps only, but if you need cross-platform support, things get uglier. Yes, I realize gcc has Objective-C support, but you need libraries and Apple's changes to the compiler aren't necessarily merged into gcc as they should be.

  108. What do Apple do for Developers? by skingers6894 · · Score: 1

    How about giving away xcode for FREE with the O/S.

    Come on, it's a pretty decent environment and available to everyone who owns the O/S.

    I think that's not bad.

    1. Re:What do Apple do for Developers? by certsoft · · Score: 1
      How about giving away xcode for FREE with the O/S.

      It was on the Tiger DVD that came with my Mini a few months ago. I've installed it, but haven't done much with it.

  109. The Real Irony by Reverend528 · · Score: 2, Interesting
    The real irony here is that Steve Jobs is calling Garbage Collection "slow" despite the fact that Apple sells a micro-kernel based OS. I know that microkernel-based OSes can be shown to be just as fast as monolithic kernels, but that takes a LOT of work to achieve (more than just kludging BSD onto Mach).

    Most well-designed programming languages allow code that can be optimized to reduce the amount of garbage generated. For the things where speed really matters, it can sometimes be possible to prevent the generation of any garbage.

    This isn't meant to be a troll on how slow OS X is. My point is that the advantages/disadvantages of using GC parallel those of using a microkernel. It seems silly that Steve Jobs would endorse one and not the other.

    1. Re:The Real Irony by jcr · · Score: 1

      The real irony here is that Steve Jobs is calling Garbage Collection "slow" despite the fact that Apple sells a micro-kernel based OS

      OS X has the Mach Kernel and the BSD kernel services layer in the same address space, along with the device drivers, etc. Care to make any more uninformed pontifications?

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    2. Re:The Real Irony by Anonymous Coward · · Score: 0

      Recent benchmarks at Anandtech showed OSX getting absolutely demolished by Linux in IO-related benchmarks.

      Gazillions of Java-based server applications show that people can live with the slowness of garbage collection. However, they don't want their RDBMS running at one quarter speed.

      The point is that Jobs is only using speed as an argument to the extent that it suits him.

    3. Re:The Real Irony by jcr · · Score: 1

      Recent benchmarks at Anandtech showed OSX getting absolutely demolished by Linux in IO-related benchmarks.

      That's because Apple really does flush to disk when you call fflush().

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    4. Re:The Real Irony by oudzeeman · · Score: 2, Informative

      xnu isn't a microkernel.

    5. Re:The Real Irony by Nevyn · · Score: 1
      That's because Apple really does flush to disk when you call fflush().

      The man pages disagree: http://www.osxfaq.com/man/3/fflush.ws

      --
      ustr: Managed string API with ave. 44% overhead over strdup(), for 0-20B
    6. Re:The Real Irony by Anonymous Coward · · Score: 0

      Agreed on the last point, but the first point is pretty much the same thing - picking a benchmark that highlights one system over another.

      I also thought the issue with mySQL wasn't to do with IO, but largely to do with thread creation? (Hence why Oracle were able to get comparable performance on OS/X server to Oracle on Linux, because they'd performed OS specific optimisation, wheras mySQL hasn't (at that point) been modified to deal with the expense of thread creation). My understanding is that this was more an issue about scalability (number of concurrent users supported) than performance.

      Nonetheless, the Anandtech article was certainly enough to put me off using OS/X server as the bottom layer of a LAMP stack (OAMP doesn't have the same ring to it), and if I was Apple's engineers I'd be looking at those problems quite seriously - whether it's 'fixing' the OS or contributing to mySQL. They've certainly got a long way to go to convince anyone involved on the server side that they have something to offer against Sun or IBM.

      Quite what this has to do with Objective-C is another matter - I'm not aware that the issues with mySQL running on OS-X Server have anything to do with Objective-C as I'm not sure how far down the O/S it's being used. My guess is that it has more to do with the pseudo-micro-kernel than Objective-C.

      I think the parent article is correct - I quite like Objective-C - it's certainly better than C++, and was (I understand) influential on Java (and therefore on C#) - but it does seem to have stagnated - there has been more emphasis on developing the Cocoa frameworks than extending the language.

    7. Re:The Real Irony by jcr · · Score: 1

      The man page you cited doesn't say one way or the other.

      -jcr

      --
      The only title of honor that a tyrant can grant is "Enemy of the State."
    8. Re:The Real Irony by Ahruman · · Score: 1

      I'm pretty sure mySQL won't be running on top of any implicit Objective-C.

      When you say the language has stagnated, what do you mean? What extensions would you add? OS X 10.3 added language support for exceptions (rather than the previous macro system built on longjmp()) and @synchronised for locking, as well as support for initializing C++ class instance variables in Objective-C++. Personally I feel one of the best things about Objective-C is that it's a relatively simple layer on C that's avoided the feeping creatureism of C++.

  110. Re:Apple blew off Metrowerks. Now they must suffer by Animats · · Score: 0, Flamebait
    Get over your loss and embrace change.

    I did. I dumped Mac support.

  111. I disagree by FredFnord · · Score: 2, Interesting

    I disagree.

    Specifically, I work at a small software house that writes exclusively in java. Our product is a piece of server software, quite large, runs on multiple machines, etc. Now, I won't say that GC isn't nice, but I will say this: it took us over three months to find settings that kept java from seizing up for over three minutes once every half hour or so for full GC, when it's under heavy load. When Java 1.5 came out, all those settings failed and we had to try again. (They're still failed; one of the hidden settings we depended upon has been taken out of 1.5, or at least appears to have no effect when used.) When that happens, our servers get out of sync and we had to write an entire new section of code to handle the fact that the servers regularly go away for minutes at a time. One solution, it turns out, is to load up the machine with 4 gigs of RAM, but we're hesitant to suggest this because even Oracle doesn't require 4 gigs of RAM to run. Another solution could be requiring multiple servers and failover setups... that would be awfully popular.

    I agree that situations like this are rare, but they aren't unknown. If we had a choice, it's possible we would, in fact, redo this whole mess in Java Minus GC, despite the headaches. (Unlikely, but possible. I sure know a lot of our customers would like us to.)

    -fred

    --
    Sign #11 of Slashdot overdose: You see the phrase 'moderate Republican' and you wonder if that would be a +1 or a -1.
  112. Is Steve a geek? by ThesQuid · · Score: 1

    I'd say Steve Jobs has certainly proved his geek cred by posting on this topic during Christmas day.

  113. only one language? by TLouden · · Score: 1

    I'm so not there. Seriously, any time I'm given but one option I'm upset. One API, ok. But one language, not me.

    --
    -Tim Louden
  114. Emailing methodology by hackwrench · · Score: 1

    Sometimes I type my response above what went on before, but then I usually only include the previous email in the chain. Sometimes I don't even do that. Sometimes I intersperse my response with the original to indicate what part of the previous email I'm referring to.

  115. Don't know about the rest of you ... by Bake · · Score: 1

    ... but talking to myself is more often than not, the only way for me to have an intelligent conversation.

  116. NIH at its finest by nikster · · Score: 2, Interesting

    I was an intern at Apple in 1997 when Steve came back. We all knew he would save the company and were happy when Amelio left.

    This was the time of Windows 95 vs OS 9, pre-OS X. What was a huge problem back then was the Not Invented Here syndrome, which sounds silly until you realize that this is bound to happen at a company like Apple. Apple has the brightest engineers and used to make the best software and hardware. Now, if you are the best, who is going to voluntarily run Windows 3.x (for example) just to keep on top of what's happening on the other side. So at Apple, Win95 was pretty unknown. NT - even more unknown. People had no idea why it was better than OS 9. All they could see was the uglier interface.

    The exact same thing happens these days with XCode and Objective-C. Once upon a time, Objective-C and InterfaceBuilder and the predecessor to XCode were light-years ahead of the competition. They were literally about 10 years ahead in NeXT times. Like, two or three generations ahead. Nowadays, they are falling behind. but because no one at Apple even considers to use anything else, they still think they are the best. XCode developers think that XCode is way better than anything else out there, even though VS.NET, Eclipse, and IDEA for Java development are far better. XCode's latest improvement was auto-completion (that works)... Eclipse and IDEA meanwhile are working on ever more refined refactoring mechanisms that automate away days and weeks of development time.

    As for Objective-C I don't know it well enough to make a judgement but the syntax is certainly extremely different from anything else. I don't want to lean it if it is just for the sake of writing proprietary OS X-only software.

    But since Obj-C is already dynamic and can do "everything" a dynamic programming language can do, why not at least provide wrappers for Ruby and Python? Ruby wrappers should be totally simple to write, and then I could just use my favorite programming language to program my favorite OS. Ruby would really be a perfect fit for OS X - elegance from within.

    Developer's ignorance plays a good part in this too. If XCode is better than the previous XCode and works for you, why should you use anything else. I actually run into this problem with colleagues who use CodeWarrior or some other abomination of an IDE, or who use no IDE at all and claim that that's better for them than learning an IDE. Yeah, right. I have not met anybody who wanted to switch back from a modern IDE (IDEA, Eclipse, VS .NET) to a text editor or emacs or some glorified-text-editor-IDE like CW or XCode. Nobody goes back. The productivity gains are not only real, they are also significant.

  117. Can't be consistent again by Anonymous Coward · · Score: 0

    "The Objective-C libraries are heavily based on inheritance, but I've learned that "composition trumps inheritance" ... meaning that its better to combine many small focused objects. In Objective-C, you have a layer-cake approach, where each layer of inheritance mixes in a particular concern. This makes sense when you want to minimize the number of objects allocated, but in a GC language (Java, Ruby, etc.) you end up with better, more testable code when you let the GC do its thing.
    "

    One of the advantages of inheritance is the possability for imposing a consistent look, and or behaviour by placing it in the lower classes, and exceptions to those behaviours and looks, are higher up.

    1. Re:Can't be consistent again by Prothonotar · · Score: 1

      For anyone who is not sure about the "composition versus inheritence" debate... go code some Eiffel. >:)

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
  118. Hell if it's not by Anonymous Coward · · Score: 0

    Interns get paid pretty well to do a lot of real work. We don't have time to answer Steve's e-mail when we have products to ship. (If you're looking for a tech internship and like working on real products, Apple's the place.)

  119. bias? by stalebread · · Score: 1

    This is not a balanced thread. Without clicking to see any of the hidden responses, I didn't see any comments that disagreed with Steve Jobs. Please mod up some comments that agreed with Nitesh Dhanjani to give us a more informative conversation.

  120. Objective-C is currently the best compromise by Anonymous Coward · · Score: 0

    Sure there are nice things in C#, Python and Java. But overall Objective-C is currently by far the best compromise. It is C + a great object model and syntax, and its Cocoa companion is just wonderful. I'm glad Apple adopted it as their primary language for Mac OS X. Frankly, with things like C#, Python, Ruby or Java we would never be able to develop the applications we have on OS X. Maybe it will be possible in 5 year, or 10 years from now; who knows ? But currently Objective-C and Cocoa are, on the whole, a lot more up to the task. And Objective-C is evolving : a new exception model, a new thread synchronization model, and in Leopard we are going to finally get a real garbage collector. Cocoa also is evolving, and it does so at an incredible peace. Think about Core Data, Core Image, bindings etc.

  121. Disagree by everphilski · · Score: 1
    What makes more sense?
    color = NSColor(128, 128, 64, 0);
    or
    color = [NSColor colorWithRed:128 Green:128 Blue:64 Alpha:0];


    Assuming you are programming on a regular basis the first one is consise and to the point. Assuming you are a newbie programming for the first time the second syntax is a nice... i dont know... guide. If you are programming on a regular basis you SHOULD know your functions. The additional information presented requires me to type more and isn't necessary. How hard is it to grep the header file for the declaration if you forget?

    -everphilski-
    1. Re:Disagree by dancpsu · · Score: 1

      Well, in the world of VisualStudio where you can type:

      color = NSColor...

      And you get a popup saying NSColor(int red, int green, int blue, int alpha);

      It may not be necessary, but when reading the code later on, or in a different application, it's good to have the cues outside of the application when it is originally written. When writing for a huge API, it is necessary to have more cues than a mysterious list of parameters.

      --
      "Scientists don't change their minds, they just die." -- Max Planck
    2. Re:Disagree by everphilski · · Score: 1

      Don't make assumptions. I do simulation programming under linux using multiple rather large API's, in c++. When you don't have IntelliSense... grep is your friend. If you forget the syntax either (a) reference the (online/printed) documentation or (b) alt-tab to the next console and grep for the header definition.

      And it all comes back to the argument that you should *study* the API before you start to program in it. you should know the precidence of common arguments, IE, in graphics layouts does x come first or y? etc. Having to assign x= and y= is redundant. It was already declared in the header, you should have read it, or the documentation documenting it.

      -everphilski-

  122. Bzzzzt! by Da+VinMan · · Score: 1, Interesting

    ...you can use whatever language you want so long as the language has exactly the same features as C#...

    Umm.... bzzzzt! Wrong answer contestant!

    Really, do you know what you're talking about? Every language in .NET has the same "features" if you're referring to the fact that they all have access to the .NET standard assemblies + Windows API, etc and that they are all (obstensibly) Turing complete. However, if you want an example of a language that allows one to think about a problem differently AND executes under the .NET CLR, then take a look around. You will find some premium examples like Eiffel.NET (which DOES actually support MI under the CLR; yes they had to put in a hack for it), COBOL.NET (yes, it actually works and customers pay us to use it), and some niche examples like F# (ML dialect). Let's not forget that VS.NET comes with C++, C, C# (don't forget managed AND unmanaged code for this), VB.NET, and J# (Java) right out of the box. I've also seen LISP for the CLR and there's probably others.

    Now, your assertion that language choice under .NET is silly seems rather silly in itself. If it's not important to you fine, but the fact that you're happy with Obj-C + Cocoa doesn't mean that .NET or GC sucks. And by the way, there are a great many hackers out there who are quite happy with hacking on OS X using not Obj-C (gasp!) but Ruby instead. You should check in with them, they might just open your mind.

    Or not. It's your loss then.

    The ONLY major complaint I have about .NET is that it's propagates a software monoculture; you can only deploy to Windows with it. Now THAT'S a legitimate complaint. But you probably realized the futility of complaining about that being a Obj-C/Cocoa developer eh?

    --
    Please mod this post only if you think others should/n't read this. I have enough ego^H^H^Hkarma. Thanks!
  123. Re:Apple blew off Metrowerks. Now they must suffer by ivanski · · Score: 1


    That clearly depends on your definition of "perfectly good."

    We're now at several iterations later (Proj Builder -> Xcode -> several revisions of Xcode) and Xcode, though it is vastly improved, still suffers substantially in head-to-head comparisons with Codewarrior (let alone Visual Studio) for products of substance (it can't even reliably figure out whether a subproject needs rebuilding unless you're forcing all your projects on a given box to build into the same directory). There are many of us moving to Xcode now because we *have to*, but I assure you, we ain't all liking it.

    That being said, MW/Freescale certainly wasn't selling Codewarrior. An embedded CPU manufacturer needs a quality development environment to go along with their chipsets.

  124. MOD PARENT UP: Interesting by ldd23 · · Score: 1

    Confirmed, that's in the manpage on 10.4.3:

    -fobjc-gc
      Enable garbage collection (GC) for Objective-C objects. The
      resulting binary can only be used on Mac OS X 10.5 (Leopard) and
      later systems, due to additional functionality needed in the (NeXT)
      Objective-C runtime.

      When the -fobjc-gc switch is specified, the compiler will replace
      assignments to instance variables (ivars) and to certain kinds of
      pointers to Objective-C object instances with calls to interceptor
      functions provided by the runtime garbage collector. Two type
      qualifiers, "__strong" and "__weak", also become available. The
      "__strong" qualifier may be used to indicate that assignments to
      variables of this type should generate a GC interceptor call, e.g.:

          __strong void *p; // assignments to 'p' will have interceptor calls
          int *q; // assignments to 'q' ordinarly will not
    ...
          (__strong int *)q = 0; // this assignment will call an interceptor

      Conversely, the "__weak" type qualifier may be used to suppress
      interceptor call generation:

          __weak id q; // assignments to 'q' will not have interceptor calls
          id p; // assignments to 'p' will have interceptor calls
    ...
          (__weak id)p = 0; // suppress interceptor call for this assignment

  125. I just wish more people realized this... by Svartalf · · Score: 1

    So many advocates of Java seem to miss this little detail- because they're tickled to not having to deal with the memory allocation, they think it's special and everyone should be using it. (Uh, BASIC had this... You'd think BASIC would have taken off more than it had if this was a useful thing for anything other than end-user application development...)

    It amazes me how many people just don't "get it" with regards to this stuff- it's almost like they're not really teaching CS anymore. This is basic CS stuff and it seems to elude them.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
    1. Re:I just wish more people realized this... by Anonymous Coward · · Score: 0

      Do you know what Computer Science instruction actually involves? Garbage collection is much more efficient in terms of throughput and memory use than any manual dynamic memory management scheme. If by chance you had studied Computer Science you would simply know this as a matter of fact, because you would have analyzed various algorithms already. Sacrificing throughput for latency in order to work in a realtime system is tenable and again quite competitive because of superior locality. In terms of hard real-time guarantees the only way to implement a function like malloc in this environment is to waste memory and simply fail to allocate when you can't allocate anymore. You don't even want dynamic allocated memory here and for example most code that works in this environment doesn't use it.

      Java is not, nor has it ever been the state of the art in garbage collection. Indeed, not only is it not equipped with the state of the art in parallel collectors, it suffers considerably from its virtual machine's jitc and the weight of its classes (with the subsequent dependency on enormous class hierarchies). Wander over to CiteSeer and see what real Computer Science is about, presuming that you have the mathematical sophistication to understand the research.

    2. Re:I just wish more people realized this... by feijai · · Score: 1
      (Uh, BASIC had this... You'd think BASIC would have taken off more than it had if this was a useful thing for anything other than end-user application development...)
      BASIC didn't have allocation at all. Everything was globals or (in advanced forms) stack-allocated locals.
  126. So what? by snowwrestler · · Score: 1

    You're typing on a computer on Slashdot instead of sucking dicks in a slum in India.

    Of course luck and circumstance are limiting factors on some people's lives. However for any given success story there is a pool of people with equivalent initial conditions. Plenty of people in the U.S. dropped out of college and messed around with computers with their friends in the 70's. Only a couple of them are running 30-year-old multi-national, multi-billion-dollar computer companies today.

    There's more to life than what falls in your lap.

    --
    Build a man a fire, he's warm for one night. Set him on fire, and he's warm for the rest of his life.
    1. Re:So what? by saltydogdesign · · Score: 1

      If you go back and *read* the thread (there's a novel idea), you'll note I never said Jobs isn't a brilliant, hardworking man. But to suggest that luck is just a minor, insignificant part of his success is just the kind of ludicrous thinking that makes Westerners feel that they are somehow entitled to the lion's share of the world's resources. Bill O'Reilly would be proud.

      --
      // This is not a sig.
    2. Re:So what? by kuleiana · · Score: 1

      A simple but awesome observation snowwrestler, this conversation has ceased being about Steve Jobs and his technical ability and become how people feel about successful people and how they got where they are today. Success is about having the willpower to do what you really know you need to do in order to make something, no matter what your part is in it, be it technical or being a great bullsh*tter or a genius marketing manager. Jobs' comment may have been motivated by something else other than technical merit or linguistic advantages. I do not know how great .net or Objective-C are, but I'm of the opinion that the apps created with Objective C tend to be a hell of a lot better than the stuff that's created using Microsoft tools, in general.

      --
      Thinkingman.com New Media
  127. A subtle distinction by SuperKendall · · Score: 1

    Just that Java doesn't have much relevance to desktop applications, while .NET is the successor to technologies that currently dominate that market (VB, MFC, etc).

    A subtle distinction there; VM/MFC are technologies that sit on top of an OS that dominates the market. On other platforms they have gained very little traction; even workalikes have not really caught on.

    It's true that Apple is culling Java support; at least in terms of cocoa integration. They however continue to support Java itself fairly well. It's true they lag a bit on versions but now that JDK 1.5 is out (whch was a large amount of work) I think they'll keep closer abreast.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:A subtle distinction by NutscrapeSucks · · Score: 1

      VB/MFC are technologies that sit on top of an OS that dominates the market. On other platforms they have gained very little traction; even workalikes have not really caught on.

      Right, but one of the main properties of .NET is that it puts some distance between the applicaiton runtime and the OS. A C# application would be much more portable to OSX/Cocoa than a Win32 app is ... if Apple provided a runtime.

      --
      Whenever I hear the word 'Innovation', I reach for my pistol.
  128. oy vey by slashdotwannabe · · Score: 1

    in all of this discussion of languages, nobody has discussed IMO the most important aspect of a programming language: the economics of using it. Anyway, this whole thread smacks of religous defense of what you know and love, not object dicussion of pros/cons. .Net is not faster than C++ is the same way that C++ is slower than assembly. The more you abstract a language, the slower it becomes. When you build a house, you choose a hammer to put in nails, not a tape measure. The same goes for development - choose the right tool for the job. Duh! While I wouldn't recommend .Net for doing performance-intensive simulations, I would recommend it for just about anything else if I'm actually paying developers - hell, developers are *expensive*.

    --
    This comment is my opinion and does not represent an official position of Donald Trump or others I do not work for
    1. Re:oy vey by thedletterman · · Score: 1

      This was a point I considered making but didn't even want to 'go there'. I quit developing last decade as a mostly ASM and Modula2 programmer. The development of RAD tools has allowed the suites of applications that might run half as fast, and take five times the disk space as what I would have written, but it probably would have taken me ten times as long to write and would have been ten times more expensive.

      --
      Any fool can criticise, condemn, and complain, and most fools do. - Benjamin Franklin
  129. Here's why that made perfect sense to me by SuperKendall · · Score: 1

    On comparing Obj-C to VisualStudio.NET
    Did you just compare a language and framework to an IDE? How can that make sense?

    That made a lot of sense to me... .Net also relies heavily on a wide set of frameworks (just like Java).

    Unlike Java, using .Net usually means you are using Visual Studio - in fact almost exclusively
    . While you can also do standalone work, the simple fact is no-one (and the people that do are the rounding error by 0.0) does that. They not only use the frameworks but the IDE that makes the frameworks usable. Since there is a monoculture (ha!) of language and IDE, slowly the two become inseparable as instead of thinking through API's the API developers can rely on tools to make a kludgey API usable.

    So to me I understood exactly what was meant by comparing a language and framework to an IDE that is realistically just the the two combined.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Here's why that made perfect sense to me by aCapitalist · · Score: 1

      Unlike Java, using .Net usually means you are using Visual Studio - in fact almost exclusively
      . While you can also do standalone work, the simple fact is no-one (and the people that do are the rounding error by 0.0) does that. They not only use the frameworks but the IDE that makes the frameworks usable. Since there is a monoculture (ha!) of language and IDE, slowly the two become inseparable as instead of thinking through API's the API developers can rely on tools to make a kludgey API usable.

      So to me I understood exactly what was meant by comparing a language and framework to an IDE that is realistically just the the two combined.


      You have no clue of what you're talking about. Nobody is forcing you to use Visual Studio. Maybe because it's a productive environment, most people. Most Mono development is not done using an IDE. And as far as bloated - jesus christ, if you're a developer go buy a gig of ram...it's nearly 2006. Your whole point is invalid.

    2. Re:Here's why that made perfect sense to me by Anonymous Coward · · Score: 0

      Visual Studio .NET is painfully slow that I've never even met anyone who actually uses it. I worked in .NET for twelve months; we used gnumacs or gvim, standalone MSDN Library, and build.exe to run nmake to run csc for builds. This was at Microsoft, by the way, where the price of using Visual Studio is precisely zero...

  130. Why not a feature? by SuperKendall · · Score: 1

    The whole point of private stuff is so that a programmer cannot "see" by API a call or variable you'd rather them not accessing. It's not meant to really be a security measure as much as keeping some things aside you'd like to be able to change later wihtout breaking other programs.

    So the ability for someone to call one if they like - to me that is just flexibility, and can be of use. In the parent post it was mentioned that you could call into a third party private method (horror!). Well you can in fact even OVERRIDE a third-party private method, which can be handy. Yes to use it breaks encapsulation, but if done carefully can provide good benefit without very much danger and enables uses of third party libraries that might not have been thought of or possible otherwise.

    Java reflection was lauded when it added the ability to introspect private members. Again the ability to access private data is not a flaw, as long as you have some means to hide the API for it so people will not accidentally make use of it.

    I think it's funny that people cannot see beyond the working of current popular languages to other practical ways of programming. Were COBOL programmers proclaiming the same kinds of things 20 years ago, and calling C users apologists for not having overly wordy syntax?

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  131. A port of Objective-C/framework to other platform? by aCapitalist · · Score: 1

    First, as somewhat of an amateur PC historian, I can tell you that Jobs was never much of a programmer - if he ever was. I believe he did have a stint at Atari during the early 70s (during the Nolan Bushnell "let's hire every hippy off the streets of San Francisco" phase), but I doubt he was doing any circuit design heavy-lifting for those mostly hardware machines back then. And I've never heard any source say that he ever had his hands directly on any hardware/software engineering on anything coming from Apple. But he's been around it for a long time and so knows quite a bit about it. My old boss, president of the company, and head sales dude didn't program but had heavy technical knowledge - you could have a good technical conversation with him. So he doesn't have to be in the trenches to know some things.

    But on to the main point, I thought i had heard a rumor of Apple porting their framework to other platforms not too long ago. Maybe I'm mistaken. I like C# and .NET, but I think it would be great for more development choice on all platforms. GNUStep has always felt not quite there for me on windows and unix. But I've always heard good things about Objective-C, and there are benefits to having a highly dynamic language environment with the ability to drop down to C for some things. High quality Ruby bindings for Apple's frameworks would be really nice too.

  132. The very heart of the culture flaw at Apple by thedletterman · · Score: 1

    Steve Jobs' hubris. The idea that objective C is perfect is laughable. Some developers may have considered it (mostly in arrogance) "ahead of it's time", I would have considered it's development "timely and innovative". Being first to the market with an innovative new improvement is not "ahead" of time, it's "first to market" which is ideal timing, if you ask anyone on wall street. The idea that their products are "ahead of time" and "perfect" is what allows their products to loose innovation while others are improving off their innovation and gaining steam while their "perfect" products stagnate, apparently "waiting for their time to come". If Apple had any sense, are were the "renegades" and "pirates" of programming that they think they are, they would at least have a small division programming for windows, using windows tools. "Know thy enemy" would be my mantra, not "blow thy own horn". Apple's criticisms of Windows and windows tools show a profound knowledge of generalizations and stereotypes, all of which are laughable in the face of actual experience. I'm anxiously looking forward to Apple adopting support for the Intel chipset to start seeing apple to apple comaprisons of windows vs macintosh. I said back in 4Q 2004 when Apple financials reported that a majority of it's income was from Ipod instead of PC sales that the end of Apple's RISC chipset was to happen in the next 3 years, and it looks like that premonition might soon come true. Given the end of the chipset, I wonder how much staying power the Operating System will have head to head against the competition of Windows vs Linux?

    --
    Any fool can criticise, condemn, and complain, and most fools do. - Benjamin Franklin
  133. Come on, how many Mono developers really by SuperKendall · · Score: 1

    You have no clue of what you're talking about. Nobody is forcing you to use Visual Studio. Maybe because it's a productive environment, most people. Most Mono development is not done using an IDE.

    As I said the number of people doing Mono development is a rounding error compared to the people using VS and .Net. If you're doing Mono yes you're not using Visual Studio, but just about every single person doing pure .Net development is using the IDE to take full advantage of webforms and the like. I didn't say you couldn't do it, I said most people are not chosing to do so ad that remains true (especially in corperate environs).

    You may think you knwo what is possible but you don't seem to understand what people are actually doing in the real world.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Come on, how many Mono developers really by aCapitalist · · Score: 1

      No, what you don't understand is that the compilers and libraries are not tied to VS.NET at all. So you can throw around words like bloated if you want, but if you're cheap and/or don't want a IDE then you don't need it. There's an open source IDE called SharpDevelop that you can use or use Vim if you want. So once again, you're ignorant of certain realities of .NET. The reason that so many people use VS.NET is because it beats developing in "just" an editor.

  134. Sad, when you think about it by Oswald · · Score: 1
    ... an e-mail thread between Steve Jobs and himself...

    I've never been a big fan of Jobs, but I had no idea he was so hard up for friends that he had to exchange email with himself. I almost feel sorry for the prick.

  135. You've got the wrong framework by TheInternet · · Score: 1

    The Objective-C libraries are heavily based on inheritance, but I've learned that "composition trumps inheritance" ... meaning that its better to combine many small focused objects.

    Dude, you're high. By "Objective-C libraries" I assume you mean the Cocoa framework? Cocoa encourages minimal subclassing. It does do it when there's a legitimate tree of derived types (for example, on-screen controls), but composition and categories are far more common.

          - Scott

    --
    Scott Stevenson
    Tree House Ideas
  136. Too bad that Dylan pretty much died by aCapitalist · · Score: 1

    Yeah, I know about OpenDylan, but it really sucks that Apple chose Objective-C (mostly because of NeXT) instead of using the work they had done with Dylan. Dylan is a much more powerful language than Objective-C will ever. Seriously, check it out. It's compiled, but has 95% of the power of Lisp (CLOS-like object system and Macros). Too bad that the Functional Developer IDE doesn't get some love, but I still love the language (even if its a little verbose for my tastes).

    1. Re:Too bad that Dylan pretty much died by feijai · · Score: 1
      Seriously, check it out. It's compiled, but has 95% of the power of Lisp (CLOS-like object system and Macros).
      Huh. Because Lisp is compiled also. So you're basically saying Dylan is 95% as good as Lisp?

      And let's not kid ourselves: Objective-C is much faster than Dylan.

  137. Re:Apple blew off Metrowerks. Now they must suffer by diamondsw · · Score: 1

    While I loved the CW IDE as much as anyone, it wasn't maintained properly. Featurewise it hasn't advanced significantly in ages, and the release schedule slowed WAY down (remember the quarterly updates? Yeah, me neither).

    As for Apple's direction, you're spouting a complete load of bullshit. It was:

    Copland (no "e", thank you), OpenDoc. OpenDoc was killed off by lack of support and poor implementation. Copland was almost a complete disaster. Ultimately, a lot of the technology and API's (Open Transport, Appearance Manager, etc) made their way into the classic Mac OS.

    Then came Rhapsody, which was essentially ObjC and Cocoa (only back then it was called "Yellow Box" - same API's). Those who had enormous code investments in CodeWarrior/Carbon didn't care to throw out all of their code (Adobe, Macromedia, Microsoft) and threatened to dump the Mac entirely. In 1998, that would have been the death knell. Hell, today it wouldn't be good either, but a lot less realistic given the different environment we're in today.

    So, Apple created Carbon for porting over existing code, but has always emphasized Cocoa/ObjC as the preferred way of doing things. Architecturally, it makes sense, since OS X's roots are primarily NeXTstep. It makes even more sense now that we're changing platform architectures - NeXT/Cocoa has been through that before.

    So to sum up, things were in a tizzy PRIOR to Steve's return - OpenDoc! Copland! PowerTalk! QuickDraw GX! A lot of people jumped ship - that was 1995-1997 when adjectives like "beleagured" described Apple all the time. After Steve, it's been one simple message - focus on Cocoa/ObjC. Use Carbon if you must, but otherwise use Cocoa/ObjC.

    To bring things back on topic, I also wish there was a decent way to take advantage of the Cocoa API without ObjC. I love the object oriented API, but I HATE the ObjC syntax (as many have mentioned, the method-calling syntax is bizarre). As a result, I quit developing for the Mac some years ago. Can someone tell me why the same language couldn't be implemented with a more "familiar" syntax using parens, etc? It seems all you'd have to do is change the front-end parser and tokenizer, and everything else would just work.

    --
    I don't know what kind of crack I was on, but I suspect it was decaf.
  138. Objective C and COBOL by herbierobinson · · Score: 1

    I don't exactly know why, but Objective C just keeps reminding me of COBOL. Maybe it's just a revulsion to the ugly syntax...

    It's especially gross that the syntax for the first parameter for method calls is different than all the other parameters.

    Note that I said "parameter" and "method call" here, and don't say anything about "message passing" -- messages go one way and don't come back. A real message system doesn't have return values and doesn't wait....

    Still is is impressive what they have managed build on top of such crude tool.

    --
    An engineer who ran for Congress. http://herbrobinson.us
    1. Re:Objective C and COBOL by tbien · · Score: 1

      You're a troll... Objective-C has nothing in common with COBOL.

    2. Re:Objective C and COBOL by herbierobinson · · Score: 1

      I disagree.

      They are both ugly warts.

      They both have really stupid syntax for making subroutine calls.

      They are (or at least were) both heavily proselytized by fanatic propopents touting thier almost magical properties.

      --
      An engineer who ran for Congress. http://herbrobinson.us
  139. C++ support by pissu_man · · Score: 1

    I have been using Cocoa with Obj-C for a while now, had to switch over from Carbon due to lack of new additions in the Carbon front. I feel quite fustrated due to the lack of C++ support from Apple. Obj-C++ is there but its treated like a distant cousin. I wold like to introduce Macs to my work environment, we need high performance computing all the way. But the lack of a proper high performace language is a real show stoper for me. Am I missing the something here? I would like hear what others have to say about this.

  140. images? by Rozzin · · Score: 1

    The Common Lisp "image" idea doesn't bother you?

    --
    -rozzin.
    1. Re:images? by tbien · · Score: 1

      A Lisp image in CL is just the runtime environment, not the development environment!

  141. To me, Objective C is the show stopper. by Anonymous Coward · · Score: 0

    Apple's choice of Objective C as the primary API language of Cocoa is the only thing that keeps me personally from making Mac OS X my primary development platform of choice.

  142. err by Stu+Charlton · · Score: 1

    Really, do you know what you're talking about? Every language in .NET has the same "features" if you're referring to the fact that they all have access to the .NET standard assemblies + Windows API, etc and that they are all (obstensibly) Turing complete.

    Err, the point is that common language interoperability is based on a certain subset of language features that tend to be limited by C#'s features, which seems to be where Microsoft's mroe innovative language features are showing up.

    You can absolutely use COBOL or Eiffel or whatnot, but the language constructs for talking across assemblies are limited in expressiveness based on the CLI spec. I generally think this tends to be "enough" for most practical purposes.

    The other thing to note is the number of customers actually using COBOL or Eiffel on .NET for commercial applications are absolutely miniscule.

    --
    -Stu
    1. Re:err by Anonymous Coward · · Score: 0

      Well, there are dynamically-typed languages like IronPython, which benchmarks faster than CPython. There's also Boo and Nemerle, which have type inference and lisp-like macros. None of this is in C#.

  143. have you tried... by Stu+Charlton · · Score: 1

    Generally I've found that you can tune the Sun Hotspot VM's generations to minimize pause times, though this requires a GC analyzer to determine what's taking so long. Ensuring objects stay in the eden generation, for example, ensures they get the faster parallel garbage collector -- the "stop the world" collector only runs on older generations. I've run heaps with a couple of gigs of RAM and it's pretty rare to see it pause for several minutes -- a few seconds, sure, but that depends on the application.

    Another thought, have you tried BEA JRockit? It has both a concurrent generational and parallel garbage collector which you can swap at runtime, and also has a dynamic GC setting to optimize for "minimal pause times" (-Xgcprio:pausetime).

    Unfortunately, it's only on x86, EM64T, AMD64, and Itanium for now (Windows + Linux), but a Solaris AMD64 and SPARC version is due in the coming weeks. It's free for general use, but requries a license if you want to use the management features / GUIs.

    --
    -Stu
    1. Re:have you tried... by FredFnord · · Score: 1

      We can use any java we like, but we aren't going to tell our customers to use one specific brand of java, and if we were to do that it would be Sun's. (For example, the government has specific approved software for particular tasks, and Sun Java 1.5 probably won't be approved for the tasks we're deployed for for another six months to a year. There's no way we could get them to use BEA's.) It's nice that there is one out there that would solve our problem [maybe] but it doesn't actually help us. Also, when you say it's free to deploy, it says 'for internal use only' in the license. I'm not sure what that means, but a naive reading of it would exclude the dramatic majority of our customers.

      As for the first part of your comment: yes, and though it took us bloody forever, we finally managed to do so in 1.4. And now in 1.5 we have had to start over again. The 'stop the world' collector isn't, in fact, the problem... the problem is enormous amounts of disk swapping when it uses the parallel collector.

      -fred

      --
      Sign #11 of Slashdot overdose: You see the phrase 'moderate Republican' and you wonder if that would be a +1 or a -1.
  144. Try reading my posts and not others by SuperKendall · · Score: 1

    Did I say bloated? No I did not.

    Yes the compiler and libraries are not tied to VS.Net at all. WHich makes it even more interesting that so many PEOPLE tie themselves to VS.NET when, in theory, they would not have to. I'll repeat again; I'm only saying what people ACTUALLY do, not what it is possible to do.

    You are totally ignoring what people actually do in the real world of .Net development, and lviing in a wierd fanatasy land where SharpDevelop is used by more that .0000000000000001% of developers. Give it up man and admit the truth.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:Try reading my posts and not others by aCapitalist · · Score: 1

      Let's just post what you did say:

      They not only use the frameworks but the IDE that makes the frameworks usable.

      Let's tackle that lie. The framework is usable without an IDE, just like any language with libraries. So you're wrong there.

      Since there is a monoculture (ha!) of language and IDE, slowly the two become inseparable as instead of thinking through API's the API developers can rely on tools to make a kludgey API usable.

      Another lie. There is nothing inseparable about the language and the IDE, and the API is not kludgey.

      So to me I understood exactly what was meant by comparing a language and framework to an IDE that is realistically just the the two combined.

      You're full of shit there too. Only an idiot would compare an IDE to a framework that are not tied together.

      You need to think before you post so your lies don't have to be pointed out to everyone.

    2. Re:Try reading my posts and not others by Anonymous Coward · · Score: 0

      What people ACTUALLY do is use make and gvim or emacs, rather than put up with the half-assed text editor and opaque "project files" every IDE insists on saddling us with. I've been working at Microsoft for over a year, about 2/3 C# and 1/3 C++. I've worked closely with eleven devs so far. You know how many of them use Visual Studio (which costs us nothing, by the way)? One. Less than half the time at that. Why? It's painfully slow, the source control integration is too brain-damaged (no changesets?) to make good use of any decent system, windbg with sos is far more useful for debugging (but of course you can't integrate that), almost anything is better for editing, but most of all you can't check a Visual Studio installation into source control and get it back ready to run.

  145. What was really cool about Apple... by nullhero · · Score: 1

    Learning to program. How many programmers got the programming bug from playing on their Apple ]['s or Apple ][e's? Why was it really great about it? Well, after getting my computer when I was 14 I spent a few hours that Saturday morning reading the documentation and by that evening was creating lo-res graphics. By about the middle of the night hi-res graphics. It used to be really easy to sit down and learn to program.

    The only problem I find with Objective-C is that I can't imagine a 14 year old getting his first computer and just writing graphic programs off the cuff. Maybe the age of the kid should be younger but other than playing on the web what is there to teach kids how to program anymore if not just for the machine.

    Where is Apple Basic of the Mac? And why isn't it bundled? What happened to hobbyists did they all become rich and stop caring?

    --
    Save Pangaea!! Stop Continental Drift!!
  146. In theory by SuperKendall · · Score: 1

    Right, but one of the main properties of .NET is that it puts some distance between the applicaiton runtime and the OS. A C# application would be much more portable to OSX/Cocoa than a Win32 app is ... if Apple provided a runtime.

    Yes, in theory C# is like Java in that way.

    In reality though it's not really on other platforms to any real extent (though I know Mono is trying, and in fact even ported to OS X). The problem is in the range of supporting libraries that need to be written to support the full .NET API, which is large just like Java is.

    There's a reason why the Apple version of JDK 1.5 lagged a year behind the Sun release. A similar, if not greater degree of effort would be required to write all of the libraries to fully implement the .Net API on OS X. And as the story shows Jobs (and thus Apple) doesn't find it a worthwhile effort. I can't really blame Apple considering how productive Objective-C and Cocoa are today. Coming from a long, long history of Java development I agree with his assesment and I don't think developers would really be that much better served by moving from Objective-C to a Java like language as the primary support language.

    It will be interesting to see if Microsoft does end up porting .Net to OS X. They may do so after Vista is out, when OS X and Windows will share a similar set of underlying features that would be interesting to expose through new .Net API's.

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  147. I call bull: Python, Perl, PHP, Java - pick one. by surial · · Score: 1

    Objective C for mac is analogous to C for linux and C++ for windows. It's the base, the language of the underlying OS and core libraries. When looking at it that way, macs absolutely and completely blow both windows and linux out of the water as development environments.

    Not good enough for you? That's okay. It's not good enough for me either. macs ship with about the same set of alternative dev environments as linux - PHP, Python, Java (which is particularly well integrated - swing actually looks palatable on a mac), perl, and undoubtedly a bunch of others are installed by default, and no one is stopping you from adding eclipse or other alternative dev environments on your mac.

    Exactly as it works on linux and windows, incidentally - except of course that neither linux or windows guaranteed ships with python, perl, PHP, and especially java, so releasing your software in such a language doesn't work when offering it to Joe Q. Average out there. No one wants to download 40MBs worth of a JRE first.

    Can it be 'better'? Possibly. But looking at the big picture, I'm jobs on this one.

  148. Headline is irritating. by ruyon · · Score: 1

    Nexttime Bill says "C# is great" or John says "Java is King" I'll be the first to submit the news Bill/John says C#/Java is PERFECT.

  149. The problem is ... by willtsmith · · Score: 1


    Yes Diebold is being vigourously challened ... in CALIFORNIA.

    The problem is that they are being primarily deployed in red states where the powers that be have defined the law to support Diebold machines.

    With the Diebold machines in place, what are the odds that the laws are going to change anytime soon???

    BTW, the statistics are showing that the electronic voting machines are the ones that differ significantly from exit polling. Traditional vote counting methodology seems to agree. Hmmmmm......

    Like Uncle Joe Stalin used to say, it's not who does the voting, it's who does the counting!!!!

    --
    -------- -------- Support Wesley Clark for president!!!
  150. Dangling pointers and leaks by SkipNewarkDE · · Score: 1

    Garbage collection is for programmers too lazy or sloppy to implement an allocation and deallocation policy, and stick to it. Regardless of how fast hardware is these days, having something pour over memory allocation, determine unused blocks, purge them, compress existing blocks, fix up the pointers referring to those moved blocks, etc, is just eating up processor time. How much freaking difficulty is it to periodically run a profiler on one's application during development, and see if any leaks are occurring? Why introduce additional overhead of an all-the-time garbage collector, when this stuff can be found during development time and eliminated? I have written several very large commercial software applications for well-known companies, and we don't lament not having a garbage collector. We model our data, and we model the life-cycle of our objects and data, and knowing that we will sometimes frack-up, we profile our code and see if anything is being left behind.

    1. Re:Dangling pointers and leaks by Anonymous Coward · · Score: 0

      The work a GC has to do is proportional to the number of live objects. The work free() has to do is proportional to the number of dead objects, which may be much larger. And every call to free() is a potential security flaw, because you can't prove nobody will ever attempt to use that object again after it's been overwritten by potentially malicious bits.

  151. Raskin was a bitter old man and a liar by SkipNewarkDE · · Score: 1

    Raskin was a bitter man. He is hardly the father of the final form of the Macintosh. Jobs never claimed that the Mac was developed by college drop-outs. The Apple I WAS developed by college drop outs.

    1. Re:Raskin was a bitter old man and a liar by werdna · · Score: 1

      Don't speak ill of the dead, particularly when you are clueless.

      Jef was a beautiful man, a great father, husband and friend. He was a brilliant, playful, gentle, sweet and wonderful fellow, who was ever content with his life, his work and his family. While he was certainly disappointed by others from time to time in his remarkable life, and the world never quite accepted his iconoclastic sense of right and wrong, there was not a bitter bone in his body.

      He had an inchoate vision of a "right" UI that strongly influenced those around him. Quibbling about his paternity of the "final form of the Macintosh" is foolish and futile, and ultimately misses the point. His influence remains for all to see. To the very end, he continued to evangelize for his vision of the ultimate personal computer, and he has left inspired progeny to carry that work forward.

      His contributions were great. His visions were fascinating and tempting. Most of all, his passions were infectious and wonderful.

  152. That would be Smalltalk, then. by Anonymous Coward · · Score: 0

    "...I think Apple really needs to come up with a language that doesn't require memory management"

    That would be Smalltalk, then.

    He saw it at PARC, and completely missed the significance.

    [sigh] The opportunity is already missed....

  153. A few thoughts. by miguel · · Score: 1

    I added a few of my thoughts on my blog:

    http://tirania.org/blog/archive/2005/Dec-28.html

  154. Why the lovefest on ./ for .NET? by aristotle-dude · · Score: 1
    The .NET platform is far from perfect. There are numerous performance issues with the non-deterministic garbage collection. The delay of the release of various resources can cause a huge performance hit over time forcing a periodic shutdown and restart of the app server.

    I've also noticed people praising .NET for having a choice of languages. Excuse me? All of the CLR languages offer the same bloody features as C#, so what is the point of using any of the other languages other than familiarity? Using .NET can be quite limiting in actual use.

    The suggestion that Cocoa can only be programmed against with Objective C is a myth. There are numerous languages that you can use and you can also mix Cocoa and regular C/C++/Python/Ruby etc... within your application. Numerous open source ports are examples of standard C code being called by Objective C interface code.

    With the majority of cross-platform software, you can get away with using very little Cocoa in you application if you program your engine code separate from your UI and OS specific code.

    --
    Jesus was a compassionate social conservative who called individuals to sin no more.
  155. Re:Apple blew off Metrowerks. Now they must suffer by Orrin+Bloquy · · Score: 1

    How's that Poser-killer of yours doing, eh?

    --
    "Made up/misattributed quote that makes me look smart. I am on /. and I must look smart."
  156. Re: Java desktop apps by stripes · · Score: 1
    Care to name one that I might use (or see in a store for purchase)?

    Azerus is one of the leading BitTorrent clients, and is written in Java, which I think is an odd language for an I/O intensive task, but it sure is popular.

    FYI, Java is not a language of choice for me, the only thing I've ever done was a ssh (v1) implementation while learning Java, and a little smart card work. It's not a bad language, but when I use it I miss C++'s STL, and when I use C++ boost::shared_ptr and week_ptr (now tr1::shared_ptr) are enough for me to not miss Java's GC.

  157. Re: Java desktop apps by mbessey · · Score: 1

    Azerus is one of the leading BitTorrent clients, and is written in Java, which I think is an odd language for an I/O intensive task, but it sure is popular.

    Actually I/O intensive applications like a BitTorrent client are really good places to use Java.
    1. Since the application gets started up very rarely (once per login session, probably), the overhead involved with launching the JVM and JITting all the code isn't as noticeable/objectionable. If you're going to be downloading stuff for hours, do you care if the application starts in 5 seconds or .5 seconds?
    2. Since the application is I/O bound, and does minimal processing on the data it handles, it doesn't matter that Java execution speed is slow - all of the I/O happens in native libraries (or directly in the OS), anyway.

    On the other hand, an application like Photoshop really would be a bad candidate for Java (because the performance is almost all CPU-limited), as would the various little server processes and command-line tools on UNIX systems (since they start and stop a lot).

  158. Re: Java desktop apps by stripes · · Score: 1
    Actually I/O intensive applications like a BitTorrent client are really good places to use Java

    Hmmm, maybe I got it confused with C++'s iostream vs. C's stdio (iostreams are at a disadvantage since they have to sync with stdio...or at least they use to be, maybe there is an option to turn that off now).

  159. You stupid faggot by Anonymous Coward · · Score: 0

    Stop suckin Jobs' dick you asswipe

  160. disk swapping!? by Stu+Charlton · · Score: 1

    Are you actually suggesting that the VM is writing memory pages to swap disk? Egad. I've not heard this as a problem with the parallel collector; typically I lock the VM to shared memory (on UNIX platforms) to ensure it won't actually hit the swap...

    As for the BEA JRockit license, good point -- you sound like an ISV, thus there probably would need to be some sort of arrangement with BEA on it.

    --
    -Stu