There was a paper on Objective-C in the last HOPL conference for those who want something meatier:<p>"The origins of Objective-C at PPI/Stepstone and its evolution at NeXT" <a href="https://dl.acm.org/doi/10.1145/3386332" rel="nofollow">https://dl.acm.org/doi/10.1145/3386332</a>
I am a C++ guy but I dabbled in Obj-C for a while. I think my progression was similar to a lot of people:<p>1) Uggh, this language sucks. What's with all the [] everywhere? Why are the parameter names included in the signature? Why are allocation and initialization separate operations? This is a joke.<p>2) Hold on! You can replace methods at runtime? You can swap out implementations on the fly? Calling methods is incredibly flexible yet also optimized up the wazooo?<p>3) Wait a minute! You can call methods by name at runtime? Even from dynamically loaded libraries? I always thought Windows COM sucked, now I understand how much better it could have been. This is the best language ever!<p>I haven't done any ObjC for years but sometimes I miss its flexibility. It wasn't all roses, sometimes lifetime management was a pain for instance, but ObjC doesn't deserve its reputation as a weird, unloved language.
And the short story is not end, there is a very good cross cross platform implementation for Objective-C that runs at Linux,Windows,OSX,Haiku-OS and so on...
And is very active in development. :D<p><a href="https://objfw.nil.im" rel="nofollow">https://objfw.nil.im</a>
ObjC is more dynamic than people think. See things like swizzling and non-fragile instance variables. ObjC object orientation is closer to what folks on Java and C# consider the job of reflection.
This history stops in 1995 which is right about when I started using Objective C for Swarm, an agent simulation system. We may have been the only major non-NeXTstep user of Objective C at the time. GNU Objective C was a key enabler for us; without it we couldn't have used it.<p>We picked ObjC over C++ because it was so much smaller and simpler. Also reflective, at the time it was very hard at runtime to learn anything about a C++ type. It was a pretty good match for our needs at the time. tclobjc also helped a lot because it let us use Tk for the GUI.