October 23rd, 2012

vit_r

Про функциональное программирование и жестокость реального мира

В принципе, это был комментарий под размышлениями одного функционального гуру. Но он ему не понравился, так что получился отдельный пост.

Свою первую коммерческую программу я создавал по методу Джексона. Тогда трава была зеленее и теория о том, что всё полностью описывается трансформацией вводимых данных в выводимые, прекрасно работала.

С тех пор я делал много чего интересного и не очень. Но в последнее время, куда бы меня не заносило, практически не вижу систем, где бы основной частью (по важности, сложности и объёму работы) не был бы ввод-вывод. Преобразования данных, как правило, достаточно тривиальны. Плюс под многое есть готовые библиотеки.

Криворукие пользователи, не понимающие, что делают. Структуры, зародившиеся во времена Фортрана и обросшие срочными временными заплатками как утонувший корабль ракушками. Системы, передающие непонятно что и периодически начинающие бредить. Системы, декларирующие, что читают по стандарту, но случайным образом впадающие от этого в кому. Зависающие запросы. Потерянные сообщения. Битые файлы. Базы данных, с загадочными полями. Библиотеки с утерянным исходным кодом. Документация, напоминающая минное поле. И ошибки, ошибки, ошибки, ошибки... И да, конечно, любимые всеми Ворд и Эксель, из которых надо вытащить то, что туда запихали изобретательные «специалисты в некомпьютерных областях», мучимые творческими порывами дизайна и кодирования.

Нет, не подумайте плохого. Мне нравится функциональщина. Почти также, как нравился когда-то Шлейер-Меллор.

Это круто. Это правильно. В конце концов, это красиво. И очень очень полезно. Скажем, для обработки сигналов. Или для финансовой аналитики. Или для телекоммуникаций. Или для чего-то ещё чистого и светлого.

Мне же приходится работать по колено в созданном предыдущими поколениями дерьме.

Очень-очень нужен хороший язык. Можно даже не чистый, не изящный, не стоящий на прекрасных математических теориях, но умеющий делать грязную работу. Ещё желательно, чтобы он был понятный и читаемый. (И очень хорошо бы ещё и выдерживающий оутсоурсинг если не в Китай, то ходя бы в Румынию)