It's a shame that Objective-C never really caught on outside of the NeXT/Apple ecosystem. User interfaces benefit greatly from dynamism, and all the UI toolkits I've used for C and C++ try to emulate message passing in one way or another: from WinAPI's SendMessage, to GTK and Qt's signals and slots.
I'm surprised the wider FOSS community didn't adopt the language. I've been building a GTK4 app recently, and the macro-heavy class boilerplate, C-style casting everywhere, and custom signaling mechanisms would all be far cleaner in Objective-C. It's easy to imagine glib and GTK as what could have been a FOSS parallel to Core Foundation and Cocoa.
If you like C, then Objective-C is definitely worth a look. You don't need a Mac to try it either [1].
> User interfaces benefit greatly from dynamism
I'm not sure. I've written so much GUI code over several decades, and I think dynamism is only slightly helpful. I've been writing a new GUI in TS (not at all ready for publicity yet) that aims to rethink GUIs from the ground up as if the 80s and 90s never happened, but with the benefit of hindsight, much like Go did with C. I've been meaning to do a proper write up on some of the innovations I think are genuine improvemenets over the status quo. I should probably do one at a time and start today instead of waiting until release like I planned. But in my GUI, dynamism is only needed in maybe one or two core places. I'm not sure it makes any use of the fact that JS has string keys (equiv of objc_msgSend/etc), and can probably be written in boringish C++ just fine, or maybe even boringish Go, although op overloading would clean up one or two APIs really nicely.
Do post your writing if you get around to it.
I know that there is (was?) a project to bring an Objective-C equivalent to the web called Cappuccino[0] as well.
It does look interesting though it lacks most modern DX, which means its adoption is going to be limited I imagine
[0]: https://www.cappuccino.dev/learn/
Very cool that you can use the XCode interface builder to build the UI.
I wonder why this type of style hasn't caught on with React and friends? It would be really nice to be able to have an AppKit-quality UI programmable in React or Svelte.
I know I know mobile blah blah. But lots of web apps are complicated enough to only be useful on a large screen, like Figma.
Yeah. The language is called Objective-J while Cappuccino is the framework. Objective-C : Cocoa = Objective-J : Cappuccino.
I remember that the company behind it was called "280 South". They seem to have opensourced it before they shut down.
Obviously I misremembered. I just visited the site linked above. The company was "280 North"
Because you drive north on 280 from Cupertino to San Francisco…
Ah, their office was in SF? I just thought their office was near 280 :)
Indeed, the late-binding capabilities of ObjC make the data binding scheme used in Apple's Cocoa API so much easier. This is one of the things I miss the most when building GUI apps for other platforms. And you can still mix it with C++ (=> Objective-C++).
Definitely! I developed several mobile apps in the early iPhone days. I had plenty of C and C++ commercial experience before that. I found Objective C much more pleasant to work with than C++.
It’s a shame that C is the only native mainstream Abi stable language to catch on broadly. Objc or swift would be nice for library developers on win/lin even if it’s only for writing the entry points to their library.
There is no C ABI, even though this gets repeated a lot.
There is only OS ABI, and the ABI of C compilers tend to overlap with the OS ABI, on the cases where the OS was written in C.
This is easily visible outside the UNIX ecosystem.
It was an heavy influence on Java and related .NET ecosystem though.
https://cs.gmu.edu/~sean/stuff/java-objc.html
It is a great language to build on but I think that it was really competing against c++ and unlike QT never had the corporate backing outside of Apple like many open source frameworks have.
Good 'ol GNUStep. I think the only thing I ran that relied on it was WindowMaker, which was an excellent, minimalistic window manager back in the day.
WindowMaker and AfterStep never had any dependencies to GNUStep.
They were often used together though.
You're bringing back memories. I ran WindowMaker on my Sun desktop (Solaris 2.6, I think?), back in the late 90's. I spent days customizing that system, compiling everything from source.