My personal programming background is mainly in Java, with a little bit of Ruby, a tiny bit of Scheme, and most recently, due to some iOS development, Objective-C.
In my move from Java to Objective-C I've really come to love some features that Objective-C has that Java doesn't. These include support for both static and dynamic typing, functional programming, and closures, which I'm trying to leverage in my code more often. Unfortunately there are trade-offs, including lack of support for generics and (on iOS at least) no garbage collection.
These contrasts have lead me to start a search for some of the programming languages that support the following features:
- Object Oriented
- Functional Programming Support
- Support for both Static and Dynamic Typing
- Module Management to avoid classpath/dll hell
- Garbage Collection Available
- Decent IDE Support
Admittedly some of these features(IDE support, Module Management) may not be specific to the language itself, but obviously influence the ease of development in the language. Which languages fit these criteria?