Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I have detailed information on the latest developments in functional programming.

I think haskell is quite an advanced and high level programming language. With coq and agda this gets even more complex and advanced.

With "advanced" and "high level" I mean many distinct features, that can only be found in the respective languages.

Like for haskell

  • everything is pure and lazy per default
  • support for advanced concepts like GADTs, Monads, Functors, etc.

For coq / agda

  • a dependent type system

And both haskell and coq are used in academics, a good sign that they are 'state-of-the art'.

However I have no clue what comparable developments in object oriented programming are.

What are some of the latest developments in object oriented programming?

What would be a state-of-the-art OOP language counterpart to haskell / coq?

(I even search for advanced programming language on google, but I found mostly haskell related information. The only language I could think of is D 2.0. Scala is for me mainly a java compatible version of haskell.)

share|improve this question
1  
What are you trying to compare? Just saying "advanced and high level" is not enough detail. –  Oded Nov 6 '11 at 10:25
1  
"Scala is for me mainly a java compatible version of haskell.)" not at all. Haskell is a pure functional language. Scala mixes functional and object paradigms. –  Simon Nov 6 '11 at 11:03
    
OOP might fit as a language extension and/or library in a pure functional language like Haskell, but each object would have to be manipulated in a monadic way - OOP objects are (normally, if not strictly always) stateful. It may not be an insane idea, though. After all, there are impure functional languages with OOP - Common Lisp has CLOS, Objective CAML and F# in the ML family, ... Not really what you asked, but my first thought in response anyway. –  Steve314 Nov 6 '11 at 12:12
2  
There isn't really a state-of-the-art OOP evolution I know of, so much as divergent multi-paradigm approaches. C# adds LINQ (borrowing heavily from functional programming) to OOP. Python also deserves a mention for mixing in functional (and other) ideas. The modern C++ standard library uses classes, but mostly as a building-block for a more template-oriented style of coding using lots of non-member template functions. –  Steve314 Nov 6 '11 at 12:23
    
Why, C++x11, of course! –  Daniel C. Sobral Nov 6 '11 at 19:56

4 Answers 4

up vote 4 down vote accepted

Subtyping (i.e., any static object-oriented type system) is so much more complex than any "flat" type system typical for the functional languages. It is nearly impossible to formalise it properly. For this reason, no surprise that we have not heard yet about, say, dependent object-oriented type systems.

Probably, a single early example of such an attempt would be this paper.

share|improve this answer
    
thanks for the link to the paper. I didn't even know the programming language Nemerle existed. Interesting that it supports type inference. –  mrsteve Nov 6 '11 at 22:51

I would say C# is probably a good language to loo at - it is a high level, general-purpose, managed, garbage-collected and object-oriented programming language.

The current version has generics, lambda expressions, built in parallelism constructs and more.

The next version is supposed to add asynchronous constructs.

share|improve this answer

The concept of a "state-of-the-art" language is hard to define. One can consider only the syntax, the toolchain (i.e c++ is not recent, but has powerful compilers), the framework (c# and java are popular because of it).

I don't know coq, but it does not look like it is a general purpose language. The specifity of Haskell is its purity. So my answer is: smalltalk, a pure oop language.

http://en.wikipedia.org/wiki/Smalltalk

share|improve this answer
2  
Looks like the question about the advanced type systems, and so, dynamically typed Smalltalk does not qualify. –  SK-logic Nov 6 '11 at 11:32

I find it funny most people are answering you back with programming languages :-) In the world of OO, most advances in the "state-of-the-art" are published at OOPSLA and ECOOP conferences.

You have to understand that in terms of "formal proof" (as with Coq/Adga/etc...), there are fundamental problems yet to be solved in the OO formulation of programs. Subtyping (which SK-logic mentioned), overriding, etc, they are all far from being "tractable" in terms of providing suitable structures than can then be manipulated and reasoned upon. Even so, you can find projects such as ESC-Java or Spec# that are paving the road for that type of research.

In terms of "what's new" in this areas, there are several "trends" that you may find:

  1. DSL's and DSL construction
  2. Model-Driven OO systems
  3. Refactoring
  4. Increasing the strength of type-systems (see Scala)
  5. Incorporating functional aspects into OO (again, Scala and C#)
  6. Tackling the parallelism problems
  7. Meta-Programming and Reflection
  8. ...
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.