XRDS

Crossroads The ACM Magazine for Students

Sign In

Association for Computing Machinery

Articles Tagged: Languages

Articles & Features

Avoid common pitfalls when programming 2D graphics in java

This paper presents the core knowledge required to properly develop 2D games in Java. We describe the common pitfalls that can easily degrade graphics performance and show how we achieved impressive frames-per-second display updates when implementing Minueto, a game development framework.

By Alexandre Denault, Jörg Kienzle, March 2007

PDF | HTML | In the Digital Library

Modeling protein dependency networks using CoCoA

In an interdisciplinary effort to model protein dependency networks, biologists measure signals from certain proteins within cells over a given interval of time. Using this time series data, the goal is to deduce protein dependency relationships. The mathematical challenges is to statistically measure correlations between given proteins over time in order to conjecture probable relationships. Biologists can then consider these relationships with more scrutiny, in order to confirm their conjectures. One algorithm for finding such relationships makes use of interpolation of the data to produce next-state functions for each protein and the Deegan-Packel Index of Power voting method to measure the strength of correlations between pairs of proteins. The algorithm was previously implemented, but limitations associated with the original language required the algorithm to be re-implemented in a more computationally efficient language. Because of the algebraic focus of the Computational Commutative Algebra language, or CoCoA, the algorithm was re-implemented in this language, and results have been produced much more efficiently. In this paper I discuss the algorithm, the CoCoA language, the implementation of the algorithm in CoCoA, and the quality of the results.

By Grey Ballard, September 2006

PDF | HTML | In the Digital Library

C-Transformers

By Alexandre Borghi, Valentin David, Akim Demaille, May 2006

PDF | HTML | In the Digital Library

Stratego

Programming languages have a dual role in the construction of software. The language is both our substrate (the stuff we make software from), and our tool (what we use to construct software). Program transformation (PT) deals with the analysis, manipulation and generation of software. Therefore a close relationship exists between program transformation and programming languages, to the point where the PT field has produced many domain-specific languages for manipulating programs. In this article, I will show you some interesting aspects from one of these languages : Stratego.

By Karl Trygve Kalleberg, May 2006

PDF | HTML | In the Digital Library

FEATURE: Features

Coaching a society of robots in accomplishing joint tasks

By Marc Perron, September 2002

PDF | HTML | In the Digital Library

Managing XML data storage

By Jerry Emerick, June 2002

PDF | HTML | In the Digital Library

Software verification and validation with destiny

This paper presents an introduction to computer-aided theorem proving and a new approach using parallel processing to increase power and speed of this computation. Automated theorem provers, along with human interpretation, have been shown to be powerful tools in verifying and validating computer software. Destiny is a new tool that provides even greater and more powerful analysis enabling greater ties between software programs and their specifications.

By Josiah Dykstra, April 2002

PDF | HTML | In the Digital Library

Why bison is becoming extinct

At some point in your career, you're going to implement a computer language. You probably won't be implementing Java or C++. You may not even recognize it as a language. Truth be told, there are an awful lot of domain-specific languages, or "little languages" [7] in common use:

  • configuration files,
  • HTML/XML documents,
  • shell scripts,
  • network protocols,
  • mail headers,
  • command-line arguments.
The list goes on. A number of programs allow you to write scripts to control their operation; infact, just the other day I downloaded a neural network simulator which provided a little programming language to steer the simulation.How will you implement your language? There's the ad hoc approach, of course, but it's not well suited to languages whose design is complex or frequently changing. You also end up writing code to perform tasks which can be effectively automated.You might also consider using existing languages like Tcl [18] and Python [6]. These languages are designed to either be embedded in an existing application, or easily extended. This is a good solution when it can be used, saving a lot of time and effort. However, there may be concerns about tying your language to one which is itself changing, or the syntax and semantics of your language may not match those of such a "host" language.A third approach is to use compiler tools to implement your language. Most were designed for the implementation of large programming languages, but the same principles and techniques apply equally well to little languages. This article is the story of one such tool -- a parser generator tool -- and more importantly, what sort of tool is going to replace it, and why.

By John Aycock, July 2001

PDF | HTML | In the Digital Library

Objective viewpoint

By Kevin Henry, March 2001

PDF | HTML | In the Digital Library

Introduction: WYSIWYG—more or less

By Fernando Berzal Galiano, June 2000

PDF | HTML | In the Digital Library

Charlotte

By Stuart Patterson, June 2000

PDF | HTML | In the Digital Library

Graphic libraries for Windows programming

By M. Carmen Juan Lizandra, June 2000

PDF | HTML | In the Digital Library

Objective viewpoint

By Matt Tucker, March 2000

PDF | HTML | In the Digital Library

XML: the future of the Web

By John B. Bedunah, November 1999

PDF | HTML | In the Digital Library

OpenMath and MathML: semantic markup for mathematics

Unambiguous representation of mathematics is crucial for communications among humans or among computer systems. OpenMath is a standard aimed at supporting a semantically rich interchange of mathematics among varied computational software tools such as computer algebra systems, theorem provers, and tools for visualizing or editing mathematical text. MathML is a W3C Recommendation for the encoding of mathematics 'on the web' which also includes mechanisms for encoding mathematical semantics. We introduce each of these two languages and describe their relationships.

By O. Caprotti, D. Carlisle, November 1999

PDF | HTML | In the Digital Library

An architecture for easy Web page updating

By John Aycock, Michael Levy, November 1999

PDF | HTML | In the Digital Library

XML to be, VRML to see

By B. Arun, A. D. Ganguly, November 1999

PDF | HTML | In the Digital Library

Objective viewpoint

By George Crawford, September 1999

PDF | HTML | In the Digital Library

Architectures and compilers to support reconfigurable computing

By João M. P. Cardoso, Mário P. Vestístias, March 1999

PDF | HTML | In the Digital Library

Parallel processing in heterogeneous cluster architechtures using JavaPorts

By Demetris G. Galatopoullos, Elias S. Manolakos, March 1999

PDF | HTML | In the Digital Library

Web site review: the Ada project

By Lynellen D. S. Perry, September 1998

PDF | HTML | In the Digital Library

Objective viewpoint: Java AWT layout management 101

This article provides a brief summary of basic layout management in the Java Abstract Window Toolkit (AWT) and is intended to serve as a foundation for more sophisticated AWT programming.

By George Crawford, September 1998

PDF | HTML | In the Digital Library

Much ado about patterns

By Robert Zubek, September 1998

PDF | HTML | In the Digital Library

Explanation component of software system

Explanation is an important feature that needs to be integrated into software products. Early software that filled the horizontal software market (such as word processors) contained help systems. More specialized systems, known as expert systems, were developed to produce solutions that required specific domain knowledge of the problem being solved. The expert systems initially produced results that were consistent with the results produced by experts, but the expert systems only mimicked the rules the experts outlined. The decisions provided by expert systems include no justification, thus causing users to doubt the results reported by the system. If the user was dealing with a human expert, he could ask for a line of reasoning used to draw the conclusion. The line of reasoning provided by the human expert could then be inspected for discrepancies by another expert or verified in some other manner. Software systems need better explanations of how to use them and how they produce results. This will allow the users to take advantage of the numerous features being provided and increase their trust in the software product.

By Bruce A. Wooley, September 1998

PDF | HTML | In the Digital Library

Protecting Java code via code obfuscation

The Java language is compiled into a platform independent bytecode format. Much of the information contained in the original source code remains in the bytecode, thus decompilation is easy. We will examine how code obfuscation can help protect Java bytecodes.

By Douglas Low, April 1998

PDF | HTML | In the Digital Library

Java:introduction

By Vishal Shah, November 1997

PDF | HTML | In the Digital Library

The wonders of Java object serialization

By Brian T. Kurotsuchi, November 1997

PDF | HTML | In the Digital Library

Using the Java Native Interface

The Java Native Interface (JNI) comes with the standard Java Development Kit (JDK) from Sun Microsystems. It permits Java programmers to integrate native code (currently C and C++) into their Java applications. This article will focus on how to make use of the JNI and will provide a few examples illustrating the usefulness of this feature. Although a native method system was included with the JDK 1.0 release, this article is concerned with the JDK 1.1 JNI which has several new features, and is much cleaner than the previous release. Also, the examples given will be specific to JDK 1.1 installed on the Solaris Operating System.

By S. Fouzi Husaini, November 1997

PDF | HTML | In the Digital Library

Road crew

By John Cavazos, November 1997

PDF | HTML | In the Digital Library

Objective View Point: statics

By G. Bowden Wise, April 1996

PDF | HTML | In the Digital Library

The Fox Project

By Jeremy Buhler, September 1995

PDF | HTML | In the Digital Library

Speed is life, life is speed

By Scott Ramsey MacDonald, May 1995

PDF | HTML | In the Digital Library

Programming Perl

By Lorrie Faith Cranor, December 1994

PDF | HTML | In the Digital Library

Programs worth one thousand words

By Lorrie Cranor, Ajay Apte, December 1994

PDF | HTML | In the Digital Library

An introduction to Scheme

By Shriram Krishnamurthi, December 1994

PDF | HTML | In the Digital Library

Objective View Point: an introduction to C++

By Saveen Reddy, G. Bowden Wise, September 1994

PDF | HTML | In the Digital Library