Generic programming is a widely appreciated and strongly affecting paradigm in software development. Genericity has become an integral part of most widely known and used programming languages. Some have just most recently been extended with generics, as is the case with Java 1.5. Some are known to have generics from the very beginning and even before they were extended to support object-oriented programming, as is the case with Ada. Genericity, templating, parameterized types, or parametric polymorphism refer to the same technique; basically, instantiating versions of an algorithm using built-in types, classes, objects, or program units as parameters. This Thesis work is to provide a comparison between three different language approaches to generic programming. The languages to be compared are Ada, C++, and Java. The objective of this study is to understand how and why these languages employ certain features with generics to provide a degree of support for generic programming, and to understand the extent to which each language could support a powerful and flexible version of generic programming.