Вы находитесь на странице: 1из 2

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 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

Вам также может понравиться