?

Log in

Tue, Dec. 11th, 2007, 11:25 am
Paper: Dynamic Multilevel Graph Visualization

Full-text: PDF
Movies: Quicktime

Todd L. Veldhuizen. Dynamic Multilevel Graph Visualization. Eprint arXiv:cs.GR/07121549, December 2007.

Abstract: We adapt multilevel, force-directed graph layout techniques to visualizing dynamic graphs in which vertices and edges are added and removed in an online fashion (i.e., unpredictably). We maintain multiple levels of coarseness using a dynamic, randomized coarsening algorithm. To ensure the vertices follow smooth trajectories, we employ dynamics simulation techniques, treating the vertices as point particles. We simulate fine and coarse levels of the graph simultaneously, coupling the dynamics of adjacent levels. Projection from coarser to finer levels is adaptive, with the projection determined by an affine transformation that evolves alongside the graph layouts. The result is a dynamic graph visualizer that quickly and smoothly adapts to changes in a graph.

Mon, Jul. 30th, 2007, 09:16 am
Paper: Parsimony Principles for Software Components and Metalanguages

Full-text: PDF

Todd L. Veldhuizen. Parsimony Principles for Software Components and Metalanguages. Generative Programming and Component Engineering (GPCE 2007), Salzburg, Austria, October 1-3, 2007. arXiv:0707.4166

Abstract: Software is a communication system. The usual topic of communication is program behavior, as encoded by programs. Domain-specific libraries are codebooks, domain-specific languages are coding schemes, and so forth. To turn metaphor into method, we adapt tools from information theory---the study of efficient communication---to probe the efficiency with which languages and libraries let us communicate programs. In previous work we developed an information-theoretic analysis of software reuse in problem domains. This new paper uses information theory to analyze tradeoffs in the design of components, generators, and metalanguages. We seek answers to two questions: (1) How can we judge whether a component is over- or under-generalized? Drawing on minimum description length principles, we propose that the best component yields the most succinct representation of the use cases. (2) If we view a programming language as an assemblage of metalanguages, each providing a complementary style of abstraction, how can these metalanguages aid or hinder us in efficiently describing software? We describe a complex triangle of interactions between the power of an abstraction mechanism, the amount of reuse it enables, and the cognitive difficulty of its use.

Thu, Jan. 12th, 2006, 09:31 pm
Talk: Tradeoffs in Metaprogramming

Slides in pdf.

Abstract. "The design of metaprogramming languages requires appreciation of the tradeoffs that exist between important language characteristics such as safety properties, expressive power, and succinctness." These slides are from PEPM 2006, and are based on the paper of the same name which may be found at arXiv:cs.PL/0512065.

Mon, Dec. 19th, 2005, 09:35 am
Paper: Tradeoffs in Metaprogramming

Full-text: PostScript, PDF, or Other formats

Todd L. Veldhuizen. Tradeoffs in Metaprogramming. ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation (PEPM 2006), Charleston, South Carolina, January 9-10 2006. arXiv:cs.SE/0512065

Abstract: The design of metaprogramming languages requires appreciation of the tradeoffs that exist between important language characteristics such as safety properties, expressive power, and succinctness. Unfortunately, such tradeoffs are little understood, a situation we try to correct by embarking on a study of metaprogramming language tradeoffs using tools from computability theory. Safety properties of metaprograms are in general undecidable; for example, the property that a metaprogram always halts and produces a type-correct instance is $\Pi^0_2$-complete. Although such safety properties are undecidable, they may sometimes be captured by a restricted language, a notion we adapt from complexity theory. We give some sufficient conditions and negative results on when languages capturing properties can exist: there can be no languages capturing total correctness for metaprograms, and no `functional' safety properties above $\Sigma^0_3$ can be captured. We prove that translating a metaprogram from a general-purpose to a restricted metaprogramming language capturing a property is tantamount to proving that property for the metaprogram. Surprisingly, when one shifts perspective from programming to metaprogramming, the corresponding safety questions do not become substantially harder --- there is no `jump' of Turing degree for typical safety properties.

Tue, Sep. 20th, 2005, 09:53 am
Paper: Language embeddings that preserve staging and safety

Full-text: PostScript, PDF, or Other formats

(Nordic Journal of Computing, accepted)

Abstract: We study embeddings of programming languages into one another that preserve what reductions take place at compile-time, i.e., staging. A certain condition -- what we call a `Turing complete kernel' -- is sufficient for a language to be stage-universal in the sense that any language may be embedded in it while preserving staging. A similar line of reasoning yields the notion of safety-preserving embeddings, and a useful characterization of safety-universality. Languages universal with respect to staging and safety are good candidates for realizing domain-specific embedded languages (DSELs) and `active libraries' that provide domain-specific optimizations and safety checks.

Tue, Aug. 2nd, 2005, 11:00 pm
Paper: Software Libraries and the Limits of Reuse: Entropy, Kolmogorov Complexity, and Zipf's Law

Full-text: PostScript, PDF, or Other formats

(Updated Oct 2, 2005)

Abstract: We analyze software reuse from the perspective of information theory and Kolmogorov complexity, assessing our ability to ``compress'' programs by expressing them in terms of software components reused from libraries. A common theme in the software reuse literature is that if we can only get the right environment in place--- the right tools, the right generalizations, economic incentives, a ``culture of reuse'' --- then reuse of software will soar, with consequent improvements in productivity and software quality. The analysis developed in this paper paints a different picture: the extent to which software reuse can occur is an intrinsic property of a problem domain, and better tools and culture can have only marginal impact on reuse rates if the domain is inherently resistant to reuse. We define an entropy parameter $H \in [0,1]$ of problem domains that measures program diversity, and deduce from this upper bounds on code reuse and the scale of components with which we may work. For ``low entropy'' domains with $H$ near $0$, programs are highly similar to one another and the domain is amenable to the Component-Based Software Engineering (CBSE) dream of programming by composing large-scale components. For problem domains with $H$ near $1$, programs require substantial quantities of new code, with only a modest proportion of an application comprised of reused, small-scale components. Preliminary empirical results from Unix platforms support some of the predictions of our model.

Fri, Jun. 17th, 2005, 07:59 am
Talk: What is a Library?

Slides in pdf.

Talk given at the Dagstuhl workshop Software Libraries: Design and Evaluation, Schloss Dagstuhl, Germany, March 9-11 2005

Abstract. This talk surveys the major ideas of software libraries. First I trace the early history of libraries. One of the earliest libraries was the EDSAC's in the 1950s, stored as reusable paper tapes in a set of filing drawers, with an accompanying catalogue detailing the subroutines and their characteristics. Then I enumerate several perspectives on software libraries: libraries may usefully be regarded as knowledge bases, reuse repositories, language extensions, domain experts, abstractions, de-facto standards, defect management strategies, software compression, a stable platform, a technology adoption vehicle, and a communication medium. Each of these perspectives yields interesting questions and concerns about library design. Due to time limitations I cover only the first four of these in detail.

Fri, Jun. 17th, 2005, 05:49 am
Talk: How to Optimize a DSL

Slides in pdf.

Abstract. Domain-specific languages give programmers expressive notations tailored to the problem at hand. Producing a wholly new language is a massive effort, and so good practice is to realize DSLs by reusing an existing ``host'' language, either by writing a translator from the DSL to the host language, or defining the DSL as a library in the host language. In either approach, one may encounter the challenge that the problem domain requires optimizations and safety checks not supported by the host language. In this talk I will overview a research program aimed at developing more powerful host languages that have the power to realize any domain-specific optimizations and safety checks we might desire.

Fri, Jun. 17th, 2005, 05:33 am
Talk: Literature Search for Computer Science

Slides in pdf format.

Abstract. By some accounts, the computer science literature comprises some 2 million publications and is growing at an ever-faster rate. In this talk, I overview the structure of the literature and outline strategies for searching it, emphasizing modern tools available online.