{"id":3436,"date":"2011-05-24T15:45:22","date_gmt":"2011-05-24T20:45:22","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=3436"},"modified":"2011-05-24T15:45:25","modified_gmt":"2011-05-24T20:45:25","slug":"regarding-objective-c-copland-2010","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2011\/05\/24\/regarding-objective-c-copland-2010\/","title":{"rendered":"Regarding Objective-C &#038; Copland 2010"},"content":{"rendered":"<p><a href=\"http:\/\/kickingbear.com\/blog\/archives\/168\">Guy English<\/a>:<\/p>\n<blockquote cite=\"http:\/\/kickingbear.com\/blog\/archives\/168\"><p>So, in the end, while I appreciate the thinking behind Copland 2010 I don&rsquo;t believe it&rsquo;s quite the issue Siracusa believes it is. Objective-C continues to evolve, and in directions I believe will be increasingly important in the future. I don&rsquo;t believe we&rsquo;re anywhere near the level of crisis that Apple hit with Classic Mac OS and I don&rsquo;t believe that a total second-system re-write without a clear goal is the best prescription for the platform.<\/p><\/blockquote>\n<p>Siracusa&rsquo;s <a href=\"http:\/\/arstechnica.com\/staff\/fatbits\/2005\/09\/1372.ars\">original piece<\/a> was written after a long period of near stagnation in Objective-C. Apple has since made major improvements to the language such as garbage collection and blocks. Objective-C and the Cocoa frameworks could still use a lot of work, but I don&rsquo;t think they&rsquo;re approaching the edge of a cliff. There&rsquo;s room for continued evolution. If Apple keeps working on it, I think they&rsquo;ll be fine.<\/p>\n<p>A distinction that&rsquo;s not commonly discussed is that, although Objective-C provides automatic memory management via garbage collection (<a href=\"http:\/\/mjtsai.com\/blog\/2010\/06\/16\/copland-2010-revisited\/\">on Mac OS X, but not iOS<\/a>), it is not a true <em>managed<\/em> or <em>safe<\/em> language like Java, C#, or Python. It&rsquo;s still possible to have bad pointers and to reference memory that has been deallocated, and this leads to unexpected behavior or a crash, rather than a <code>NullPointerException<\/code> or an <code>AttributeError<\/code>. Likewise, an infinite recursion in Objective-C will crash rather than produce a <code>StackOverFlowError<\/code> or <code>RuntimeError<\/code>. Ideally, it would not be possible to call a function with the wrong number or type of arguments.<\/p>\n<p>At this point, Objective-C&rsquo;s hybrid nature is probably a plus. However, I would like to see it evolve in the direction of increased safety. Microsoft seems to have a successful transition strategy, where managed and unmanaged code can be mixed in the same application while remaining isolated. A successor language from Apple could potentially remove the unsafe C parts and compile down to a VM but still call into classic Objective-C where needed.<\/p>","protected":false},"excerpt":{"rendered":"<p>Guy English: So, in the end, while I appreciate the thinking behind Copland 2010 I don&rsquo;t believe it&rsquo;s quite the issue Siracusa believes it is. Objective-C continues to evolve, and in directions I believe will be increasingly important in the future. I don&rsquo;t believe we&rsquo;re anywhere near the level of crisis that Apple hit with [&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":[],"class_list":["post-3436","post","type-post","status-publish","format-standard","hentry","category-programming-category"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/3436","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=3436"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/3436\/revisions"}],"predecessor-version":[{"id":3437,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/3436\/revisions\/3437"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=3436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=3436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=3436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}