16 research outputs found

    Strategies for typecase optimization

    Get PDF
    International audienceWe contrast two approaches to optimizing the Common Lisp typecase macro expansion. The first approach is based on heuristics intended to estimate run time performance of certain type checks involving Common Lisp type specifiers. The technique may, depending on code size, exhaustively search the space of permutations of the type checks, intent on finding the optimal order. With the second technique, we represent a typecase form as a type specifier, encapsulating the side-effecting non-Boolean parts so as to appear compatible with the Common Lisp type algebra operators. The encapsulated expressions are specially handled so that the Common Lisp type algebra functions preserve them, and we can unwrap them after a process of Boolean reduction into efficient Common Lisp code, maintaining the appropriate side effects but eliminating unnecessary type checks. Both approaches allow us to identify un-reachable code, test for exhaustiveness of the clauses and eliminate type checks which are calculated to be redundant

    From JSON to JSEN through Virtual Languages

    Get PDF
    In this paper we describe a data format suitable for storing and manipulating executable language statements that can be used for exchanging/storing programs, executing them concurrently and extending homoiconicity of the hosting language. We call it JSEN, JavaScript Executable Notation, which represents the counterpart of JSON, JavaScript Object Notation. JSON and JSEN complement each other. The former is a data format for storing and representing objects and data, while the latter has been created for exchanging/storing/executing and manipulating statements of programs. The two formats, JSON and JSEN, share some common properties, reviewed in this paper with a more extensive analysis on what the JSEN data format can provide. JSEN extends homoiconicity of the hosting language (in our case JavaScript), giving the possibility to manipulate programs in a finer grain manner than what is currently possible. This property makes definition of virtual languages (or DSL) simple and straightforward. Moreover, JSEN provides a base for implementing a type of concurrent multitasking for a single-threaded language like JavaScript

    Role of asynchronous awareness in digital art creation

    Get PDF
    Thesis (S.M.)--Massachusetts Institute of Technology, School of Architecture and Planning, Program in Media Arts and Sciences, 2008.Includes bibliographical references (p. 83-85).The majority of visitors to sites on the World Wide Web (WWW) have traditionally been only passive observers; consumers of previously created content. More recently, however, these users have been encouraged to contribute to these sites, opening the door to new forms of creative self expression. As we enter this new era of widespread collaboration and sharing made possible by the WWW, one question that remains is how to build appropriate communication channels to and from this new medium with respect to the tools used for digitally mediated creative expression. In this thesis, I will attempt to formulate a coherent set of characteristics that both creative programming environments and their associated WWW sites must possess to help improve, inspire, and support the work of creative individuals using these systems, which I will refer to as architectures for web-based collectivity.by Kyle Matthew Buza.S.M

    Unwoven Aspect Analysis

    Get PDF
    Various languages and tools supporting advanced separation of concerns (such as aspect-oriented programming) provide a software developer with the ability to separate functional and non-functional programmatic intentions. Once these separate pieces of the software have been specified, the tools automatically handle interaction points between separate modules, relieving the developer of this chore and permitting more understandable, maintainable code. Many approaches have left traditional compiler analysis and optimization until after the composition has been performed; unfortunately, analyses performed after composition cannot make use of the logical separation present in the original program. Further, for modular systems that can be configured with different sets of features, testing under every possible combination of features may be necessary and time-consuming to avoid bugs in production software. To solve this testing problem, we investigate a feature-aware compiler analysis that runs during composition and discovers features strongly independent of each other. When the their independence can be judged, the number of feature combinations that must be separately tested can be reduced. We develop this approach and discuss our implementation. We look forward to future programming languages in two ways: we implement solutions to problems that are conceptually aspect-oriented but for which current aspect languages and tools fail. We study these cases and consider what language designs might provide even more information to a compiler. We describe some features that such a future language might have, based on our observations of current language deficiencies and our experience with compilers for these languages

    A structured approach to physically-based modeling for computer graphics

    Get PDF
    This thesis presents a framework for the design of physically-based computer graphics models. The framework includes a paradigm for the structure of physically-based models, techniques for "structured" mathematical modeling, and a specification of a computer program structure in which to implement the models. The framework is based on known principles and methodologies of structured programming and mathematical modeling. Because the framework emphasizes the structure and organization of models, we refer to it as "Structured Modeling." The Structured Modeling framework focuses on clarity and "correctness" of models, emphasizing explicit statement of assumptions, goals, and techniques. In particular, we partition physically-based models, separating them into conceptual and mathematical models, and posed problems. We control complexity of models by designing in a modular manner, piecing models together from smaller components. The framework places a particular emphasis on defining a complete formal statement of a model's mathematical equations, before attempting to simulate the model. To manage the complexity of these equations, we define a collection of mathematical constructs, notation, and terminology, that allow mathematical models to be created in a structured and modular manner. We construct a computer programming environment that directly supports the implementation of models designed using the above techniques. The environment is geared to a tool-oriented approach, in which models are built from an extensible collection of software objects, that correspond to elements and tasks of a "blackboard" design of models. A substantial portion of this thesis is devoted to developing a library of physically-based model "modules," including rigid-body kinematics, rigid-body dynamics, and dynamic constraints, all built with the Structured Modeling framework. These modules are intended to serve both as examples of the framework, and as potentially useful tools for the computer graphics community. Each module includes statements of goals and assumptions, explicit mathematical models and problem statements, and descriptions of software objects that support them. We illustrate the use of the library to build some sample models, and include discussion of various possible additions and extensions to the library. Structured Modeling is an experiment in modeling: an exploration of designing via strict adherence to a dogma of structure, modularity, and mathematical formality. It does not stress issues such as particular numerical simulation techniques or efficiency of computer execution time or memory usage, all of which are important practical considerations in modeling. However, at least so far as the work carried on in this thesis, Structured Modeling has proven to be a useful aid in the design and understanding of complex physically based models.</p

    DFKI publications : the first four years ; 1990 - 1993

    Get PDF

    Recursion in cognition: a computational investigation into the representation and processing of language

    Get PDF
    La recursividad entendida como auto-referencia se puede aplicar a varios constructos de las ciencias cognitivas, como las definiciones teóricas, los procedimientos mecánicos, los procesos de cálculo (sean éstos abstractos o concretos) o las estructuras. La recursividad es una propiedad central tanto del procedimiento mecánico que subyace a la facultad del lenguaje como de las estructuras que esta facultad genera. Sin embargo, tanto las derivaciones sintácticas de la gramática, que constituyen un proceso computacional abstracto, como las estrategias de procesamiento del parser, que son un proceso en tiempo real, proceden de forma iterativa, lo cual sugiere que la especificación recursiva de un algoritmo se implementa de forma iterativa. Además, la combinación de la recursividad con las unidades léxicas y las imposiciones de los interfaces con los que la facultad del lenguaje interactúa resulta en un conjunto de estructuras sui generis que no tienen parangón en otros dominios cognitivos.Recursion qua self-reference applies to various constructs within the cognitive sciences, such as theoretical definitions, mechanical procedures (or algorithms), (abstract or real-time) computational processes and structures. Recursion is an intrinsic property of both the mechanical procedure underlying the language faculty and the structures this faculty generates. However, the recursive nature of the generated structures and the recursive character of the processes need to be kept distinct, their study meriting individual treatment. In fact, the nature of both the syntactic derivations of the grammar (an abstract computational process) and the processing strategies of the parser (a real-time process) are iterative, which suggests that recursively-defined algorithms are implemented iteratively in linguistic cognition. Furthermore, the combination of recursion, lexical items and the impositions of the interfaces the language faculty interacts with results in a sui generis set of structures with which other domains of the mind bear the most superficial of relations

    The Condor Programmer's Manual - Version II

    Get PDF
    This is the CONDOR programmer's manual, that describes the hardware and software that form the basis of the real-time computational architecture built originally for the Utah-MIT hand. The architecture has been used successfully to control the hand and the MIT-Serial Link Direct Drive Arm in the past. A number of such systems are being built to address the computational needs of other robotics research efforts in and around the lab. This manual, which is intended primarily for programmers/users of the CONDOR system, represents our effort at documenting the system so that it can be a generally useful research tool.MIT Artificial Intelligence Laborator

    DFKI publications : the first four years ; 1990 - 1993

    Get PDF
    corecore