User loginNavigation |
Software EngineeringReflective Program Generation with PatternsReflective Program Generation with Patterns. Manuel Fähndrich, Michael Carbin, James R. Larus. October 2006.
Macros, multi-staged programming etc. are the appropriate buzzowrds. LtU readers will probably be interested in the STM example (see sec. 7.1) By Ehud Lamm at 2006-08-30 07:33 | Meta-Programming | Software Engineering | login or register to post comments | other blogs | 6439 reads
Lightweight Static Capabilitites (II)The slides for the talk discussed here are now available for download. Like all of Ken and Oleg's work, this stuff is both cool and important. Keep in mind that the talk is quite different from the paper. The safety claims were formalized and proved in Twelf: list example, array example. To follow the proofs you should read them alongside the presentation slides. I am told that the first file might change soon, to reflect a more general proof. Perhaps Ken or Oleg would like to comment on the experience of doing mechanized proofs, a subject the comes up regularly on LtU. LtU newcomers, who already managed to take in a little Haskell or ML, may want to spend a little time chewing on this, and ask questions if something remains unclear, since this work may eventually have practical importance, and can teach quite a few interesting techniques. By Ehud Lamm at 2006-08-29 08:34 | Semantics | Software Engineering | Type Theory | 1 comment | other blogs | 9033 reads
The Daikon Invariant Detector
I spend a lot of time here talking about static typing, but let's face it: most often we're dealing with existing code that probably isn't written in a language with a very expressive type system, and rarely has been formally specified, whether through an expressive type system or otherwise. Daikon is interesting because it attempts to learn important properties of a piece of software by execution and observation. Combine it with a model checker like Java PathFinder, and you have an unusually powerful means of evolving the correctness of even quite complex code. There's also a relationship to the already-mentioned JML and ESC/Java 2, which in turn has a connection to the popular JUnit unit-testing framework. In short, the gap between compile time and runtime, and static vs. dynamic typing, seems to be narrowed in powerful ways by these, and related, tools. By Paul Snively at 2006-08-28 01:12 | Semantics | Software Engineering | 1 comment | other blogs | 10029 reads
Verified Software: Theories, Tools, and ExperimentsVerified Software: Theories, Tools, and Experiments, VSTTE 2006, Workshop proceedings. K. Rustan M. Leino; Wolfram Schulte. August 2006. The papers are:
Revisiting Google's MapReduceGoogle's MapReduce Programming Model -- Revisited. Ralf Lämmel.
This is a fun example of type-directed exploration and prototyping, and pokes some gentle fun of Google's (ab)use of standard terminology. It's neat to get a glimpse into the programming process of a very experienced Haskell programmer. (From the forums.) By Matt Hellige at 2006-08-09 21:18 | Fun | Functional | Software Engineering | 7 comments | other blogs | 22204 reads
Software Extension and Integration with Type ClassesSoftware Extension and Integration with Type Classes. Ralf Lämmel and Klaus Ostermann.
We've had a number of papers lately with solutions to the expression problem and related extensibility challenges, using various techniques in various languages. Here's one exploring the expressiveness of Haskell's type classes. It's extremely instructive to compare different approaches to these now-standard problems, and in fact I wonder whether this would make an ineresting approach to a programming languages survey course: In CS 3xx we explore and compare a number of programming languages by exploring idiomatic solutions to standard software engineering challenges. The authors are looking for comments on this draft for a few more days. By Matt Hellige at 2006-08-03 22:22 | Functional | Software Engineering | 4 comments | other blogs | 7422 reads
A Comparison of Ada and Real-Time Java for Safety-Critical ApplicationsThe presentation slides for this Ada-Europe paper are online (the paper itself is proabably behind a paywall). The authors are Ben Brosgol from AdaCore and Andy Wellings from the University of York (UK) , really the guys to read if you are interested in these topics. Some of the issues alluded to in the slides were discussed here in the past, either in general discussions about Ada or in discussions about the specific issues (RTSJ, async transfer of control etc.) Failure-oblivious computingThere've been a couple of threads recently about safety-critical code (Rules for, and in real-time Java). Safety-critical code necessarily includes careful handling of failure situations. Or does it? Here's another take on failure handling, from the opposite direction: Enhancing Server Availability and Security Through Failure-Oblivious Computing (Rinard et al., 2004) was originally presented at OSDI '04, but hasn't previously been featured here:
The paper includes descriptions of how this technique was applied with good results to servers such as Apache and Sendmail, as well as to client programs such as Pine, Mutt, and Midnight Commander. The paper also raises concerns about the potential for such techniques to create a bystander effect (although the term moral hazard might be more appropriate here), influencing programmers to be less careful about error handling because they have a safety net. This work was performed on programs written in C, and there's a temptation to think that the approach is only applicable to memory-unsafe languages. However, there's a connection here to the approach used by some of the classic shell scripting languages and their descendants such as Perl, in which certain kinds of failure are silently tolerated in the interests of keeping the program running. The approach could also have potential applications in other memory-safe languages, providing the potential for higher-availability programs, as noted in the paper's conclusion. While most language implementors aren't going to rush to incorporate failure-oblivious approaches in their languages, the positive results obtained from this work are thought-provoking, and could inspire other less traditional but effective ways of handling failure. By Anton van Straaten at 2006-07-07 14:20 | Fun | Software Engineering | 37 comments | other blogs | 20109 reads
Variance and Generalized Constraints for C# GenericsVariance and Generalized Constraints for C# Generics. Burak Emir, Andrew J. Kennedy, Claudio Russo, Dachuan Yu. July 2006
Discussion of previous C# GADT paper on LtU. I am unsure about use-site versus definition-site variance declerations. It would be interesting to hear what others think. Also check out the LtU discussion on wildcards in Java. By Ehud Lamm at 2006-06-18 11:33 | OOP | Software Engineering | Type Theory | 16 comments | other blogs | 21193 reads
Code Generation NetworkIt's been quite a while since I visited codegeneration.org, and it seems like the site grew considerably, so you might want to check it out again too. Code generation is an important programming technique (not to be confused with the code generation phase of compilers), which I am sure everyone here is familiar with. It seems to me that the percentage of programmers who know about code generation is relatively small. Am I right in this assumption? I am not asking about people actually using the technique, mind you, just about knowing that it exists and what it means, and don't think the basic idea is "strange" or involves dark magic. I wonder where, if anywhere, should programmers (and CS students) learn about it. And no, the answer well, on LtU of course isn't a good option! By Ehud Lamm at 2006-05-22 20:20 | Meta-Programming | Software Engineering | 15 comments | other blogs | 10443 reads
|
Browse archives
Active forum topics |
Recent comments
23 weeks 2 days ago
23 weeks 2 days ago
23 weeks 2 days ago
45 weeks 3 days ago
49 weeks 5 days ago
51 weeks 2 days ago
51 weeks 3 days ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago