{"id":47510,"date":"2025-04-25T13:50:08","date_gmt":"2025-04-25T17:50:08","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=47510"},"modified":"2025-04-25T13:50:08","modified_gmt":"2025-04-25T17:50:08","slug":"the-subjective-charms-of-objective-c","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2025\/04\/25\/the-subjective-charms-of-objective-c\/","title":{"rendered":"The Subjective Charms of Objective-C"},"content":{"rendered":"<p><a href=\"https:\/\/www.wired.com\/story\/objective-c-programming-language-verbose\/\">Gabriel Nicholas<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.wired.com\/story\/objective-c-programming-language-verbose\/\">\n<p>To argue that Objective-C resembles a metaphysically divine language, or even a good language, is like saying Shakespeare is best appreciated in pig latin. Objective-C is, at best, polarizing. Ridiculed for its unrelenting verbosity and peculiar square brackets, it is used only for building Mac and iPhone apps and would have faded into obscurity in the early 1990s had it not been for an unlikely quirk of history. Nevertheless, in my time working as a software engineer in San Francisco in the early 2010s, I repeatedly found myself at dive bars in SoMa or in the comments of HackerNews defending its most cumbersome design choices.<\/p>\n<p>[&#8230;]<\/p>\n<p>I saw how objects and messages take on a sentence-like structure, punctuated by square brackets, like <code>[self.timer increaseByNumberOfSeconds:60]<\/code>. These were not curt, Hemingwayesque sentences, but long, floral, Proustian ones, syntactically complex and evoking vivid imagery with function names like <code>scrollViewDidEndDragging:willDecelerate<\/code>.<\/p>\n<p>[&#8230;]<\/p>\n<p>But the longer I spent writing Objective-C, the more I felt it hid rather than revealed. Long, sentence-like function names buried the most pertinent information under a fog of dependent clauses. Small features required long-winded pull requests, making it easy for engineers to get distracted during reviews and to miss bugs. Objective-C&rsquo;s excess words, multiplied across thousands of files and millions of lines of code, made for an exhausting codebase.<\/p>\n<\/blockquote>\n\n<p>I did not find this to be a problem, but neither am I really nostalgic for Objective-C, except when calling lower level C APIs and when recalling the fast compilation and small binaries.<\/p>\n\n<p><a href=\"https:\/\/shapeof.com\/archives\/2025\/4\/the_subjective_charms_of_objective-c.html\">Gus Mueller<\/a> (<a href=\"https:\/\/mastodon.social\/@ccgus\/114360289728929821\">Mastodon<\/a>):<\/p>\n<blockquote cite=\"https:\/\/shapeof.com\/archives\/2025\/4\/the_subjective_charms_of_objective-c.html\">\n<p>My own experience with Objective-C has been very different. I wonder if that&rsquo;s because I work as a solo developer, and the architecture of my apps has always been stable?<\/p>\n<p>[&#8230;]<\/p>\n<p>To me, Objective-C has always felt expressive and capable, doubly so when I first started using it. After coding in Java for years I felt like I could fly.<\/p>\n<p>Swift is the thing now, and both Acorn and Retrobatch use it for parts. But Swift is a heavy and unsettled language, not to mention extremely slow to compile.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/www.manton.org\/2025\/04\/18\/gus-mueller-to-me-objectivec.html\">Manton Reece<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.manton.org\/2025\/04\/18\/gus-mueller-to-me-objectivec.html\">\n<p>After Swift became popular, I felt kind of guilty still using Objective-C so heavily, but I&rsquo;m over it. Micro.blog for Mac is all Objective-C. I did two new releases this week.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/mastodon.online\/@octothorpe\/114360320282809468\">CM Harrington<\/a>:<\/p>\n<blockquote cite=\"https:\/\/mastodon.online\/@octothorpe\/114360320282809468\">\n<p>For real though, it seemed like ObjC and Apple&rsquo;s frameworks really caught lightning in a bottle. Swift has gains sure, but they&rsquo;re trades that place different burdens on the developer&#8230; ones personally I wouldn&rsquo;t take. But also, maybe because my brain is very SmallTalk oriented, I am indeed fighting Swifty ways, and not flowing, like I did back with ObjC.<\/p>\n<\/blockquote>\n\n<p>Previously:<\/p>\n<ul>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2025\/04\/25\/is-electron-really-that-bad\/\">Is Electron Really That Bad?<\/a><\/li>\n<li><a href=\"https:\/\/mjtsai.com\/blog\/2024\/06\/04\/swift-at-10\/\">Swift at 10<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Gabriel Nicholas: To argue that Objective-C resembles a metaphysically divine language, or even a good language, is like saying Shakespeare is best appreciated in pig latin. Objective-C is, at best, polarizing. Ridiculed for its unrelenting verbosity and peculiar square brackets, it is used only for building Mac and iPhone apps and would have faded into [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2025-04-25T17:50:11Z","apple_news_api_id":"adfa8813-aa8b-49dd-a4bd-11288028dddc","apple_news_api_modified_at":"2025-04-25T17:50:11Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/ArfqIE6qLSd2kvREogCjd3A","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":[295,31,46,30,54,71,901],"class_list":["post-47510","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-history","tag-ios","tag-languagedesign","tag-mac","tag-objective-c","tag-programming","tag-swift-programming-language"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47510","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=47510"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47510\/revisions"}],"predecessor-version":[{"id":47511,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/47510\/revisions\/47511"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=47510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=47510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=47510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}