Search For:

Displaying 1-29 out of 29 total
Post-Javaism
Found in: IEEE Internet Computing
By Andrew P. Black
Issue Date:January 2004
pp. 96, 93-95
<p>The Java programming language has been a phenomenal success. It?s a significant improvement over C and C++, and its libraries for network and GUI programming have introduced large numbers of programmers to previously esoteric disciplines.But Java ...
 
Refactoring Tools: Fitness for Purpose
Found in: IEEE Software
By Emerson Murphy-Hill,Andrew P. Black
Issue Date:September 2008
pp. 38-44
Refactoring tools can improve the speed and accuracy with which developers create and maintain software—but only if they are used. In practice, tools are not used as much as they could be; this seems to be because sometimes they do not align with the refac...
 
How we refactor, and how we know it
Found in: Software Engineering, International Conference on
By Emerson Murphy-Hill, Chris Parnin, Andrew P. Black
Issue Date:May 2009
pp. 287-297
Much of what we know about how programmers refactor in the wild is based on studies that examine just a few software projects. Researchers have rarely taken the time to replicate these studies in other contexts or to examine the assumptions on which they a...
 
Traits: Tools and Methodology
Found in: Software Engineering, International Conference on
By Andrew P. Black, Nathanael Schärli
Issue Date:May 2004
pp. 676-686
<p>Traits are an object-oriented programming language construct that allow groups of methods to be named and reused in arbitrary places in an inheritance hierarchy. Classes can use methods from traits as well as defining their own methods and instanc...
 
Programmer-Friendly Refactoring Errors
Found in: IEEE Transactions on Software Engineering
By Emerson Murphy-Hill,Andrew P. Black
Issue Date:November 2012
pp. 1417-1431
Refactoring tools, common to many integrated development environments, can help programmers to restructure their code. These tools sometimes refuse to restructure the programmer's code, instead giving the programmer a textual error message that she must de...
 
How We Refactor, and How We Know It
Found in: IEEE Transactions on Software Engineering
By Emerson Murphy-Hill,Chris Parnin,Andrew P. Black
Publication Date: April 2011
pp. N/A
Refactoring is widely practiced by developers, and considerable research and development effort has been invested in refactoring tools. However, little has been reported about the adoption of refactoring tools, and many assumptions about refactoring practi...
 
What shall we tell the children (about inheritance)?
Found in: Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance (MASPEGHI '13)
By Andrew P. Black
Issue Date:July 2013
pp. 17-25
Since the groundbreaking work of Kamin, Reddy, and particularly Cook in the late 1980s, there has been broad agreement that the meaning of inheritance in object-oriented programming languages can be best explained using generator functions and their fixpoi...
     
Modules as gradually-typed objects
Found in: Proceedings of the 7th Workshop on Dynamic Languages and Applications (DYLA '13)
By Andrew P. Black, James Noble, Kim B. Bruce, Michael Homer
Issue Date:July 2013
pp. 1-8
Grace is a gradually typed, object-oriented language for use in education. Grace needs a module system for several reasons: to teach students about modular program design, to organise large programs, especially its self-hosted implementation, and to provid...
     
Seeking grace: a new object-oriented language for novices
Found in: Proceeding of the 44th ACM technical symposium on Computer science education (SIGCSE '13)
By Amy Ruskin, Andrew P. Black, James Noble, Kim B. Bruce, Michael Homer, Richard Yannow
Issue Date:March 2013
pp. 129-134
Grace is a new object-oriented language that supports a variety of approaches to teaching programming. It integrates accepted new ideas in programming languages into a simple language that allows students and teachers to focus on the essential complexities...
     
Approximate parallel sorting on a spatial computer
Found in: Proceedings of the 2012 ACM workshop on Relaxing synchronization for multicore and manycore scalability (RACES '12)
By Andrew P. Black, Max Orhai
Issue Date:October 2012
pp. 61-66
We describe collision sort, a simple distributed sorting algorithm for a spatial computer on a regular lattice, which represents data by mobile particles in an abstract space. Although collision sort produces only approximate results, it tolerates faults, ...
     
Workshop on relaxing synchronization for multicore and manycore scalability (RACES 2012)
Found in: Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity (SPLASH '12)
By Andrew P. Black, David Ungar, Doug Kimelman, Martin Rinard, Theo D'Hondt
Issue Date:October 2012
pp. 221-222
Massively-parallel systems are coming: core counts keep rising whether conventional cores as in multicore and manycore systems, or specialized cores as in GPUs. Conventional wisdom has been to utilize this parallelism by reducing synchronization to the min...
     
Grace: the absence of (inessential) difficulty
Found in: Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software (Onward! '12)
By Andrew P. Black, James Noble, Kim B. Bruce, Michael Homer
Issue Date:October 2012
pp. 85-98
We are engaged in the design of a small, simple programming language for teaching novices object-oriented programming. This turns out to be far from a small, simple task. We focus on three of the problems that we encountered, and how we believe we have sol...
     
Patterns as objects in grace
Found in: Proceedings of the 8th symposium on Dynamic languages (DLS '12)
By Andrew P. Black, David J. Pearce, James Noble, Kim B. Bruce, Michael Homer
Issue Date:October 2012
pp. 17-28
Object orientation and pattern matching are often seen as conflicting approaches to program design. Object-oriented programs place type-dependent behavior inside objects and invoke it via dynamic dispatch, while pattern-matching programs place type-depende...
     
Presentation of the SIGPLAN distinguished achievement award to Sir Charles Antony Richard Hoare, FRS, FREng, FBCS; and interview
Found in: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '12)
By Andrew P. Black, Peter W. O'Hearn
Issue Date:January 2012
pp. 226-235
Mobile video broadcasting is a popular application of wireless network. However, the traditional layer based approaches have limited supports to the accommodation of users with diverse channel conditions. The newly emerged Softcast approach provides smooth...
     
Seven habits of a highly effective smell detector
Found in: Proceedings of the 2008 international workshop on Recommendation systems for software engineering (RSSE '08)
By Andrew P. Black, Emerson Murphy-Hill
Issue Date:November 2008
pp. 1-2
The process of refactoring code---changing its structure while preserving its meaning---has been identified as an important way of maintaining code quality over time. However, it is sometimes difficult for progammers to identify which pieces of code are in...
     
Gathering refactoring data: a comparison of four methods
Found in: Proceedings of the 2nd Workshop on Refactoring Tools (WRT '08)
By Andrew P. Black, Chris Parnin, Danny Dig, Emerson Murphy-Hill
Issue Date:October 2008
pp. 1-5
Those of us who seek to build better refactoring tools need empirical data collected from real refactoring sessions. The literature reports on different methods for capturing this data, but little is known about how the method of data capture affects the q...
     
Breaking the barriers to successful refactoring: observations and tools for extract method
Found in: Proceedings of the 13th international conference on Software engineering (ICSE '08)
By Andrew P. Black, Emerson Murphy-Hill
Issue Date:May 2008
pp. 1-1
Refactoring is the process of changing the structure of code without changing its behavior. Refactoring can be semi-automated with tools, which should make it easier for programmers to refactor quickly and correctly. However, we have observed that many too...
     
High velocity refactorings in Eclipse
Found in: Proceedings of the 2007 OOPSLA workshop on eclipse technology eXchange (eclipse '07)
By Andrew P. Black
Issue Date:October 2007
pp. 1-5
In Eclipse, and in most other development environments, refactorings are activated by selecting code, then using a menu or hotkey, and finally engaging in a dialog with a "wizard". However, selection is error-prone, menus are slow, hotkeys are hard to reme...
     
The development of the Emerald programming language
Found in: Proceedings of the third ACM SIGPLAN conference on History of programming languages (HOPL III)
By Andrew P. Black, Eric Jul, Henry M. Levy, Norman C. Hutchinson
Issue Date:June 2007
pp. 11-es
Emerald is an object-based programming language and system designed and implemented in the Department of Computer Science at the University of Washington in the early and mid-1980s. The goal of Emerald was to simplify the construction of distributed applic...
     
A pattern language for extensible program representation
Found in: Proceedings of the 2006 conference on Pattern languages of programs (PLoP '06)
By Andrew P. Black, Daniel Vainsencher
Issue Date:October 2006
pp. N/A
For the last 15 years, implementors of multiple view programming environments have sought a single code model that would form a suitable basis for all of the program analyses and tools that might be applied to the code. They have been unsuccessful. The con...
     
Tools for a successful refactoring
Found in: Companion to the 21st ACM SIGPLAN conference on Object-oriented programming languages, systems, and applications (OOPSLA '06)
By Andrew P. Black, Emerson Murphy-Hill
Issue Date:October 2006
pp. 694-695
Although refactoring tools have been integrated into numerous development environments over the past ten years, we have seen little variation in the human interfaces to refactoring tools -- when a refactoring fails, most tools present a textual error messa...
     
Traits: A mechanism for fine-grained reuse
Found in: ACM Transactions on Programming Languages and Systems (TOPLAS)
By Andrew P. Black, Nathanael Scharli, Oscar Nierstrasz, Roel Wuyts, Stephane Ducasse
Issue Date:March 2006
pp. 331-388
Inheritance is well-known and accepted as a mechanism for reuse in object-oriented languages. Unfortunately, due to the coarse granularity of inheritance, it may be difficult to decompose an application into an optimal class hierarchy that maximizes softwa...
     
Supporting Java traits in Eclipse
Found in: Proceedings of the 2004 OOPSLA workshop on eclipse technology eXchange (eclipse '04)
By Andrew P. Black, Emerson R. Murphy-Hill, Philip J. Quitslund
Issue Date:October 2004
pp. 37-41
Traits are a language technology that complements inheritance as a means for code reuse and class structuring. Traits encapsulate collections of methods so that they can be used and reused anywhere in the inheritance hierarchy. An important property of tra...
     
Traits: experience with a language feature
Found in: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications (OOPSLA '04)
By Andrew P. Black, Emerson R. Murphy-Hill
Issue Date:October 2004
pp. 275-282
This paper reports our experiences using traits, collections of pure methods designed to promote reuse and understandability in object-oriented programs. Traits had previously been used to refactor the Smalltalk collection hierarchy, but only by the creato...
     
Objects to the rescue!: or httpd: the next generation operating system
Found in: Proceedings of the 6th workshop on ACM SIGOPS European workshop: Matching operating systems to application needs (EW 6)
By Andrew P. Black, Jonathan Walpole
Issue Date:September 1994
pp. 100-104
This position paper suggests that object-oriented operating systems may provide the means to meet the ever-growing demands of applications. As an example of a successful OOOS, we cite the http daemon. To support the contention that httpd is in fact an oper...
     
Understanding transactions in the operating in the operating system context
Found in: Proceedings of the fourth workshop on ACM SIGOPS European workshop (EW 4)
By Andrew P. Black
Issue Date:September 1990
pp. 1-4
In this position paper basic concepts for an open architecture of a world-wide financial multidatabase system are presented. The environment, international banking, is first discussed and the key concept, autonomy is refined. In this extremely autonomous e...
     
Interconnecting heterogeneous computer systems
Found in: Communications of the ACM
By Andrew P. Black, David Notkin, Edward D. Lazowska, Henry M. Levy, Jan Sanislo, John Zahorjan
Issue Date:January 1988
pp. 258-273
A software structure created by the Heterogeneous Computer Systems (HCS) Project at the University of Washington was designed to address the problems of heterogeneity that typically arise in research computing environments.
     
Supporting distributed applications: experience with Eden
Found in: Proceedings of the tenth ACM symposium on Operating systems principles (SOSP '85)
By Andrew P. Black
Issue Date:December 1985
pp. 180-189
This paper discusses the formal verification of the design of an operating system kernel's conformance to the multilevel security property. The kernel implements multiple protection structures to support both discretionary and nondiscretionary security pol...
     
An asymmetric stream communication system
Found in: Proceedings of the ninth ACM symposium on Operating systems principles (SOSP '83)
By Andrew P. Black
Issue Date:October 1983
pp. 180-189
Input and output are often viewed as complementary operations, and it is certainly true that the direction of data flow during input is the reverse of that during output. However, in a conventional operating system, the direction of control flow is the sam...
     
 1