Yvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
09:40, 06 августа 2011

Императивное vs Функциональное программирование. Идеологические различия

Выложил тут давеча примерчик функционального программирования: http://hawabawa.yvision.kz/blog/182580.html и в ответ , хороший человек;-), задал вопрос: удобно ли поддерживать такие проекты?

Имхо: ДА. постараюсь объяснить почему.

Для начала давайте вспомним как пишутся программы сейчас? Императивным путем, т.е. путем инструкций или путем отдачи приказов, например:

  • создать строку с именем str;
  • записать туда текст: "Привет Мир!";
  • создать lable, для отображения текста;
  • показать пользователю текст из строки str в lable;

ну примерно так как то выглядит, верно? т.е. мы фактически расписываем все действия, за счет чего вырастает объем кода, он занимает больше памяти, его трудно поддерживать. Если что то надо изменить надо искать и менять в нескольких местах, в больших проектах от 2000 строк кода, становится сложно отслеживать изменения и предотвращать ошибки.

Это Ад каждого программиста, с другой стороны наверно легко копипастерам))) VisualStudio все-таки молодец.

Сама этимология слова Императив. Возьмем корень слова, какие еще слова из него происходят? Самое очевидное: Империя, Император т.е. в самом слове заложена философия подчинения, приказов. т.е. наша обычная человеческая Идеология.

Вселенная\Мир, устроен'а иначе. Атомы, электроны, мельчайшие частички из которых потом создаются такие огромные, большие, объемные объекты, как: Галактики, Планеты, Человек в конце концов.

Представь что у тебя есть мельчайшие пиздюлины:

1,2,3,4,5,6,7,8,9,..... ----  У человека клетки? в коде на пример cast'ы всякие из\в тип\типы

Которые могут делать только одну хуйню. Все.

Со временем их становится дохуя и ты естественным образом захочешь их укрупнить:

20,        30,        40,        50,....

||           ||          ||          ||

1,2     3,4,5,6      7,8       9,.....

а потом еще укрупнить))) :

100            200

||        //     ||      \\

20,        30,        40,        50,....

||           ||          ||          ||

1,2     3,4,5,6      7,8       9,.....

Таким образом, ты создаешь нечто большое из мельчайших(элементарных), мелких, крупных частей. Если где то ошибка, ты изменяешь в 80% мелкие части, 20% крупные. Мельчайшие настолько тупые что если и ошибаются, то это значит ты лох, не фиг на монитор смотреть, сам не доглядел, косяк. Сегодня после отбоя, зайдешь ко мне.

НО это еще не все(((, для полного волшебства, каждая функция (немного выше я их опрометчиво обозвал пиздюлинами) возвращает объект который она изначально приняла в начале. что позволяет охуительно заюзать такую технологию как IntelliSense

Магическая точка :-) вот она: .

IntelliSense - это типа подсказка, создал что-то(тчк)выпадает меню что можно с этим что-то сделать и ты не паришься, выбираешь из списка)))

+ Наследование, каждая мелкая хуйня умеет все что умеют ее мельчайшие пиздюлины. каждая крупная хуйня умеет все то что умеет ее мелкие хуйнюшки и их мельчайшие пиздюлины. Хых, ну как то так. ГЫ:-)

Таким образом, получается что заместо того что бы писать 50 строк кода ты пишешь 1 строку:-)

ОДНАко, длинная строка получается сцуко.

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

Сравним:

Ты собираешь все хозяйство до кучи. http, sql, string, IO, xml, Auth и прочее. Правильно его создаешь, тюнишь построчно от 2-3 до 5-10 строк на каждую херь в хозяйстве. Из проекта в проект))) что бы сделать простую блять весчь. Показать юзарю табличку из БД или авторизовать его или забрать у него и складировать файлик и много еще для чего.

Или

Ты ебешся пол года - год и хуячишь эти милипиздрические пиздюлины, рефакторишь, выкидываешь 75% из того что было написано, за не надобностью и требованиями внутренней красоты. Дальше начинается Долина Наслаждений. Ты пишешь бизнес-логику, все просто и понятно, главное коротко! В одно предложение через точку. Сказал кому, что, как, где, когда делать и магический пинок. Все работает. Куришь бамбук, ну или чо ты там куришь;-)

Оба подхода отличные! на первом написано почти все что есть сейчас в мире компьютерных программ, очень современный и распространеный. Второй, это так скажем, последние разработки человеческой мысли в области стиля, отношения, идеологии написания и создания программ. Имхо.

Ну и наверное пока для второго подхода необходим более высокий уровень подготовки, хотя не факт. Обычным программистам такой стиль сносит башку на время)))

П.С. перечитал, ни чего не понимаю, про что это?

0
438
0