<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-14589096.post112168772661379635..comments</id><updated>2010-03-21T16:23:55.073+01:00</updated><category term='olympics'/><category term='scala'/><category term='Versager'/><category term='funny'/><category term='clojure'/><category term='python'/><category term='twitter'/><category term='programming'/><category term='time wasting'/><category term='zensur'/><category term='social'/><category term='testing'/><category term='nonsense'/><category term='Verbrecher'/><category term='quiz'/><title type='text'>Comments on Gerhard Häring: The really hard bugs ...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.ghaering.de/feeds/112168772661379635/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/112168772661379635/comments/default'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2005/07/really-hard-bugs.html'/><author><name>Gerhard Häring</name><uri>https://profiles.google.com/102960595911713297609</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-Ep3RCjTS4dY/AAAAAAAAAAI/AAAAAAAAAe0/A96zAomOIpU/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>1</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14589096.post-1570630475618242381</id><published>2010-03-21T16:23:55.065+01:00</published><updated>2010-03-21T16:23:55.065+01:00</updated><title type='text'>The quote is true, but incomplete.  Strong typing ...</title><content type='html'>The quote is true, but incomplete.  Strong typing and lack of goto statements are techniques to minimize certain classes of bugs... and they are effective.  However, consider how many security problems are caused by failure to check boundaries of a structure or an array: strong typing avoids certain problems for ARRAY of 1..N but not the case of trying access the N+1st unit of the array.&lt;br /&gt;&lt;br /&gt;The solution to the bounds-checking problem thus lies elsewhere.  It can be explicit (programmed in tediously), implicit (added by the compiler for each/every array access, thereby inflating the code and destroying efficiency), or something in-between (run-time environment memory access violation traps, etc.).  Personally, I prefer the first, but it depends on programmers&amp;#39; having the skill to pick the right places to do it and the time in tight development schedules to implement it.  And, frankly, we all know that programmers would rather not add such tedium to otherwise elegant code.&lt;br /&gt;&lt;br /&gt;Thread bugs are similar.  The keys are re-entrance and synchronization.  These may be explicit, implicit, or in-between.  However, here we find that many fewer programmers have the skills to do this explicitly: aside from OS hacks, the vast majority of programmers have not had to deal with these issues for decades due to the prevailing single-core, single-thread paradigm.  Compilers generally handle re-entrance fairly well -- although not always perfectly -- but sync continues to elude them.&lt;br /&gt;&lt;br /&gt;That all changed in 2005, about the time you posted the original blog, with the advent of mass market game processors, especially the 3-core, 6-thread processor in Xbox360 and (with Linux available for it) the 9-core, 10-thread Cell B.E. processor in PS3.  Sites like Mike Acton&amp;#39;s CellPerformance.com give a lot tips, especially for those who program down to the metal.&lt;br /&gt;&lt;br /&gt;One would hope that programming environments will catch up, now that x86 multicore is prevalent.  Now 5 years after your initial post, what tools do you know that automatically detect races and other conflicts for multi-threaded programs?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/112168772661379635/comments/default/1570630475618242381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14589096/112168772661379635/comments/default/1570630475618242381'/><link rel='alternate' type='text/html' href='http://blog.ghaering.de/2005/07/really-hard-bugs.html?showComment=1269185035065#c1570630475618242381' title=''/><author><name>MITDGreenb</name><uri>http://openid.aol.com/MITDGreenb</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.ghaering.de/2005/07/really-hard-bugs.html' ref='tag:blogger.com,1999:blog-14589096.post-112168772661379635' source='http://www.blogger.com/feeds/14589096/posts/default/112168772661379635' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-462458730'/></entry></feed>
