I seem to recall the future of Apple hung in the balance, and they were looking to acquire either NeXT (and Steve) as the foundation for the modern Mac - or Gassee and Be. Sort of a fun parallel universe of what could have been.
I seem to recall the future of Apple hung in the balance, and they were looking to acquire either NeXT (and Steve) as the foundation for the modern Mac - or Gassee and Be. Sort of a fun parallel universe of what could have been.
I honestly think Objective-C is a big part of Apple's OS success.
Edit:
Building system APIs based on message passing provides a lot of flexibility and capability without having to worry about ABI compatibility or object layout. Message passing is good for hiding implementation details.
Obj-C also provides what Swift now calls protocol-oriented programming. Define a protocol and any object no matter its type can implement that protocol and be, say, a delegate for a long running operation. Etc.
This allowed Apple to innovate in their OS, providing increasingly more functionality more rapidly than what seemed to be happening elsewhere.
I think there's even more to this, but I'm tired.
FWIW I've written frameworks in both Obj-C and C++ (macOS kernel)
> "Obj-C is a much better framework language than C++. How and why is that true?"
Anyone could throw these sort of claims about absolutely anything and doesn't elevate the debate at all.
> "I honestly think Objective-C is a big part of Apple's OS success."
How and why is that true? Same thing.
Once upon a time, there was a company called Taligent, which was created by IBM and Apple to develop a set of tools and libraries like Cocoa. About the time Taligent reached the peak of its mindshare, I met one of its engineers at a trade show. I asked him to create a simple application for me: A window would appear with a button, and when the button was clicked, the words “Hello, World!” would appear in a text field. The engineer created a project and started subclassing madly: subclassing the window and the button and the event handler. Then he started generating code: dozens of lines to get the button and the text field onto the window. After 45 minutes, I had to leave. The app still did not work. That day, I knew that the company was doomed. A couple of years later, Taligent quietly closed its doors forever.
It is asserted a bit later than C++ was the problem.
I get the feeling some of the Java Cocoa experience applies to C++. Although the C++ of the 90's is most definitely not the C++ of the 2020's.
I often wonder what if Apple continue to improve Obj-C instead of Swift.
I really like Alan Kays's metaphor. Instead of reinventing the wheel ( which isn't so bad ), more often than not in technology they reinvent the flat tire.
For example, CoreFoundation has a C API... that would be a bit of a test of a C-only framework world.
You can see however that's missing the convenience of Obj-C.
I hope Swift will be successful. It is nice to use (most of the time).
If you think that for a long period of time all apps were built in Objc for Mac & ios, and how quickly they managed to make an ecosystem of developers who were building applications for Apple systems - I'm pretty sure if they had a c++ framework that wouldn't have happened so easily.
As an illustration, there's a video of SJ building a quick GUI app to demonstrate RemoteObjects (in response to MS's Distributed OLE) where he quickly knocks up a slider and text box. There's also another video where a NeXT developer goes head to head with a Sun dev in a race to finish a simple gui app (you'll never guess who wins).
Why did SJ and NeXT go all in for RAD tooling and making it easy to build apps on their platform? Because of feedback from his days at Apple when developers complained it was too hard and slow using the MacOs toolbox APIs.
FWIW I also believe that a large part of Microsoft's success was due to Visual Basic, also a hugely successful RAD tool that brought thousands of new developers to its platform.