Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Steve Jobs thinks Objective C is Perfect?

Hemos posted more than 8 years ago | from the good-or-bad dept.

Programming 784

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?"

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered


yay (-1, Offtopic)

Anonymous Coward | more than 8 years ago | (#14339889)


Syntax is strange (0)

Anonymous Coward | more than 8 years ago | (#14339890)

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

namespaces (4, Informative)

Anonymous Coward | more than 8 years ago | (#14339897)

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

Re:namespaces (0)

Anonymous Coward | more than 8 years ago | (#14340009)

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

Re:namespaces (1)

Anonymous Coward | more than 8 years ago | (#14340075)

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

Re:namespaces (0)

Anonymous Coward | more than 8 years ago | (#14340115)

Anonymous does not forgive

Re:namespaces (0, Troll)

golgotha007 (62687) | more than 8 years ago | (#14340099)

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...

The emails are already gone. (5, Informative)

CapnRob (137862) | more than 8 years ago | (#14339900)

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

Re:The emails are already gone. (0)

Anonymous Coward | more than 8 years ago | (#14339951)

Or having been slashdotted....

Compared to Intellij IDEA, XCode sucks (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14339901)

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.

Re:Compared to Intellij IDEA, XCode sucks (3, Insightful)

cosmo7 (325616) | more than 8 years ago | (#14340017)

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?

Re:Compared to Intellij IDEA, XCode sucks (3, Interesting)

morcheeba (260908) | more than 8 years ago | (#14340018)

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

Honestly, I would like to know why you think IntelliJ IDEA [jetbrains.com] 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...

objective-c is cool (2, Informative)

matt4077 (581118) | more than 8 years ago | (#14339902)

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.

Making it "fun" (4, Funny)

Rude Turnip (49495) | more than 8 years ago | (#14339903)

"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?

Re:Making it "fun" (1, Funny)

Anonymous Coward | more than 8 years ago | (#14340023)

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


Dharma (1, Informative)

Anonymous Coward | more than 8 years ago | (#14339904)

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.

Re:Dharma (0)

Anonymous Coward | more than 8 years ago | (#14339968)

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

Love it (5, Informative)

Richard_at_work (517087) | more than 8 years ago | (#14339905)

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.

Re:Love it (5, Interesting)

rplacd (123904) | more than 8 years ago | (#14340001)

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).

Re:Love it (1)

Mike Savior (802573) | more than 8 years ago | (#14340109)

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)

well... (4, Insightful)

soapdog (773638) | more than 8 years ago | (#14339910)

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...

Re:well... (1)

the_instigator (679233) | more than 8 years ago | (#14340022)

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.

Re:well... (2, Insightful)

Anonymous Coward | more than 8 years ago | (#14340035)

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.

Re:well... (2, Insightful)

Rew190 (138940) | more than 8 years ago | (#14340040)

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.

between himself and Steve Jobs (5, Funny)

Dachannien (617929) | more than 8 years ago | (#14339913)

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

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

thread taken down? (1)

furnk (935156) | more than 8 years ago | (#14339914)

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.

It's not like they're not doing anything (5, Informative)

Anonymous Coward | more than 8 years ago | (#14339915)

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.

Re:It's not like they're not doing anything (4, Informative)

am 2k (217885) | more than 8 years ago | (#14340045)

Agreed. I just started using CoreData, and it's a pretty amazing technology. For instance, take a look at this tutorial [cocoadevcentral.com]. 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).

Re:It's not like they're not doing anything (1)

daBass (56811) | more than 8 years ago | (#14340069)

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

Re:It's not like they're not doing anything (3, Interesting)

jcr (53032) | more than 8 years ago | (#14340119)

If you think CoreData is cool, check out what you can do with Quartz Composer. Every value in the composition is reachable through keypaths.


I dunno (2, Insightful)

log0n (18224) | more than 8 years ago | (#14339920)

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.

Re:I dunno (1, Insightful)

Anonymous Coward | more than 8 years ago | (#14339940)

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.

Re:I dunno (0)

Khakionion (544166) | more than 8 years ago | (#14339961)

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

Re:I dunno (-1, Flamebait)

Timesprout (579035) | more than 8 years ago | (#14339962)

Damn right you dont know. .NET is an excellent platform for developers who know who they are doing to build the solutions their customers require and there is still room for the wannabies to mutilate office components when they feel the urge. Of course its for application development, thats what business requires and what most of us get paid to deliver.

Re:I dunno (4, Insightful)

Tim C (15259) | more than 8 years ago | (#14339973)

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).

Apple? Programming? (-1, Flamebait)

bzaks (936143) | more than 8 years ago | (#14339926)

Wait a minute... you mean those apples can actually do things? sheesh, all this time I thought they were really nice looking paperweights.

Another technology that will fade away (-1, Flamebait)

Anonymous Coward | more than 8 years ago | (#14339927)

Objective C is just another blind technological alley down which Apple will lead its developers, before cutting them off when Objective C is eventually killed. Remember Nubus (and various other odd expansion slots that were model specific), Apple Desktop bus, apple ethernet connectors, powerpc, 680x0, apple monitor connectors, MPW, apple serial ports, classic macos, ... none of which are really now compatible with new machines.
This has happened so many times before with apple with its various bizarre proprietrary technologies.
Mr Jobs has unbelievable arrogance to think he can impose a language of his choice on developers. He is not even a developer, and has not got the day to day experience of working with this language, so I don't see why his opinion matters.

Wowing developers... (3, Interesting)

Svartalf (2997) | more than 8 years ago | (#14339929)

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.

Re:Wowing developers... (1, Interesting)

oldCoder (172195) | more than 8 years ago | (#14340006)

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.

Re:Wowing developers... (1)

Svartalf (2997) | more than 8 years ago | (#14340052)

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.

Re:Wowing developers... (2)

ucahg (898110) | more than 8 years ago | (#14340054)

.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?

Re:Wowing developers... (1)

rplacd (123904) | more than 8 years ago | (#14340062)

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).

Re:Wowing developers... (3, Insightful)

Rew190 (138940) | more than 8 years ago | (#14340030)

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.

Re:Wowing developers... (1)

jcr (53032) | more than 8 years ago | (#14340110)

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!


Python (2, Informative)

truthsearch (249536) | more than 8 years ago | (#14340050)

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.

Re:Wowing developers... (1)

Junks Jerzey (54586) | more than 8 years ago | (#14340056)

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.

Re:Wowing developers... (1)

Sanity (1431) | more than 8 years ago | (#14340151)

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.

.NET is a bit complex (4, Interesting)

netwiz (33291) | more than 8 years ago | (#14339945)

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.

Re:.NET is a bit complex (1, Insightful)

Timesprout (579035) | more than 8 years ago | (#14339984)

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.

Re:.NET is a bit complex (3, Interesting)

rplacd (123904) | more than 8 years ago | (#14340092)

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 [wikipedia.org] bit on categories.

Re:.NET is a bit complex (1)

CaymanIslandCarpedie (868408) | more than 8 years ago | (#14340157)

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.

Re:.NET is a bit complex (0)

Anonymous Coward | more than 8 years ago | (#14340143)

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".

Re:.NET is a bit complex (1, Informative)

Anonymous Coward | more than 8 years ago | (#14340161)

"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.

the Wow factor. (4, Insightful)

revery (456516) | more than 8 years ago | (#14339949)

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.

Objective C is hard to beat (5, Insightful)

brindle (8241) | more than 8 years ago | (#14339958)

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.


Re:Objective C is hard to beat (3, Informative)

jcr (53032) | more than 8 years ago | (#14340041)

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.


Re:Objective C is hard to beat (2, Informative)

mrsbrisby (60242) | more than 8 years ago | (#14340065)

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.

Re:Objective C is hard to beat (3, Informative)

jcr (53032) | more than 8 years ago | (#14340142)

You're splitting hairs, here. Safari is factored into an App and a couple of frameworks. The bulk of Safari is webcore.


application domains (2, Insightful)

rheotaxis (528103) | more than 8 years ago | (#14339964)

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.

Learning ObjC/Cocoa (and others) now... (5, Interesting)

piyamaradus (447473) | more than 8 years ago | (#14339966)

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...

they're all hard (1, Funny)

Anonymous Coward | more than 8 years ago | (#14339967)

I've always had problems getting my turtle to move using both Objective-C and VS.net.

Objective-C is well-done (1)

Improv (2467) | more than 8 years ago | (#14339971)

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.

Re:Objective-C is well-done (1)

jcr (53032) | more than 8 years ago | (#14340084)

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.


Re:Objective-C is well-done (1)

mrsbrisby (60242) | more than 8 years ago | (#14340088)

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....

Network Mirror (4, Informative)

BushCheney08 (917605) | more than 8 years ago | (#14339982)

Network mirror still has the original blog post up. [networkmirror.com]

Re:Network Mirror (0)

Anonymous Coward | more than 8 years ago | (#14340019)

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.

Re:Network Mirror (0)

Anonymous Coward | more than 8 years ago | (#14340126)

No,Jobs will reply to most emails if he's got the time.

Dev tools plus/minus (4, Interesting)

boatboy (549643) | more than 8 years ago | (#14339985)

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.

Xcode rocks. (3, Interesting)

wangmaster (760932) | more than 8 years ago | (#14339986)

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 :)

Inane Question (0)

Anonymous Coward | more than 8 years ago | (#14339988)

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.


WTF? (0)

Anonymous Coward | more than 8 years ago | (#14339989)

Hey, there's no email thread on that page...

Looks like it's been slashdotted!

(Btw, "Objective-C [objc.info] 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 [gnustep.org])

Qt? (1, Informative)

Anonymous Coward | more than 8 years ago | (#14339990)

Use Qt [trolltech.com] 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?

Re:Qt? (1)

daBass (56811) | more than 8 years ago | (#14340078)

Unfortunately, Apple is no longer developing Java/Cocoa. And all the cool Mac stuff these days (CoreImage/Data/Audio) are Obj-C only.

Re:Qt? (0, Flamebait)

mrsbrisby (60242) | more than 8 years ago | (#14340136)

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.

No garbage collector (1)

plopez (54068) | more than 8 years ago | (#14339998)

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.

Re:No garbage collector (2, Insightful)

Svartalf (2997) | more than 8 years ago | (#14340038)

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.

email (0)

Anonymous Coward | more than 8 years ago | (#14340005)

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,


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.


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.


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?


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.


Every time the ObjC/C++ discussion comes up... (4, Insightful)

squarooticus (5092) | more than 8 years ago | (#14340007)

...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.

Re:Every time the ObjC/C++ discussion comes up... (1)

Colonel Panic (15235) | more than 8 years ago | (#14340076)

...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++.

Re:Every time the ObjC/C++ discussion comes up... (1)

bhima (46039) | more than 8 years ago | (#14340079)

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.

Yay for Objective-C, Boo for X Code (0)

Anonymous Coward | more than 8 years ago | (#14340014)

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.

Re:Yay for Objective-C, Boo for X Code (0)

Anonymous Coward | more than 8 years ago | (#14340090)

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?

Resources (1)

fm6 (162816) | more than 8 years ago | (#14340021)

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.

Re:Resources (1)

daBass (56811) | more than 8 years ago | (#14340108)

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.

Old-time Objective-C advocate (1)

bfwebster (90513) | more than 8 years ago | (#14340028)

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..

Mangaged code good | .Net / Mono Bad (2, Interesting)

bhima (46039) | more than 8 years ago | (#14340034)

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.

There is no perfect language (1)

bratboy (649043) | more than 8 years ago | (#14340036)

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.

Jobs thinks a lot of things. (0)

Anonymous Coward | more than 8 years ago | (#14340046)

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.

Objective C was a neat idea in the 80's BUT... (1, Flamebait)

halfdan the black (638018) | more than 8 years ago | (#14340048)

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?

Re:Objective C was a neat idea in the 80's BUT... (4, Insightful)

joto (134244) | more than 8 years ago | (#14340160)

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).

almost perfect... (1)

chasingporsches (659844) | more than 8 years ago | (#14340068)

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.

Re:almost perfect... (0)

Anonymous Coward | more than 8 years ago | (#14340081)

Um, check Xcode preferences, that option is already there.

OS X does have Java you know... (1)

SuperKendall (25149) | more than 8 years ago | (#14340072)

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 [peachpit.com] 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?

[syntax sucks] (1)

DrStrangeLoop (567076) | more than 8 years ago | (#14340133)

[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!

Jobs doesn't get it (2, Insightful)

NutscrapeSucks (446616) | more than 8 years ago | (#14340144)

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".

Did nobody actually READ the emails? (2, Interesting)

Trollll (675299) | more than 8 years ago | (#14340166)

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.
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account