<?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/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1510775064954255646</id><updated>2012-02-16T06:01:58.333-08:00</updated><category term='references'/><category term='programming languages'/><category term='static analysis'/><title type='text'>CS &amp; IT stuff</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://leontyd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1510775064954255646/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://leontyd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leon</name><uri>http://www.blogger.com/profile/16587179816855021321</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_VEzqeNhDTB8/Sky0Lbyg9zI/AAAAAAAAAQs/jdw30Zn6JNk/S220/P1060294_2.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1510775064954255646.post-5836394889901611413</id><published>2009-05-04T01:14:00.000-07:00</published><updated>2009-05-04T03:00:47.389-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='references'/><category scheme='http://www.blogger.com/atom/ns#' term='programming languages'/><title type='text'>The Feel of Scala</title><content type='html'>Here I present a &lt;a href="http://tinyurl.com/dcfm4c"&gt;talk&lt;/a&gt; on Scala programming language by  Bill Venners, president of Artima Inc.&lt;br /&gt;The presentation is &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=253855"&gt;summarized&lt;/a&gt; by Venners in the 'Artima developer' blog.&lt;br /&gt;&lt;br /&gt;&lt;object width="474" height="443"&gt;&lt;param name="movie" value="http://www.parleys.com/download/attachments/5443/parleysshare.swf?pageId=27131945"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="pageId" value="27131945"&gt;&lt;embed src="http://www.parleys.com/download/attachments/5443/parleysshare.swf?pageId=27131945" type="application/x-shockwave-flash" allowfullscreen="true" width="474" height="443"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1510775064954255646-5836394889901611413?l=leontyd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leontyd.blogspot.com/feeds/5836394889901611413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1510775064954255646&amp;postID=5836394889901611413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1510775064954255646/posts/default/5836394889901611413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1510775064954255646/posts/default/5836394889901611413'/><link rel='alternate' type='text/html' href='http://leontyd.blogspot.com/2009/05/feel-of-scala.html' title='The Feel of Scala'/><author><name>Leon</name><uri>http://www.blogger.com/profile/16587179816855021321</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_VEzqeNhDTB8/Sky0Lbyg9zI/AAAAAAAAAQs/jdw30Zn6JNk/S220/P1060294_2.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1510775064954255646.post-6269233468956434451</id><published>2009-04-19T08:36:00.000-07:00</published><updated>2009-04-19T22:04:58.463-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='static analysis'/><title type='text'>The Simpsons Already Did It!</title><content type='html'>I've recently read a new Dragon Book chapter on interprocedural analysis (by &lt;a href="http://suif.stanford.edu/~lam/"&gt;Monica Lam&lt;/a&gt;) and a couple of papers on practical applications of the general ideas by &lt;a href="http://suif.stanford.edu/~jwhaley/"&gt;John Whaley&lt;/a&gt;. The reading brought me almost everything I hungered for after my first experience with type inference implementation for Python.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I learned how to describe nearly any (with some constraints) reasonable static code analysis in terms of a simple logic programming language Datalog. The simplest implementation allows immediately for incremental analysis to be performed. But this is not all we can get with it! Static analyses are considered difficult because of enormous resources consumption (exponential blowup is not exotic). The problem is addressed by special data representation technique based on Binary Decision Diagrams (BDDs). The logic program in Datalog is translated in terms of relational algebra operations which act over BDD representation of relations. The idea behind the usage of BDDs is that they allow for compact representation of relations as Boolean functions. Although in worst cases the representation of arbitrary function can not be concise (as there are 2&lt;sup&gt;2&lt;sup&gt;n&lt;/sup&gt;&lt;/sup&gt; of them), the regularities found in most functions provide opportunity to effectively store them. The idea has been put into practice just several years ago in &lt;a href="http://bddbddb.sourceforge.net/"&gt;bddbddb&lt;/a&gt; implementation of Datalog at Stanford. Results presented in the concomitant paper are very impressive: most complex full program analyses of large code bases (hundreds of thousands lines of code) have been performed in minutes, not hours!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is no need to say that the work of &lt;a href="http://suif.stanford.edu/"&gt;SUIF Compiler Group&lt;/a&gt; anticipated and, more importantly, elaborated and put into pracrice the ideas on generalized analysis implementation which I was only incubating. All by the time I entered the NSU. One question I had after reading the paper was, why didn't I know about this technique a year ago? I won't investigate the obvious reasons but will try implementing my type analysis with the framework provided by bddbddb. For a start, my part will be to see if these ideas are immediately applicable to interactive analysis tools, or require improvement.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1510775064954255646-6269233468956434451?l=leontyd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leontyd.blogspot.com/feeds/6269233468956434451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1510775064954255646&amp;postID=6269233468956434451' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1510775064954255646/posts/default/6269233468956434451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1510775064954255646/posts/default/6269233468956434451'/><link rel='alternate' type='text/html' href='http://leontyd.blogspot.com/2009/04/simpsons-already-did-it.html' title='The Simpsons Already Did It!'/><author><name>Leon</name><uri>http://www.blogger.com/profile/16587179816855021321</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_VEzqeNhDTB8/Sky0Lbyg9zI/AAAAAAAAAQs/jdw30Zn6JNk/S220/P1060294_2.JPG'/></author><thr:total>1</thr:total></entry></feed>
