{"id":12015,"date":"2015-08-18T10:31:17","date_gmt":"2015-08-18T14:31:17","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=12015"},"modified":"2015-08-18T10:47:20","modified_gmt":"2015-08-18T14:47:20","slug":"a-eulogy-for-objective-c","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2015\/08\/18\/a-eulogy-for-objective-c\/","title":{"rendered":"A Eulogy for Objective-C"},"content":{"rendered":"<p><a href=\"https:\/\/realm.io\/news\/altconf-aaron-hillegass-eulogy-for-objective-c\/\">Aaron Hillegass<\/a> (comments: <a href=\"https:\/\/www.reddit.com\/r\/programming\/comments\/3frr8e\/a_eulogy_for_objectivec\/\">1<\/a>, <a href=\"https:\/\/news.ycombinator.com\/item?id=10003438\">2<\/a>):<\/p>\n<blockquote cite=\"https:\/\/realm.io\/news\/altconf-aaron-hillegass-eulogy-for-objective-c\/\">\n<p>The wonderful thing about Objective-C is that it&rsquo;s so dynamic. As we start moving into languages that are a little bit more uptight about such things, it&rsquo;s nice to take a moment and think about the huge benefits that we get from some of this.<\/p>\n<p>[&#8230;]<\/p>\n<p>Loose typing made a lot of things that were difficult in other languages much easier, or possible. It also made bugs that didn&rsquo;t exist in other languages possible as well. And you embrace that as an Objective-C programmer. You&rsquo;re like, &ldquo;This is a language for smart, pedantic, uptight people. I&rsquo;m going to be very careful and do the right thing when I&rsquo;m typing in names.&rdquo;<\/p>\n<p>[&#8230;]<\/p>\n<p>One of the things that made the performance of Core Data so great, and made this faulting mechanism so seamless, is the ability to do <code>isa<\/code> swizzling. Once again, this could be very dangerous, but in the right hands it was a really powerful mechanism.<\/p>\n<p>Another thing that you could do was actually create classes at runtime. It was pretty rare, but this is actually what made key-value observing possible.<\/p>\n<p>[&#8230;]<\/p>\n<p>Here&rsquo;s one that people take for granted at this point, but it&rsquo;s something that at the time was crazy: categories. The idea that I could take a class that NeXT had sent me, add methods to it, and then use that inside my program - that was really, really weird in object-oriented languages at that time. And it really scared Java people. [&#8230;] As a result, not everybody had to write their own <code>NSString<\/code> class. Which is a really common problem for a lot of languages.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Aaron Hillegass (comments: 1, 2): The wonderful thing about Objective-C is that it&rsquo;s so dynamic. As we start moving into languages that are a little bit more uptight about such things, it&rsquo;s nice to take a moment and think about the huge benefits that we get from some of this. [&#8230;] Loose typing made a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[738,109,295,31,84,1245,275,46,30,966,823,54,71,515,1253,901,1252],"class_list":["post-12015","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-conference","tag-coredata","tag-history","tag-ios","tag-java","tag-key-value-coding-kvc","tag-keyvalueobserving","tag-languagedesign","tag-mac","tag-message-passing","tag-next","tag-objective-c","tag-programming","tag-smalltalk","tag-sun-microsystems","tag-swift-programming-language","tag-webobjects"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/12015","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=12015"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/12015\/revisions"}],"predecessor-version":[{"id":12016,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/12015\/revisions\/12016"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=12015"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=12015"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=12015"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}