User loginNavigation |
Differentiating ParsersA fascinating article by Oleg Kiselyov on delimited continuations:
Why Object-Oriented Languages Need Tail CallsThe Fortress blog has a recent post, Why Object-Oriented Languages Need Tail Calls, where Guy Steele argues for the necessity of proper tail call implementations without rehashing two of the classic arguments: state machines and the continuation passing style. It starts by mentioning William Cook's On Understanding Data Abstraction, Revisited:
The post also mentions other papers previously discussed on LtU: Automata as Macros, and A Tail-Recursive Machine with Stack Inspection. By Leon P Smith at 2009-12-03 18:03 | Implementation | OOP | 67 comments | other blogs | 37706 reads
Eleven Theses on ClojureTim Bray shares his conclusions about Clojure. To get your juices going: He claims "It’s the Best Lisp Ever"! (And that tail call optimization is a red herring.) I have been contemplating a Clojure department for awhile now, but heck, we may be too far behind the curve by now... Two Bits: The Cultural Significance of Free SoftwareChristopher Kelty's book, Two Bits: The Cultural Significance of Free Software, can be read online, and I think parts of it will interest many here. It seems that programming languages, while mentioned, do not receive a lot of attention in this work. I would argue that they are a significant factor in the history that is being told, and an important resource for historians (though reading the history from the languages is not a trivial undertaking by any means). Still, seems like a very good discussion and well worth pursuing. Edited to add: As Z-Bo mentions in the comments, the website of the book invites people to re-mix it (or "modulate" it). Motivated readers can thus add the relevant PL perspective, if they so wish. Pattern CalculusBarry Jay has recently published a book on the Pattern Calculus (which has been discussed before).
The book covers the operational semantics of both functional and OO features, as well as static and dynamic pattern-matching. Then it covers type systems necessary to deal with all the wild polymorphism thus gained - in rather readable fashion. Then it covers bondi, a programming language based on ML, Java and (lots of!) pattern-matching. PICBIT: A Scheme System for the PIC MicrocontrollerMarc Feeley and Danny Dubé, PICBIT: A Scheme System for the PIC Microcontroller, Fourth Workshop on Scheme and Functional Programming. November 7, 2003.
A very interesting perspective on language implementation, found via @dhess and previous discussion. Implicit Phasing for R6RS LibrariesAbdulaziz Ghuloum and R. Kent Dybvig, Implicit Phasing for R6RS Libraries, Proc. ICFP 2007.
R6RS leaves it up to implementations whether import statements need to explicitly state the meta-level into which bindings should be placed. The authors argue for letting the implementation automatically figure out the required meta-levels, and present an implementation-oriented description of how to do so, that they implemented portably. The paper also includes a well-written and detailed introduction to the issues involved, and since they want the community to adopt their solution, they seem to have worked extra hard to produce a convincing paper ;). By Manuel J. Simoni at 2009-11-26 15:54 | Meta-Programming | Software Engineering | Theory | 1 comment | other blogs | 7462 reads
Scratch: Programming for AllMitchel Resnick, John Maloney, AndreÌs Monroy HernaÌndez, Natalie Rusk, Evelyn Eastmond, Karen Brennan, Amon Millner, Eric Rosenbaum, Jay Silver, Brian Silverman, Yasmin Kafai, Scratch: Programming for All, Communications of the ACM, vol. 52, no. 11, November 2009.
Scratch is the cover story of the November 2009 issue of CACM. The goal of Scratch is to get kids programming so that they become more fluent in information technology, and develop "computational thinking" skills. Scratch is a graphical language based on a collection of “programming blocks†that children snap together like Lego blocks to create programs. The programs themselves appear to be imperative in nature (at least based on the samples in the CACM article). Programs can be made concurrent by creating multiple stacks of blocks, and the authors claim that their goal is to make concurrent execution as intuitive as parallel execution. Scratch was previously mentioned on LtU here. By Allan McInnes at 2009-11-19 11:12 | Teaching & Learning | 18 comments | other blogs | 18178 reads
Bytecodes meet Combinators: invokedynamic on the JVMBytecodes meet Combinators: invokedynamic on the JVM. John Rose. VMIL'09.
The abstract is pretty vague, but this paper is actually quite interesting, particularly if you're interested in meta-object protocols and if, like me, you don't have the interest or patience to read JSRs. Of course, invokedynamic has been discussed many times over the years. The wheels of Java turn slowly... By Matt Hellige at 2009-11-14 01:16 | Cross language runtimes | 4 comments | other blogs | 12050 reads
Go or Unladen Swallow?Go is a new programming language to come out of google and this thread on Google discouraging python internally for new projects seems more than just coincidence.
By combining dynamic features, safety, garbage collection and efficiency in a single language and environment, Go claims to remove the reasons why programmers end up building systems using multiple languages. A brief look at Go shows strong C origins with nice support for "goroutines" - essential sequential processes communicating using channels. I don't quite get the "safety" claim of the language since you can take the address of an uninitialized variable in Go. It could qualify as a "C with concurrency" language I think. Go already has a great set of packages that should make it immediately usable as a pragmatic language. (The terse package names are very reminiscent of Erlang's package structure.) It even has a package for interfacing with Google Native Client (NaCl) for audio/video access. (minor edits) |
Browse archives
Active forum topics |
Recent comments
36 weeks 2 days ago
36 weeks 2 days ago
36 weeks 2 days ago
1 year 6 weeks ago
1 year 10 weeks ago
1 year 12 weeks ago
1 year 12 weeks ago
1 year 14 weeks ago
1 year 19 weeks ago
1 year 19 weeks ago