Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Discussion 1 - Manabu Shimobe
For this discussion(1) , I read an article titled "The Evolution of Object-Oriented Languages".
The article can be found at the following URL: http://www.developer.com/design/article.php/10925_3493761_1
In the article, "The Evolution of Object-Oriented Languages", Matt Weisfeld mentioned many computer scientists think that the first truly O-O language was Smalltalk. In Smalltalk, everything is an object and it is impossible to write a program that is not O-O. This is not true for other object-oriented languages such as Java and C++ because we can use non-objects(primitive data types such as integers, floats) in those languages.
Therefore, although smalltalk is considered as a pure O-O, C++ is said to be a hybrid language that supports O-O features.(Java is also considered pure O-O because Java enforces the O-O paradigm.)
According to the author, smalltalk is a programming environment rather than a programming language because it has an interactive environment that interprets code on-the-fly, which means we can change the code of a program while it is running.
(Java vs C++)
Java was developed as a language for networked and distributed environments.
Compared with C++, Java does not have multiple inheritance, automatic type conversions, the use of pointers,and the C++ memory management scheme;however, its syntax is based on C++/C. Therefore, we consider that Java eliminated some of the complexity in C++.
Java is more robust than C++ because it has a very strong emphasis on preventing problems in the first place and detecting them early. In addition, Java does not support pointers, which prevents much of the data corruption encountered when using C++.
Although C++ has a lot of system-dependent aspects embedded in them, Java is system-independent because it can be run on any platform that supports a Java Virtual Machine (JVM).
The biggest disadvantage of Java against C++ is the performance.(The Java Virtual Machine is an interpreter that reads Java bytecodes and turns them into system-dependent code. In this design, the bytecodes are portable and the programmer does not have to worry about writing system-dependent code. However, interpreters often suffer from performance issues, and one of the criticisms of Java is poor performance.)
Multithreading is hard to manage in many languages, but Java made multithreading much easier to manage.
Classes in Java are loaded dynamically, not linked into executables. Therefore, finding runtime information and the loading of classes over networks became much easier.
In conclusion, what a programmer needs determines the language he/she uses. For example, if a programmer wants to create a networked and cross-platform software, Java will be a good choice. If a programmer needs a high-performance software, the first choice will be C++. Finally, Smalltalk will be useful to understand the concept of OO because everything in Smalltalk is Object!
I read Nirav Shah's discussion about the difference between C and Java. I strongly agree with her idea that Java is much easier to learn than C++/C mainly because Java has an auto garbage collection and we don't have to think about pointers in Java. However, I think that the nicest thing about Java is platform-independence. Thus, if I write the java code once, I can run that code anywhere(on any platform).
Links to this Page