Shub
короче у Царя позиция, что кроме крестов ничего не существует, и что сами кресты имеют настолько идеальную синергию со спиральной энергией, что больше ничего и не требуется. поэтому мир делится на две категории - Царя и всех остальных, потому что грязные пейзане не научились писать на крестах
Doge
Вторая часть цитаты:
Я говорил, не процедурной разновидности императивного программировании, а об ООП, противопоставляя его более простому, ограниченному в своих возможностях функциональному программированию, а также ещё более вырожденному декларативному "программированию". Там по приведенной тобой ссылке были какие-то слова и про декларативный подход.
Что лучше, что худе, что примитивнее, что совершеннее, это действительно и вопрос вкуса, и привычек, и самое главное задач, которые нужно разрешить. Я понимаю, что ты спрашивал о библиотеке, а не о подходах в целом. Мне показалось полезным в двух словах обратить твоё внимание на экзотичность функционального программировании в продвинутом программировании, к которому как мне кажется ты имеешь интерес.
Говоря о ООП я имел ввиду, что что базовый элементом являются инкапсулированные данные и методы работы с этими недоступными из вне данными. В функциональном же программирование ООП невозможно, так как базовым элементом является функция не имеющая внутренних данных.
Ярким примером ухода от примитивного функционального программирования к императивному ООП является ORM. Мало какой программист скажет, что ORM не нужно и ему удобнее бизнес логику реализовывать в хранимках на SQL. Есть, конечно, некоторые DBA которые по привычке кипятком ссут от хранимок, но даже пенсионеры во ФГУПах от них отказываются в пользу ORM или вообще сериализации целых агрегатов в быстрое key-value хранилище.
Для меня в данном вопросе главным является то как железка исполняет код. Процессор x86 исполняет код доисторическим последовательным образом, испытывая огромные трудности с многопоточностью, и хранит данные у себя в памяти. Такая примитивная архитектура процессора в 21 века поражает, но что есть то есть. Таким образом x86 предназначен для императивных программ и в частности ООП основанного на императивном коде.
При этом я много работал с железками, для которых нет понятия команд и последовательности их исполнения. ПЛИС или FPGA построены не на переборе адресов, а состоят из миллионов аппаратных логических блоков, из которых как из Лего можно собирать устройства с тысячами разных очень сложных, независимых аппаратных функций выполняющихся сразу за один прием, так же инкремент в x86. В таких устройствах функциональный код выполняется не сверху вниз, а слева на право одновременно во всех строках программы. Для таких железок естественен функциональный подход к программированию. Попытки некоторых математиков из МГУ запрограммировать на них императивный код были очень смешным и печальным одновременно. Мне приходилось наблюдать за некоторыми анекдотичными попытками сделать это
Поэтому разные подходы хороши для различных ситуаций и различных задач. В этом смысле, я слишком упростил ситуацию, негативно отозвавшись о функциональном подходе к программированию. Однако при разработке информационных систем на процессорах x86, функциональный подход как правило применяется только для ускорения программирования и понижения требования к квалификации разработчиков ПО. Чтобы дорогостоящих разработчиков заменить низкоквалифицированным персоналом, не подозревающем о существовании ООП.
Взять к примеру F#. Всё, что можно написать на F# можно написать на C#. А на F# написать можно очень немногое из того, что позволяет C#. Зато писать на F# сможет НЕпрограммист, а математик, физик, химик или иной инженер.
В общем, вариантов применения разных парадигм очень много, в каждом случае свои плюсы и минусы. Не зная того что нужно запрограммировать, наверное не стоит давать точных оценок эффективности того или иного инструмента.
Я выразил своё интегральное субъективное понимание, обретенное за мой опыт, в виде средней температуре по больнице популярного ПО. Я не знаю что именно ты хочешь запрограммировать. Возможно, для твоей задачи функциональная парадигма будет самой лучшей.
Aleksandr
> писать на F# сможет НЕпрограммист, а математик, физик, химик или иной инженер.
мне кажется, или он сделал одну ошибку в названии языка С#?