Вопрос

1) Подходят ли функциональные языки для разработки веб-приложений?

2) Подходят ли функциональные языки для ведения бизнеса/ERP-система/CRM-система тип приложений?

Это было полезно?

Решение

Функциональные языки того типа, который вы описываете, являются языками программирования общего назначения, они используются для самых разных целей, включая веб-приложения и бизнес-приложения.(Я использую Haskell).

Как подразумевает габор, в конечном счете все сводится к библиотекам.У Scala есть веб-фреймворк:поднимите.У Хаскелла есть счастливый пакет, а также 2100 4400 (в 2010 2012) библиотеки на Взлом для всевозможных дел.

На самом деле это не столько вопрос языка, сколько набора инструментов при рассмотрении конкретных специализированных областей.

Другие советы

Функциональные языки хороши для всего, для чего вы хотели бы их использовать.

Однако разработка приложений в наши дни не так проста, как использование языка программирования. Преимущество Java, C # и т. Д. Состоит в том, что они поставляются с большими библиотеками и другими тонкостями среды, которые абсолютно необходимы при создании бизнес-программ. Большинство функциональных языков не имеют такой большой поддержки (пока?).

F # может быть многообещающим, поскольку он находится в среде .NET и может использовать имеющиеся там инструменты (поправьте меня, если я ошибаюсь).

В этой статье описано, как Lisp, ранний функциональный язык, использовался для создания веб-сайтов. приложение успешно.

Функциональные языки хорошо подходят для разработки веб-приложений, в частности Scala.

Ознакомьтесь с платформой Lift для получения дополнительной информации.

  

2) Подходят ли функциональные языки для приложений типа бизнес / ERP / CRM?

Обращаясь ко второму пункту о бизнес-приложениях / приложениях ERP / CRM: лично я бы не реализовал их в «чистом» виде. функциональный язык, такой как Haskell, или динамический функциональный язык, такой как Clojure. С другой стороны, я в настоящее время внедряю ERP в Scala, которая, конечно, является гибридной OOP / FP и статически компилируется.

Причина, по которой я говорю это, заключается в том, что бизнес-приложение, такое как ERP, в основном ориентировано на записи: существует схема данных, выражающая различные типы записей, и логика приложения почти полностью разрабатывается вокруг CRUDing этих записей и применения пользовательских бизнес-процессов. им. И, в сущности, я не верю, что такого рода бизнес-приложения, ориентированные на данные, идеально подходят для функциональной модели.

Люди могут говорить об OOP-реляционном несоответствии всем, что им нравится, но, в конечном счете, и OOP, и базы данных ориентированы на записи: язык OOP с хорошим ORM позволяет вам отображать эти разные модели данных в код, а затем присоединять код для обработки. каждая из моделей. И наличие этого статически типизированного (в идеале со строго типизированным ORM, такого как Squeryl Scala) значительно снижает вероятность ошибки во время выполнения или, например, изменение одной из моделей данных, которые не были правильно применены в коде.

Не поймите меня неправильно - я большой поклонник FP (я все больше и больше занимаюсь системным программированием на Haskell), но для меня ориентированный на записи подход ООП имеет больше смысла, чем функция -ориентированный подход FP для обработки объектов данных бизнес-ERP или аналогичных. (Scala - хорошее исключение из правила, потому что вы можете использовать парадигму ООП с качественными ORM для манипулирования записями, а также для совершенствования FP для вашего общего программирования приложений.)

<Ол>
  • Да, азот является хорошим примером функциональной веб-инфраструктуры. Это также масштабируется.
  • http://nitrogenproject.com/

    Yaws - это фантастический веб-сервер для Erlang.

    Хотя я бы не сказал, что какие-то конкретные функциональные языки предназначены для веб-разработки, я также не сказал бы, что вы не можете заниматься веб-разработкой с помощью функционального языка. Я думаю, что это полностью зависит от того, какие веб-фреймворки могут быть доступны для выбранного вами языка, и есть ли какие-либо веб-серверы, которые будут поддерживать этот язык.

    Например, я уверен, что вы можете использовать F # вместе с ASP.Net в IIS для веб-разработки. Я сомневаюсь, что есть поддержка F # в шаблонизаторе, но вы определенно можете написать бизнес-логику на F #.

    Точно так же, есть mod_haskell для Apache, который должен облегчить динамический вывод с помощью haskell. Хотя я никогда не использовал это лично. В то же время, если для Apache есть mod_ (erlang или scala) , для этих языков это будет аналогичным образом.

    В конечном счете, я думаю, что природа функциональных языков без сохранения состояния должна сделать ее хорошо подходящей для веб-фреймворка в стиле MVC без сохранения состояния. Тем не менее, я думаю, что все сводится к тому, какие инструменты и инфраструктуры доступны, чтобы облегчить вашу жизнь при работе с этими языками. Например, Ruby не пользовался популярностью для веб-разработки, пока не стали популярными рельсы, и мне не очень нравилось делать что-либо с Python, пока я не нашел django.

    Функциональные языки предоставляют новые виды абстракций, которые могут быть использованы для веб-разработки.Веб-серверы, основанные на продолжении, например, популярны среди функциональных языков.Тот Самый Веб-сервер PLT Scheme поддерживает разработку такого рода веб-приложений.Вы можете прочитать больше о продолжениях и их использовании в веб-разработке на википедия

    Большинство функциональных языков, а именно те, которые вы включили, считаются языками общего назначения. Для веб-разработки, я бы глубоко подумал об использовании Clojure или Scala. У них обоих есть очень хорошие веб-фреймворки, и они оба работают на JVM. Я могу полностью порекомендовать Clojure и Scala, но не так сильно для остальных.

    У Haskell есть веб-фреймворк, но я никогда не использовал его.

    Бизнес-приложения? Конечно, почему бы и нет. Функциональные языки хороши практически для всего.

    Одним из самых больших преимуществ заявителей функциональных языков является то, что они облегчают написание программ, которые могут выполняться параллельно. Но у веб-приложений обычно нет проблем с параллелизмом. Как правило, веб-сервер / сервер приложений поддерживает пул потоков, и каждый пользовательский запрос назначается другому потоку, который может работать на другом физическом процессоре. Таким образом, вы можете использовать преимущества нескольких процессоров без особых проблем. Хитрость заключается в том, что веб-приложения характеризуются большим количеством небольших запросов, и потоки и императивные языки там хорошо работают. Необходимые языки начинают ломаться, когда у вас небольшое количество вычислительно дорогих запросов.

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

    Но обычно веб-приложения включают чтение информации из запроса, выполнение запросов к базе данных, чтение ответа из базы данных и форматирование ответа. Это очень много IO, или монад, и очень мало возможностей для функций.

    Учитывая эти характеристики веб-приложений, какие преимущества дают функциональные языки при разработке веб-приложений?

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top