共查询到20条相似文献,搜索用时 15 毫秒
1.
Two key features in the Icon programming language are tables and sets. An Icon program may use one large set or table, or thousands of small ones. To improve space and time performance for these diverse uses, their hashed data structures were reimplemented to dynamically resize during execution, reducing the minimum space requirement and achieving constant-time access to any element for virtually any size set or table. The implementation is adapted from Per-Åke Larson's dynamic hashing technique by using well-known base-2 arithmetic techniques to decrease the space required for small tables without degrading the performance of large tables. Also presented are techniques to prevent dynamic hashing from interfering with other Icon language features. Performance measurements are included to support the results. 相似文献
2.
J% is an extension of the Java programming language that efficiently supports the integration of domain-specific languages. In particular, J% allows the embedding of domain-specific language code into Java programs in a syntax-checked and type-safe manner. This paper presents J%׳s support for the sql language. J% checks the syntax and semantics of sql statements at compile-time. It supports query validation against a database schema or through execution to a live database server. The J% compiler generates code that uses standard jdbc api calls, enhancing runtime efficiency and security against sql injection attacks. 相似文献
3.
Two features of the Icon programming language strongly influence its implementation: generators and goal-directed evaluation. A generator is an expression that is capable of producing a sequence of results. In goal-directed evaluation, the results of generators are produced automatically in an attempt to complete computations successfully. This paper describes the generated code and run-time support for generators, goal-directed evaluation, and related control structures. 相似文献
4.
Recent proposals for multi-paradigm declarative programming combine the most important features of functional, logic and concurrent programming into a single framework. The operational semantics of these languages is usually based on a combination of narrowing and residuation. In this paper, we introduce a non-standard, residualizing semantics for multi-paradigm declarative programs and prove its equivalence with a standard operational semantics. Our residualizing semantics is particularly relevant within the area of program transformation where it is useful, e.g., to perform computations during partial evaluation. Thus, the proof of equivalence is a crucial result to demonstrate the correctness of (existing) partial evaluation schemes. 相似文献
5.
The abstract (or semantic) syntax of the Pascal language is identified, and a linear representation for the trees so formed within the framework of the concrete syntax for that language is imposed. The indentation scheme so formed, augmented with a small number of pragmatic considerations, is compared with several previously proposed formatting schemes for Pascal and an example of the use of this new method is given. 相似文献
6.
David R. Hanson 《Computer Languages, Systems and Structures》1978,3(3):181-192
The procedural approach to data structures used in the SL5 programming language is described. The SL5 procedure mechanism forms the basis for this approach to data structures by treating procedures and their activation records (environments) as data objects and by decomposing the traditionally atomic operation of procedure invocation into more elementary components. The basic idea is that environments, since they are data objects, can also be used as data structures. The result is a single unified linguistic mechanism for constructing both procedures and data structures. Several examples are given. 相似文献
7.
John C. Cavouras 《Software》1983,13(9):809-815
Ways to implement coroutines in a block-structured language with no multitasking facilities are presented. Coroutines are implemented as procedures. The reactivation points are kept in global variables, one variable for each procedure. Local variables whose values are required on re-entry are stored as STATIC objects. The variables or data of re-entrant coroutines are stored in an event list associated with each such coroutine. A procedure with several entries is a convenient mechanism to trap the primitive calls issued by the coroutines. This procedure returns to the master program by using a non-local GOTO. The implementation of the above in PL/I and C is described and a comparison is made with sequential Pascal. Ada includes constructs which satisfy most requirements. 相似文献
8.
Torben Amtoft 《Information Processing Letters》2008,106(2):45-51
Slicing is a program transformation technique with numerous applications, as it allows the user to focus on the parts of a program that are relevant for a given purpose. Ideally, the slice program should have the same termination properties as the original program, but to keep the slices manageable, it might be preferable to slice away loops that do not affect the values of relevant variables. This paper provides the first theoretical foundation to reason about non-termination insensitive slicing without assuming the presence of a unique end node. A slice is required to be closed under data dependence and under a recently proposed variant of control dependence, called weak order dependence. This allows a simulation-based correctness proof for a correctness criterion stating that the observational behavior of the original program must be a prefix of the behavior of the slice program. 相似文献
9.
D. A. Joslin 《Software》1979,9(8):691-692
This paper is a copy of the case made by the author to his County Council for acquisition of a Pascal compiler for their computer. Its message is essentially that Pascal is the best thing since sliced bread. 相似文献
10.
DTL is an experimental programming language which has developed from an investigation of data structured design methods and data driven programming techniques. A DTL program is derived from a specification of the structure of its valid input and output languages. The program function is defined as a translation between these languages. A complex translation can be hierarchically structured into a network of simpler translations by stepwise refinement. 相似文献
11.
UNISEX is a UNIX-based symbolic executor for Pascal. The UNISEX system provides an environment for both testing and formally verifying Pascal programs. The system supports a large subset of Pascal, runs on UNIX and provides the user with a variety of debugging features to help in the difficult task of program validation. This paper contains a brief introduction to symbolic execution, followed by an overview of the features of UNISEX, a discussion of the UNISEX Pascal language, and some of the implementation details for the UNISEX system. Finally, some of the problems encountered when designing and implementing the system are discussed as well as future directions. 相似文献
12.
The essential components of an effective program development environment are described. These assist in the interactive investigation of program behaviour and accelerate the rate at which programs are modified. The whole system is compact and simple, being designed for use on small machines. It is considered as important to understand how to use these tools as it is to provide them. 相似文献
13.
Patrick Doherty Jonas Kvarnström Fredrik Heintz 《Autonomous Agents and Multi-Agent Systems》2009,19(3):332-377
Research with autonomous unmanned aircraft systems is reaching a new degree of sophistication where targeted missions require
complex types of deliberative capability integrated in a practical manner in such systems. Due to these pragmatic constraints,
integration is just as important as theoretical and applied work in developing the actual deliberative functionalities. In
this article, we present a temporal logic-based task planning and execution monitoring framework and its integration into
a fully deployed rotor-based unmanned aircraft system developed in our laboratory. We use a very challenging emergency services
application involving body identification and supply delivery as a vehicle for showing the potential use of such a framework
in real-world applications. TALplanner, a temporal logic-based task planner, is used to generate mission plans. Building further
on the use of TAL (Temporal Action Logic), we show how knowledge gathered from the appropriate sensors during plan execution
can be used to create state structures, incrementally building a partial logical model representing the actual development
of the system and its environment over time. We then show how formulas in the same logic can be used to specify the desired
behavior of the system and its environment and how violations of such formulas can be detected in a timely manner in an execution
monitor subsystem. The pervasive use of logic throughout the higher level deliberative layers of the system architecture provides
a solid shared declarative semantics that facilitates the transfer of knowledge between different modules. 相似文献
14.
Four programming languages (Fortran, Cobol, Jovial and the proposed DoD standard) are compared in the light of modern ideas of good software engineering practice. The comparison begins by identifying a core for each language that captures the essential properties of the language and the intent of the language designers. These core languages then serve as a basis for the discussion of the language philosophies and the impact of the language on gross program organization and on the use of individual statements. 相似文献
15.
This paper examines the concept of comments in programming languages and answers the questions: Why are they needed? How are they defined and implemented in existing languages? What should be provided in future languages? 相似文献
16.
17.
James R. Larus 《Software》1990,20(12):1241-1258
Many areas of computer performance analysis require detailed traces of events that occur during a program's execution. Collecting traces is expensive. The additional code required to record events greatly slows a program's execution. In addition, the resulting trace files can grow unmanageably large. This paper describes a technique called abstract execution that alleviates both problems. Abstract execution records a small set of events during the traced program's execution. These events serve as input to an abstract version of the program that generates a full trace by re-executing selected portions of the original program. This process greatly reduces both the cost of tracing the original program and the size of the trace files. The cost of regenerating a trace is insignificant in comparison to the cost of applications that use it. This paper also describes a system called AE that implements Abstract Execution. The paper contains measurements that demonstrate that AE can efficiently trace large programs. 相似文献
18.
The protection of software applications is one of the most important problems to solve in information security because it has a crucial effect on other security issues. We can find in the literature many research initiatives that have tried to solve this problem, many of them based on the use of tamperproof hardware tokens. This type of solution depends on two basic premises: (i) increasing the physical security by using tamperproof devices and (ii) increasing the complexity of the analysis of the software. The first premise is reasonable. The second one is certainly related to the first one. In fact, its main goal is that the pirate user not be able to modify the software to bypass an operation that is crucial: checking the presence of the token. However, experience shows that the second premise is not realistic because analysis of the executable code is always possible. Moreover, the techniques used to obstruct the analysis process are not enough to discourage an attacker with average resources.In this paper, we review the most relevant works related to software protection, present a taxonomy of those works, and, most important, introduce a new and robust software protection scheme. This solution, called SmartProt, is based on the use of smart cards and cryptographic techniques, and its security relies only on the first of the premises given above; that is, SmartProt has been designed to avoid attacks based on code analysis and software modification. The entire system is described following a lifecycle approach, explaining in detail the card setup, production, authorization, and execution phases. We also present some interesting applications of SmartProt as well as the protocols developed to manage licences. Finally, we provide an analysis of its implementation details. 相似文献
19.
Hiroyasu Nagata 《Computer Languages, Systems and Structures》1979,4(1):17-27
EQL, a language for numerical computation, has been implemented. This paper describes essential properties of the EQL language, which considerably simplifies numerical analysis and programming thanks to the following features: (1) elimination of explicit sequencing: (2) matrix and array computations: (3) simple and convenient notation of iteration procedure: (4) mapping of data structures (vector or matrix) on data objects which are represented in the computer: (5) tabulation facility for function values. Also the outline of translator, which transforms an EQL program to FORTRAN codes, is described. 相似文献
20.
Eduardo Huedo Ugo Bastolla Rubén S. Montero Ignacio M. Llorente 《New Generation Computing》2005,23(4):277-290
The large number of protein sequences, provided by genomic projects at an increasing pace, constitutes a challenge for large
scale computational studies of protein structure and thermodynamics. Grid technology is very suitable to face this challenge,
since it provides a way to access the resources needed in compute and data intensive applications. In this paper, we show
the procedure to adapt to the Grid an algorithm for the prediction of protein thermodynamics, using the GridWay tool. GridWay
allows the resolution of large computational experiments by reacting to events dynamically generated by both the Grid and
the application.
Eduardo Huedo, Ph.D.: He is a Computer Engineer (1999) and Ph.D. in Computer Architecture (2004) by the Universidad Complutense de Madrid (UCM).
He is Scientist in the Advanced Computing Laboratory at Centro de Astrobiología (CSIC-INTA), associated to NASA Astrobiology
Institute. He had one appointment in 2000 as a Summer Student in High Performance Computing and Applied Mathematics at ICASE
(NASA Langley Research Center). His research areas are Performance Management and Tuning, High Performance Computing and Grid
Technology.
Ugo Bastolla, Ph.D.: He received his degree and Ph.D. in Physics in Rome University, with L. Peliti and G. Parisi respectively. He was interested
from the beginning in biologically motivated problems, therefore, studied models of Population Genetics, Boolean Networks,
Neural Networks, Statistical Mechanics of Polymers, Ecological and Biodiversity. His main research interest is constituted
by studies of protein folding thermodynamics and evolution. Thereby, he set up an effective energy function allowing prediction
of protein folding thermodynamics, and applied it to protein structure prediction, to simulate protein evolution and to analyze
protein sequences from a thermodynamical point of view. He is currently in the Bioinformatic Unit of the Centro de Astrobiología
of Madrid.
Rubén S. Montero, Ph.D.: He received his B.S. in Physics (1996), M.S in Computer Science (1998) and Ph.D. in Computer Architecture (2002) from the
Universidad Complutense de Madrid (UCM). He is Assistant Professor of Computer Architecture and Technology at UCM since 1999.
He has held several research appointments at ICASE (NASA Langley Research Center), where he worked on computational fluid
dynamics, parallel multigrid algorithms and Cluster computing. Nowadays, his research interests lie mainly in Grid Technology,
in particular in adaptive scheduling, adaptive execution and distributed algorithms.
Ignacio M. Llorente, Ph.D.: He received his B.S. in Physics (1990), M.S in Computer Science (1992) and Ph.D. in Computer Architecture (1995) from the
Universidad Complutense de Madrid (UCM). He is Executive M.B.A. by Instituto de Empresa since 2003. He is Associate Professor
of Computer Architecture and Technology in the Department of Computer Architecture and System Engineering at UCM and Senior
Scientist at Centro de Astrobiología (CSIC-INTA), associated to NASA Astrobiology Institute. He has held several appointments
since 1997 as a Consultant in High Performance Computing and Applied Mathematics at ICASE (NASA Langley Research Center).
His research areas are Information Security, High Performance Computing and Grid Technology. 相似文献