{"id":9018,"date":"2014-06-19T10:27:53","date_gmt":"2014-06-19T14:27:53","guid":{"rendered":"http:\/\/mjtsai.com\/blog\/?p=9018"},"modified":"2014-06-19T10:27:53","modified_gmt":"2014-06-19T14:27:53","slug":"the-safyness-of-static-typing","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2014\/06\/19\/the-safyness-of-static-typing\/","title":{"rendered":"The Safyness of Static Typing"},"content":{"rendered":"<p><a href=\"http:\/\/blog.metaobject.com\/2014\/06\/the-safyness-of-static-typing.html\">Marcel Weiher<\/a>:<\/p><blockquote cite=\"http:\/\/blog.metaobject.com\/2014\/06\/the-safyness-of-static-typing.html\"><p>That the compiler is capable of catching (some) bugs using static type checks\nis undeniably true.  However, what is also obviously true is that not all bugs are type \nerrors (for example, most of the <a href=\"http:\/\/www.sans.org\/top25-software-errors\/\">25 top software errors<\/a> don&rsquo;t look like type errors\nto me, and neither goto fail; nor Heartbleed look like type errors either, and neither\ndo the top errors in my different projects),\nso having the type-checker give our programs a clean bill of health does not\nmake them bug free, it eliminates a certain type or class of bugs.<\/p><p>[&#8230;]<\/p><p>[Robert Smallshire] talks about this some more in the talk titled <a href=\"http:\/\/vimeo.com\/74354480\">The Unreasonable Effectiveness of Dynamic Typing<\/a>, which I heartily recommend.  However,\nthis isn&rsquo;t the only source, for example there was a study with the following title:  <a href=\"http:\/\/dl.acm.org\/citation.cfm?id=1869462\">An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time<\/a> (<a href=\"http:\/\/courses.cs.washington.edu\/courses\/cse590n\/10au\/hanenberg-oopsla2010.pdf\">pdf<\/a>), which found the following to be true in experiments: not only were development times  significantly shorter on average with dynamically typed languages, so were debug times.<\/p><\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Marcel Weiher:That the compiler is capable of catching (some) bugs using static type checks is undeniably true. However, what is also obviously true is that not all bugs are type errors (for example, most of the 25 top software errors don&rsquo;t look like type errors to me, and neither goto fail; nor Heartbleed look like [&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":"","apple_news_api_id":"","apple_news_api_modified_at":"","apple_news_api_revision":"","apple_news_api_share_url":"","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":[56,46,71],"class_list":["post-9018","post","type-post","status-publish","format-standard","hentry","category-programming-category","tag-debugging","tag-languagedesign","tag-programming"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/9018","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=9018"}],"version-history":[{"count":0,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/9018\/revisions"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=9018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=9018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=9018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}