{"id":2028,"date":"2013-11-04T13:07:16","date_gmt":"2013-11-04T01:07:16","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=2028"},"modified":"2013-11-04T13:11:37","modified_gmt":"2013-11-04T01:11:37","slug":"official1-delphi-is-the-worlds-least-efficient-compiler","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/2028\/","title":{"rendered":"OFFICIAL<sup>*1<\/sup>: Delphi is the Worlds Least Efficient Compiler!"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">2<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p>That is, according to Embarcadero&#8217;s &#8220;Chief Evangelist&#8221;.  I don&#8217;t know how else to interpret his claim that the Delphi compiler produces <a href=\"http:\/\/blogs.embarcadero.com\/davidi\/2013\/11\/03\/42959\">5MB+ of executable code per line of written code<\/a><sup>*2<\/sup>.<\/p>\n<p><!--more--><\/p>\n<p>Of course, this isn&#8217;t what he means but it&#8217;s a conclusion that is just as valid as the initial proposition &#8211; that his app consists of &#8220;<em>one line of code<\/em>&#8221; at all.<\/p>\n<p>Intelligent developers are fully aware that behind that one line of code lie hundreds if not thousands upon thousands of lines of framework code all invoked into action by that innocuous one line.  Otherwise of course every single language and development tool could make the same or significantly similar claim, simply by conveniently ignoring all of that pre-written code behind the scenes.<\/p>\n<p>Only an idiot would swallow the marketing spin &#8211; for it is certainly not a technical claim of any credibility &#8211; that his &#8220;application&#8221; consists of &#8220;one line of code&#8221;.  And only an idiot would think such an obviously nonsensical claim would carry any weight with an intelligent audience.<\/p>\n<p>Which leads to the uncomfortable conclusion that either <strong>David I<\/strong> is an idiot or he is working from the premise that his <em>audience<\/em> are idiots.<\/p>\n<p>The (ever increasing) body of evidence strongly suggests the latter, but that in itself should be offensive to those who might consider themselves part of that audience.  It certainly is to me.<\/p>\n<p>It might have been <em>more<\/em> interesting to see an <strong>Android Service<\/strong> implemented using <strong>Delphi for FireMonkey (Android Edition)<\/strong>.  Or an <strong>AppWidget<\/strong>.<\/p>\n<p>Ah, but of course, I am forgetting&#8230;<\/p>\n<p>This &#8220;<em>true native<\/em>&#8220;<sup>*3<\/sup> development tool <em>cannot do<\/em> those things on the Android platform.<\/p>\n<p>Oh well, perhaps best to just leave <strong>David I<\/strong> to parade around in the <strong><a href=\"http:\/\/en.wikipedia.org\/wiki\/The_Emperor's_New_Clothes\">Emperor&#8217;s New Autumn\/Winter Collection<\/a><\/strong> then, eh ?  \ud83d\ude09<\/p>\n<h3>Footnotes<\/h3>\n<p><sup>*1<\/sup> &#8211; <em>Not actually an &#8220;Official&#8221; measure.  Just as the subject app is not actually a one line app.<\/em>  \ud83d\ude09<\/p>\n<p><sup>*2<\/sup> &#8211; <em>I don&#8217;t know if this would actually qualify as the Worlds Least Efficient Compiler, but it must be pretty close.<\/em>  \ud83d\ude09<\/p>\n<p><sup>*3<\/sup> &#8211; <em>&#8220;native&#8221; as used by Embarcadero means &#8220;unmanaged code&#8221;, not &#8220;native&#8221; in the sense of &#8220;fitting in perfectly&#8221;, &#8220;feeling right at home&#8221;, &#8220;availed of all rights and privileges&#8221;, &#8220;able to converse and participate efficiently and naturally with the environment&#8221; or any of the other more usefully relevant interpretations of &#8220;native&#8221; on mobile devices where platform experience is a key differentiator<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">2<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> That is, according to Embarcadero&#8217;s &#8220;Chief Evangelist&#8221;. I don&#8217;t know how else to interpret his claim that the Delphi compiler produces 5MB+ of executable code per line of written code*2.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":[]},"categories":[212,4],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-wI","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1356,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1356\/","url_meta":{"origin":2028,"position":0},"title":"Hint: Using a Wrong to Make a Wrong Wrong Right","date":"15 Feb 2013","format":false,"excerpt":"Yesterday I found myself having to write some code that would never be used in order to co-erce the compiler into not complaining that something would not be used when in fact it was. Something I have learned over the years is that hints and warnings are useful guides to\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1240,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1240\/","url_meta":{"origin":2028,"position":1},"title":"What&#8217;s in a Word &#8230; ?","date":"21 Sep 2012","format":false,"excerpt":"In an exchange with David Heffernan both on SO and in the comments here on Te Waka, I had cause to climb in my own personal \"Wayback Machine\" and further investigate an apparent change in compiler behaviour between Delphi 2007 and 2009. This change was first identified as the result\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2337,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2337\/","url_meta":{"origin":2028,"position":2},"title":"A Silent Danger&#8230;","date":"07 Jun 2015","format":false,"excerpt":"A brief post on a long standing omission in type checking in Pascal and the limitations of Range Checking as applied to the problem. Consider this contrived example of a simple function: This very simple function accepts an explicitly 32-bit Integer parameter and simply returns TRUE if the value passed\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":426,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/426\/","url_meta":{"origin":2028,"position":3},"title":"The &#8220;Big Switch&#8221;","date":"28 Apr 2009","format":false,"excerpt":"Much has been made in the past and again more recently, about the lack of a compiler switch in Delph 2009 to govern the behaviour of the String type. CodeGear have repeatedly said that it was not possible\/practical to provide such a switch, but their advice to anyone concerned about\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2344,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2344\/","url_meta":{"origin":2028,"position":4},"title":"A Deeper Dive into Range Checking","date":"08 Jun 2015","format":false,"excerpt":"Yesterday I posted about an issue with type checking in Delphi (and other Pascal) compilers. As mentioned in that post, range checking is fundamentally flawed as a supposed solution to the problem for reasons that are explored further in this post. To recap: Range checking does not test the types\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":244,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/244\/","url_meta":{"origin":2028,"position":5},"title":"Generic Methods and Type Inferencing","date":"25 Aug 2008","format":false,"excerpt":"In the new Delphi forums recently, Barry Kelly responded to a question about lambda expression syntax in Tibur\u00f3n with this observation: This syntax needs type inference. Our compiler was not originally written to support type inference, but work to support type inference is orthogonal to supporting anonymous methods. ...\u00a0 you'll\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2028"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=2028"}],"version-history":[{"count":8,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2028\/revisions"}],"predecessor-version":[{"id":2036,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/2028\/revisions\/2036"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=2028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=2028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=2028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}