Olej писал(а):
Ещё один стандартизованный чисто функциональный язык - Haskell.
И ещё один язык в копилку -
Scala.
Scala — относительно новый (2003г.) язык, сочетающий в себе возможности функционального и объектно-ориентированного программирования. Многие считают Scala дальнейшим расширением языковой линии Java и даже называют его как Java++.
Язык сильно можный среди разработчиков на Java.
Реализация задачи расчёта числа Фибоначчи:
Код: Выделить всё
object fibo_scala {
def fib( n: Int ): Int = if( n < 2 ) 1 else fib( n - 1 ) + fib( n - 2 )
def main( args: Array[ String ] ): Unit = {
System.out.println( fib( args( 0 ).toInt ) )
}
}
Простенько и со вкусом...
Вообще то, действительно сильно напоминает Java (с выраженными внешними отличиями синтаксиса).
Конечно, показанное выше - это простое объектное решение, бессовестно списанное с аналога Java ... Но функциональность здесь проступает в определении объекта-функции fib() как объекта программы, так же как это происходит в Lisp или Scheme (и как это можно сделать в Python или Ruby).
Компиляция такой программы в файл .class (компиляция происходит заметно продолжительное время):
Код: Выделить всё
$ scalac fibo.scala
$ ls -l *.class
-rw-rw-r--. 1 Olej Olej 682 фев 21 15:49 fibo_scala.class
-rw-rw-r--. 1 Olej Olej 981 фев 21 15:49 fibo_scala$.class
Хронометраж выполнения этого варианта программы, в ставнении с эталонной реализацией GCC C, и родственной Scala реализацией на Java:
Код: Выделить всё
# time nice -19 ./fibo_c 30
1346269
real 0m0.011s
user 0m0.009s
sys 0m0.000s
# time nice -19 java fibo 30
1346269
real 0m0.195s
user 0m0.147s
sys 0m0.042s
# time nice -19 scala fibo_scala 30
1346269
real 0m0.740s
user 0m0.634s
sys 0m0.115s