User loginNavigation |
What is the most bizarre thing you have seen done with TeX?A fun thread at stackexhange. By Ehud Lamm at 2013-03-27 07:46 | Fun | login or register to post comments | other blogs | 10845 reads
Dependent Types for JavaScriptDependent Types for JavaScript, by Ravi Chugh, David Herman, Ranjit Jhala:
Some good progress on inferring types for a very dynamic language. Explicit type declarations are placed in comments that start with "/*:".
/*: x∶Top → {ν ∣ite Num(x) Num(ν) Bool(ν)} */
function negate(x) {
if (typeof x == "number") { return 0 - x; }
else { return !x; }
}
By naasking at 2013-03-23 15:08 | Object-Functional | Theory | Type Theory | 128 comments | other blogs | 13731 reads
Concurrent RevisionsConcurrent Revisions is a Microsoft Research project doing interesting work in making concurrent programming scalable and easier to reason about. These papers work have been mentioned a number of times here on LtU, but none of them seem to have been officially posted as stories. Concurrent Revisions are a distributed version control-like abstraction [1] for concurrently mutable state that requires clients to specify merge functions that make fork-join deterministic, and so make concurrent programs inherently composable. The library provide default merge behaviour for various familiar objects like numbers and lists, and it seems somewhat straightforward to provide a merge function for many other object types. They've also extended the work to seamlessly integrate incremental and parallel computation [2] in a fairly intuitive fashion, in my opinion. Their latest work [3] extends these concurrent revisions to distributed scenarios with disconnected operations, which operate much like distributed version control works with source code, with guarantees of eventual consistency. All in all, a very promising approach, and deserving of wider coverage. [1] Sebastian Burckhardt and Daan Leijen, Semantics of Concurrent Revisions, in European Symposium on Programming (ESOP'11), Springer Verlag, Saarbrucken, Germany, March 2011 By naasking at 2013-03-18 13:29 | Implementation | OOP | Parallel/Distributed | 13 comments | other blogs | 8979 reads
Feature-Oriented Programming with Object AlgebrasFeature-Oriented Programming with Object Algebras, by Bruno C.d.S. Oliveira, Tijs van der Storm, Alex Loh, William R. Cook:
A follow-up to Object Algebras, this new paper addresses a few of the limitations described in that LtU thread by adding type constructor polymorphism to increase their safety. The paper describes an implementation in Scala, which is the only widely available statically typed OOP language with a sufficiently powerful type system needed to support FOP. This new work also describes some composition mechanisms for object algebras in the context of more expressive languages. By naasking at 2013-03-16 14:53 | Implementation | OOP | login or register to post comments | other blogs | 7076 reads
Twenty Reasons Why You Should Use Boxer (Instead of LOGO)An old paper on boxer that I found while reviewing related work for a paper I'm writing, abstract:
As an early graphical language, it is quite interesting. It is one of the first works I know of that dive into concreteness (they call naive realism):
As well as one of the first languages to use spatial relationships in programming (the only other I know being...agent sheets):
But what I really like is this notion of pokability:
And so on.... How OCaml type checker works -- or what polymorphism and garbage collection have in commonHow OCaml type checker works -- or what polymorphism and garbage collection have in common
As usual with Oleg, there's a lot going on here. Personally, I see parallels with "lambda with letrec" and "call-by-push-value," although making the connection with the latter takes some squinting through some of Levy's work other than his CBPV thesis. Study this to understand OCaml type inference and/or MLF, or for insights into region typing, or, as the title suggests, for suggestive analogies between polymorphism and garbage collection. By Paul Snively at 2013-03-10 16:25 | Functional | Implementation | Type Theory | 1 comment | other blogs | 10965 reads
Socio-PLT: Principles for Programming Language AdoptionIn their survey paper and their website, Leo Meyerovich and Ari Rabkin take Jared Diamond approach to explaining Programming Language adoption.
There are also videos of talks available from Splash 2012 and Google Tech Talks. See also previous discussions. By bashyal at 2013-02-27 03:49 | General | Teaching & Learning | 1 comment | other blogs | 7067 reads
Simple Generators v. Lazy EvaluationOleg Kiselyov, Simon Peyton-Jones and Amr Sabry: Simple Generators:
This is fascinating work that shows how to gain the benefits of lazy evaluation - decoupling of producers, transformers, and consumers of data, and producing only as much data as needed - in a strict, effectful setting that works well with resources that need to be disposed of once computation is done, e.g. file handles. The basic idea is that of Common Lisp signal handling: use a hierarchical, dynamically-scoped chain of handler procedures, which get called - on the stack, without unwinding it - to parameterize code. In this case, the producer code (which e.g. reads a file character by character) is the parameterized code: every time data (a character) is produced, it calls the dynamically innermost handler procedure with the data (it yields the data to the handler). This handler is the data consumer (it could e.g. print the received character to the console). Through dynamic scoping, each handler may also have a super-handler, to which it may yield data. In this way, data flows containing multiple transformers can be composed. I especially like the OCaml version of the code, which is just a page of code, implementing a dynamically-scoped chain of handlers. After that we can already write map and fold in this framework (fold using a loop and a state cell, notably.) There's more sample code. This also ties in with mainstream yield. By Manuel J. Simoni at 2013-02-21 13:30 | Fun | Paradigms | Software Engineering | 10 comments | other blogs | 10526 reads
Photoshop 1.0 Source CodeSome people are amazed that it's in Pascal... HN discussion is here. Cognitive Architectures: A Way Forward for the Psychology of Programming
This describes an interesting attempt to formalize comparison of programming languages from point of view of cognitive psychology. There are also some some interesting references from the presentation. |
Browse archivesActive forum topics |
Recent comments
5 hours 37 min ago
5 hours 41 min ago
5 hours 47 min ago
8 hours 16 min ago
9 hours 51 min ago
10 hours 33 min ago
10 hours 43 min ago
11 hours 49 min ago
11 hours 51 min ago
12 hours 7 min ago