Я слышу все время, что Erlang является функциональным языком, уже легко назвать базы данных или не побочный эффект бесплатный код от функции, и команды легко заказаны при помощи"", запятые между ними точно так же, как Ruby или другой язык, поэтому где "функциональная" часть Erlang?
Центральная идея заключается в том, что каждый процесс - это функциональная программа над входным потоком сообщений. Результатом работы функциональной программы является выходной поток сообщений для других. С этой точки зрения Erlang является довольно чистым функциональным языком; в нем нет деструктивных обновлений структур данных (как setcar в Lisp и большинстве схем).
За редким исключением, все встроенные функции, такие как операции над таблицами ETS, также следуют этой модели: помимо вопросов эффективности, эти BIF могли бы быть реализованы с помощью чистых процессов Erlang и передачи сообщений.
Итак, да, язык Erlang является функциональным, но набор взаимодействующих процессов Erlang - это совсем другое дело. Каждый процесс - это текущее вычисление, и как таковой он имеет текущее состояние, которое может меняться по отношению к другим процессам. В этом отношении даже база данных - это просто еще один процесс.
На мой взгляд, это одна из самых важных особенностей Erlang: снаружи процесса может бушевать буря, но внутри все спокойно, что позволяет сосредоточиться на том, что должен делать процесс - и только на этом.
Существует программа Intrarts, называемая «регулируемой», и версия командной строки кажется свободной (цена):
регулируемой является формирование полосы пропускания приложение для Mac OS X и FreeBSD который позволяет закрывать ваш восходящий поток полоса пропускания, определение приоритетов пакетов ACK и поддерживайте высокую скорость загрузки даже когда ваш сервер отправляет полная скорость.
... который кажется немного касательным к вашим потребностям, но может быть настроен на то, чтобы делать то, что вы хотите.
-121--4565768-Следующее обнаружит, установлена или нет .net framework 3.5.. и, если не установлен, установит его. Просто запустите это в командной строке.
if exist "%WINDIR%\Microsoft.Net\Framework\v3.5" goto end start /wait .\Framework\dotnetfx.exe /q /norestart" :end
Если вы хотите обнаружить другие версии, замените v3.5 на v2.0 или v1.0. Кроме того, если .net не обнаружен, установка .net framework будет выполняться в автоматическом режиме, т.е. без взаимодействия с пользователем.
-121--1391370-Функциональная часть состоит в том, что вы склонны передавать функции. Большинство лангугов можно использовать и как функциональный язык, и как императивный язык, даже C (вполне возможно сделать программу, состоящую только из указателей функций и констант).
Я полагаю, что отличительным фактором обычно является отсутствие изменяемых переменных в функциональных языках.
Да, это функциональный язык. Это не чистый функциональный язык, как Haskell, но, опять же, и LISP (и никто не спорит, что LISP не работает).
Передача сообщений / обработка процессов в Erlang - это реализация модели акторов. Вы можете возразить, что Erlang - это язык актеров, с функциональным языком, используемым для отдельных актеров.