{"id":206,"date":"2005-05-11T21:08:56","date_gmt":"2005-05-11T20:08:56","guid":{"rendered":"http:\/\/www.andrewj.com\/blog\/index.php\/2005\/growing-a-language\/"},"modified":"2010-10-19T18:42:29","modified_gmt":"2010-10-19T17:42:29","slug":"growing-a-language","status":"publish","type":"post","link":"https:\/\/www.andrewj.com\/blog\/2005\/growing-a-language\/","title":{"rendered":"Growing a Language"},"content":{"rendered":"<p>I&#8217;ve just read a wonderful paper by Guy L Steele, &#8220;<a href=\"http:\/\/homepages.inf.ed.ac.uk\/wadler\/steele-oopsla98.pdf\" target=\"_blank\">Growing a Language<\/a>&#8220;. He argues strongly that programming languages must be &#8220;small&#8221;, but able to grow. Such a language will have a relatively simple structure, syntactic rules, and a small core vocabulary. However it must also be able to &#8220;grow&#8221;, integrating new data types and functions, in the form of user code accessed in exactly the same way as core functions.<\/p>\n<p>Steele&#8217;s argument is highlighted by the paper&#8217;s unique style &#8211; he uses a small but growing language himself. He writes using only words of one syllable, gradually adding other words he has defined in these terms.<\/p>\n<p>The paper works at many levels. As well as the fascinating intellectual exercise in style, it makes a strong case for:<\/p>\n<ul>\n<li>simple but extensible programming languages,<\/li>\n<li>improving the extensibility of Java, rather than its core vocabulary,<\/li>\n<li>an agile community process for developing languages, rather than up-front design of great monoliths,<\/li>\n<li>the communication power of simple language and words.<\/li>\n<\/ul>\n<p>Steele exhorts us to think about extensibility mechanisms &#8211; if we get these right then the core functionality can always grow. And by example, he encourages us to use simple, direct language and benefit from its discipline. On both accounts I agree wholeheartedly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;ve just read a wonderful paper by Guy L Steele, &#8220;Growing a Language&#8220;. He argues strongly that programming languages must be &#8220;small&#8221;, but able to grow. Such a language will have a relatively simple structure, syntactic rules, and a small &hellip; <a href=\"https:\/\/www.andrewj.com\/blog\/2005\/growing-a-language\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,9,2],"tags":[],"_links":{"self":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts\/206"}],"collection":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/comments?post=206"}],"version-history":[{"count":0,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/posts\/206\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/media?parent=206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/categories?post=206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.andrewj.com\/blog\/wp-json\/wp\/v2\/tags?post=206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}