12,391 research outputs found
New Architectural Models for Visibly Controllable Computing: The Relevance of Dynamic Object Oriented Architectures and Plan Based Computing Models
Traditionally, we've focussed on the question of how to make a system easy to code the first time, or perhaps on how to ease the system's continued evolution. But if we look at life cycle costs, then we must conclude that the important question is how to make a system easy to operate. To do this we need to make it easy for the operators to see what's going on and to then manipulate the system so that it does what it is supposed to. This is a radically different criterion for success. What makes a computer system visible and controllable? This is a difficult question, but it's clear that today's modern operating systems with nearly 50 million source lines of code are neither. Strikingly, the MIT Lisp Machine and its commercial successors provided almost the same functionality as today's mainstream sytsems, but with only 1 Million lines of code. This paper is a retrospective examination of the features of the Lisp Machine hardware and software system. Our key claim is that by building the Object Abstraction into the lowest tiers of the system, great synergy and clarity were obtained. It is our hope that this is a lesson that can impact tomorrow's designs. We also speculate on how the spirit of the Lisp Machine could be extended to include a comprehensive access control model and how new layers of abstraction could further enrich this model
Pantry: A Macro Library for Python
Python lacks a simple way to create custom syntax and constructs that goes outside of its own syntax rules. A paradigm that allows for these possibilities to exist within languages is macros. Macros allow for a shorter set of syntax to expand into a longer set of instructions at compile-time. This gives the capability to evolve the language to fit personal needs.
Pantry, implements a hygienic text-substitution macro system for Python. Pantry achieves this through the introduction of an additional preparsing step that utilizes parsing and lexing of the source code. Pantry proposes a way to simply declare a pattern to be recognized, articulate instructions that replace the pattern, and replace the pattern in the source code. This form of meta-programming allows its users to be able to more concisely write their Python code and present the language in a more natural and intuitive manner.
We validate Pantryâs utility through use cases inspired by Python Enhancement Proposals (PEPs) and go through five of them. These are requests from the Python community for features to be implemented into Python. Pantry fulfills these desires through the composition of macros that that performs the new feature
Lisp, Jazz, Aikido -- Three Expressions of a Single Essence
The relation between Science (what we can explain) and Art (what we can't)
has long been acknowledged and while every science contains an artistic part,
every art form also needs a bit of science. Among all scientific disciplines,
programming holds a special place for two reasons. First, the artistic part is
not only undeniable but also essential. Second, and much like in a purely
artistic discipline, the act of programming is driven partly by the notion of
aesthetics: the pleasure we have in creating beautiful things. Even though the
importance of aesthetics in the act of programming is now unquestioned, more
could still be written on the subject. The field called "psychology of
programming" focuses on the cognitive aspects of the activity, with the goal of
improving the productivity of programmers. While many scientists have
emphasized their concern for aesthetics and the impact it has on their
activity, few computer scientists have actually written about their thought
process while programming. What makes us like or dislike such and such language
or paradigm? Why do we shape our programs the way we do? By answering these
questions from the angle of aesthetics, we may be able to shed some new light
on the art of programming. Starting from the assumption that aesthetics is an
inherently transversal dimension, it should be possible for every programmer to
find the same aesthetic driving force in every creative activity they
undertake, not just programming, and in doing so, get deeper insight on why and
how they do things the way they do. On the other hand, because our aesthetic
sensitivities are so personal, all we can really do is relate our own
experiences and share it with others, in the hope that it will inspire them to
do the same. My personal life has been revolving around three major creative
activities, of equal importance: programming in Lisp, playing Jazz music, and
practicing Aikido. But why so many of them, why so different ones, and why
these specifically? By introspecting my personal aesthetic sensitivities, I
eventually realized that my tastes in the scientific, artistic, and physical
domains are all motivated by the same driving forces, hence unifying Lisp,
Jazz, and Aikido as three expressions of a single essence, not so different
after all. Lisp, Jazz, and Aikido are governed by a limited set of rules which
remain simple and unobtrusive. Conforming to them is a pleasure. Because Lisp,
Jazz, and Aikido are inherently introspective disciplines, they also invite you
to transgress the rules in order to find your own. Breaking the rules is fun.
Finally, if Lisp, Jazz, and Aikido unify so many paradigms, styles, or
techniques, it is not by mere accumulation but because they live at the
meta-level and let you reinvent them. Working at the meta-level is an
enlightening experience. Understand your aesthetic sensitivities and you may
gain considerable insight on your own psychology of programming. Mine is
perhaps common to most lispers. Perhaps also common to other programming
communities, but that, is for the reader to decide..
Benchmarks of programming languages for special purposes in the space station
Although Ada is likely to be chosen as the principal programming language for the Space Station, certain needs, such as expert systems and robotics, may be better developed in special languages. The languages, LISP and Prolog, are studied and some benchmarks derived. The mathematical foundations for these languages are reviewed. Likely areas of the space station are sought out where automation and robotics might be applicable. Benchmarks are designed which are functional, mathematical, relational, and expert in nature. The coding will depend on the particular versions of the languages which become available for testing
A novel approach to symbolic algebra
A prototype for an extensible interactive graphical term manipulation system
is presented that combines pattern matching and nondeterministic evaluation to
provide a convenient framework for doing tedious algebraic manipulations that
so far had to be done manually in a semi-automatic fashion.Comment: 15 page
Slisp: A Flexible Software Toolkit for Hybrid, Embedded and Distributed Applications
We describe Slisp (pronounced âEss-Lispâ), a hybrid LispâC programming toolkit for the development of scriptable and distributed applications. Computationally expensive operations implemented as separate C-coded modules are selectively compiled into a small Xlisp interpreter, then called as Lisp functions in a Lisp-coded program. The resulting hybrid program may run in several modes: as a stand-alone executable, embedded in a different C program, as a networked server accessed from another Slisp client, or as a
networked server accessed from a C-coded client. Five years of experience with Slisp, as well experience with other scripting languages such as Tcl and Perl, are summarized. These experiences suggest that Slisp will be most useful for mid-sized applications in which the kinds of scripting and embeddability features provided by Tcl and Perl can be extended in an efïŹcient manner to larger applications, while maintaining a
well-deïŹned standard (Common Lisp) for these extensions. In addition, the generality of Lisp makes Lisp a good candidate for an application-level communication language in distributed environments
- âŠ