OberonCore https://forum.oberoncore.ru/ |
|
Кушниренко об алгоритмическом стиле мышления https://forum.oberoncore.ru/viewtopic.php?f=72&t=2804 |
Страница 2 из 2 |
Автор: | Илья Ермаков [ Суббота, 28 Август, 2010 17:08 ] |
Заголовок сообщения: | Re: Кушниренко об алгоритмическом стиле мышления |
Три момента относительно ФП-ИП. Во-первых, большинство называемых "преимуществ" обычно всё-таки не связаны с чистой функциональностью, а скорее с идеей "однородности" языка, принятием подхода "всё есть ..." (подставить нужное) - и дальше разрешением это "всё" комбинировать произвольным образом. Касательно JavaScript и Python называются те же "бонусы", которыми оперируют "чисто-функциональщики" (на Python я не работал, а на JS - приходится, для программирования UI в браузере даже и ничего). Всё это - "бонусы" с точки зрения программиста-индивидуала, проявляются они на "спринте" от постановки задачи до работающего прототипа (или нескольких прототипов), ну а с долгим жизненным циклом разработчик потом либо не сталкивается (в случае массовых Веб-задач, например), либо готов идти на жертвы - "платить по счетам". Конечно, серьёзные проблемы динамических языков научились снимать автоматическими типизациями, как в Хаскелле, но ценой такого наворота в семантике компиляции, неявного механизма, который нужно держать в уме... А без автоматической типизации исчезает сразу хвалёная однородность. Оборотная сторона медали: ну не хочу я читать "изящный выразительный" программный текст, где в 3-х строчках законсервировано столько смысла, что его нужно выражать парой десятков строк. Пусть алгебраисты и эстеты развлекаются, инженеру нужна очевидность и недвусмысленность. Однородность позволяет надстраивать выше самые разные комбинации (и средства более высокого уровня, которые всё время исследуются и рекламируются в мире ФП; нечего и говорить, что где можно комбинировать, там народ сразу начинает "генерировать"). Однако это, по факту, не преимущество, а недостаток. Кучу времени тратится на придумывание того, а каким именно образом это выразить, да по авторскому вкусу-стилю, да "поизящнее". И ещё больше времени - чтобы это потом читать, держа в голове весь контекст (и фактически в голове "распаковывая" это в реальный алгоритм поведения системы - а что же происходить-то будет). Обязательное требование к хорошему образовательному и промышленному языку: программирование (при выбранном пути решения) должно скатываться к одному оптимальному решению, опытные специалисты должны давать практически неотличимый результат (улучшать нечего, а переформулировать - язык не соблазняет многообразием). Тошно смотреть на эти лозунги "а вот у нас есть...", я с такой радостью обычно думаю: а вот у нас этого нет; есть структуры данных, структуры поведения и структуры совмещения данных с поведением. А любые абстракции я буду выражать библиотечно. Как просто и здорово. Во-вторых, есть уже "философского" уровня война функциональщиков с понятием состояния и сопуствующими вещами. При этом это подается чуть ли не как признак высокой математической культуры и т.п. Чушь - декларативные формальные системы существует несколько столетий; и только 20-й век принёс формальные системы, обладающие сложной динамической составляющей - этапом выполнения, поведением. Цифровые автоматы, состояния, методы анализа поведения - это стало новым предметом для осмысления и изучения математическими методами, сильно обогатило математику (возьмите ЧМ эпохи машинных вычислений, имитационное моделирование и т.п. - там традиционное математическое понимание именно что расширено вот этими "низкими", как нам внушают функциональщики, процедурными понятиями, соображениями; и прекрасно - это возвращает "на грешную землю", вносит больше непосредственной семантики из реального мира, вместо свободы игр с символами). Возьмите методы алгоритмического анализа Дейкстры - они "реалистичны", семантически богаты, с точки зрения анализа реальных систем. Короче, всякие "проблемы" с состоянием и процедурностью - это проблемы в головах, изначально - комплексы некоторых любителей "математичности", которые вместо обогащения своих понятий решили распространять мифы о "прогрессивности декларативного подхода". В-третьих, чисто функциональный взгляд, разумеется, полезен для ряда задач, которые хорошо на него ложатся. Как и обсуждённая выше однородность, которую иногда хочется иметь. Ну и прекрасным образом имитируется это поверх ООП, создаётся "оазис" функциональности - и вперёд. |
Автор: | Geniepro [ Воскресенье, 29 Август, 2010 08:14 ] |
Заголовок сообщения: | Re: Кушниренко об алгоритмическом стиле мышления |
Илья Ермаков писал(а): Оборотная сторона медали: ну не хочу я читать "изящный выразительный" программный текст, где в 3-х строчках законсервировано столько смысла, что его нужно выражать парой десятков строк. Пусть алгебраисты и эстеты развлекаются, инженеру нужна очевидность и недвусмысленность. Ну и как Вы этого пытаетесь добиться на императивных языках?Вот скажите, какая разница -- помнить контекст вокруг трёх строчек (на ФЯ) или вокруг тридцати строчек (на ИЯ)? Всё равно его помнить придётся. А чем меньше строчек, тем больше контекста можно окинуть взглядом. ФП тут давит тяжестью строк, а ИП -- количеством этих строк. Масса в обоих случаях равная выходит. Так и какая разница? Дело привычки, всего лишь... Илья Ермаков писал(а): Обязательное требование к хорошему образовательному и промышленному языку: программирование (при выбранном пути решения) должно скатываться к одному оптимальному решению, опытные специалисты должны давать практически неотличимый результат (улучшать нечего, а переформулировать - язык не соблазняет многообразием). А вот это уже противоречит опыту механики.На любую задачу у железячников найдётся как минимум по два разных, хотя и близких к оптимуму, решения у каждого конструктора... Такой богатой фантазии, как у конструкторов, я у программистов ещё не видел... Илья Ермаков писал(а): Во-вторых, есть уже "философского" уровня война функциональщиков с понятием состояния и сопуствующими вещами. ... Далее вообще всё спорно и убедительно лишь для того, кто хочет в этом убеждаться...Илья Ермаков писал(а): В-третьих, чисто функциональный взгляд, разумеется, полезен для ряда задач, которые хорошо на него ложатся. Как и обсуждённая выше однородность, которую иногда хочется иметь. Ну и прекрасным образом имитируется это поверх ООП, создаётся "оазис" функциональности - и вперёд. А вот Вам снова пример Вашей любимой диалектики: ФП можно выразить через ООП (по Вашим словам), а ООП можно выражить через ФП (по словам функциональщиков, не доверять которым у меня нет оснований). Вспомните старую шутку фпшников -- объекты -- это замыкания для бедных, а замыкания -- это объекты для бедных.Осталось лишь определиться с личными предпочтениями и использовать эти инструменты там, где больше нравится, и можно при этом вполне обойтись без унылых попыток объективных обоснований достоинств и недостатков этих подходов... |
Автор: | Илья Ермаков [ Воскресенье, 29 Август, 2010 09:19 ] |
Заголовок сообщения: | Re: Кушниренко об алгоритмическом стиле мышления |
Geniepro писал(а): А вот это уже противоречит опыту механики. На любую задачу у железячников найдётся как минимум по два разных, хотя и близких к оптимуму, решения у каждого конструктора... Решения - разные, понимаете? Вариации в самих решениях, а не в способе выражения. А у программистов сплошь и рядом - одно и то же, разными словами выраженное. Впрочем, у железячников тоже нечто похожее Вы могли наблюдать - потому что где Вы сегодня этих железячников видите - в мелкой конторе, делающей небольшие изделия? Там может собраться несколько опытных экспертов, каждый со своими пристрастиями и привычками, + бывшие студенты, ещё совсем без привычек, а только с фантазиями. Единого стиля и единой корпоративной проектной культуры обычно не формируется. |
Автор: | Илья Ермаков [ Воскресенье, 29 Август, 2010 14:36 ] |
Заголовок сообщения: | Re: Кушниренко об алгоритмическом стиле мышления |
Отделена тема viewtopic.php?f=70&t=2814 |
Страница 2 из 2 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |