Я уже некоторое время являюсь веб-разработчиком и недавно начал изучать некоторые функциональные программы. Как и другие, у меня были некоторые существенные проблемы, связанные с многими из этих концепций для моей профессиональной деятельности. Для меня основной причиной этого является то, что я вижу, что конфликт между целью FP оставшихся без гражданства, похоже, не согласуется с тем фактом, что большинство работ по веб-разработке, которые я сделал, были сильно привязаны к базам данных, которые очень ориентированы на данные.
Одна вещь, которая сделала меня гораздо более продуктивным разработчиком на стороне ООП, - это открытие объектно-реляционных карт, таких как MyGeneration d00dads для .Net, Class:: DBI для perl, ActiveRecord для ruby и т.д. Это позволило мне держаться подальше от написания вставки и выбора заявлений весь день, а также сосредоточиться на работе с данными легко как на объектах. Конечно, я все еще мог писать SQL-запросы, когда их мощность была необходима, но в остальном она была абстрагирована красиво за кулисами.
Теперь, обратившись к функциональному программированию, похоже, что многие веб-фреймворки FP, такие как Links, требуют написания большого кода шаблона sql, как в this пример. Weblocks кажется немного лучше, но, похоже, он использует модель OOP для работы с данными и все еще требует, чтобы код был написан вручную для каждой таблицы в вашей базе данных, как в этот пример. Я предполагаю, что вы используете некоторое генерирование кода для записи этих функций отображения, но это явно не похоже на lisp -like.
(Примечание. Я не очень внимательно смотрю на Weblocks или Links, возможно, просто не понимаю, как они используются).
Итак, вопрос заключается в том, что для частей доступа к базе данных (которые, как мне кажется, довольно большие) веб-приложения или другой разработки, требующей интерфейса с базой данных sql, мы, похоже, вынуждены спускаться по одному из следующих путей:
- Не используйте функциональное программирование
- Доступ к данным в раздражающем, не абстрактном способе, который включает в себя ручную запись большого количества SQL или SQL-подобных кодов ala Ссылки
- Внесите наш функциональный язык в парадигму псевдо-ООП, тем самым устраняя изящность и стабильность истинного функционального программирования.
Ясно, что ни один из этих вариантов не кажется идеальным. Обнаружил ли этот способ обойти эти проблемы? Есть ли даже проблема?
Примечание. Я лично знаком с LISP на фронте FP, поэтому, если вы хотите дать какие-либо примеры и знать несколько языков FP, LISP, вероятно, будет предпочтительным языком выбора
PS: Для вопросов, относящихся к другим аспектам веб-разработки, см. этот вопрос.