{"id":1702,"date":"2013-07-23T09:35:07","date_gmt":"2013-07-23T14:35:07","guid":{"rendered":"http:\/\/redmonk.com\/dberkholz\/?p=1702"},"modified":"2013-07-23T14:04:06","modified_gmt":"2013-07-23T19:04:06","slug":"are-we-getting-better-at-designing-programming-languages","status":"publish","type":"post","link":"https:\/\/redmonk.com\/dberkholz\/2013\/07\/23\/are-we-getting-better-at-designing-programming-languages\/","title":{"rendered":"Are we getting better at designing programming languages?"},"content":{"rendered":"<p>In the aftermath of my earlier work on the <a href=\"http:\/\/redmonk.com\/dberkholz\/2013\/03\/25\/programming-languages-ranked-by-expressiveness\/\">expressiveness of programming languages<\/a>, I started wondering whether our ability to design and choose optimal languages might have improved since the &#8217;50s when Fortran and Lisp were invented. To answer this question, I returned to my original data on the expressiveness of the top two <a href=\"http:\/\/redmonk.com\/sogrady\/2013\/02\/28\/language-rankings-1-13\/\">language tiers<\/a> by our ranking. By mapping the medians against the years each language was invented, I created the below plot (click to enlarge):<\/p>\n<figure id=\"attachment_1789\" aria-describedby=\"caption-attachment-1789\" style=\"width: 491px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2013\/07\/expressiveness_by_year3.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1791\" data-permalink=\"https:\/\/redmonk.com\/dberkholz\/2013\/07\/23\/are-we-getting-better-at-designing-programming-languages\/expressiveness_by_year-3\/\" data-orig-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2013\/07\/expressiveness_by_year3.png\" data-orig-size=\"1093,788\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;}\" data-image-title=\"expressiveness_by_year\" data-image-description=\"\" data-medium-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2013\/07\/expressiveness_by_year3-300x216.png\" data-large-file=\"https:\/\/redmonk.com\/dberkholz\/files\/2013\/07\/expressiveness_by_year3-1024x738.png\" class=\"size-large wp-image-1791\" alt=\"Shown is the median weighted expressiveness of each language (as calculated in the previous post) plotted against the year each language was invented or first published.\" src=\"http:\/\/dberkholz-media.redmonk.com\/dberkholz\/files\/2013\/07\/expressiveness_by_year3-1024x738.png\" width=\"491\" height=\"354\" \/><\/a><figcaption id=\"caption-attachment-1789\" class=\"wp-caption-text\">Shown is the median weighted expressiveness of each language (as calculated in the previous post) plotted against the year each language was invented or first published.<\/figcaption><\/figure>\n<p>I&#8217;ve broken this plot into four clusters. The first two, in gray, indicate overall low vs high expressiveness (gray). The third, red cluster shows all new, popular languages from the past decade, while the empty cluster (&#8220;The Gap&#8221;) shows the complete lack of less expressive new, popular languages. Each language is colored in red (tier one) or black (tier two) to make it easier to assess where the most highly used languages fall.<\/p>\n<p><strong>Caveats?<\/strong>\u00a0The meaning of <a href=\"http:\/\/redmonk.com\/dberkholz\/2013\/03\/26\/what-does-expressiveness-via-loc-per-commit-measure-in-practice\/\">expressiveness as measured by this metric<\/a> is deep and complex. As mentioned in the initial post on the topic, JavaScript appears to be an artifact due to its unusual development norms. And if you look closely, perhaps a language here and there doesn&#8217;t fall quite where you&#8217;d expect. But overall, things largely make sense, and this is borne out by <a href=\"http:\/\/redmonk.com\/dberkholz\/2013\/03\/26\/some-external-validation-on-expressive-languages\/\">correlations between my measurement of expressiveness and developer surveys<\/a>.<\/p>\n<h2>What can we get out of this?<\/h2>\n<p><strong>Broadly, we&#8217;ve gotten better at designing or choosing expressive languages<\/strong>. In both the low-level and high-level clusters, a slight to moderate downhill slope is clearly visible. Because I haven&#8217;t shown all new languages but only popular ones, it&#8217;s difficult to ascertain whether our design skills have improved or whether it&#8217;s a larger crowd effect of natural selection.<\/p>\n<p><strong>Tier-one languages are in both high- and low-expressiveness clusters.<\/strong> Interestingly, however, most of the ones in the high-level cluster got much slower uptake than in the low-level cluster. For example, compare Java and C# vs Ruby and Python. While you could argue about their relative popularity today, I don&#8217;t think you can make a viable argument that Ruby and Python got faster uptake from a large population after their initial releases.<\/p>\n<p><strong style=\"font-size: 13px; line-height: 19px;\">An exceedingly small number of languages have strong staying power.<\/strong><span style=\"font-size: 13px; line-height: 19px;\"> Of today&#8217;s tier-one languages, only C and shell script are more than 30 years old, while the remainder are all 20\u201330 or 10\u201320 years old. The next-closest example, Objective C, should nearly be disqualified because it&#8217;s only tier one due to the recent (on this timescale) popularity of iOS.<\/span><\/p>\n<p><strong>In the past 10 years,\u00a0no very popular, lower-expressiveness languages have shown up.<\/strong>\u00a0<span style=\"font-size: 13px; line-height: 19px;\">None of the tier-one languages are less than a decade old. I think this says something about the time it takes to gain significant adoption, even in the predictive communities we rely upon for our popularity analysis (GitHub and Stack Overflow, in this case). Of the ones in the red cluster, it wouldn&#8217;t surprise me to see Go, CoffeeScript, or even Clojure show up on the tier-one list in time, based on the changes in our rankings.<\/span><\/p>\n<p>All in all, it&#8217;s very suggestive that <strong>something important has changed in the past decade regarding how developers design, evaluate, and select programming languages.<\/strong> It could be reflective of the <a href=\"http:\/\/redmonk.com\/sogrady\/2010\/09\/09\/the-new-kingmakers\/\">shift toward developer empowerment<\/a> rather than management handing down decrees from on high regarding which technical choices get made.<\/p>\n<div class=\"acc_license\"><a href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><img decoding=\"async\" src=\"http:\/\/i.creativecommons.org\/l\/by-sa\/3.0\/88x31.png\" alt=\"by-sa\" \/><\/a><\/div><!--<rdf:RDF xmlns=\"http:\/\/creativecommons.org\/ns#\" xmlns:dc=\"http:\/\/purl.org\/dc\/elements\/1.1\/\" xmlns:rdf=\"http:\/\/www.w3.org\/1999\/02\/22-rdf-syntax-ns#\"><Work rdf:about=\"\"><license rdf:resource=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\" \/><\/Work><License rdf:about=\"http:\/\/creativecommons.org\/licenses\/by-sa\/3.0\/\"><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Attribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Reproduction\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#Distribution\" \/><permits rdf:resource=\"http:\/\/creativecommons.org\/ns#DerivativeWorks\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#ShareAlike\" \/><requires rdf:resource=\"http:\/\/creativecommons.org\/ns#Notice\" \/><\/License><\/rdf:RDF>-->","protected":false},"excerpt":{"rendered":"<p>In the aftermath of my earlier work on the expressiveness of programming languages, I started wondering whether our ability to design and choose optimal languages might have improved since the &#8217;50s when Fortran and Lisp were invented. To answer this question, I returned to my original data on the expressiveness of the top two language<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":"","footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false},"categories":[3,7,30],"tags":[],"class_list":["post-1702","post","type-post","status-publish","format-standard","hentry","category-adoption","category-data-science","category-programming-languages"],"jetpack_featured_media_url":"","jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p23Tsn-rs","_links":{"self":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/comments?post=1702"}],"version-history":[{"count":0,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/posts\/1702\/revisions"}],"wp:attachment":[{"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/media?parent=1702"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/categories?post=1702"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/redmonk.com\/dberkholz\/wp-json\/wp\/v2\/tags?post=1702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}