Live data from Hacker News

Brad Cox has died

legacy.com

131–140 of 197 posts

Re: Brad Cox has died

#131

Earlier quoted context omitted.

In the context of the time, C++ didn't exist yet. Objective-C was actually introduced just prior to C++, and both languages were effectively solving the same problem in different ways: C was the dominant language, and both language designers were trying to graft the OOP paradigm onto it. Objective-C is a thin-layer on top of C, adding Smalltalk-inspired object support. That's pretty much all there is to it. C, with s…

I'm curious--what happened to Objective-C in that fight with C++? Why didn't people go for its simplicity?

I tried out both Objective C and C++ in 1988, when neither were popular though C++ was more talked about.

What I remember was that with Objective C you needed to track all intermediate values and release them, so you couldn’t write an expression like [[objectA someMessage] anotherMessage] - you had to capture the intermediate in a variable so you could release it at the end.

So this was annoying and I didn’t like Objective C at the time. (25 years later I wrote several iOS apps in it)

C++ let you manage memory and temporary values though constructors and destructors, which was much more appealing, though pre-templates it was quite constrained.

Re: Brad Cox has died

#132

Earlier quoted context omitted.

Objective-C, at least these days, is plenty fast, with a the cost of a message send being comparable to a virtual function call. The fast path of objc_msgSend is just over a dozen instructions.

as i recall, `libobjc` is ~25% of app launch time. `objc_msgSend` is quite expensive when you're making hundreds of thousands to millions of calls per second.

The compiler does some very fancy stuff with objc_msgSend to make it fast, and the selectors are interned.

https://www.mikeash.com/pyblog/objc_msgsends-new-prototype.h...

Re: Brad Cox has died

#133

Very sad. I had the privilege of taking a class from him at George Mason University, and he was (unsurprisingly) very knowledgeable. He worked hard to enable software reuse. No one was interested in his idea of trying to monitor component use during runtime to pay developers. That was an unworkable approach, and I told him that then. But the general world of making it easy to reuse components is a reality today, via…

> He worked hard to enable software reuse. No one was interested in his idea of trying to monitor component use during runtime to pay developers. This is a nice idea although I never thought it could've worked; it seems like it took forever for people to stop trying though. The app-and-library organization of software is more natural than document-and-component organization because of Conway's law, which is surprisin…

"No one was interested in his idea of trying to monitor component use during runtime to pay developers."

The way to make people pay for software components is not to ask them for money at runtime, but to do so much much earlier in the development cycle: at design time.

In the instances that I have seen this business model work, the components are usually bought as part of a collection [1]—think source-available components similar to the model made famous by Apache Commons (Commons Codec, Commons Util, Commons Lang etc). The Apache Commons OSS project emerged on June 20, 2007 [0] as a way of standardizing the need for reusable Java components and libraries, slowly killing the market of paid components.

Or, components are bought as part of an ongoing subscription to a large catalog containing thousands of components [1][2]—think of it as a company-wide Safari Books subscription but for software components.

As part of the business model, component designers and developers were paid royalties in additional to the one-time monetary payment for developing each component, with the top 25 royalty earners collectively making as much $458,792.31 over a multi-year period [3].

0: https://commons.apache.org/charter.html

1: https://software.topcoder.com/catalog/c_showroom.jsp

2: https://www.topcoder.com/tc?module=Static&d1=pressroom&d2=pr...

3: https://www.topcoder.com/tc?module=ComponentRecordbook&c=roy...

Re: Brad Cox has died

#135

Earlier quoted context omitted.

Objective-C, at least these days, is plenty fast, with a the cost of a message send being comparable to a virtual function call. The fast path of objc_msgSend is just over a dozen instructions.

as i recall, `libobjc` is ~25% of app launch time. `objc_msgSend` is quite expensive when you're making hundreds of thousands to millions of calls per second.

I would guess that most of app startup time isn't going to objc_msgSend (although it is still probably slow as it hasn't warmed up yet) but rather to setting up the various data structures used by the runtime, applying initial swizzling and the associated cache invalidation that comes from that, and those pesky +loads that every analytics framework thinks it need to have ;)

Re: Brad Cox has died

#136
post #128

Earlier quoted context omitted.

Clang and GCC being the two largest implementations.

True, but not the only ones, so good luck making that VLA code work outside BSD/Linux clones or the few OEM vendors that have forked them. Also Google has sponsored the work to clean Linux kernel from VLAs.

Yeah, because VLAs mostly suck.

Re: Brad Cox has died

#137

Earlier quoted context omitted.

Coincidentally, I've been doing RE for many years, starting in the days of DOS and then moving into Windows, but it was only very recently --- less than a week ago --- that I had my first look at an app written in ObjC, and the first thing I noticed was the amount of information in the binary that seemed to almost give away most of its source: method, field, and class names everywhere. When I saw a method named somet…

Objective-C, at least these days, is plenty fast, with a the cost of a message send being comparable to a virtual function call. The fast path of objc_msgSend is just over a dozen instructions.

The M1 chip has specialized paths on it just to make the message sending even faster. That’s part of the M1 magic.

Re: Brad Cox has died

#138

> On one scuba diving excursion while in the compound having lunch, Brad engaged a couple from Germany in conversation. Brad asked about the fellow travelers occupation and discovered he was a computer programmer. Lifewise, Brad was asked about his life's work and stated I am also a computer programmer. "What do you do?" Brad was asked. I wrote Objective-C. Astonished, the gentlerman said, "No, Brad Cox wrote that".…

unmanned belly button vehicles are the best. much better than the manned ones

Re: Brad Cox has died

#140
post #128

Earlier quoted context omitted.

True, but not the only ones, so good luck making that VLA code work outside BSD/Linux clones or the few OEM vendors that have forked them. Also Google has sponsored the work to clean Linux kernel from VLAs.

Yeah, because VLAs mostly suck.

I have some perfectly safe code using them that crashes Intel icc. Useful if you ever need to, I don't know, crash icc I guess.

Among other things, this means icc doesn't run other compilers' testsuites, because I reported the same bug in the first release of clang and clattner fixed it right away.

Post reply on HN