Re: C callbacks with NSNotificationCenter?
Re: C callbacks with NSNotificationCenter?
- Subject: Re: C callbacks with NSNotificationCenter?
- From: Alastair Houghton <email@hidden>
- Date: Wed, 07 Sep 2016 22:28:59 +0100
> On 7 Sep 2016, at 22:11, Jens Alfke <email@hidden> wrote:
>
>
>> On Sep 7, 2016, at 10:03 AM, Alastair Houghton <email@hidden> wrote:
>>
>> All of it can. Objective-C is just C with some syntactic sugar on top.
>
> There’s a large amount of semantic sugar too, i.e. the runtime libraries. (If you think the runtime part must be trivial, go read some of Mike Ash’s posts about the implementation of objc_msgsend. That’s some of the most insanely optimized code I’ve ever seen.)
Mike’s site is generally a good read for that kind of thing. For those who don’t know:
https://mikeash.com/
Incidentally, on the how-fast-is-objc_msgSend(), according to Mike’s latest Mac figures, it costs on average less than two C++ virtual method calls, and indeed less than division. See
https://mikeash.com/pyblog/friday-qa-2016-04-15-performance-comparisons-of-common-operations-2016-edition.html
>> Really. There’s nothing magic going on. (In fact, the original compilers were really just preprocessors that churned out C code.)
>
> You can say this about nearly any compiler, though.
Sort of, yes, but in the case of Objective-C I think there was a conscious intention to keep the Objective part separate from the C part. Put another way, you could make Objective versions of most other languages, if you wanted, by making similar syntactic additions to them to the ones made for Objective-C, and that looks to me to be a deliberate design decision. That’s not quite the same as C++ or Go, which were always intended to be complete languages of their own.
Anyway, the point I was trying to make (to Andreas) was that he shouldn’t be scared of using Objective-C because it’s going to do all kinds of magic in his program that he doesn’t understand.
> But yes, you can use the Obj-C runtime API from C to do pretty much anything you can do in Obj-C, like calling methods and implementing classes. It’s just much, much messier, error-prone, and difficult to read compared to writing the damn code in Obj-C.
Absolutely. IMO Andreas really *should* just use Objective-C for the Mac-specific bits of code.
> There’s no pride in refusing to switch languages. I abjured C++ a long time ago, but guess what, my current project is 99% C++ because that language best meets the performance and portability requirements.
Same here, as it happens. C++11/14 is *much* better than the previous iteration, though it’s still lacking in some areas.
> Next time maybe I’ll be using Swift, or Rust, or Pony. C is an ancient, primitive language and it’s not a good career move to refuse to move past it :)
Agreed. I’d love to be using Swift right now, actually, but I have portability concerns it doesn’t address and the language itself is still not stable. Both will resolve themselves. Rust and Pony look interesting also.
Kind regards,
Alastair.
--
http://alastairs-place.net
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden