<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Programming Languages Weblog</title>
 <link>http://lambda-the-ultimate.org</link>
 <description>Programming languages news, articles and discussion</description>
 <language>en</language>
<item>
 <title>BitC is back</title>
 <link>http://lambda-the-ultimate.org/node/3860</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.coyotos.org/pipermail/bitc-dev/2010-March/001809.html&quot;&gt;BitC is back&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
As I get ready to leave Microsoft, I&#039;m once again thinking about BitC. I&lt;br &gt;
want to get the implementation and the language definition to a point of&lt;br &gt;
usability, and this seems like a good time to examine some of the things&lt;br &gt;
that I think, in hindsight, were mistakes or might warrant re-examination.&lt;br &gt;
Most of these issues are mundane practical things. A few of them are deeper&lt;br &gt;
design choices/issues.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I didn&#039;t really look at BitC till the project went dormant. Now I have, I think it&#039;s great. Every language should have a BitC-like implementation layer.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Thu, 18 Mar 2010 09:25:10 -0400</pubDate>
</item>
<item>
 <title>Code Bubbles</title>
 <link>http://lambda-the-ultimate.org/node/3854</link>
 <description>&lt;p &gt;Most of you have probably heard about Microsoft&#039;s now-completed Visual Studio 2020 competition, where the grand prize was to meet Scott Guthrie, the effective head of the Developer Division.  People were invited to make submissions, and &lt;a href=&quot;http://www.codeproject.com/KB/dotnet/Visual_Studio_2020.aspx&quot;&gt;one of them&lt;/a&gt; was shown on Code Project and began life as the &lt;a href=&quot;http://www.codeproject.com/KB/cs/concept_ide.aspx&quot;&gt;Visual Studio 2010 Concept IDE&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;Well, Ph.D. student Andrew Bragdon has his own take on &quot;inventing the future&quot;.  &lt;a href=&quot;http://www.cs.brown.edu/people/acb/codebubbles_site.htm&quot;&gt;Code Bubbles&lt;/a&gt; is an IDE that will be presented at this years ICSE.  The level of thought that has gone into this design is simply astonishing.  It has the feel of a tiling window manager like XMonad or awesomewm, but without the traditional MDI Application or SDI Application WIMP metaphors we&#039;re used to; as a result, it eliminates a ton of clutter.  It also integrates key ideas from Eclipse contributed by &lt;a href=&quot;http://www.cs.ubc.ca/grads/resources/thesis/Nov07/Kersten_Mik.pdf&quot;&gt;Mik Kersten&lt;/a&gt; and Borland/CodeGear: The Mylyn project for integrating workflow deeply into the IDE.  This is some real inspiration for Gilad Braha&#039;s Newspeak project (Vassili Bykov&#039;s &lt;a href=&quot;http://bracha.org/hopscotch-wasdett.pdf&quot;&gt;Hopscotch IDE&lt;/a&gt;; &lt;A href=&quot;http://langnetsymposium.com/2009/talks/08-GiladBracha-Hopscotch.html&quot;&gt;LANG.NET 2009&lt;/a&gt;) and Dan Ingalls&#039; &lt;a href=&quot;http://research.sun.com/projects/lively/&quot;&gt;Lively Kernel&lt;/a&gt;, since the staple of any good Smalltalk-like language is the environment!&lt;/p&gt;
&lt;p &gt;Will makers of 30&quot; monitors will be shaking developers down by their ankles? :)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <pubDate>Thu, 11 Mar 2010 15:54:54 -0500</pubDate>
</item>
<item>
 <title>Have tracing JIT compilers won?</title>
 <link>http://lambda-the-ultimate.org/node/3851</link>
 <description>&lt;p &gt;I&#039;ve been watching the interpreter and JIT compiler competitions a bit in the JavaScript and Lua worlds. I haven&#039;t collected much organized data but the impression I&#039;m getting is that tracing JIT&#039;s are turning up as the winners: sometimes even beating programs statically compiled with GCC. Is there a growing body of evidence that tracing JIT compilers are the horse to bet on? Will a more static style JIT like Google&#039;s V8 be able to keep up?&lt;/p&gt;
&lt;p &gt;Thanks,&lt;br &gt;
Peter&lt;/p&gt;
&lt;p &gt;[I promoted this item to the front page, since the discussion is highly interesting &amp;amp; informative. -- Ehud]&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Mon, 08 Mar 2010 17:07:45 -0500</pubDate>
</item>
<item>
 <title>Extending the Scope of Syntactic Abstraction</title>
 <link>http://lambda-the-ultimate.org/node/3845</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.72.871&amp;amp;rep=rep1&amp;amp;type=pdf&quot;&gt;Extending the Scope of Syntactic Abstraction&lt;/a&gt; by Oscar Waddell and R. Kent Dybvig, POPL &#039;99. (Also: &lt;a href=&quot;http://www.cs.indiana.edu/~owaddell/papers/thesis.ps.gz&quot;&gt;Waddell&#039;s thesis&lt;/a&gt; with the same title.)&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
The benefits of module systems and lexically scoped syntactic abstraction (macro) facilities are well-established in the literature. This paper presents a system that seamlessly integrates modules and lexically scoped macros. The system is fully static, permits mutually recursive modules, and supports separate compilation. We show that more dynamic module facilities are easily implemented at the source level in the extended language supported by the system.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This paper is probably known to many LtUers, but it&#039;s never been posted, and I find it very enjoyable.&lt;/p&gt;
&lt;p &gt;It introduces two very simple forms, &lt;code &gt;(module name exports-list body)&lt;/code&gt; for naming and enclosing a body of code containing definitions and expressions, and &lt;code &gt;(import module-name)&lt;/code&gt; for importing the definitions from such a module into the current scope.&lt;/p&gt;
&lt;p &gt;Module names are lexically scoped just like variables, and modules can appear wherever definitions can occur, so one can define modules (say) inside a lambda.  Furthermore, modules and import forms may also be generated by macros.&lt;/p&gt;
&lt;p &gt;They show how more advanced features (such as qualified references (&quot;module::var&quot;), anonymous modules, selective importing and renaming, and mutually recursive modules, among others) can be built on top of this simple base using a hygienic macro system, cleverly and without much fuss.&lt;/p&gt;
&lt;p &gt;Side note: such a &quot;syntactic&quot; module system can be contrasted with R6RS&#039;s &quot;static&quot; library system. There is currently &lt;a href=&quot;http://my.opera.com/arcfide/blog/2009/10/14/a-philosophy-on-scheme-modules&quot;&gt;some discussion&lt;/a&gt; to this effect in the Scheme community.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Sun, 28 Feb 2010 01:59:21 -0500</pubDate>
</item>
<item>
 <title>Can a Biologist Fix a Radio?</title>
 <link>http://lambda-the-ultimate.org/node/3840</link>
 <description>&lt;p &gt;From the title &lt;a href=&quot;http://protein.bio.msu.ru/biokhimiya/contents/v69/pdf/bcm_1403.pdf&quot;&gt;Can a Biologist Fix a Radio? — or, What I Learned while Studying Apoptosis&lt;/a&gt;(Y. Lazebnik 2004) would seem pretty off topic for LtU.  It starts with a humorous take on how biologist might try to understand the workings of a radio, but it ends in a plea for (computer aided) formal languages and quantitative modeling of biological systems.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt; The question is how to facilitate this change, which is not exactly welcomed by many experimental biologists, to put it mildly. Learning computer programming was greatly facilitated by BASIC, a language that was not very useful to solve complex problems, but was very efficient in making one comfortable with using a computer language and demonstrating its analytical power. Similarly, a simple language that experimental scientists can use to introduce themselves to formal descriptions of biological processes would be very helpful in overcoming a fear of long forgotten mathematical symbols. Several such languages have been suggested but they are not quantitative, which limits their value. Others are designed with modeling in mind but are too new to judge as to whether they are user friendly. However, I hope that it is only a question of time before a user friendly and flexible formal language will be taught to biology students, as it is taught to engineers, as a basic requirement for their future studies. My advice to experimental biologists is to be prepared.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Further, at a meta-level, the issues he raises seem to directly mirror the challenges software developers and researchers face in trying to understand and design complex computing systems.  If nothing else it&#039;s good to know we&#039;re not alone.&lt;/p&gt;
&lt;p &gt;And it doesn&#039;t hurt at all that it&#039;s a fun read.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Wed, 24 Feb 2010 19:07:32 -0500</pubDate>
</item>
<item>
 <title>Objects to Unify Type Classes and GADTs</title>
 <link>http://lambda-the-ultimate.org/node/3837</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.mu.oz.au/~sulzmann/manuscript/objects-unify-type-classes-gadts.ps&quot;&gt;Objects to Unify Type Classes and GADTs&lt;/a&gt;, by Bruno C. d. S. Oliveira and Martin Sulzmann:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;We propose an Haskell-like language with the goal of unifying type classes and generalized algebraic datatypes (GADTs) into a single class construct. We treat classes as ﬁrst-class types and we use objects (instead of type class instances and data constructors) to define the values of those classes. We recover the ability to define functions by pattern matching by using sealed classes. The resulting language is simple and intuitive and it can be used to define, with similar convenience, the same programs that we would define in Haskell. Furthermore, unlike Haskell, dictionaries (or&lt;br &gt;
objects) can be explicitly (as well as implicitly) passed to functions and we can program in a simple object-oriented style directly.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A very interesting paper on generalizing and unifying type classes and GADTs. Classes are now first-class values, resulting in a language that resembles a traditional, albeit more elegant, object-oriented language, and which supports a form of first-class &quot;lightweight modules&quot;.&lt;/p&gt;
&lt;p &gt;The language supports the traditional use of implicit type class dispatch, but also supports explicit dispatch, unlike Haskell. The authors suggest this could eliminate much of the duplication in the Haskell standard library of functions that take a type class or an explicit function, eg. insert/insertBy and sort/sortBy, although some syntactic sugar is needed to make this more concise.&lt;/p&gt;
&lt;p &gt;Classes are open to extension by default, although a class can also be explicitly specified as &quot;sealed&quot;, in which case extension is forbidden and you can pattern match on the cases. Furthermore, GADTs can now also carry methods, thus introducing dispatch to algebraic types. This fusion does not itself solve the expression problem, though it does ease the burden through the first-class support of both types of extension. You can see the Scala influences here.&lt;/p&gt;
&lt;p &gt;I found this paper via the &lt;a href=&quot;http://www.reddit.com/r/haskell/comments/b4o6g/objects_to_unify_type_classes_and_gadts_ps/&quot;&gt;Haskell sub-reddit&lt;/a&gt;, which also links to &lt;a href=&quot;http://sneezy.cs.nott.ac.uk/fun/feb-08/bruno-slides.pdf&quot;&gt;a set of slides&lt;/a&gt;. The authors acknowledge Scala as an influence, and as future work, suggest extensions like type families and to support more module-like features, such as nesting and opaque types.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/12">Object-Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/19">Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Mon, 22 Feb 2010 16:51:40 -0500</pubDate>
</item>
<item>
 <title>Testing release of a platform for hosting pure functional web applications</title>
 <link>http://lambda-the-ultimate.org/node/3836</link>
 <description>&lt;p &gt;I&#039;d like to announce the public debut of a service I&#039;ve been working on.  Among other things, it provides &quot;cloud hosting&quot; for web applications written in &lt;a href=&quot;http://www.impredicative.com/ur/&quot;&gt;Ur/Web&lt;/a&gt;, a domain-specific functional language for &quot;Web 2.0 programming.&quot;&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;http://www.graftid.com/&quot;&gt;http://www.graftid.com/&lt;/a&gt;&lt;/p&gt;
&lt;p &gt;This service (called Graftid) also enables communities of developers to work together to build tools that non-programmers can use to build customized web sites quickly.  Anyone can upload a site-generator GUI, which is implemented in Ur/Web and also generates Ur/Web code, based on what a user enters into the GUI.  Everything is statically-typed, and it&#039;s possible to use combinators to minimize the cost of building a new GUI.  Every GUI inherits a platform for automatic deployment of applications, without the need to write a line of code that has a server-side side effect.&lt;/p&gt;
&lt;p &gt;I&#039;m looking for curious folks who might like to put this platform through its paces, finding bugs, security-oriented and otherwise.  I hope that many LtU readers will find this a very pleasant platform for building buzzword-compliant web apps, without the need to learn much about the buzzwords and their associated technologies. :)&lt;/p&gt;
&lt;p &gt;I also have a related question that I thought I&#039;d include with this post: We&#039;re all used to encapsulation for examples like data structures: a class or module &quot;owns&quot; a representation, and the representation may only be accessed by going through the class or module&#039;s published interface.  Ur/Web extends this facility to let you code a module that owns a cookie, a database table, a subtree of the client-side DOM for a particular page rendering, etc..  Think &quot;Facebook apps&quot; with static enforcement of which app may touch which resource, but without the need for any dynamic enforcement, and with the possibility for running all the apps on the same server; we just combine first-class web app pieces with standard encapsulation techniques.  Does anyone know of any other systems that allow this?  Has the desirability of this facility been articulated somewhere?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Sat, 20 Feb 2010 10:33:22 -0500</pubDate>
</item>
<item>
 <title>Reminder: OOPSLA is now SPLASH</title>
 <link>http://lambda-the-ultimate.org/node/3833</link>
 <description>&lt;p &gt;The &lt;a href=&quot;http://splashcon.org/index.php?option=com_content&amp;amp;view=section&amp;amp;layout=blog&amp;amp;id=1&amp;amp;Itemid=54&quot;&gt;call for papers&lt;/a&gt; for the &lt;a href=&quot;http://splashcon.org&quot;&gt;SPLASH conference&lt;/a&gt; is now up. &lt;/p&gt;
&lt;p &gt;SPLASH is the conference formerly known as OOPLSA, and the &lt;a href=&quot;http://splashcon.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=47:oopsla-research-papers&amp;amp;catid=34:due-march-25-2010&amp;amp;Itemid=55&quot;&gt;OOPSLA&lt;/a&gt; name is now being used for one of the two main colocated events at SPLASH (the other being Onward!). So if you&#039;ve got a paper full of interesting results, send it in by March 25. &lt;/p&gt;
&lt;p &gt;EDIT: both Martin Rinard in the comments below, and William Cook in email, have been very emphatic that the name change is to make clear that the conference is not just about objects any more -- anything that&#039;s (a) about programming languages maximally broadly construed, and (b) good work, is fair game for the conference now. Sorry for any confusion!&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Wed, 17 Feb 2010 13:16:39 -0500</pubDate>
</item>
<item>
 <title>A Lambda Calculus for Real Analysis</title>
 <link>http://lambda-the-ultimate.org/node/3831</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://paultaylor.eu/ASD/lamcra/&quot;&gt;A Lambda Calculus for Real Analysis&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Abstract Stone Duality is a revolutionary paradigm for general topology that describes computable continuous functions directly, without using set theory, infinitary lattice theory or a prior theory of discrete computation. Every expression in the calculus denotes both a continuous function and a program, and the reasoning looks remarkably like a sanitised form of that in classical topology. This is an introduction to ASD for the general mathematician, with application to elementary real analysis.&lt;/p&gt;
&lt;p &gt;This language is applied to the Intermediate Value Theorem: the solution of equations for continuous functions on the real line. As is well known from both numerical and constructive considerations, the equation cannot be solved if the function &quot;hovers&quot; near 0, whilst tangential solutions will never be found.&lt;/p&gt;
&lt;p &gt;In ASD, both of these failures and the general method of finding solutions of the equation when they exist are explained by the new concept of overtness. The zeroes are captured, not as a set, but by higher-type modal operators. Unlike the Brouwer degree, these are defined and (Scott) continuous across singularities of a parametric equation.&lt;/p&gt;
&lt;p &gt;Expressing topology in terms of continuous functions rather than sets of points leads to treatments of open and closed concepts that are very closely lattice- (or de Morgan-) dual, without the double negations that are found in intuitionistic approaches. In this, the dual of compactness is overtness. Whereas meets and joins in locale theory are asymmetrically finite and infinite, they have overt and compact indices in ASD.&lt;/p&gt;
&lt;p &gt;Overtness replaces metrical properties such as total boundedness, and cardinality conditions such as having a countable dense subset. It is also related to locatedness in constructive analysis and recursive enumerability in recursion theory.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Paul Taylor is deadly serious about the intersection of logic, mathematics, and computation. I came across this after beating my head against &lt;a href=&quot;http://www.amazon.com/Probability-Theory-Logic-Science-Vol/dp/0521592712/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1266357272&amp;amp;sr=8-1&quot;&gt;Probability Theory: The Logic of Science&lt;/a&gt; and &lt;a href=&quot;http://axiomaticeconomics.com/&quot;&gt;Axiomatic Theory of Economics&lt;/a&gt; over the weekend, realizing that my math just wasn&#039;t up to the tasks, and doing a Google search for &quot;constructive real analysis.&quot; &quot;Real analysis&quot; because it was obvious that that was what both of the aforementioned texts were relying on; &quot;constructive&quot; because I&#039;d really like to develop proofs in Coq/extract working code from them. This paper was on the second page of results. Paul&#039;s name was familiar (and not just because I share it with him); he translated Jean-Yves Girard&#039;s regrettably out-of-print &lt;a href=&quot;http://paultaylor.eu/stable/Proofs+Types&quot;&gt;Proofs and Types&lt;/a&gt; to English and maintains a very popular set of tools for typesetting &lt;a href=&quot;http://paultaylor.eu/diagrams/&quot;&gt;commutative diagrams&lt;/a&gt; using LaTeX.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/22">Category Theory</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/13">Logic/Declarative</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/15">Meta-Programming</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/21">Type Theory</category>
 <pubDate>Tue, 16 Feb 2010 17:00:42 -0500</pubDate>
</item>
<item>
 <title>Joe-E: A Security-Oriented Subset of Java</title>
 <link>http://lambda-the-ultimate.org/node/3830</link>
 <description>&lt;small&gt;&lt;a href=&quot;http://www.cs.berkeley.edu/~daw/papers/joe-e-ndss10.pdf&quot;&gt;Joe-E: A Security-Oriented Subset of Java&lt;/a&gt;. Adrian Mettler, David Wagner, and Tyler Close. To appear at ISOC NDSS 2010.&lt;/small&gt;&lt;p&gt;
&lt;blockquote&gt;
We present Joe-E, a language designed to support the development of secure software systems. Joe-E is a subset of Java that makes it easier to architect and implement programs with strong security properties that can be checked
during a security review. It enables programmers to apply the principle of least privilege to their programs; implement application-specific reference monitors that cannot be bypassed; introduce and use domain-specific security abstractions; safely execute and interact with untrusted code; and build secure, extensible systems. Joe-E demonstrates how it is possible to achieve the strong security properties of an object-capability language while retaining the features and feel of a mainstream object-oriented language...
&lt;/blockquote&gt;&lt;p&gt;
Section 5.2 discuss how Joe-E leverages Java static typing. Joe-E is implemented as a source-code verifier not a bytecode verifier. Section 6 of the paper explains this design choice.&lt;p&gt;
Joe-E was mentioned on LtU in the &lt;a href=&quot;http://lambda-the-ultimate.org/node/2560&quot;&gt;past&lt;/a&gt; and is available &lt;a href=&quot;http://www.joe-e.org&quot;&gt;here&lt;/a&gt;.</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/29">Semantics</category>
 <pubDate>Tue, 16 Feb 2010 01:50:39 -0500</pubDate>
</item>
<item>
 <title>Recent Progress in Quantum Algorithms</title>
 <link>http://lambda-the-ultimate.org/node/3825</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
Quantum theory has acquired a reputation as an impenetrable theory accessible only after acquiring a significant theoretical physics background. One of the lessons of quantum computing is that this is not necessarily true: quantum computing can be learned without mastering vast amounts of physics, but instead by learning a few simple differences between quantum and classical information.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;A well written &lt;a href=&quot;http://cacm.acm.org/magazines/2010/2/69352-recent-progress-in-quantum-algorithms/fulltext&quot;&gt;article&lt;/a&gt; in the CACM.&lt;/p&gt;
&lt;p &gt;There&#039;s also &lt;a href=&quot;http://herpolhode.com/rob/qcintro.pdf&quot;&gt;slides&lt;/a&gt; for a talk by Rob Pike on the same topic.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Mon, 15 Feb 2010 08:03:47 -0500</pubDate>
</item>
<item>
 <title>A few billion lines of code later: using static analysis to find bugs in the real world</title>
 <link>http://lambda-the-ultimate.org/node/3824</link>
 <description>&lt;p &gt;&lt;i &gt;Al Bessey, Ken Block, Ben Chelf, Andy Chou, Bryan Fulton, Seth Hallem, Charles Henri-Gros, Asya Kamsky, Scott McPeak, and Dawson Engler. &lt;a href=&quot;http://cacm.acm.org/magazines/2010/2/69354-a-few-billion-lines-of-code-later/fulltext&quot;&gt;&quot;A few billion lines of code later: using static analysis to find bugs in the real world&quot;&lt;/a&gt;, Communications of the ACM, Volume 53, Issue 2, February 2010, Pages 66-75.&lt;/i&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;How Coverity built a bug-finding tool, and a business, around the unlimited supply of bugs in software systems.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is a fascinating piece by Dawson Engler &amp;amp; co. on their experiences in commercializing their static analysis research through Coverity. It&#039;s an entertaining read, with many interesting anecdotes from various customers. But it also contains a number of useful insights about the difference between a research tool and a commercial product, the kinds of static analyses that do and don&#039;t make sense in a commercial context, and the multitude of problems caused by the lack of programming language standardization:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Checking code deeply requires understanding the code&#039;s semantics. The most basic requirement is that you parse it. Parsing is considered a solved problem. Unfortunately, this view is naïve, rooted in the widely believed myth that programming languages exist.&lt;/blockquote&gt;&lt;/p&gt;
&lt;p &gt;There&#039;s a lot of useful information in there for anyone interested in industrial-strength static analysis. There are also a lot of worthwhile things to keep in mind if you&#039;re designing a programming language, and want to make sure it&#039;s as friendly as possible to future static analysis tools. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 12 Feb 2010 23:20:37 -0500</pubDate>
</item>
<item>
 <title>Bart De Smet on .NET 4&#039;s System.Interactive library</title>
 <link>http://lambda-the-ultimate.org/node/3822</link>
 <description>&lt;p &gt;Microsoft employee Bart De Smet, who has a widely trafficked blog, has been writing a lot in the past few months about a new library being designed by his group at Microsoft.  Here is a whole truckload of blogpost links, in chronological order, which appears to be how Bart intended folks to read it:&lt;/p&gt;
&lt;p &gt;Dec 26, 2009: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2009/12/26/more-linq-with-system-interactive-the-ultimate-imperative.aspx&quot;&gt;More LINQ with System.Interactive – The Ultimate Imperative&lt;/a&gt;&lt;br &gt;
Dec 27, 2009: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2009/12/27/more-linq-with-system-interactive-exceptional-exception-handling.aspx&quot;&gt;More LINQ with System.Interactive – Exceptional Exception Handling&lt;/a&gt;&lt;br &gt;
Dec 28, 2009: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2009/12/28/more-linq-with-system-interactive-sequences-under-construction.aspx&quot;&gt;More LINQ with System.Interactive – Sequences under construction&lt;/a&gt;&lt;br &gt;
Dec 29, 2009: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2009/12/29/more-linq-with-system-interactive-exploiting-the-code-data-relationship.aspx&quot;&gt;More LINQ with System.Interactive – Exploiting the code = data relationship&lt;/a&gt;&lt;br &gt;
Dec 30, 2009: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2009/12/30/more-linq-with-system-interactive-more-combinators-for-your-swiss-army-knife.aspx&quot;&gt;More LINQ with System.Interactive – More combinators for your Swiss Army Knife&lt;/a&gt;&lt;br &gt;
Jan 01, 2010: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2010/01/01/the-essence-of-linq-minlinq.aspx&quot;&gt;The Essence of LINQ – MinLINQ&lt;/a&gt;&lt;br &gt;
Jan 07, 2010: &lt;a href=&quot;http://community.bartdesmet.net/blogs/bart/archive/2010/01/07/more-linq-with-system-interactive-functional-fun-and-taming-side-effects.aspx&quot;&gt;More LINQ with System.Interactive – Functional fun and taming side-effects&lt;/a&gt;&lt;/p&gt;
&lt;p &gt;I don&#039;t usually read blogs, but I thought this was a pretty cogent series of posts.  Also, judging by how interested LtU and the surrounding blogosphere community was from Erik Meijer&#039;s presentation on the Rx framework at the &lt;A href=&quot;http://lambda-the-ultimate.org/node/3619&quot;&gt;JVM Language Summit 2009&lt;/a&gt;, I figured people would like this as well.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <pubDate>Fri, 12 Feb 2010 13:37:30 -0500</pubDate>
</item>
<item>
 <title>Google TechTalk: The Evolution of End-User Programming</title>
 <link>http://lambda-the-ultimate.org/node/3821</link>
 <description>&lt;p &gt;End-User Programming has been a topical discussion lately in mainstream software outlets.  The IEEE journal &lt;em &gt;Software&lt;/em&gt; recently had an issue dedicated to end-user programming challenges; see Joel Brandt&#039;s &lt;a href=&quot;http://hci.stanford.edu/publications/2009/brandt_software09_opportunistic_programming.pdf&quot;&gt;Opportunistic Programming: Writing Code to Prototype, Ideate and Discover&lt;/a&gt; and Martin Erwig&#039;s &lt;a href=&quot;http://web.engr.oregonstate.edu/~erwig/papers/SEforSpreadsheets_IEEESoftware09.pdf&quot;&gt;Software Engineering for Spreadsheets&lt;/a&gt;.  Also, a few years ago a consortium of universities formed &lt;a href=&quot;http://eusesconsortium.org/&quot;&gt;End-Users Shaping Effective Software&lt;/a&gt;, which includes Martin Erwig&#039;s PLT work on &lt;A href=&quot;http://web.engr.oregonstate.edu/~erwig/units/&quot;&gt;bringing type systems to spreadsheets&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;Recently, Google invited Allen Cypher to give a TechTalk on &lt;a href=&quot;http://www.youtube.com/watch?v=MxpjGZinies&quot;&gt;The Evolution of End-User Programming&lt;/a&gt;, which appears to be a recapitulation of his &lt;a href=&quot;http://dx.doi.org/10.1109/VLHCC.2009.5295315&quot;&gt;VL/HCC paper by the same name&lt;/a&gt;.  Allen was the editor of &lt;a href=&quot;http://acypher.com/wwid/WWIDToC.html&quot;&gt;Watch What I Do&lt;/a&gt; (an &lt;a href=&quot;http://lambda-the-ultimate.org/papers&quot;&gt;LtU recommended reading&lt;/a&gt;).&lt;/p&gt;
&lt;p &gt;Towards the end of the talk, Allen mentions the practical issues of knowing when to use what tool, and that novice users struggle with finding the right tool for the right job.  What&#039;s notable about discussion of end-user software engineering is how little attention its proponents pay to its critics biggest criticism: Security.  In the IEEE Software realm, probably the most open critic has been Warren Harrison (see: &lt;A href=&quot;http://eusesconsortium.org/docs/ieeeSoftware-editorial-JulAug04.pdf&quot;&gt;The Dangers of End-User Programming&lt;/a&gt;).  For example, Ko&#039;s 2009 ACM Computing Survey &lt;a href=&quot;http://www.cs.cmu.edu/~Compose/Ko2009EndUserSoftwareEngineering.pdf&quot;&gt;The State of the Art in End-User Software Engineering&lt;/a&gt; only mentions security once, in the context of designing end-user description languages for security, but does not assess how well this technique compares to techniques software engineers might employ.  It seems strange that leading researchers in visual languages and end-user programming do not discuss the potential usage of object capability systems, especially as companies try to monetize a percentage of the value added by users who mash-up their service with other services.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/17">Software Engineering</category>
 <pubDate>Fri, 12 Feb 2010 13:24:32 -0500</pubDate>
</item>
<item>
 <title>Computational Semantics with Functional Programming </title>
 <link>http://lambda-the-ultimate.org/node/3820</link>
 <description>The manuscript of the book &lt;a href=&quot;http://homepages.cwi.nl/~jve/cs/&quot;&gt;Computational Semantics with Functional Programming&lt;/A&gt; by Jan van Eijck and Christina Unger, as well as related software, is available online.&lt;p&gt;
The introductory chapters are probably going to be unnecessary for LtU readers, but once things get going there is a lot to learn here  if you are interested in formal semantics of natural language, especially in the Montague-style. And if this doesn&#039;t ring a bell - just search for &quot;continutation&quot; in the manuscript, and be prepared to meet old friends (you know who you are) in a new context.&lt;p&gt;
&lt;small&gt;If the contributing editors will neglect their duties, LtU will wither and die. Hint, hint.&lt;/small&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/9">Misc Books</category>
 <pubDate>Thu, 11 Feb 2010 21:32:08 -0500</pubDate>
</item>
</channel>
</rss>
