<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://lambda-the-ultimate.org">
<channel>
 <title>Lambda the Ultimate - Critiques</title>
 <link>http://lambda-the-ultimate.org/taxonomy/term/4/0</link>
 <description></description>
 <language>en</language>
<item>
 <title>Scaling Type Inference </title>
 <link>http://lambda-the-ultimate.org/node/2862</link>
 <description>&lt;p &gt;Coding Horror is a popular programming blog.  A &lt;a href=&quot;http://www.codinghorror.com/blog/archives/001136.html&quot;&gt;recent post&lt;/a&gt; concerns type inference in C#:&lt;/p&gt;

&lt;blockquote &gt;&lt;p &gt;C# ... offers implicitly typed local variables. ... It&#039;s not dynamic typing, per se; C# is still very much a statically typed language. It&#039;s more of a compiler trick, a baby step toward a world of &lt;a href=&quot;http://lambda-the-ultimate.org/node/834&quot;&gt;Static Typing Where Possible, and Dynamic Typing When Needed&lt;/a&gt;.&lt;/p&gt; 

&lt;p &gt;... I use implicit variable typing whenever and wherever it makes my code more concise. Anything that removes redundancy from our code should be aggressively pursued -- up to and including switching languages.&lt;/p&gt;

&lt;p &gt;You might even say implicit variable typing is a gateway drug to more dynamically typed languages. And that&#039;s a good thing.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p &gt;I think this post is interesting for a number of reasons, and the link to LtU is just the start.  Now it appears the author is confused as to what &amp;ldquo;implicitly typed local variables&amp;rdquo; are, confusing local type inference (which they are) with dynamic typing (which they are not).  Many commenters also suffer from this confusion.  Other commenters rightly note that the inferred type is not always the type the programmers wants (particularly important in the presence of sub-typing).  Furthermore, type inference harms readability.  I&#039;m reminded of &lt;a href=&quot;http://list.cs.brown.edu/pipermail/plt-scheme/2008-June/025028.html&quot;&gt;recent discussion&lt;/a&gt; on the PLT Scheme mailing list on the merits of local and global type inference.  The consensus there seems to be that while local type inference is useful, global inference is not.&lt;/p&gt;

&lt;p &gt;So, wise people, what is the future of type inference?  How useful is it really, especially when we look at type systems that go beyond what H-M can handle?  How are we going to get working programmers to use it, and understand it?  Do we need better tool support?  Do we have any hope of better education for the average programmer?&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Fri, 20 Jun 2008 12:10:06 -0400</pubDate>
</item>
<item>
 <title>program verification: the very idea</title>
 <link>http://lambda-the-ultimate.org/node/2783</link>
 <description>&lt;p &gt;James
H. Fetzer&#039;s &lt;a href=&quot;http://doi.acm.org/10.1145/48529.48530&quot;&gt;&lt;em &gt;Program
Verification: The Very Idea&lt;/em&gt;&lt;/a&gt; (1988) is one of the two most
frequently &lt;a href=&quot;http://users.ecs.soton.ac.uk/amg/yx.ps&quot;&gt;cited&lt;/a&gt;
position papers on the subject of &lt;em &gt;program verification&lt;/em&gt;.
The other one is
&lt;a href=&quot;http://scholar.google.com/scholar?q=Proofs+and+Social+Processes+DeMillo+Perlis&quot;&gt;&lt;em &gt;Social
Processes and Proofs&lt;/em&gt;&lt;/a&gt; by De Millo, Lipton, and Perlis (1979), previously
&lt;a href=&quot;http://lambda-the-ultimate.org/node/2254&quot;&gt;discussed&lt;/a&gt;
on
LtU.  &lt;a href=&quot;http://scholar.google.com/scholar?q=Fetzer+Program+Verification+the+Very+Idea&quot;&gt;Fetzer&#039;s
paper&lt;/a&gt; generated a lot of heated discussion, both in the
subsequent issues
of &lt;a href=&quot;http://www.acm.org/publications/cacm/&quot;&gt;CACM&lt;/a&gt; and on
&lt;a href=&quot;http://groups.google.com/group/comp.software-eng/browse_thread/thread/79afc8a688bc8a6b/67fe434d83a496be&quot;&gt;Usenet&lt;/a&gt;.
&lt;/p&gt;

&lt;p &gt;It&#039;s not clear to me what all the fuss is about.  Fetzer&#039;s main
thesis seems pretty uncontroversial:&lt;/p&gt;

&lt;blockquote &gt;The notion of program verification appears to trade
upon an equivocation.  Algorithms, as logical structures, are
appropriate subjects for deductive verification. Programs, as
causal models of those structures, are not. The success of program
verification as a generally applicable and completely reliable
method for guaranteeing program performance is not even a
theoretical possibility.
&lt;/blockquote&gt;

&lt;p &gt;(See also &lt;a href=&quot;http://lambda-the-ultimate.org/node/2783#comment-41363&quot;&gt;part I&lt;/a&gt;,
&lt;a href=&quot;http://lambda-the-ultimate.org/node/2783#comment-41364&quot;&gt;part
II&lt;/a&gt;,
and &lt;a href=&quot;http://lambda-the-ultimate.org/node/2783#comment-41365&quot;&gt;part
III&lt;/a&gt;.)
&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Mon, 21 Apr 2008 17:28:58 -0400</pubDate>
</item>
<item>
 <title>April 1st special: The War of the Worlds</title>
 <link>http://lambda-the-ultimate.org/node/2749</link>
 <description>&lt;p &gt;Conrad Barski has posted a sneak peak from his upcoming Lisp textbook/comic: &lt;a href=&quot;http://www.lisperati.com/landoflisp/&quot;&gt;Land of Lisp&lt;/a&gt;.&lt;p &gt;
The first slides may seem unrelated, but boy does the message sting when you reach the ending...&lt;p &gt;
FPers will be quick to note, of course, that this being April Fools&#039; Day the whole thing is a joke and we can all go back to Haskell... &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/5">Fun</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/11">Functional</category>
 <pubDate>Tue, 01 Apr 2008 20:34:22 -0400</pubDate>
</item>
<item>
 <title>Social Processes and Proofs of Theorems and Programs</title>
 <link>http://lambda-the-ultimate.org/node/2254</link>
 <description>A &lt;a href=&quot;http://fresh.homeunix.net/~luke/misc/p271-de_millo.pdf&quot;&gt;paper&lt;/a&gt; that was &lt;a href=&quot;http://lambda-the-ultimate.org/node/2216#comment-32646&quot;&gt;mentioned&lt;/a&gt; in the discussion forum,
by Richard A. De Millo, Richard J. Lipton, Alan J. Perlis, 1979.
&lt;blockquote &gt;
It is argued that formal verifications of programs, no matter how
obtained, will not play the same key role in the development of
computer science and software engineering as proofs do in
mathematics. Furthermore, the absence of continuity, the
inevitability of change, and the complexity of specification of
significantly many real progarms make the formal verification
process difficult to justify and manage. It is felt that ease of
formal verification should not dominate program language deisgn.
&lt;/blockquote&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Sat, 19 May 2007 17:58:48 -0400</pubDate>
</item>
<item>
 <title>Good Ideas, Through the Looking Glass</title>
 <link>http://lambda-the-ultimate.org/node/1773</link>
 <description>&lt;p &gt;Niklaus Wirth. &lt;a href=&quot;http://www.cs.inf.ethz.ch/~wirth/Articles/GoodIdeas_origFig.pdf&quot;&gt;Good Ideas, Through the Looking Glass&lt;/a&gt;, IEEE Computer, Jan. 2006, pp. 56-68.&lt;br &gt;
&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;
An entire potpourri of ideas is listed from the past decades of Computer Science and Computer Technology. Widely acclaimed at their time, many have lost in splendor and brilliance under today’s critical scrutiny. We try to find reasons. Some of the ideas are almost forgotten. But we believe that they are worth recalling, not the least because one must try to learn from the past, be it for the sake of progress, intellectual stimulation, or fun.&lt;br &gt;
&lt;/blockquote&gt;
&lt;p &gt;
A personal look at some ideas, mostly from the field of programming languages. Some of Wirth&#039;s objections are amusing, some infuriating - and some I agree with...&lt;p &gt;
LtU readers will obviously go directly to sections 4 (Programming Language Features) and 6 (Programming Paradigms). Here are a few choice quotes:&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;It has become fashionable to regard notation as a secondary issue depending purely on personal taste. This may partly be true; yet the choice of notation should not be considered an arbitrary matter. It has consequences, and it reveals the character of a language. [Wirth goes on to discuss = vs. == in C...]&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt; Enough has been said and written about this non-feature [goto] to convince almost everyone that it is a primary example of a bad idea. The designer of Pascal retained the goto statement (as well as the if statement without closing end symbol). Apparently he lacked the courage to break with convention and made wrong concessions to traditionalists. But that was in 1968. By now, almost everybody has understood the problem, but apparently not the designers of the latest commercial programming languages, such as C#.&lt;/blockquote&gt;
&lt;blockquote &gt;&lt;p &gt;
The concept that languages serve to communicate between humans had been completely blended out, as apparently everyone could now define his own language on the fly. The high hopes, however, were soon damped by the difficulties encountered when trying to specify, what these private constructions should mean. As a consequence, the intreaguing idea of extensible languages faded away rather quickly.&lt;/blockquote&gt;
&lt;p &gt;
LtU readers are also going to &quot;enjoy&quot; what Wirth has to say about functional programming...&lt;p &gt;
(Thanks Tristram)&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/7">History</category>
 <pubDate>Sun, 15 Oct 2006 06:05:25 -0400</pubDate>
</item>
<item>
 <title>Machine Obstructed Proof</title>
 <link>http://lambda-the-ultimate.org/node/1745</link>
 <description>&lt;p &gt;From &lt;a href=&quot;http://lambda-the-ultimate.org/node/1743&quot;&gt;ICFP &#039;06&lt;/a&gt;, the 1st informal &lt;a href=&quot;http://www.seas.upenn.edu/~sweirich/wmm/WMM06Program-abstracts.html&quot;&gt;Workshop on Mechanizing Metatheory&lt;/a&gt; comes Nick Benton&#039;s &lt;a href=&quot;http://www.seas.upenn.edu/~sweirich/wmm/03-benton.pdf&quot;&gt;&quot;Machine Obstructed Proof: How many months can it take to verify 30 assembly instructions?&quot;&lt;/a&gt;.  It is a one page paper, but seems deserving of some notice.&lt;/p&gt;
&lt;p &gt;Nick Benton offers a critique of Coq from the standpoint of an inexperienced user, although I am not sure I would really categorize Benton as &quot;inexperienced&quot;.  Some interesting quotes:&lt;/p&gt;
&lt;ul &gt;
&lt;li &gt; &quot;...I have rarely felt as stupid and frustrated as I did during my first few weeks using Coq.&quot;
&lt;li &gt; &quot;Tactical theorem proving is like an extreme form of aspect-oriented programming.  This is &lt;em &gt;not&lt;/em&gt; A Good Thing....&quot;
&lt;li &gt; &quot;Just having intermediate stages of the work in a computerized form...proved a major benefit.&quot;
&lt;li &gt; &quot;Automated proving is not just a slightly more fussy version of paper proving and neither...is it really like programming.&quot;
&lt;li &gt; &quot;...but the payoff really came the second time I used Coq: I was able to prove some elementary but delicate results...in just a day or so.&quot;
&lt;/ul&gt;
&lt;p &gt;[On edit: moved to a story from a forum post.  Sorry. - TM]&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Wed, 27 Sep 2006 14:46:02 -0400</pubDate>
</item>
<item>
 <title>Is &quot;post OO&quot; just over?</title>
 <link>http://lambda-the-ultimate.org/node/1741</link>
 <description>&lt;p &gt;While studying the conference program of the upcoming &lt;a href=&quot;http://www.oopsla.org/2006/&quot;&gt;OOPSLA 2006&lt;/a&gt; I discovered under the category &quot;essay&quot; an author who has quite something critical to &lt;a href=&quot;http://www.oopsla.org/2006/submission/essays/the_paradoxical_success_of_aspect-oriented_programming.html&quot;&gt;say&lt;/a&gt; about AOP:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;Aspect-oriented programming is discussed as a promising new technology. Like object-oriented programming, it is beginning to pervade all areas of software engineering. With its growing popularity, practitioners and academics alike are beginning to wonder whether they should start looking into or it, or otherwise risk having missed an important development. The author of this essay finds that much of aspect-oriented programming&#039;s success seems to be based on the conception that it improves both modularity and the structure of code, while in fact, it actually works against the primary purposes of the two, namely independent development and understandability of programs. Not seeing any way of fixing this situation, he thinks the success of aspect-oriented programming to be paradoxical.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;This is not just another internet rant about the latest PL hype but the author, Friedrich Steimann, had done interesting work about AOP before. In particular his latest paper about typed AOP:&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;http://www.fernuni-hagen.de/ps/forschung/publikationen/publikation_20284.shtml&quot;&gt;AOP and the antinomy of the liar&lt;/a&gt;&lt;/p&gt;
&lt;p &gt;but also his award winning former critical AOP review:&lt;/p&gt;
&lt;p &gt;&lt;a href=&quot;http://www.fernuni-hagen.de/ps/forschung/publikationen/publikation_04925.shtml&quot;&gt;Domain models are aspect free&lt;/a&gt;&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/15">Meta-Programming</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>Sun, 24 Sep 2006 06:50:50 -0400</pubDate>
</item>
<item>
 <title>Haskell vs. Erlang, Reloaded</title>
 <link>http://lambda-the-ultimate.org/node/1247</link>
 <description>&lt;blockquote &gt;&lt;p &gt;
The goal of my project was to be able to thoroughly test a poker server using poker bots. Each poker bot was to to excercise different parts of the server by talking the poker protocol consisting of 150+ binary messages. The poker server itself is written in C++ and runs on Windows....&lt;p &gt;
This app is all about binary IO, thousands of threads/processes and easy serialization. All I ever wanted to do was send packets back and forth, analyze them and have thousands of poker bots running on my machine doing same. Lofty but simple goal :-). Little did I know! &lt;/blockquote&gt;
&lt;p &gt;
Erlang and Haskell compared... Want to know the conclusion?&lt;br &gt;
&lt;blockquote &gt;&lt;p &gt;I was able to finish the Erlang version 10 times faster and with 1/2 the code. Even if I cut the 10-11 weeks spent on the Haskell version in half to account for the learning curve, I would still come out way ahead with Erlang.&lt;/blockquote&gt;
&lt;p &gt;
I am sure you&#039;ll find a lot to disagree with in this &lt;a href=&quot;http://wagerlabs.com/articles/2006/01/01/haskell-vs-erlang-reloaded&quot;&gt;article&lt;/a&gt;...&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/11">Functional</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/16">Parallel/Distributed</category>
 <pubDate>Mon, 23 Jan 2006 12:46:16 -0500</pubDate>
</item>
<item>
 <title>Tim Bray on Ruby</title>
 <link>http://lambda-the-ultimate.org/node/934</link>
 <description>&lt;blockquote&gt;How I got here was, two recent pieces of writing that made me think heavily were Ruby-centric: Mikael Brockman’s Continuations on the Web and Sam Ruby’s Rails Confidence Builder... So I went and bought Programming Ruby (&#039;Pickaxe&#039; in the same sense that Programming Perl is the &#039;Camel book&#039;)&lt;/blockquote&gt;&lt;p&gt;
The conclusion of &lt;a href=&quot;http://www.tbray.org/ongoing/When/200x/2005/08/27/Ruby&quot;&gt;this piece&lt;/a&gt; is that Ruby looks like more than a fad, so LtU readers who still haven&#039;t checked it out might want to do so...&lt;p&gt;
&lt;small&gt;Where are the other editors, I wonder?&lt;/small&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/14">OOP</category>
 <pubDate>Mon, 29 Aug 2005 10:45:26 -0400</pubDate>
</item>
<item>
 <title>Overloading - Syntactic Heroin?</title>
 <link>http://lambda-the-ultimate.org/node/896</link>
 <description>&lt;p &gt;Ehud, theoretically on vacation, emailed me a link to an article from the June ACM Queue, &lt;a href=&quot;http://acmqueue.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=315&quot;&gt;Syntactic Heroin&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote &gt;&lt;p &gt;
User-defined overloading is a syntactic drug that has seduced all too many language designers, programmers, and project managers.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p &gt;It&#039;s focused on overloading in C++, and in particular the problems that can arise with implicit conversions, both built-in and programmer-defined.  The author concludes that this is all a very bad idea, although to my disappointment, he doesn&#039;t explore more disciplined approaches to &quot;overloading&quot; in languages that are less conversion-happy, such as parameterized higher-order modules in functional languages, or Haskell&#039;s typeclasses.&lt;/p&gt;</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Fri, 05 Aug 2005 03:41:45 -0400</pubDate>
</item>
<item>
 <title>In Search of the Ideal Programming Language</title>
 <link>http://lambda-the-ultimate.org/node/234</link>
 <description>&lt;p&gt;
The ever-enticing search for the ideal programming language produced this &lt;a href=&quot;http://members.aol.com/SergeyP/paper.html&quot;&gt;1997 article&lt;/a&gt; from &lt;a href=&quot;http://members.aol.com/SergeyP/&quot;&gt;Sergey Polak&lt;/a&gt;.  Although somewhat dated, I liked the article&#039;s comments about strings:
&lt;/p&gt;

&lt;blockquote cite=
&quot;http://members.aol.com/SergeyP/paper.html&quot; style=
&quot;color:blue; font-style:normal;&quot;&gt; 
&lt;p&gt;
The discussion of arrays also brings to mind the subject of strings. No matter what anyone says, it is my firm belief that any language, regardless of its purpose, must have a powerful and flexible string-handling facility built-in. A program is very rare if it has no need for string handling, and I myself have had to write a great deal of programs, both at work and for my own uses, that depended heavily on strings. Some languages put strings in as an afterthought, and others put in some very basic features and leave the rest to library routines. That just can not be. The text string is a fundamentally important data type and can not be ignored, nor can it be relegated to blatant impersonation by some other type, such as array of characters. A string data type is required in a good language.
&lt;/p&gt;

&lt;p&gt;
The very popular language C, and C++ as well, have horrendous string-handling facilities. Not only is the programmer required to declare his strings as character arrays, but there simply is no way to deal with strings as entities in the language.
&lt;/p&gt;


&lt;/blockquote&gt;


&lt;p&gt;
Ouch.  So true.  That is not to endorse the specific string implementation recommendation from the article.  (I have previously &lt;a href=&quot;http://lambda-the-ultimate.org/node/view/59&quot;&gt;commented&lt;/a&gt; about &lt;a href=&quot;http://lambda-the-ultimate.org/node/view/136&quot;&gt;implementation ideas&lt;/a&gt;, including &lt;a href=&quot;http://lambda-the-ultimate.org/classic/message11108.html&quot;&gt;communication buffers&lt;/a&gt;.)
&lt;/p&gt;

&lt;p&gt;
Do the man a favor and save the article to disk for offline reading so as to minimize his bandwidth hits.
&lt;/p&gt;


&lt;p style=&quot;font-size: x-small;&quot;&gt;
P.S. You&#039;re welcome, Ehud.  I&#039;ll now be Internet-disabled for a week.
&lt;/p&gt;
</description>
 <category domain="http://lambda-the-ultimate.org/taxonomy/term/4">Critiques</category>
 <pubDate>Wed, 01 Sep 2004 03:28:40 -0400</pubDate>
</item>
</channel>
</rss>
