Пиарщеги функциональных языков
От: NikeByNike Россия  
Дата: 09.01.10 17:13
Оценка: 1 (1)
В очередной раз в поисках серебряной пули в очередной раз пытаюсь заиспользовать Хаскелл в реальной жизни.
В очередной раз читаю статьи и в очередной раз поражаюсь одним и тем же глюкам пеара.
Например:
http://ru.wikibooks.org/wiki/%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%BE%D0%BD%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F/%D0%92%D0%B2%D0%BE%D0%B4%D0%BD%D0%B0%D1%8F_%D0%BB%D0%B5%D0%BA%D1%86%D0%B8%D1%8F

Пример 1. Быстрая сортировка Хоара на Си

void qsort(int *ds, int *de, int *ss){
    int vl = *ds, *now = ds, *inl = ss, *ing = ss + (de - ds);
    if ( de <= ds + 1 ) return;
    for( ; now != de; ++now ){
        if ( *now <= vl ) *inl++ = *now;
        else *ing-- = *now;
    }
    *++inl = vl;
    qsort(ds, ds + (inl - ss), ss);
    qsort(ds + (inl - ss), de, inl + 1);
}

vs
Пример 3. Быстрая сортировка Хоара на языке Haskell
quickSort [] = []
quickSort (x:xs) = quickSort [y | y <- xs, y <= x] ++ [x] ++ quickSort [y | y <- xs, y > x]

Вопрос. Зачем пиарщики стабильно выбирают такой отстойный пример (С) в качестве конкурента функциональному языку? На С++ запись может выглядеть немногим длиннее хаскелловской
А если в качестве примера привести блиттинг с альфой?

Ещё:

В языке Си++ имеется такое понятие, как шаблон, которое позволяет программисту определять полиморфные функции, подобные quickSort. В стандартную библиотеку Си++ — STL — входит такая функция и множество других полиморфных функций. Но шаблоны Си++, как и родовые функции Ады, на самом деле порождают множество перегруженных функций, которые, кстати, нужно каждый раз компилировать, что неблагоприятно сказывается на времени компиляции и размере кода. А в функциональных языках полиморфная функция quickSort — это одна единственная функция.

Первое что метнулось в глаза — автор сделал акцент на времени компиляции (но это ладно) и размере кода! Но размер кода бывает актуален очень редко, особенно в случае функциональных языков с их рантаймом. А вот на скорость это влияет очень плохо — но я не в первый раз вижу как пиарщики функциональных языков про это не упоминают.
Второе — а ведь в С++ тоже достаточно просто сделать функцию сортировки которую не потребуется перекомпилировать, а вот инлайновую в функциональном — фиг сделаешь.
Зачем делать такие нечистоплотные вещи — непонятно, сразу начинаются сомнения в инженерных навыках автора и, следовательно,
полезности его статьи.

Ещё.
Традиционно упоминают GC в качестве плюсов функционального языка, хотя оно не только является свойством и императивных тоже, но и обладает недостатками, которые в ряде императивных могут быть скомпенсированы (стек, работа с памятью напрямую), а в функциональных языках — нет.
Нужно разобрать угил.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.