{"id":83,"date":"2007-12-02T11:32:34","date_gmt":"2007-12-02T16:32:34","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=83"},"modified":"2008-10-26T00:37:05","modified_gmt":"2008-10-26T05:37:05","slug":"qwerty-vs-cobol","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=83","title":{"rendered":"QWERTY vs. COBOL"},"content":{"rendered":"<p>There was a surprising pattern in the response to my talk during my recent road trip. I think of my work as trying to make programming more human-friendly. Yet the people most concerned with human factors had a common reaction: it just isn&#8217;t possible to reinvent programming languages from scratch. I was instead expecting negative reactions from the formal methods and analysis people, but some of them seemed to be quite entertained by my work.<\/p>\n<p><!--more--><\/p>\n<p>Upon reflection, maybe that divergence shouldn&#8217;t be so surprising. Techy types love new gadgets, and I was showing them this weird alien technology. Maybe it will never work, but it&#8217;s new and cool. On the other hand, people more attuned to the subtleties of human behavior also tend to be more skeptical about the ability of technology to change the human condition.\n<\/p>\n<p>An even simpler explanation is that at heart I am still a techy, and we instinctively stick together, and are likewise disdained by those Humanities types. Maybe I haven&#8217;t crossed between these worlds as far as I would like to think.\n<\/p>\n<p>The more humanistic researchers threw the technology lock-in argument at me. One example was standard musical notation, which apparently is quite poorly designed, but which continues to dominate better alternatives through sheer inertia. The other example is the familiar tragedy of QWERTY.\n<\/p>\n<p>They may be right, but I refuse to give up. I believe that programming is a form of human expression as significant as music or mathematics, and it is important to get it right. I am not a musician myself, but since it takes years of training to become musically proficient, perhaps the effort to learn a new notation is prohibitive. I also don&#8217;t hear musicians agonizing over the &#8220;score crisis&#8221;. Mathematics, on the other hand, has the famous example of the fight between Newton and Leibniz&#8217;s notations for Calculus. It is said that Newton&#8217;s inferior notation held back English mathematics a century until it was finally abandoned.\n<\/p>\n<p>QWERTY is certainly a case of lock-in, but it is a hardware standard, and thus constrained by the economics of production. Actually there are quite a few alternative keyboard users at CSAIL, though they seem more concerned with hand pain than typing speed. What stops me from switching is the unavailability of alternative keyboards for laptops. Anyway, typing speed really isn&#8217;t a problem for me.\n<\/p>\n<p>My counterexample to the lock-in argument, which I didn&#8217;t think of until I was on the plane home, is COBOL. At one point the vast majority of software in the world was written in COBOL. Now it is hard to find a COBOL programmer under 50, except offshore. Opinions differ on the reason. Maybe it was horribly misbegotten and justly banished, or maybe it got unfairly discarded by a generational shift in fashion. Whatever, COBOL is an existence proof that the dominant programming language can be displaced. All we need to do is invent a new language that is so cool it makes Java seem as archaic as COBOL, and then wait for the next generation of programmers to grow up.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There was a surprising pattern in the response to my talk during my recent road trip. I think of my work as trying to make programming more human-friendly. Yet the people most concerned with human factors had a common reaction: it just isn&#8217;t possible to reinvent programming languages from scratch. I was instead expecting negative &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/alarmingdevelopment.org\/?p=83\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;QWERTY vs. COBOL&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-83","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_shortlink":"https:\/\/wp.me\/pfEnU-1l","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/83","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=83"}],"version-history":[{"count":1,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/83\/revisions"}],"predecessor-version":[{"id":159,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/83\/revisions\/159"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=83"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=83"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=83"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}