<?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>Common Lisp: The Untold Story</title>
 <link>http://lambda-the-ultimate.org/node/4510</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.nhplace.com/kent/Papers/cl-untold-story.html&quot;&gt;Common Lisp: The Untold Story&lt;/a&gt;, by Kent Pitman. A nice paper about the history of my favorite lightweight dynamic language.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;This paper summarizes a talk given at “Lisp50@OOPSLA,” the 50th Anniversary of Lisp workshop, Monday, October 20, 2008, an event co-located with the OOPSLA’08 in Nashville, TN, in which I offered my personal, subjective account of how I came to be involved with Common Lisp and the Common Lisp standard, and of what I learned from the process.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Some of my favorite parts are:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;How CL was viewed as competition to C++. (Really, what were they thinking?)&lt;/li&gt;
&lt;li &gt;How CL was a reaction to the threat of Interlisp, and how &quot;CLOS was the price of getting the Xerox/Interlisp community folded back into Lisp community as a whole&quot; (&lt;a href=&quot;https://groups.google.com/d/msg/comp.lang.lisp/V7yiSIfLEis/RqglAeFopC0J&quot;&gt;link&lt;/a&gt;).&lt;/li&gt;
&lt;li &gt;How individuals shaped the processes of standardization. MIT Sloan did an &lt;a href=&quot;http://ccs.mit.edu/papers/CCSWP166.html&quot;&gt;analysis of these processes&lt;/a&gt;.&lt;/li&gt;
&lt;li &gt;How the two- to three-day roundtrip time for UUCP emails to Europe may be responsible for the creation of the separate &lt;a href=&quot;http://en.wikipedia.org/wiki/EuLisp&quot;&gt;EuLisp&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p &gt;I have a soft spot for CL, so I am biased, but I think &lt;a href=&quot;http://en.wikipedia.org/wiki/Greenspun&amp;#039;s_tenth_rule&quot;&gt;Greenspun&#039;s Tenth Rule&lt;/a&gt; (and Robert Morris&#039; corollary) still holds - CL is the language that newer dynamic languages, such as Perl 6, JavaScript, and Racket are asymptotically approaching (and exceeding in some cases, which is why I view CL as a lightweight language today.)&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/7">History</category>
 <pubDate>Wed, 02 May 2012 09:13:21 -0400</pubDate>
</item>
<item>
 <title>Evaluating the Design of the R Language</title>
 <link>http://lambda-the-ultimate.org/node/4507</link>
 <description>&lt;p &gt;From our &lt;a href=&quot;http://lambda-the-ultimate.org/node/4503&quot;&gt;recent discussion&lt;/a&gt; on R, I thought &lt;a href=&quot;http://www.cs.purdue.edu/homes/jv/pubs/ecoop12.pdf&quot;&gt;this paper&lt;/a&gt; deserved its own post (ECOOP final version) by Floreal Morandat, Brandon Hill, Leo Osvald, and Jan Vitek; abstract:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;R is a dynamic language for statistical computing that combines lazy functional features and object-oriented programming. This rather unlikely linguistic cocktail would probably never have been prepared by computer scientists, yet the language has become surprisingly popular. With millions of lines of R code available in repositories, we have an opportunity to evaluate the fundamental choices underlying the R language design. Using a combination of static and dynamic program analysis we assess the success of different language features.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Excerpts from the paper:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;R comes equipped with a rather unlikely mix of features. In a nutshell, R is a dynamic language in the spirit of Scheme or JavaScript, but where the basic data type is the vector. It is functional in that functions are ﬁrst-class values and arguments are passed by deep copy. Moreover, R uses lazy evaluation by default for all arguments, thus it has a pure functional core. Yet R does not optimize recursion, and instead encourages vectorized operations. Functions are lexically scoped and their local variables can be updated, allowing for an imperative programming style. R targets statistical computing, thus missing value support permeates all operations.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt;One of our discoveries while working out the semantics was how eager evaluation of promises turns out to be. The semantics captures this with C[]; the only cases where promises are not evaluated is in the arguments of a function call and when promises occur in a nested function body, all other references to promises are evaluated. In particular, it was surprising and unnecessary to force assignments as this hampers building inﬁnite structures. Many basic functions that are lazy in Haskell, for example, are strict in R, including data type constructors. As for sharing, the semantics cleary demonstrates that R prevents sharing by performing copies at assignments.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt;The R implementation uses copy-on-write to reduce the number of copies. With superassignment, environments can be used as shared mutable data structures. The way assignment into vectors preserves the pass-by-value semantics is rather unusual and, from personal experience, it is unclear if programmers understand the feature. ... It is noteworthy that objects are mutable within a function (since ﬁelds are attributes), but are copied when passed as an argument.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;But then, they do a corpus analysis to see what features programmers actually use! We don&#039;t do enough of these in PL; examples from the paper:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;R symbol lookup is context sensitive. This feature, which is neither Lisp nor Scheme scoping, is exercised in less than 0.05% of function name lookups...The only symbols for which this feature actually mattered in the Bioconductor vignettes are c and file, both popular variables names and built-in functions.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt;Lazy evaluation is a distinctive feature of R that has the potential for reducing unnecessary work performed by a computation. Our corpus, however, does not bear this out. Fig. 14(a) shows the rate of promise evaluation across all of our data sets. The average rate is 90%. Fig. 14(b) shows that on average 80% of promises are evaluated in the ﬁrst function they are passed into.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;And so on. A lot of great data-driven insights. &lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Tue, 24 Apr 2012 20:34:10 -0400</pubDate>
</item>
<item>
 <title>Why and How People Use R</title>
 <link>http://lambda-the-ultimate.org/node/4503</link>
 <description>&lt;p &gt;&lt;a href=&quot;//channel9.msdn.com/Events/Lang-NEXT/Lang-NEXT-2012/Why-and-How-People-Use-R&quot;&gt;Compelling lecture by John Cook&lt;/a&gt;&lt;br &gt;&lt;br &gt;
Abstract:&lt;/br&gt;&lt;br &gt;
&lt;i &gt;R is a strange, deeply flawed language that nevertheless has an enthusiastic and rapidly growing user base. What about R accounts for its popularity in its niche? What can language designers learn from R&#039;s success?&lt;/i&gt;&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Fri, 20 Apr 2012 23:54:14 -0400</pubDate>
</item>
<item>
 <title>Iverson&#039;s _A Programming Language_</title>
 <link>http://lambda-the-ultimate.org/node/4501</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.jsoftware.com/papers/APL.htm&quot;&gt;Online.&lt;/a&gt;&lt;p &gt;
It&#039;s never too late to familiarize yourself with the classics.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/9">Misc Books</category>
 <pubDate>Sun, 15 Apr 2012 15:49:09 -0400</pubDate>
</item>
<item>
 <title>Retrospective Thoughts on BitC</title>
 <link>http://lambda-the-ultimate.org/node/4490</link>
 <description>&lt;p &gt;I believe Dr. Shapiro posts here sometimes, and I&#039;m sure plenty of people here have already seen and read the post, but for those of you who wouldn&#039;t otherwise see it:&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;http://www.coyotos.org/pipermail/bitc-dev/2012-March/003300.html&quot;&gt;Retrospective Thoughts on BitC&lt;/a&gt; answers: What Ever Happened To BitC?&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
In the large, there were four sticking points for the current design:&lt;/p&gt;
&lt;p &gt;    The compilation model.&lt;br &gt;
    The insufficiency of the current type system w.r.t. by-reference and reference types.&lt;br &gt;
    The absence of some form of inheritance.&lt;br &gt;
    The instance coherence problem.
&lt;/p&gt;&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Fri, 23 Mar 2012 19:08:00 -0400</pubDate>
</item>
<item>
 <title>Parsing: The Solved Problem That Isn&#039;t</title>
 <link>http://lambda-the-ultimate.org/node/4489</link>
 <description>&lt;p &gt;In the blog post &lt;a href=&quot;http://tratt.net/laurie/tech_articles/articles/parsing_the_solved_problem_that_isnt&quot;&gt;Parsing: The Solved Problem That Isn&#039;t&lt;/a&gt; Laurence Tratt discusses some interesting unsolved practical problems with parsing especially in combining grammars&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;The general consensus, therefore, is that parsing is a solved problem. If you&#039;ve got a parsing problem for synthetic languages, one of the existing tools should do the job. [...]&lt;/p&gt;
&lt;p &gt;One of the things that&#039;s become increasingly obvious to me over the past few years is that the general consensus breaks down for one vital emerging trend: language composition. &quot;Composition&quot; is one of those long, complicated, but often vague terms that crops up a lot in theoretical work. Fortunately, for our purposes it means something simple: grammar composition, which is where we add one grammar to another and have the combined grammar parse text in the new language (exactly the sort of thing we want to do with Domain Specific Languages (DSLs)). To use a classic example, imagine that we wish to extend a Java-like language with SQL [...]&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;He goes on to mention several example problems:
&lt;ul &gt;
&lt;li &gt;Two LL or LR grammars may combine to produce a grammar that is neither.&lt;/li&gt;
&lt;li &gt;Two unambiguous grammars may combine to produce an ambiguous grammar.&lt;/li&gt;
&lt;li &gt;Two PEG grammars may combine to produce something that doesn&#039;t do what you want due to left bias.&lt;/li&gt;
&lt;/ul&gt;
&lt;p &gt;What&#039;s the current state of the art?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Thu, 22 Mar 2012 17:01:20 -0400</pubDate>
</item>
<item>
 <title>Programming with Algebraic Effects and Handlers</title>
 <link>http://lambda-the-ultimate.org/node/4481</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://math.andrej.com/2012/03/08/programming-with-algebraic-effects-and-handlers/&quot;&gt;Programming with Algebraic Effects and Handlers&lt;/a&gt;. Andrej Bauer and Matija Pretnar, arXiv preprint.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Eff is a programming language based on the algebraic approach to computational effects, in which effects are viewed as algebraic operations and effect handlers as homomorphisms from free algebras. Eff supports first-class effects and handlers through which we may easily define new computational effects, seamlessly combine existing ones, and handle them in novel ways. We give a denotational semantics of eff and discuss a prototype implementation based on it. Through examples we demonstrate how the standard effects are treated in eff, and how eff supports programming techniques that use various forms of delimited continuations, such as backtracking, breadth-first search, selection functionals, cooperative multi-threading, and others.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Eff has been &lt;a href=&quot;http://lambda-the-ultimate.org/node/4090&quot;&gt;discussed here before&lt;/a&gt;, and it&#039;s nice to see some more progress and a much more complete introduction. The paper is intended for a general audience (well, a general audience of PL enthusiasts). It&#039;s quite clear and contains a wealth of examples.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <pubDate>Tue, 13 Mar 2012 01:46:22 -0400</pubDate>
</item>
<item>
 <title>Examples of Lisp Code Typography</title>
 <link>http://lambda-the-ultimate.org/node/4477</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://kazimirmajorinc.blogspot.com/2012/03/few-examples-of-lisp-code-typography.html&quot;&gt;Few Examples of Lisp Code Typography&lt;/a&gt;, spanning 54 years, collected by Newlisp&#039;s Kazimir Majorinc.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/1">LtU Forum</category>
 <pubDate>Thu, 08 Mar 2012 21:14:32 -0500</pubDate>
</item>
<item>
 <title>Language mystery: identify the source language to a worm based on its object code</title>
 <link>http://lambda-the-ultimate.org/node/4476</link>
 <description>&lt;p &gt;Here&#039;s a fun challenge for LtU.  The team at Securelist is analyzing a worm called Duqu and found a few interesting things.  One of them is that they can&#039;t figure out the source language for the core framework.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;After having performed countless hours of analysis, we are 100% confident that the Duqu Framework was not programmed with Visual C++. It is possible that its authors used an in-house framework to generate intermediary C code, or they used another completely different programming language.&lt;/p&gt;
&lt;p &gt;We would like to make an appeal to the programming community and ask anyone who recognizes the framework, toolkit or the programming language that can generate similar code constructions, to contact us or drop us a comment in this blogpost. We are confident that with your help we can solve this deep mystery in the Duqu story.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;I&#039;m not clear on how much knowing the source language helps with the security analysis, but what else were you doing with your time?  All the details and clues in the object file can be found &lt;a href=&quot;http://www.securelist.com/en/blog/667/The_Mystery_of_the_Duqu_Framework&quot;&gt;on their blog&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Thu, 08 Mar 2012 21:14:04 -0500</pubDate>
</item>
<item>
 <title>What does focusing tell us about language design?</title>
 <link>http://lambda-the-ultimate.org/node/4471</link>
 <description>&lt;p &gt;A blog post about &lt;a href=&quot;http://www.cs.bham.ac.uk/~pbl/cbpv.html&quot;&gt;Call-By-Push-Value&lt;/a&gt; by Rob Simmons: &lt;a href=&quot;http://requestforlogic.blogspot.com/2012/03/what-does-focusing-tell-us-about.html&quot;&gt;What does focusing tell us about language design?&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
I think that one of the key observations of focusing/CBPV is that programs are dealing with two different things - data and computation - and that we tend to get the most tripped up when we confuse the two.&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;Data is classified by data types (a.k.a. positive types). Data is defined by how it is constructed, and the way you use data is by pattern-matching against it.
&lt;li &gt;Computation is classified by computation types (a.k.a. negative types). Computations are defined their eliminations - that is, by how they respond to signals/messages/pokes/arguments.
&lt;/ul&gt;
&lt;p &gt;There are two things I want to talk about, and they&#039;re both recursive types: call-by-push-value has positive recursive types (which have the feel of inductive types and/or algebras and/or what we&#039;re used to as datatypes in functional languages) and negative recursive types (which have the feel of recursive, lazy records and/or &quot;codata&quot; whatever that is and/or coalgebras and/or what William Cook calls objects). Both positive and negative recursive types are treated by Paul Blain Levy in his thesis (section 5.3.2) and in the Call-By-Push Value book (section 4.2.2).&lt;/p&gt;
&lt;p &gt;In particular, I want to claim that Call-By-Push-Value and focusing suggest two fundamental features that should be, and generally aren&#039;t (at least simultaneously) in modern programming languages:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt;Support for structured data with rich case analysis facilities (up to and beyond what are called views)
&lt;li &gt;Support for recursive records and negative recursive types.
&lt;/ul&gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Previously on Rob&#039;s blog: &lt;a href=&quot;http://requestforlogic.blogspot.com/2011/08/embracing-and-extending-levy-language.html&quot;&gt;Embracing and extending the Levy language&lt;/a&gt;; on LtU: &lt;a href=&quot;http://lambda-the-ultimate.org/node/1975&quot;&gt;Call by push-value&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/4314&quot;&gt;Levy: a Toy Call-by-Push-Value Language&lt;/a&gt;.&lt;/p&gt;
&lt;p &gt;And let me also repeat CBPV&#039;s slogan, which is one of the finest in PL advocacy: &lt;em &gt;Once the fine structure has been exposed, why ignore it?&lt;/em&gt;&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/14">OOP</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Mon, 05 Mar 2012 10:17:25 -0500</pubDate>
</item>
<item>
 <title>Informed dissent: William Cook contra Bob Harper on OOP</title>
 <link>http://lambda-the-ultimate.org/node/4468</link>
 <description>&lt;p &gt;Ongoing discussion that you can follow on William Cook&#039;s &lt;a href=&quot;http://wcook.blogspot.com/&quot;&gt;blog&lt;/a&gt;.&lt;p &gt;
I am not going to take sides (or keep points). I know everyone here has an opinion on the issue, and many of the arguments were discussed here over the years. I still think LtU-ers will want to follow this.&lt;p &gt;
Given the nature of the topic, I remind everyone to review our policies before posting &lt;em &gt;here&lt;/em&gt; on the issue.  &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/14">OOP</category>
 <pubDate>Sat, 03 Mar 2012 14:04:38 -0500</pubDate>
</item>
<item>
 <title>Announcing Lang.NEXT - A Free Event for PL Designers and Implementers Hosted By Microsoft</title>
 <link>http://lambda-the-ultimate.org/node/4467</link>
 <description>&lt;p &gt;The event is held at the Microsoft Campus on Apr 2-4 with talks, panels and discussions from 9-5 every day. Attendance is free, and includes lunch.  Details &lt;a href=&quot;http://lambda-the-ultimate.org/node/4465&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Sat, 03 Mar 2012 10:21:34 -0500</pubDate>
</item>
<item>
 <title>Adding Delimited and Composable Control to a Production Programming Environment</title>
 <link>http://lambda-the-ultimate.org/node/4466</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.utah.edu/plt/publications/icfp07-fyff.pdf&quot;&gt;Adding Delimited and Composable Control to a Production Programming Environment&lt;/a&gt; (&lt;a href=&quot;http://www.cs.utah.edu/plt/delim-cont/&quot;&gt;add&#039;l material&lt;/a&gt;), Matthew Flatt, Gang Yu, Robert Bruce Findler, Matthias Felleisen, ICFP 2007.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Operators for delimiting control and for capturing composable continuations litter the landscape of theoretical programming language research. Numerous papers explain their advantages, how the operators explain each other (or don’t), and other aspects of the operators’ existence. Production programming languages, however, do not support these operators, partly because their relationship to existing and demonstrably useful constructs—such as exceptions and dynamic binding—remains relatively unexplored. In this paper, we report on our effort of translating the theory of delimited and composable control into a viable implementation for a production system. The report shows how this effort involved a substantial design element, including work with a formal model, as well as significant practical exploration and engineering. The resulting version of PLT Scheme incorporates the expressive combination of delimited and composable control alongside dynamic-wind, dynamic binding, and exception handling. None of the additional operators subvert the intended benefits of existing control operators, so that programmers can freely mix and match control operators.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;Another tour de force by the PLT folks. Does your language have &lt;a href=&quot;http://lambda-the-ultimate.org/node/4334&quot;&gt;delimited control&lt;/a&gt;, &lt;a href=&quot;http://lambda-the-ultimate.org/node/1584&quot;&gt;delimited dynamic binding&lt;/a&gt;, and exceptions? It&#039;s the new gold standard, and so far only Racket and O&#039;Caml qualify (and maybe Haskell and Scala?)&lt;/p&gt;
&lt;p &gt;Racket&#039;s implementation is additionally interesting because it achieves backwards compatibility with code written using undelimited call/cc and dynamic-wind. The authors mention that a simpler solution would be possible without this compatibility - based on &lt;em &gt;control filters&lt;/em&gt; from the &lt;a href=&quot;http://lambda-the-ultimate.org/node/216&quot;&gt;Subcontinuations&lt;/a&gt; paper.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/8">Implementation</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/10">Paradigms</category>
 <pubDate>Fri, 02 Mar 2012 14:09:40 -0500</pubDate>
</item>
<item>
 <title>Milawa on Jitawa: a Verified Theorem Prover</title>
 <link>http://lambda-the-ultimate.org/node/4464</link>
 <description>&lt;p &gt;&lt;a href=&quot;http://www.cs.utexas.edu/users/jared/milawa/Web/&quot;&gt;Milawa&lt;/a&gt;&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Aug 2010 - May 2011. Magnus Myreen has developed a verified Lisp system, named Jitawa, which can run Milawa. Our paper about this project was accepted to ITP 2011.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is pretty interesting: Milawa was already &quot;self-verifying,&quot; in the sense explained on the page. More recently, it&#039;s been made to run on a verified Lisp runtime, so that means the entire stack down to the X86_64 machine code is verified. Milawa itself is &quot;ACL2-like,&quot; so it&#039;s not as interesting logically as, say, Isabelle or Coq, but it&#039;s far from a toy. Also, the Jitawa formalization apparently took place in HOL4, so you need to trust HOL4. Since HOL4 is an &quot;LCF-like&quot; system, you can do that to the extent that you trust the LCF process, but it doesn&#039;t satisfy the de Bruijn criterion in the same way Milawa or Coq do. Nevertheless, this seems like an important step toward the ultimate goal of having a stack that is verified &quot;all the way down,&quot; as it were.&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/20">Lambda Calculus</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/13">Logic/Declarative</category>
 <pubDate>Wed, 29 Feb 2012 13:34:45 -0500</pubDate>
</item>
<item>
 <title>When Formal Systems Kill: Computer Ethics and Formal Methods</title>
 <link>http://lambda-the-ultimate.org/node/4458</link>
 <description>&lt;p &gt;While ethics aren&#039;t normal LtU fare, it&#039;s sometimes interesting to see how our technical discussions fit into a larger picture.&lt;/p&gt;
&lt;p &gt;In &lt;a href=&quot;https://www.cs.indiana.edu/~lepike/pubs/fm-ethics.pdf&quot;&gt;When Formal Systems Kill: Computer Ethics and Formal Methods&lt;/a&gt; February, 2012, Darren Abramson and Lee Pike make the case that the ubiquity of computing in safety critical systems and systems that can create real economic harm means that formal methods should not just be technical and economic discussions but ethical ones as well.&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
Computers are different from all other artifacts in that they are automatic formal systems. Since computers are automatic formal systems,techniques called formal methods can be used to help ensure their safety.  First, we call upon practitioners of computer ethics to deliberate over when the application of formal methods to computing systems is a moral obligation. To support this deliberation, we provide a primer of the subfield of computer science called formal methods for non-specialists. Second, we give a few arguments in favor of bringing discussions of formal methods into the fold of computer ethics.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;They also spend a good amount of time giving a lay overview of the practical, economic challenges faced by formal methods.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/3">Admin</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/6">General</category>
 <pubDate>Fri, 24 Feb 2012 13:58:47 -0500</pubDate>
</item>
</channel>
</rss>

