Lambda the Ultimate - General
http://lambda-the-ultimate.org/taxonomy/term/6/0
enCoq will be renamed
http://lambda-the-ultimate.org/node/5629
<p >From the <A href="https://sympa.inria.fr/sympa/arc/coq-club/2021-04/msg00125.html">Coq-club</A>:</p>
<blockquote ><p >
The Coq development team acknowledges the recent discussions (started on the Coq-Club mailing list) around Coq's logo and name.</p>
<p >We wish to thank everyone that participated in these discussions. Testimonies from people who experienced harassment or awkward situations, reports about students (notably women) who ended up not learning / using Coq because of its name, were all very important so that the community could fully recognize the impact of the current name and its slang meaning in English, especially with respect to gender-diversity in the Coq community.</p>
<p >For these reasons, the Coq development team is open to a renaming.
</p></blockquote>
<p >Suggestions for alternative names go <A href="https://github.com/coq/coq/wiki/Alternative-names">here</A>.</p>General2021年4月08日 13:47:05 +0000On compositionality
http://lambda-the-ultimate.org/node/5550
<p >Jules Hedges has written a thought-provoking blog post, <a href="https://julesh.com/2017/04/22/on-compositionality/">On compositionality</a> where he connects the familiar idea of compositionality to the idea of emergent effects in nature, where systems can be understood as either having compositional properties or emergent properties.</p>
<p >The key point about emergent systems is that they are hard to understand, and this is as true for engineering as it is for science. He goes on to say "As a final thought, I claim that compositionality is extremely delicate, and that it is so powerful that it is worth going to extreme lengths to achieve it", so that avoiding emergent effects is a characteristic of good programming language design.</p>
<p >Some thoughts: </p>
<ol >
<li >His examples of emergent systems are biology and game theory from an economic perspective. I would add to this list physics: of <a href="https://arxiv.org/abs/1502.04573v2">his co-authored paper showing that the spectral gap is undecidable</a>, David Pérez-García said "For example, our results show that adding even a single particle to a lump of matter, however large, could in principle dramatically change its properties."
<li >Spolsky's famous characterisation of interfaces built on shaky foundations as <a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/">Leaky abstractions</a> to me makes the distinction between compositional and emergent systems a little less than sharp.
<li >We could talk endlessly about the list of what he regards as compositionality-breaking features of PLs. The evils of global state are well-documented, but I find dmbarbour's argument that <a href="https://awelonblue.wordpress.com/2012/10/21/local-state-is-poison/">Local state is poison</a> a very interesting alternative way to look at what properties do we want from code; more generally, what kind of compositionalty PLs offer is very much paradigm dependent. Gotos are considered harmful, but the Linux kernel has little trouble with longjmp because of its mandated coding style: compositionality in engineering is a not just a matter of semantics but also of use. He targets OO and Haskell's type classes - I think he is quite correct - note that within these paradigms one can regain compositionality by restricting to LSP or algebraic classes, and supporting his thesis we see that these ideas have spawned ideas for the design of new, cleaner PLs.
</ol>General2018年9月07日 09:53:12 +0000Notes on notation and thought
http://lambda-the-ultimate.org/node/5542
<small>(via <a href="https://news.ycombinator.com/item?id=17632850">HN</a>)</small><p>
A <a href="https://github.com/hypotext/notation">nice collection</a> of quotes on notation as a tool of thought. Mostly not programming related, which actually makes them more interesting, offering a richer diversity of examples.
We used to have quite a few discussions of notation in the early days (at least in part because I never accepted the prevailing dogma that syntax is not that interesting or important), which is a good reminder for folks to check the archives.General2018年7月28日 20:46:31 +0000Sequent Calculus as a Compiler Intermediate Language
http://lambda-the-ultimate.org/node/5519
<p ><a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/04/sequent-calculus-icfp16.pdf">Sequent Calculus as a Compiler Intermediate Language</a><br >
2016 by Paul Downen, Luke Maurer, Zena M. Ariola, Simon Peyton Jones</p>
<blockquote ><p >
The typed λ-calculus arises canonically as the term language for a logic called natural deduction, using the Curry-Howard isomorphism: the pervasive connection between logic and programming languages asserting that propositions are types and proofs are programs. Indeed, for many people, the λ-calculus is the living embodiment of Curry-Howard.</p>
<p >But natural deduction is not the only logic! Conspicuously, natural deduction has a twin, born in the very same paper, called the sequent calculus. Thanks to the Curry-Howard isomorphism, terms of the sequent calculus can also be seen as a programming language with an emphasis on control flow.
</p></blockquote>FunctionalGeneralLambda CalculusSemanticsType Theory2018年4月02日 17:06:41 +0000 Why Is SQLite Coded In C
http://lambda-the-ultimate.org/node/5515
<p >We are nearing the day someone quips that C is an improvement on most of its successors (<a href="http://www.eecs.umich.edu/~bchandra/courses/papers/Hoare_Hints.pdf">smirk</a>). So reading <a href="https://sqlite.org/whyc.html">this page</a> from the SQLite website is instructive, as is reading <a href="https://sqlite.org/testing.html">the page</a> on the tooling and coding practices that make this approach work.</p>
<p >I think none of this is news, and these approaches have been on the books for quite a bit. But still, as I said: an improvement on most of its successors. Hat tip: <a href="https://news.ycombinator.com/item?id=16585120">HN discussion</a>. </p>General2018年3月16日 04:47:32 +0000Proceedings of the ACM on Programming Languages
http://lambda-the-ultimate.org/node/5468
<blockquote ><p >
<a href="http://pacmpl.acm.org/">Proceedings of the ACM on Programming Languages</a> (PACMPL) is a Gold Open Access journal publishing research on all aspects of programming languages, from design to implementation and from mathematical formalisms to empirical studies. Each issue of the journal is devoted to a particular subject area within programming languages and will be announced through publicized Calls for Papers.</blockquote>
<p >
See the ToC of the September 2017, ICFP issue, <a href="http://dl.acm.org/citation.cfm?id=3136534&picked=prox&CFID=803742012&CFTOKEN=36001311">here</a>. Some very cool stuff.<p >
Congrats!</p>FunctionalGeneral2017年8月30日 21:05:36 +0000Graydon Hoare: What next for compiled languages?
http://lambda-the-ultimate.org/node/5466
<p >Since <a href="https://news.ycombinator.com/item?id=15051645">everybody</a> is talking about <a href="http://graydon2.dreamwidth.org/253769.html">this post</a>,we might as well.<p >
Key topics discussed: <b >modules</b>(you know, real ones); <b >errors</b> ("there are serious abstraction leakages and design trade-offs in nearly every known approach"); <b >Coroutines, async/await, "user-visible" asynchronicity</b>; <b >effect systems</b>, more generally (you could see that coming, couldn't you?); <b >Extended static checking (ESC), refinement types, general dependent-typed languages</b>; and <b >formalization </b>("we have to get to the point where we ship languages -- and implementations -- with strong, proven foundations").<p >
He goes on to discuss a whole grab bag of "potential extras" for mainstream languages, including the all time favorite: units of measure.<p >
Feel free to link to the relevant discussions from the LtU archive... </p>CritiquesGeneral2017年8月20日 03:52:33 +0000p5.js
http://lambda-the-ultimate.org/node/5450
<p >p5.js is a JavaScript library inspired by <a href="https://processing.org/">Processing</a>. Seems it could be a fun way to introduce non-CS types to programming. The <a href="http://hello.p5js.org/">demo</a> is particularly well done; check it out first. The actual home of the project is <a href="https://p5js.org/">here</a>. </p>FunGeneral2017年7月11日 19:14:25 +0000Idris 1.0 Released
http://lambda-the-ultimate.org/node/5421
<p ><a href="https://www.idris-lang.org/idris-1-0-released/">What do we mean by "1.0"?</a>
<p >Idris version 1.0 corresponds to the language as described in <a href="https://www.manning.com/books/type-driven-development-with-idris">Type-Driven Development with Idris</a>, published last week by <a href="https://www.manning.com">Manning</a>.
</p></blockquote>General2017年4月01日 18:53:58 +0000Stroustrup's Rule and Layering Over Time
http://lambda-the-ultimate.org/node/5402
<p >Dave Herman is <a href="https://thefeedbackloop.xyz/stroustrups-rule-and-layering-over-time/">the voice of the oppressed</a>: syntax is important, contrary to what you have been told!<p >
To illustrate he discusses what he calls <strong >Stroustrup's Rule</strong>:</p>
<blockquote >
<ul >
<li >For new features, people insist on <strong >LOUD</strong> explicit syntax.</li>
<li >For established features, people want terse notation.</li>
</ul>
</p></blockquote>General2016年12月16日 08:25:51 +0000Joe Armstrong Interviews Alan Kay
http://lambda-the-ultimate.org/node/5395
<p ><a href="https://www.youtube.com/watch?v=fhOHn9TClXY">Youtube video</a> (via <a href="https://news.ycombinator.com/item?id=13033299">HN</a>)<p >
By far not the best presentation of Kay's ideas but surely a must watch for fans. Otherwise, skip until the last third of the interview which might add to what most people here already know.<p >
It is interesting that in this talk Kay rather explicitly talks about programming languages as abstraction layers. He also mentions some specifics that may not be as well known as others, yet played a role in his trajectory, such as META.<p >
I fully sympathize with his irritation with the lack of attention to and appreciation of fundamental concepts and theoretical frameworks in CS. On the other hand, I find his allusions to biology unconvincing.<br >
An oh, he is certainly right about Minsky's book (my first introduction to theoretical CS) and in his deep appreciation of <a href="http://www-formal.stanford.edu/jmc/index.html">John McCarthy</a>.</p>GeneralHistory2016年11月25日 15:25:27 +0000Automating Ad hoc Data Representation Transformations
http://lambda-the-ultimate.org/node/5378
<p ><a href="https://yanniss.github.io/adrt-oopsla15.pdf">Automating Ad hoc Data Representation Transformations</a> by Vlad Ureche, Aggelos Biboudis, Yannis Smaragdakis, and Martin Odersky:</p>
<blockquote ><p >
To maximize run-time performance, programmers often specialize their code by hand, replacing library collections and containers by custom objects in which data is restructured for efficient access. However, changing the data representation is a tedious and error-prone process that makes it hard to test, maintain and evolve the source code.</p>
<p >We present an automated and composable mechanism that allows programmers to safely change the data representation in delimited scopes containing anything from expressions to entire class definitions. To achieve this, programmers define a transformation and our mechanism automatically and transparently applies it during compilation, eliminating the need to manually change the source code.</p>
<p >Our technique leverages the type system in order to offer correctness guarantees on the transformation and its interaction with object-oriented language features, such as dynamic dispatch, inheritance and generics.</p>
<p >We have embedded this technique in a Scala compiler plugin and used it in four very different transformations, ranging from improving the data layout and encoding, to<br >
retrofitting specialization and value class status, and all the way to collection deforestation. On our benchmarks, the technique obtained speedups between 1.8x and 24.5x.
</p></blockquote>
<p >This is a realization of an idea that has been briefly discussed here on LtU a few times, whereby a program is written using high-level representations, and the user has the option to provide a lowering to a more efficient representation after the fact.</p>
<p >This contrasts with the typical approach of providing efficient primitives, like primitive unboxed values, and leaving it to the programmer to compose them efficiently up front.</p>FunctionalGeneralObject-FunctionalOOPSoftware Engineering2016年9月22日 18:29:03 +0000Simon Peyton Jones elected into the Royal Society Fellowship
http://lambda-the-ultimate.org/node/5332
<p ><A href='http://research.microsoft.com/en-us/people/simonpj/'>Simon Peyton Jones</A> has been <A href="https://royalsociety.org/fellows/fellows-directory/#?earliestelectedyear=2016">elected</A> as a <A href='https://royalsociety.org/people/simon-peyton-jones-12889/'>Fellow of the Royal Society</A>. The Royal Society biography reads:<BLOCKQUOTE ><br >
Simon's main research interest is in functional programming languages, their implementation, and their application. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.</p>
<p >More generally, Simon is interested in language design, rich type systems, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation -- that is one reason he loves functional programming so much.</p>
<p >Simon is also chair of Computing at School, the grass-roots organisation that was at the epicentre of the 2014 reform of the English computing curriculum.<br >
</BLOCKQUOTE></p>
<p >Congratulations SPJ!</p>FunctionalGeneralImplementationParadigmsSemanticsSoftware EngineeringSpotlightTeaching & LearningTheory2016年4月30日 19:44:24 +0000Usability of Programming Languages SIG at CHI'2016
http://lambda-the-ultimate.org/node/5318
<p >A special-interest group meeting during the ACM CHI 2016 conference in San Jose, CA on the topic of the usability of programming languages. People are invited to attend!</p>
<p >To attend you must be registered for the CHI'2016 conference, and early registration ends March 14:</p>
<p > <a href="https://chi2016.acm.org/wp/registration/">https://chi2016.acm.org/wp/registration/<br >
</a></p>
<p >For more information about the SIG, see:</p>
<p > <a href="http://www.programminglanguageusability.org">http://www.programminglanguageusability.org</p>
<p ></a></p>
<p ><b >Abstract:</b></p>
<p >Programming languages form the interface between programmers (the users) and the computation that they desire the computer to<br >
execute. Although studies exist for some aspects of programming language design (such as conditionals), other aspects have received little or no human factors evaluations. Designers thus have little they can rely on if they want to make new languages highly usable, and users cannot easily chose a language based on usability criteria. This SIG will bring together researchers and practitioners interested in increasing the depth and breadth of studies on the usability of programming languages, and ultimately in improving the usability of future languages.</p>General2016年3月24日 20:21:13 +0000C is Manly, Python is for "n00bs": How False Stereotypes Turn Into Technical "Truths"
http://lambda-the-ultimate.org/node/5314
<p ><b >Jean Yang & Ari Rabkin <a href="https://modelviewculture.com/pieces/c-is-manly-python-is-for-n00bs-how-false-stereotypes-turn-into-technical-truths">C is Manly, Python is for "n00bs": How False Stereotypes Turn Into Technical "Truths"</a>, Model-View-Culture, January 2015.</b></p>
<p >This is a bit of a change of pace from the usual technically-focused content on LtU, but it seemed like something that might be of interest to LtUers nonetheless. Yang and Rabkin discuss the cultural baggage that comes along with a variety of languages, and the impact it has on how those languages are perceived and used.</p>
<blockquote ><p >"These preconceived biases arise because programming languages are as much social constructs as they are technical ones. A programming language, like a spoken language, is defined not just by syntax and semantics, but also by the people who use it and what they have written. Research shows that the community and libraries, rather than the technical features, are most important in determining the languages people choose. Scientists, for instance, use Python for the good libraries for scientific computing."</p></blockquote>
<p >There are probably some interesting clues to how and why some languages are adopted while others fall into obscurity (a question that has come up here before). Also, the article includes references to a study conducted by Rabkin and LtU's own Leo Meyerovich.</p>GeneralHistory2016年3月11日 03:50:09 +0000