Попробовал на днях F#.
Для начала, о том, что меня поразило больше всего, так это смысловая красота языка) Прикольно до ужаса. Но за все надо платить.
Мне кто-то говорил, что MSIL генерируется F# лучше, чем С#. Но компиллятор, представляющий из себя тупую относительно человека программу, которая, к тому же, занимается дополнительным вычислением типов, на мой взгляд ПРИНЦИПИАЛЬНО НЕ МОЖЕТ посчитать это лучше, чем это сделает человек. Не буду голословен:
(в начале и в конце вывода - время начала выполнения и время конца выполнения соответственно).
Код на F#:
let d = System.DateTime.Now.ToLongTimeString()
printf "%s" d
let res1=[for i in 0..100 -> (i,i*i)]
printfn "Res1: =%A" res1
let f=System.DateTime.Now.ToLongTimeString();
printf "%s"f
Результат выполнения - 4 секунды. Однако... :
Аналогичный код на C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cs_anti
{
class Program
{
struct mx{
public mx(int _a, int _b)
{
a = _a;
b = _b;
}
public int a;
public int b;
}
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToLongTimeString());
List m = new List();//особенно обратить внимание. НЕ массив, а именно List.
//Поправьте, если я не прав.
for (int i = 0; i < 100; ++i)
{
m.Add(new mx(i, i * i));
}
for (int i = 0; i < 100; ++i)
{
Console.Write(m[i].a.ToString()+" _"+m[i].b.ToString()+"_ ");
}
Console.WriteLine(DateTime.Now.ToLongTimeString());
Console.ReadKey();
}
}
}
... и результат: менее секунды. Функпрог, да. Зато на F# короче код. Аминь.
Тест проводился на моем нетбуке HP Mini, 1.2 проц, 2 гига оперативы, IDE VS2010 для обоих.
Теперь немного о том, кто я такой (и заодно, половина объяснений, как формировалось мнение):
Языки: C++(MFC,STL,QT, всего дохуя), C#(в т.ч.ASP.NET), Assembler x86, Python(азы).
С++: в последнее время добавился богатый опыт переписки низкопроизводительных скриптов на Basic'ах вроде питона и матлаба (в тч VB.NET), которые использовались для решения разных задач на кафедре. На нем же пишу все для себя.
C# - опыт прикладного программирования (от правки кусков сайтов до написания программы обслуживания клиентов, персонала, и склада стрелкового объекта), решение научных задач (посчитать-сделать выводы-принять решение-показать кучу графиков. Выбрал из-за .NET оптимизатора, а также высоких темпов разработки, хотя немного медленней чем С++, даже на .NET'e),
Assembler (пара драйверов для клавиатуры, вирусы из дешевых книжек, пара курсовых богатым студентам =)),
Python - как-то по непробиваемой дурости попытался написать на нем задачку для кафедры (как никак, для научных задач же), что кончилось выполнением программы в течении 5 минут, в то время как на C# это вылетало при первом проходе за 20, при втором уже за 3 секунды.
Exp Over.
Мысли добавить в эту копилку немного функпрога летают давно, но вот производительность и несколько непривычный синтаксис... Область применения - смелая молодежь, в пром. программировании практически не применяются, производительность - см. выше. Стоит ли..? Что-то я демотивирован.
P.S. Особо жду комментариев little_arhat'a. Благо шарит в сабже.