Функциональное программирование там, где оно не нужно.

Сентябрь 28th, 2009 по SadKo Оставить ответ »

В современном программистском мире появилась тенденция к изучению функциональных языков программирования. И на них сейчас пытаются выразить всё, что только под руку попадётся. Я называю это никак иначе как мозговым онанизмом.

Сразу оговорюсь: я не знаю парадигмы функционального программирования. И вряд ли её буду изучать до тех пор, пока мне это не понадобится. Но то, что, извините, вытворяют функциональщики, порой меня шокирует: решать элементарные задачи через, простите меня, жопу — это выше моих сил и нервов. Зато это повышает ЧСВ аффтаров до уровня over 9000, что очень настораживает и порой порождает сомнения в их адекватности.
Вот характерный разговор с товарищем ivansorokin (осторожно, русский мат).

ivansorokin:
void char_count_2(string s)
{
std::sort(s.begin(), s.end());

auto i = s.begin();
while (i != s.end())
{
auto j = find_if(next(i), s.end(), _1 != *i);
cout << *i << ": " << (j - i) << endl;
i = j;
}
}
SadKo: изврат?
ivansorokin: порно ;-)
SadKo: согласен
ivansorokin: обрати внимание что под find_if написано. _1 != *i. ищем элемент не равный *i
SadKo: мда
ivansorokin: а что?
SadKo: быдлокод
ivansorokin: ты ничего не понимаешь в функциональном программировании :-) boost/lambda епть :-)
SadKo: ну его нахер, это функциональное программирование, если оно позволяет плодить ЭТО.
ivansorokin: быдло пишет всякое дерьмо с указателями
int cnt[256];
char *p;
int i;

// str is pointer to input zero-terminated string;

for(p = str; *p; ++cnt[*p++]);
for(i = 0; i < 256; i++) {
if(cnt[i]) printf("%c = %d\n", i, cnt[i]);
}
такое дерьмо лучше?
SadKo: оно быстрее
ivansorokin: о госпади
SadKo: а вы любите ездить в Лондон через Нью-Йорк
ivansorokin: а тех кто пишет на Питоне, тогда вообще расстрелять
SadKo: Я к тому, что простую задачу превратили в какую-то хуйню. Или меряться функциональными пиписьками ща модно?
ivansorokin: модно, трендово...
SadKo: Так вот, послушай меня. То, что модно, диктуют всякие мудаки. Надо использовать не то, что модно, а то, что работает.
ivansorokin: var q = from a in array group a by a into g select new {a, g.Count()}
SadKo: буээээ

Я не отрицаю тот факт, что, возможно, функциональные языки нужны и ряд задач при помощи функциональных языков решается легче, быстрее и проще, нежели через привычные нам объектные языки. Тем не менее, это не означает, что абсолютно всё можно решить быстро, элегантно и красиво с помощью функционального программирования. И фанаты Python, Haskell, BOOST/C++ и иже с ним должны это понимать и, как говорится, «знать меру».

Реклама

Добавить комментарий

Blue Captcha Image
Refresh

*