More about Brad Cox: I’ve always been fascinated by the contrast between Objective-C and C++. Both aimed at adding object-orientation to C, and at about the same time (mid to late ‘80s). 1/
C++ is indisputably a more “serious” effort. It integrates with and expands on (and also tightens) the C type system. It reimagines original C operators as method … er, I mean, member function calls. 2/
The idea seemed to be “Let’s see what C would look like if it had been object-oriented all along.” Stroustrup wrote a (very good!) book on its design and evolution, explaining every major decision (up to that point) and how it was reached, and the alternatives considered. 3/
And, from the other side: rather than uncritically adopt the terminology of Smalltalk, C++ uses new terminology to emphasize the mostly static model compared to Smalltalk’s pervasive runtime dynamism: member variables, member functions, virtual functions, etc. 4/
And C++ has evolved, steadily and determinedly, over more than 3 decades. Standards committees, major overhauls, and in some ways radical change; the C++ my son learned in college was very different from what I first encountered in the 1980s. 5/
And yet somehow C++ has never felt *fun* to me (and I know many others agree). Solid, thorough, fast, capable, robust? Yes! But also huge, cumbersome, finicky, heavy … and in many ways, almost the opposite of C, at least in *feel*. 6/
Objective-C, on the other hand … well, if C++ is indisputably a serious effort, Objective-C is even more indisputably a hack. Even its most ardent fans admit this! The Smalltalk object model was grafted into C almost unchanged, as a library. 7/
Objective-C’s most recognizable syntactic feature? The square-bracket-delimited zones within which Smalltalk’s very different syntax held sway. Outside the brackets? C. Inside? Smalltalk. Craziness! What was Cox thinking? 8/
(There are also declarations that have a clumsy, directive-like syntax signaled by single-character line prefixes.) And whereas C++ tried to build on, expand, and tighten C’s flimsy type system, Objective-C exploited it to glorious effect, 9/
providing a weird but somehow wonderful bridge between C’s static-but-loose type system and Smalltalk’s “What even is a type?” system.

And Objective-C has changed very little since its earliest days. 10/
C++ is a solid, serious effort … but feels heavy. Objective-C is a hack … but it feels light, malleable, and fun. (Yes, some will disagree, but I’ve talked to a lot of people who are familiar with both, and this is a common theme.) 11/
Bothe languages have been enormously successful, and they have been the foundations for many successful products. 12/
I could write many pages about what all of this means. Static vs. dynamic. Formalism vs. flawed or limited human understanding. Wabi-sabi. Lots of things. 13/
But here’s my point tonight. Without taking *anything* from Bjarne Stroustrup, whom I admire greatly …

Brad Cox was a genius. 14/14
You can follow @glv.
Tip: mention @twtextapp on a Twitter thread with the keyword “unroll” to get a link to it.

Latest Threads Unrolled:

By continuing to use the site, you are consenting to the use of cookies as explained in our Cookie Policy to improve your experience.