OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 08:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Суббота, 28 Август, 2010 17:08 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Три момента относительно ФП-ИП.

Во-первых, большинство называемых "преимуществ" обычно всё-таки не связаны с чистой функциональностью, а скорее с идеей "однородности" языка, принятием подхода "всё есть ..." (подставить нужное) - и дальше разрешением это "всё" комбинировать произвольным образом. Касательно JavaScript и Python называются те же "бонусы", которыми оперируют "чисто-функциональщики" (на Python я не работал, а на JS - приходится, для программирования UI в браузере даже и ничего). Всё это - "бонусы" с точки зрения программиста-индивидуала, проявляются они на "спринте" от постановки задачи до работающего прототипа (или нескольких прототипов), ну а с долгим жизненным циклом разработчик потом либо не сталкивается (в случае массовых Веб-задач, например), либо готов идти на жертвы - "платить по счетам". Конечно, серьёзные проблемы динамических языков научились снимать автоматическими типизациями, как в Хаскелле, но ценой такого наворота в семантике компиляции, неявного механизма, который нужно держать в уме... А без автоматической типизации исчезает сразу хвалёная однородность.
Оборотная сторона медали: ну не хочу я читать "изящный выразительный" программный текст, где в 3-х строчках законсервировано столько смысла, что его нужно выражать парой десятков строк. Пусть алгебраисты и эстеты развлекаются, инженеру нужна очевидность и недвусмысленность. Однородность позволяет надстраивать выше самые разные комбинации (и средства более высокого уровня, которые всё время исследуются и рекламируются в мире ФП; нечего и говорить, что где можно комбинировать, там народ сразу начинает "генерировать"). Однако это, по факту, не преимущество, а недостаток. Кучу времени тратится на придумывание того, а каким именно образом это выразить, да по авторскому вкусу-стилю, да "поизящнее". И ещё больше времени - чтобы это потом читать, держа в голове весь контекст (и фактически в голове "распаковывая" это в реальный алгоритм поведения системы - а что же происходить-то будет).
Обязательное требование к хорошему образовательному и промышленному языку: программирование (при выбранном пути решения) должно скатываться к одному оптимальному решению, опытные специалисты должны давать практически неотличимый результат (улучшать нечего, а переформулировать - язык не соблазняет многообразием). Тошно смотреть на эти лозунги "а вот у нас есть...", я с такой радостью обычно думаю: а вот у нас этого нет; есть структуры данных, структуры поведения и структуры совмещения данных с поведением. А любые абстракции я буду выражать библиотечно. Как просто и здорово.

Во-вторых, есть уже "философского" уровня война функциональщиков с понятием состояния и сопуствующими вещами. При этом это подается чуть ли не как признак высокой математической культуры и т.п.
Чушь - декларативные формальные системы существует несколько столетий; и только 20-й век принёс формальные системы, обладающие сложной динамической составляющей - этапом выполнения, поведением. Цифровые автоматы, состояния, методы анализа поведения - это стало новым предметом для осмысления и изучения математическими методами, сильно обогатило математику (возьмите ЧМ эпохи машинных вычислений, имитационное моделирование и т.п. - там традиционное математическое понимание именно что расширено вот этими "низкими", как нам внушают функциональщики, процедурными понятиями, соображениями; и прекрасно - это возвращает "на грешную землю", вносит больше непосредственной семантики из реального мира, вместо свободы игр с символами). Возьмите методы алгоритмического анализа Дейкстры - они "реалистичны", семантически богаты, с точки зрения анализа реальных систем. Короче, всякие "проблемы" с состоянием и процедурностью - это проблемы в головах, изначально - комплексы некоторых любителей "математичности", которые вместо обогащения своих понятий решили распространять мифы о "прогрессивности декларативного подхода".

В-третьих, чисто функциональный взгляд, разумеется, полезен для ряда задач, которые хорошо на него ложатся. Как и обсуждённая выше однородность, которую иногда хочется иметь. Ну и прекрасным образом имитируется это поверх ООП, создаётся "оазис" функциональности - и вперёд.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Август, 2010 08:14 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Оборотная сторона медали: ну не хочу я читать "изящный выразительный" программный текст, где в 3-х строчках законсервировано столько смысла, что его нужно выражать парой десятков строк. Пусть алгебраисты и эстеты развлекаются, инженеру нужна очевидность и недвусмысленность.
Ну и как Вы этого пытаетесь добиться на императивных языках?
Вот скажите, какая разница -- помнить контекст вокруг трёх строчек (на ФЯ) или вокруг тридцати строчек (на ИЯ)? Всё равно его помнить придётся.
А чем меньше строчек, тем больше контекста можно окинуть взглядом. ФП тут давит тяжестью строк, а ИП -- количеством этих строк. Масса в обоих случаях равная выходит. Так и какая разница? Дело привычки, всего лишь...

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

Илья Ермаков писал(а):
Во-вторых, есть уже "философского" уровня война функциональщиков с понятием состояния и сопуствующими вещами. ...
Далее вообще всё спорно и убедительно лишь для того, кто хочет в этом убеждаться...

Илья Ермаков писал(а):
В-третьих, чисто функциональный взгляд, разумеется, полезен для ряда задач, которые хорошо на него ложатся. Как и обсуждённая выше однородность, которую иногда хочется иметь. Ну и прекрасным образом имитируется это поверх ООП, создаётся "оазис" функциональности - и вперёд.
А вот Вам снова пример Вашей любимой диалектики: ФП можно выразить через ООП (по Вашим словам), а ООП можно выражить через ФП (по словам функциональщиков, не доверять которым у меня нет оснований). Вспомните старую шутку фпшников -- объекты -- это замыкания для бедных, а замыкания -- это объекты для бедных.
Осталось лишь определиться с личными предпочтениями и использовать эти инструменты там, где больше нравится, и можно при этом вполне обойтись без унылых попыток объективных обоснований достоинств и недостатков этих подходов...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Август, 2010 09:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Geniepro писал(а):
А вот это уже противоречит опыту механики.
На любую задачу у железячников найдётся как минимум по два разных, хотя и близких к оптимуму, решения у каждого конструктора...


Решения - разные, понимаете? Вариации в самих решениях, а не в способе выражения. А у программистов сплошь и рядом - одно и то же, разными словами выраженное.

Впрочем, у железячников тоже нечто похожее Вы могли наблюдать - потому что где Вы сегодня этих железячников видите - в мелкой конторе, делающей небольшие изделия? Там может собраться несколько опытных экспертов, каждый со своими пристрастиями и привычками, + бывшие студенты, ещё совсем без привычек, а только с фантазиями. Единого стиля и единой корпоративной проектной культуры обычно не формируется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 29 Август, 2010 14:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Отделена тема viewtopic.php?f=70&t=2814


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB