Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Discussion 1 - Ryan Nigro
We'll review these questions regarding Java and C++ from the perspective of the attached paper.
This paper looks specifically at the implementations of generics in Java and C++. In Java JDK 1.5, Generics is accomplished through implementing interfaces. In C++, it is done by parametric polymorphism through templates.
- How do these languages differ?
- How does that affect people's programming?
Ghosh compares generics in Java and C++ through three models: translation, type, and security. The translation model looks at the differences in how code is translated downstream. The type model explores type inference, type aliasing, and associated types. The security model highlites any security loopholes.
C++ doesn't do static type checking on generic code; therefore, C++ loses no type information at runtime but can have misleading error messages. Java relies on type erasure.
Subtyping models concepts in Java, but Java has no type aliasing or associated types. C++ uses both: type aliasing through typedef and associated types through traits.
Java has a security loophole: it doesn't dynamically track collection types. C++ doesn't have this loophole.
Java Generics guarantees complete backward compatability, but the lack of run-time information and checking has created a need for restrictive programming. C++ has no loss of run-time information, but it does have a slow compilation process that leads to misleading error messages and bloated code.
Luis F Cruz looks at how the variety of programming languages helps programmers do their job more effectively. In generics, Java offers a sloppy but quick implementation, whereas C++ uses a more involved and safer one. Each approach may be appropriate in different applications.
Generics in Java and C++ - A Comparative Model
Luis F Cruz on Variety in Programming Languages
Link to this Page