{"id":725,"date":"2011-01-07T13:23:39","date_gmt":"2011-01-07T03:23:39","guid":{"rendered":"http:\/\/www.malcolmgroves.com\/blog\/?p=725"},"modified":"2015-03-13T10:54:18","modified_gmt":"2015-03-12T23:54:18","slug":"review-masterminds-of-programming-by-federico-biancuzzi","status":"publish","type":"post","link":"http:\/\/www.malcolmgroves.com\/blog\/?p=725","title":{"rendered":"Review : Masterminds of Programming by Federico Biancuzzi"},"content":{"rendered":"<p><a href=\"http:\/\/oreilly.com\/catalog\/9780596515171\/\" target=\"_blank\"><img decoding=\"async\" style=\"margin: 0px 10px 0px 0px; display: inline; border-width: 0px;\" src=\"http:\/\/covers.oreilly.com\/images\/9780596515171\/cat.gif\" alt=\"\" align=\"left\" border=\"0\" \/><\/a> Over my last few flights I\u2019ve been reading <a href=\"http:\/\/oreilly.com\/catalog\/9780596515171\/\" target=\"_blank\">Masterminds of Programming by Federico Biancuzzi<\/a>. It\u2019s a collection of interviews with the creators of a whole bunch of different programming languages, and is quite full of advice and insight, even for those of us who\u2019ll never design a language.<\/p>\n<p>I expected to be most interested in the interviews about languages I have some exposure to (eg. C#, C++, SQL, Objective-C) but was surprised to find myself much more intrigued by the discussions on unfamiliar languages (eg. Eiffel, Lua, Forth, Haskell).<\/p>\n<p><!--more-->The other surprise was how funny many of the interviews are, although perhaps much of the humour is unintentional. It\u2019s a stark reminder that these language designers are very much human, and prone to pettiness and rivalry as much as the rest of us.<\/p>\n<p>For example, Bertrand Meyer rejecting a question on Design by Contract in Eiffel and putting it back on \u201cGosling, Stroustrop, Alan Kay or Hejlsberg\u201d how they could possibly design a language <em>without<\/em> it? \u201cAsking why one uses Design by Contract is like asking people to justify Arabic numerals. It\u2019s those using Roman numerals for multiplication who should justify themselves\u201d<\/p>\n<p>Or James Gosling, when asked about C# borrowing from Java : &#8220;C# basically took everything, although they oddly decided to take away the security and reliability stuff by adding all these sorts of unsafe pointers, which strikes me as grotesquely stupid&#8221;<\/p>\n<p>I found myself reading it in quite a convoluted order, as I\u2019d finish one chapter, say Gosling\u2019s Java chapter, and then want to jump over and read the C# chapter to see if Anders would justify his \u201cgrotesquely stupid\u201d decision.<\/p>\n<p>Two small criticisms though. First, it could do with a little more editing. Some of the interviews seem to have taken place over a few sittings, and so tend to repeat themselves a bit. Anders Hejlsberg\u2019s is probably the most obvious example (but worth reading anyway, as he is at his pragmatic and reasonable best)<\/p>\n<p>Second, for the languages with which I wasn\u2019t familiar, I\u2019d have loved some code samples.<\/p>\n<p>That aside, it\u2019s an interesting, informative and occasionally thought-provoking read. Probably as close to a geek\u2019s coffee table book as I\u2019ve come across.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over my last few flights I\u2019ve been reading Masterminds of Programming by Federico Biancuzzi. It\u2019s a collection of interviews with the creators of a whole bunch of different programming languages, and is quite full of advice and insight, even for those of us who\u2019ll never design a language. I expected to be most interested in [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[67,72],"class_list":["post-725","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ebooks","tag-reviews"],"_links":{"self":[{"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/725","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=725"}],"version-history":[{"count":4,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/725\/revisions"}],"predecessor-version":[{"id":1778,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/725\/revisions\/1778"}],"wp:attachment":[{"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=725"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=725"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.malcolmgroves.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=725"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}