An organization like the Association for Computing Machinery, with a variety of publications, newsletters, interest groups, and conferences, provides an important forum for discussing the nature and changes of computi...
详细信息
An organization like the Association for Computing Machinery, with a variety of publications, newsletters, interest groups, and conferences, provides an important forum for discussing the nature and changes of computing profession. Such discussions should, of course, go on continuously, but there will be particular periods of rapid social and technological change in which they are more necessary. A number of articles in the journal 'Communications of the ACM' over the past few years suggest this is such a time. The purpose of this article is to contribute to the discussion from a Scandinavian perspective. The authors begin by presenting a framework for understanding their profession and for discussing possible changes. The framework offers competing conceptions in terms of professional focus, approach, and role. The authors then use the framework in an examination of the current discussion within the ACM. The cited articles, in spite of having different motivation and purpose, identify a need for professional changes in education, research and practice. But, the authors argue, the changes suggested are insufficient to meet the demands placed on their profession by the ongoing changes in technology and society. As a consequence, they propose a more radical position on the future of their profession, with technology in use as its foundation, and they outline a new curriculum for the education of computer professionals. INSETS: The Mechanistic and the Romantic Views.;The Professional Focus of Computing.;Professional Approaches.;Professional Roles.
Let users teach their own imperfect software agents what to do and where to do *** agents are intended to perform certain autonomous tasks on behalfof their users. In many situations, however, the agent's compete...
详细信息
Let users teach their own imperfect software agents what to do and where to do *** agents are intended to perform certain autonomous tasks on behalfof their users. In many situations, however, the agent's competence might be insufficient to produce the desired result. But instead of simply giving up and leaving the whole task to the user, a much better alternative is for the agent itself to identify the cause of the problem, communicate it to another agent -or to the user - that is able (and willing) to help, and use the results to proceed toward the original goal.
Programs written in C and C++ are susceptible to memory errors, including buffer overflows and dangling pointers. These errors, which can lead to crashes, erroneous execution, and security vulnerabilities, are notorio...
详细信息
Programs written in C and C++ are susceptible to memory errors, including buffer overflows and dangling pointers. These errors, which can lead to crashes, erroneous execution, and security vulnerabilities, are notoriously costly to repair. Tracking down their location in the source code is difficult, even when the full memory state of the program is available. Once the errors are finally found, fixing them remains challenging: even for critical security-sensitive bugs, the average time between initial reports and the issuance of a patch is nearly 1 month. We present Exterminator, a system that automatically corrects heap-based memory errors without programmer intervention. Exterminator exploits randomization to pinpoint errors with high precision. From this information, Exterminator derives runtime patches that fix these errors both in current and subsequent executions. In addition, Exterminator enables collaborative bug correction by merging patches generated by multiple users. We present analytical and empirical results that demonstrate Exterminator's effectiveness at detecting and correcting both injected and real faults.
This article describes an analytic study of the process used by John Chowning for the composition of Stria. This article is intended to complete the description of the compositional process given in a previous work (M...
详细信息
This article describes an analytic study of the process used by John Chowning for the composition of Stria. This article is intended to complete the description of the compositional process given in a previous work (Meneghini 2003), largely restated by Bossis in a subsequent paper (Bossis 2005). Stria was composed in 1977 and was fully generated by means of computer algorithms (Chowning 1977c) and the corresponding input files (Chowning 1977a, b): all the parameters of the sounds generated in Stria are determined and calculated by these algorithms on the basis of specific mathematical rules and of numerical parameters chosen by Mr. Chowning as input for the programs. For this reason, an accurate analysis of these algorithms is fundamental for a complete comprehension of the compositional process.
Including architecture-centric design and analysis methods in the Extreme Programming framework helps address quality attributes in an explicit, methodical, engineering-principled way.
Including architecture-centric design and analysis methods in the Extreme Programming framework helps address quality attributes in an explicit, methodical, engineering-principled way.
Little contemporary data exists on the actual practices of software professional for software requirements elicitation, requirements specification validation. The authors conducted an exploratory survey of several hun...
详细信息
Little contemporary data exists on the actual practices of software professional for software requirements elicitation, requirements specification validation. The authors conducted an exploratory survey of several hundred software and systems practitioners. This article reports quantitative results for the purposes of further interpretation and comparison with other available data.
Researchers are in vestigating various methods and tools to help architects effectively document their decisions. However, such documentation remains difficult, so we often lose knowledge of key architectural decision...
详细信息
Researchers are in vestigating various methods and tools to help architects effectively document their decisions. However, such documentation remains difficult, so we often lose knowledge of key architectural decisions. Architecture patterns can be an important way to capture this knowledge.
Haskell's popularity has driven the need for ever more expressive type system features, most of which threaten the decidability and practicality of Damas-Milner type inference. One such feature is the ability to w...
详细信息
Haskell's popularity has driven the need for ever more expressive type system features, most of which threaten the decidability and practicality of Damas-Milner type inference. One such feature is the ability to write functions with higher-rank types - that is, functions that take polymorphic functions as their arguments. Complete type inference is known to be undecidable for higher-rank (impredicative) type systems, but in practice programmers are more than willing to add type annotations to guide the type inference engine, and to document their code. However, the choice of just what annotations are required, and what changes are required in the type system and its inference algorithm, has been an ongoing topic of research. We take as our starting point a lambda-calculus proposed by Odersky and Laufer. Their system supports arbitrary-rank polymorphism through the exploitation of type annotations on lambda-bound arguments and arbitrary sub-terms. Though elegant, and more convenient than some other proposals, Odersky and Laufer's system requires many annotations. We show how to use local type inference (invented by Pierce and Turner) to greatly reduce the annotation burden, to the point where higher-rank types become eminently usable. Higher-rank types have a very modest impact on type inference. We substantiate this claim in a very concrete way, by presenting a complete type-inference engine, written in Haskell, for a traditional Damas-Milner type system, and then showing how to extend it for higher-rank types. We write the type-inference engine using a monadic framework: it turns out to be a particularly compelling example of monads in action. The paper is long, but is strongly tutorial in style. Although we use Haskell as our example source language, and our implementation language, much of our work is directly applicable to any ML-like functional language.
The article is about software reuse. In the past, most software developers found it easier to build their own software components by themselves because there were very few good components available to them. In additio...
详细信息
The article is about software reuse. In the past, most software developers found it easier to build their own software components by themselves because there were very few good components available to them. In addition, reusable components were difficult and expensive to locate and evaluate. However, as open source software becomes more popular, and programming code search engines get more effective, software reuse may also become more common. A tool called Code Conjurer was produced at the University of Mannheim, in Germany. This tool enables programmers to find reusable software components with very little effort.
This paper applies wavelet analysis to compare trends in advertised positions for C++ and Java skills within two geographic IT markets, Denver, Colorado, and Silicon Valley, California. The goal of the analysis is to ...
详细信息
This paper applies wavelet analysis to compare trends in advertised positions for C++ and Java skills within two geographic IT markets, Denver, Colorado, and Silicon Valley, California. The goal of the analysis is to identify patterns and assess similarities and differences in demand during the recent downturn. The paper offers insight into IT management responses to a downturn in the economy and highlights the difference in employment demand between C++ and Java.
暂无评论