{"id":8552,"date":"2014-03-12T10:53:21","date_gmt":"2014-03-12T14:53:21","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=8552"},"modified":"2014-03-13T08:41:39","modified_gmt":"2014-03-13T12:41:39","slug":"objective-smalltalk","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2014\/03\/12\/objective-smalltalk\/","title":{"rendered":"Objective-Smalltalk"},"content":{"rendered":"<p><a href=\"http:\/\/objective.st\">Objective-Smalltalk<\/a>:<\/p>\n<blockquote cite=\"http:\/\/objective.st\"><p>Objective-Smalltalk is an evolution of Smalltalk based on the Objective-C runtime.<\/p><\/blockquote>\n<blockquote cite=\"http:\/\/objective.st\/About\/\"><p>It adds angle brackets for type annotations, both for optional static type\nchecking and to designate C types such as <code>&lt;int&gt;<\/code> or <code>&lt;double&gt;<\/code> for interoperating\nwith C and Objective-C.  Generic raw pointers are not supported, wrapper objects\nand bulk collections are preferred.<\/p>\n<p>The other syntactic addition to Smalltalk is that identifiers are generalized to\n<a href=\"http:\/\/objective.st\/URIs\/\">URIs<\/a>.  This addresses interoperability with the Unix filesystem and Web\nResources, as well as subsuming Objective-C properties and Keyed Value Coding and\nmaking keyed storage such as dictionaries much less necessary and visible.<\/p>\n<p>[&#8230;]<\/p>\n<p>Objective-Smalltalk is built on top of the Objective-C runtime, as a peer to Objective-C, and uses the host platform&rsquo;s C ABI and calling conventions, thus being fully integrated (e.g. callable) from other peers on the platform. It does not require a VM or an image.<\/p><\/blockquote>\n<p><a href=\"http:\/\/blog.metaobject.com\/2014\/03\/looking-at-scripting-languageand.html\">Marcel Weiher<\/a>:<\/p>\n<blockquote cite=\"http:\/\/blog.metaobject.com\/2014\/03\/looking-at-scripting-languageand.html\"><p>While Objective-Smalltalk would not require shipping source code with your applications, due to the native compiler, it would certainly allow it, and in fact my own\n <a href=\"http:\/\/www.metaobject.com\/Products\/\">BookLightning<\/a> imposition program\nhas been shipping with part of its Objective-Smalltalk source hidden its Resources\nfolder for about a decade or so.<\/p>\n<p>[&#8230;]<\/p>\n<p>Open Source should be more about being able to tinker with well-made apps in useful ways, rather than downloading and compiling gargantuan and incomprehensible tarballs of C\/C++ code.<\/p><\/blockquote>\n<p>He also has some interesting comments on <a href=\"https:\/\/news.ycombinator.com\/item?id=7161566\">Hacker News<\/a>.<\/p>\n<p>Lots of good ideas here. I think a runtime-compatible Objective-C&#8211;without-the-C is where we are headed. But, and I hate to say this, I&rsquo;ve never liked Smalltalk syntax. I like the way Smalltalk works, and I like the Objective-C bracket syntax, but to my eyes Smalltalk has too many spaces to be easily readable. I feel like I am forever parsing it and mentally inserting parens.<\/p>","protected":false},"excerpt":{"rendered":"<p>Objective-Smalltalk: Objective-Smalltalk is an evolution of Smalltalk based on the Objective-C runtime. It adds angle brackets for type annotations, both for optional static type checking and to designate C types such as &lt;int&gt; or &lt;double&gt; for interoperating with C and Objective-C. Generic raw pointers are not supported, wrapper objects and bulk collections are preferred. The [&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":[46,54,806,74,71,515],"class_list":["post-8552","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-languagedesign","tag-objective-c","tag-objective-smalltalk","tag-opensource","tag-programming","tag-smalltalk"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8552","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=8552"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8552\/revisions"}],"predecessor-version":[{"id":8555,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/8552\/revisions\/8555"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=8552"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=8552"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=8552"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}