What are futures? It\'s something to do with lazy evaluation.
When you create a future, a new background thread is started that begins calculating the real value. If you request the value of the future, it will block until the thread has finished calculating. This is very useful for when you need to generate some values in parallel and don't want to manually keep track of it all.
See lazy.rb for Ruby, or Scala, futures, and lazy evaluation.
They can probably be implemented in any language with threads, though it would obviously be more difficult in a low-level language like C than in a high-level functional language.