GWU CSCI 210 - On the Applicability of Io, a Prototype-Based Programming Language

Unformatted text preview:

1.Introduction2.Related Work3.An Analysis of the Io Programming Language4.A Comparison of Java and Io5.A Sample Application6.Conclusion7.ReferencesOn the Applicability of Io, a Prototype-Based Programming LanguageDarren BroemmerCS210 Summer 2007AbstractOver the last decade, Java has become a commonly used programming language because it addresses a number of prevalent, timely issues including multi-platform support, a focus on networking and web applications, and a simplification of the programming model through automatic memory management and the use of standard libraries. Just as Java built on features of existing languages such as C++ and attempted to address their weaknesses, the Io programming language has features and constructs that place it at the intersection of emerging programming needs and trends. With an ever increasing focus on rapidly developing quality software that adapts to changing requirements, a number of techniques are increasingly being used to manage complexity, achieve software reuse, and effectively implement the separation of concerns. These techniques include agile methodologies, domain-specific languages, scripting languages, meta-programming, and aspect-oriented programming. Io addresses many of the goals behind these approaches through its focus on simplicity, prototype-based development, and ingrained support for dynamic programming. However, Io and other prototype-based object-oriented languages have not yet reached a critical mass. Note that this excludes JavaScript, a widely used prototype-based language which does not have full object-oriented support. Many observations made of the Io language will be true for the majority of prototype-based object oriented languages, however Io was chosen due to its multi-platform support and focus on simplicity and dynamic programming.This paper examines the suitability of Io for different types of applications, including the development of enterprise applications as well as evolving and exploratory systems. In order to give perspective, this paper will compare the use of Io to Java in terms of language features, constructs, and an evaluation of the same program written in both languages. The example program used is a simple bottoms-up natural language parser that then converts the parsed sentences into executable code in that programming language. This example provides for the comparison of an algorithm-based component (natural language processing) as well as a meta-programming component (dynamic code generation, modification, and execution).1Table of Contents1. Introduction ...................................................................................................................... 3 2. Related Work ................................................................................................................... 3 3. An Analysis of the Io Programming Language ............................................................... 4 3.1An Overview of Io...................................................................................................... 53.2 Io and Emerging Programming Trends.....................................................................53.3 The Applicability of Io..............................................................................................64. A Comparison of Java and Io ........................................................................................... 7 5. A Sample Application ...................................................................................................... 9 6. Conclusion ..................................................................................................................... 14 7. References ...................................................................................................................... 15 21. IntroductionAny software program written in a Turing complete language can be implemented in another Turing complete language, however different programming languages have features better suited for particular types of problems. Object-oriented languages have provided a marked improvement in software reuse and developer productivity, however the overall success rate of software development projects is still remarkably low compared to other more mature manufacturing disciplines [5]. Additionally, the demand for software in today’s economy and the rate of change are both extremely high. Thus, enterprise applications are often lacking rich domain models critical in building quality, maintainable software implementations that closely represent their real world concerns [4]. Prototypes provide for object-oriented programming without static class definitions and a higher degree of flexibility better suited for evolving requirements. They also provide a mechanism to handle the many exception cases inevitable in building most applications, such as the use of dynamically added attributes. Objects in prototype languages have slots which can hold data or code, and both can typically be modified at runtime.Io is an interpreted prototype-based language that addresses some of these software development issues through a focus on simplicity, the ability to expressively encapsulate real-world concerns, and the flexibility provided by ingrained meta-programming capabilities. As a programming language, it is at the intersection of current development needs, but it currently lacks tool support and a development community needed in order to become an enterprise class programming language. With the proper amount of support, Io could be applied to a large class of software problems as long as performance is not a primary concern given that the language’s simplicity and flexibility comes at the cost of reduced performance. Additionally, support for mainstream enterprise databases is currently lacking, but this is an issue that would likely be addressed with increased developer support.2. Related WorkAlthough there are limited references to the Io programming language, there is a significant body of work related to prototype-based languages in general and how they compare to class-based object-oriented languages. Two primary arguments [2] given in favor of prototype-based object oriented programming are (Dony, Malenfant, Cointe 1992):• It is easier for people to comprehend concrete examples before generalizing concepts into abstract definitions.• Classes add unnecessary


View Full Document

GWU CSCI 210 - On the Applicability of Io, a Prototype-Based Programming Language

Download On the Applicability of Io, a Prototype-Based Programming Language
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view On the Applicability of Io, a Prototype-Based Programming Language and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view On the Applicability of Io, a Prototype-Based Programming Language 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?