Вы находитесь на странице: 1из 2
Course 8070565: Languages Design Assignment: Paper Review #1 Date: 19/02/2011 Student No.: 20911886 Student Name:

Course 8070565: Languages Design Assignment: Paper Review #1

Date: 19/02/2011

Student No.: 20911886 Student Name: Baha' Harasheh

Instructor Name: Dr. Rashid Jayousi

Paper:

Subject: A Comparative Study of Language Support for Generic Programming Authors: Open Systems Lab, Indiana University Bloomington, Bloomington, IN USA

Review:

Introduction:

Generic programming is a paradigm in software development to find abstraction for algorithms and data structures to have interoperable design that can be used widely in the system, and support polymorphism.

Hypothesis:

Generic programming is important paradigm in software development, and many modern programming languages support basic functions in generic programming such as use of type- safe in polymorphism to develop containers which will be used to represent different data types. Some programming languages provided advanced features in generic programming to enhance the use of the language and facilitate its practice.

Methodology and study:

Six popular and wide used programming languages were selected (ML, C++, Haskell, Eiffel, Java, and C#) to be compared regarding their support to generic programming. The study deeply analyzed languages features which are necessary to support basic generic programming and extended features. The main purpose of this study and comparison was to find features, advantages, and disadvantages of generic programming.

The study uniform implementation of generic programming for all languages, and compare these implementations, in addition to compare them with standards in software development.

Eight language features (multi-type concepts, multiple constraints, associated type access, retroactive modeling, type aliases, separate compilation, implicit instantiation, and concise syntax) for generic programming used to find level of support for each feature by languages. These features became important for any language to support generic programming and should be considered in design of any language.

Paper described five problems during check implementations of generic programming, and described these problems with languages have these problems. Five problems explained are type of constraint mechanism and evolving software systems, limitations in the use of sub- typing to constrain type parameters, the repercussions of the way associated types are accessed in the surveyed languages, explicit instantiation combined with insufficient support

Course 8070565: Languages Design

Student: Baha' Harasheh

Course 8070565: Languages Design Assignment: Paper Review #1 for representing associated types, and the lack

Course 8070565: Languages Design Assignment: Paper Review #1

for representing associated types, and the lack of a mechanism for type aliasing is a source of unnecessary verbosity.

Conclusions:

The languages C++, ML, and Haskell have powerful support for generic programming. Java and C# expected to support generic programming in time of the paper and these days they did support for it. Eiffel supported generic programming from the beginning.

Object oriented programming still the main technique to build abstraction in these languages, and generics can be used in specific cases and to support type-safe polymorphic containers.

Own Opinion:

Generic programming can improve the software development by develop reusable code that can be used for different data types, allow developer to write code as container for different types, prevent problems that may happen as a result of write code to abstract data types without generics such as use of general classes (e.g. Object class in Java), and eliminate the need to do complex conversions between data types.

Generics and object oriented can be used together to improve software development by have both object oriented with type-safe polymorphism.

Course 8070565: Languages Design

Student: Baha' Harasheh