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