{"id":1202,"date":"2014-03-30T20:02:48","date_gmt":"2014-03-30T08:02:48","guid":{"rendered":"http:\/\/p-s.co.nz\/wordpress\/?p=1202"},"modified":"2014-03-30T20:02:48","modified_gmt":"2014-03-30T08:02:48","slug":"saddest-programming-concept-ever","status":"publish","type":"post","link":"https:\/\/p-s.co.nz\/wordpress\/saddest-programming-concept-ever\/","title":{"rendered":"Saddest Programming Concept Ever"},"content":{"rendered":"<p>Python has spoiled me for other languages &#8211; I accept that &#8211; but I still wasn&#8217;t fully prepared for some of the horrors I discovered in Javascript. Which made the satiric article by James Mickens, &#8220;<a href=\"https:\/\/www.usenix.org\/system\/files\/1403_02-08_mickens.pdfhttp:\/\/\" target=\"_blank\">To Wash It All Away<\/a>&#8220;, all the more enjoyable. Here is a slice I especially liked:<\/p>\n<blockquote><p>Much like C, JavaScript uses semicolons to terminate many kinds of statements. However, in JavaScript, if you forget a semicolon, the JavaScript parser can automatically insert semicolons where it thinks that semicolons might ought to possibly maybe go. This sounds really helpful until you realize that semicolons have semantic meaning. You can\u2019t just scatter them around like you\u2019re the Johnny Appleseed of punctuation. Automatically inserting semicolons into source code is like mishearing someone over a poor cell-phone connection, and then assuming that each of the dropped words should be replaced with the phrase \u201cyour mom.\u201d This is a great way to create excitement in your interpersonal relationships, but it is not a good way to parse code. Some JavaScript libraries intentionally begin with an initial semicolon, to ensure that if the library is appended to another one (e.g., to save HTTP roundtrips during download), the JavaScript parser will not try to merge the last statement of the first library and the first statement of the second library into some kind of semicolon-riven statement party. Such an initial semicolon is called a \u201cdefensive semicolon.\u201d That is the saddest programming concept that I\u2019ve ever heard, and I am fluent in C++.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Python has spoiled me for other languages &#8211; I accept that &#8211; but I still wasn&#8217;t fully prepared for some of the horrors I discovered in Javascript. Which made the satiric article by James Mickens, &#8220;To Wash It All Away&#8220;, &hellip; <a href=\"https:\/\/p-s.co.nz\/wordpress\/saddest-programming-concept-ever\/\">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":[11,2],"tags":[],"class_list":["post-1202","post","type-post","status-publish","format-standard","hentry","category-programming","category-web-development"],"_links":{"self":[{"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/posts\/1202"}],"collection":[{"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/comments?post=1202"}],"version-history":[{"count":2,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/posts\/1202\/revisions"}],"predecessor-version":[{"id":1204,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/posts\/1202\/revisions\/1204"}],"wp:attachment":[{"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/media?parent=1202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/categories?post=1202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/p-s.co.nz\/wordpress\/wp-json\/wp\/v2\/tags?post=1202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}