{"id":22867,"date":"2018-09-25T16:05:16","date_gmt":"2018-09-25T20:05:16","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=22867"},"modified":"2018-09-25T16:05:16","modified_gmt":"2018-09-25T20:05:16","slug":"compiler-user-interfaces","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2018\/09\/25\/compiler-user-interfaces\/","title":{"rendered":"Compiler User Interfaces"},"content":{"rendered":"<p><a href=\"https:\/\/forums.swift.org\/t\/resolved-insert-is-a-bad-fixit\/10764\/102\">Greg Titus<\/a> (via <a href=\"https:\/\/twitter.com\/dgregor79\/status\/1030702697337434112\">Doug Gregor<\/a>):<\/p>\n<blockquote cite=\"https:\/\/forums.swift.org\/t\/resolved-insert-is-a-bad-fixit\/10764\/102\">\n<p>The force unwrap fixit still exists, but it is now never the only or preferred fixit offered, and hopefully the explanations of the errors are a lot more beginner-friendly now.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/twitter.com\/ShriramKMurthi\/status\/1043123930154684422\">Shriram Krishnamurthi<\/a>:<\/p>\n<blockquote cite=\"https:\/\/twitter.com\/ShriramKMurthi\/status\/1043123930154684422\"><p>Error messages come from <em>languages<\/em>, but errors are made in <em>programs<\/em>. By definition, there&rsquo;s a big semantic gulf between the language and program. Fixes have to be at the level of the program. How can the <em>language<\/em> make &ldquo;obvious&rdquo; the program&rsquo;s problem?<\/p><p>This also assumes that there is &ldquo;the&rdquo; problem. Many times an error is the result if an <em>inconsistency<\/em> (trivial example: f takes two args and is given three; not clear whether caller or callee is to blame).<\/p><p>[&#8230;]<\/p><p>Errors live in a very complex ecosystem. As a programmer, course I&rsquo;d love what the slide asks for. [&ldquo;An error should make it obvious how to fix the problem.&rdquo;] As a researcher and language designer and curriculum author, I&rsquo;d be terrified of anything that makes such claims. Even as someone who&rsquo;s spend 8 hard years now on better msgs.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Greg Titus (via Doug Gregor): The force unwrap fixit still exists, but it is now never the only or preferred fixit offered, and hopefully the explanations of the errors are a lot more beginner-friendly now. Shriram Krishnamurthi: Error messages come from languages, but errors are made in programs. By definition, there&rsquo;s a big semantic gulf [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2018-09-25T20:05:18Z","apple_news_api_id":"9d3cd3d1-d404-45bd-93cd-b0eccf667f9c","apple_news_api_modified_at":"2018-09-25T20:05:19Z","apple_news_api_revision":"AAAAAAAAAAD\/\/\/\/\/\/\/\/\/\/w==","apple_news_api_share_url":"https:\/\/apple.news\/AnTzT0dQERb2TzbDsz2Z_nA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[4],"tags":[255,71,901],"class_list":["post-22867","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-compiler","tag-programming","tag-swift-programming-language"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=22867"}],"version-history":[{"count":1,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22867\/revisions"}],"predecessor-version":[{"id":22868,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/22867\/revisions\/22868"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=22867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=22867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=22867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}