Remix.run Logo
fortran77 a day ago

Steve Jobs once came to speak at my company when he was running NeXT. Almost nobody came to the talk, in the company cafeteria. The CEO of our company had to make an announcement on the PA encouraging folks to come. Finally, about 20 people (out of ~750) showed up.

He started talking aobut Objective-C and how it was 10x more productive than other programming languages and how easy it is to write good applications quickly with it. Someone shouted out the question: "If it's so easy and fast to write applications, where are all the NeXT killer apps?" There was no good answer....

II2II a day ago | parent | next [-]

Killer apps aren't always survivors. Consider how Visicalc fell to Lotus 1-2-3, and how Lotus 1-2-3 fell to Excel. Arguably, the killer app for NeXT was WorldWideWeb. While it's successors weren't developed in Objective-C, the prototype for the world wide web was.

Objective-C itself didn't have much of a chance for many reasons. One is that most APIs were based upon C or C++ at the time. The availability of Objective-C on other platforms will do little to improve productivity if the resulting program is essentially C with some Objective-C code that you developed from scratch yourself. Microsoft was, for various reasons, crushing almost everyone at the time. Even titans like DEC and Sun ended up falling. Having a 10x more productive API was not going to help if it reached less than 1/100th of the market. (Objective-C, in my opinion, was an interesting but not terribly unique language so it was the NeXT API that offered the productivity boost.) Also keep in mind that it took a huge marketing push for Java to survive, and being platform agnostic certainly helpted it. Seeming as Java was based upon similar principles, and a more conventional syntax, Objective-C was also less appealing.

kragen a day ago | parent [-]

I think the claim was not that the NS* API of NextStep was "10× more productive" but that the Objective-C programming language was. Objective-C is fantastic at calling existing C APIs. It's even easier than doing it in C# or LuaJIT, and much easier than doing it in Python, Perl, Tcl, Java, JS, etc.

You're right that there are programs that are just a thin layer of glue over existing C APIs, and the existing C API is going to largely determine how much effort that is. But there are other programs where calls to external APIs are only a small fraction of the code and effort. If OO was the huge productivity boost Jobs was claiming, you'd expect those programs to be much easier to write in Objective-C than in C. Since they made the choice to implement Objective-C as part of GCC, people could easily write them on other Unixes, too. Mostly they didn't.

My limited experience with Objective-C is that they are easier to write, just not to the extent Jobs claimed. OO makes Objective-C code more flexible and easier to test than code in C. It doesn't make it easier to design or debug. And, as you say, other languages were OO to a similar extent as Objective-C while similarly not sacrificing efficiency, such as C++ and (many years later) Java and C#.

chihuahua a day ago | parent | prev | next [-]

I think there's a good answer to that: to a first approximation, no one bought NeXT machines; therefore, there was no demand for NeXT apps and therefore no one produced any.

But it's unlikely that Steve Jobs of all people would want to provide that explanation.

Around 2001 my company sent me to a training class for Objective-C and as far as I can remember, it's like a small tweak of C++ with primitive smart pointers, so I doubt that it's 10x more productive than any other language. Maybe 1.01x more productive.

kragen a day ago | parent [-]

That is not correct. Objective-C has a completely different OO system from C++. All they have in common is that they're both extended subsets of C. Retain/release are also not smart pointers; Objective-C doesn't have the C++ features needed to implement smart pointers.

Objective-C++ is a different matter, but it was written many years after the time we are discussing.

chihuahua a day ago | parent [-]

I apologize that my memory has faded over the intervening 25 years.

What I do remember is that it's an odd language, but nothing about it suggested that it would even be 2x more productive than C or C++ or Java.

I didn't get to use it much after the week-long class; the only reason the company sent 3 of us across the country for a week is because the CTO had a bizarre obsession with Objective-C and OS X.

kragen a day ago | parent [-]

I think it's universally agreed at this point that OO didn't provide the order of magnitude improvement in software development velocity that Jobs was touting. I do think ObjC is more flexible than C or C++.

krackers a day ago | parent | prev [-]

If you can remember anything more about it, you should write up a blog. Now I'm curious how Steven handled that question