Подтвердить что ты не робот

Функциональные языки (Erlang, F #, Haskell, Scala)

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

2) Являются ли функциональные языки подходящими для бизнеса /ERP/CRM?

4b9b3361

Ответ 1

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

Как предполагает gabor, в конечном счете это сводится к библиотекам. Scala имеет веб-фреймворк: лифт. Haskell имеет happstack, а также 2100 4400 (в 2010 2012)) на Hackage для всех типов.

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

  • Да, азот - хороший пример функциональной веб-структуры. Он также масштабируется.

http://nitrogenproject.com/

Ответ 5

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

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

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

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

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

Ответ 6

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

Ответ 7

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

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

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

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

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

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

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

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