Programming Language Comparison

Adapted from www.jvoegele.com.
Descriptions of the features can be found there.

Note: N/A indicates that a topic or feature is not applicable to the language.

  Eiffel Smalltalk Ruby Java C# C++ Python Perl Mathematica with
OO System
Object-Orientation Pure Pure Pure Hybrid Hybrid Hybrid / Multi-Paradigm Hybrid Add-On / Hybrid Hybrid
Static / Dynamic Typing Static Dynamic Dynamic Static Static Static Dynamic Dynamic Dynamic
Generic Classes Yes N/A N/A No No Yes N/A N/A N/A
Inheritance Multiple Single Single class, multiple "mixins" Single class, multiple interfaces Single class, multiple interfaces Multiple Multiple Multiple Multiple
Polymorphism within common parent Yes Yes Within Common Parent Within common parent Within common parent Yes Yes Yes
Serialization No Yes Yes Yes Yes No Yes Yes Yes
Feature Renaming Yes No Yes No No No No No No
Method Overloading No No No Yes Yes Yes No No Yes
Operator Overloading Yes Yes? Yes No Yes Yes Yes Yes No
Higher Order Functions Agents (with version 5) Blocks Blocks No No No Lambda Expressions Yes (???) Yes, Pure Functions
Lexical Closures Yes (inline agents) Yes (blocks) Yes (blocks) No No No Yes (since 2.1) Yes Yes, Pure Functions
Garbage Collection Mark and Sweep or Generational Mark and Sweep or Generational Mark and Sweep Mark and Sweep or Generational Mark and Sweep or Generational None Reference Counting Reference Counting Yes
Uniform Access Yes N/A Yes No No No No No No
Class Variables / Methods No Yes Yes Yes Yes Yes No No Yes
Reflection Yes (as of version 5) Yes Yes Yes Yes No Yes Yes? partially
Access Control Selective Export Protected Data, Public Methods public, protected, private public, protected, "package", private public, protected, private, internal, protected internal public, protected, private, "friends" Name Mangling None None
Design by Contract Yes No Add-on No No No No No No
Multithreading Implementation-Dependent Implementation-Dependent Yes Yes Yes Libraries Yes No No
Regular Expressions No No Built-in Standard Library Standard Library No Standard Library Built-in Yes
Pointer Arithmetic No No No No Yes Yes No No No
Language Integration C, C++, Java C C, C++, Java C, some C++ All .NET Languages C, Assembler C, C++, Java C, C++ Java, C, C++
Built-In Security No No? Yes Yes Yes No No? Yes (perlsec) No