• Все партнеры Суперзвезды • Необходима мощная система типов Успешные области применения: Микротранзакции, FPGA моделирование, уникальные утилиты, создание DSL Консалтинг: WellTyped, LLC
за счет ООП • Первоклассные типы • ML-классика Успешные области применения: Банковская сфера, сложные алгоритмы, построение DSL Консалтинг: OCamlPro SAS
классика Scala 2004 — на пути к замене Java Erlang 1986 — наиболее промышленный Erlang — единстенный динамически- типизированный язык среди рассмотреных. Но грустить рано, смотрим на расклад.
Coherence AP, Cassandra CA, Hadoop CA Erlang: Riak AP, CouchDB AP, Hibari AP, KAI AP, LeoFS AP, Mnesia CA Как не странно, больше всего реализаций DHT именно на Erlang. В основном это из-за прозрачности распределенного кода.
Happstack Haskell • Eliom OCaml • Nitrogen Erlang Нитроген является самым простым и больше всего подходит для agile-agile in production development process. * — https://groups.google.com/forum/#!topic/erlang-russian/p6GOpPx03YM
считает редукции и сам переключает контексты процессов (1.5К). Sparks переключаются только когда требуется память. Остальные модели актёров (Lwt, Akka) планируются кооперативными планировщиками. Task Switching
Java. • Разделяемые состояния и память. Ад. Erlang посылает сообщения в процессы не используя мютекстов, все происходит за атомарное изменение указателя очереди. Хип процесса изолирован и собирается GC в выделеное для этого время.
• Ports (Fast High Level Right Way) • Distribution Protocol (ETF) Если надо подключить существующую C библиотеку лучше это сделать через NIF. В случае взаимодействия с внешними системами напрямую через Ports. Если хочеться хардкора — через dist протокол.
требовать, чтобы все элементы списка были одного типа. Строки — списки. Поэтому работа со строками в Erlang медленная, нужно стараться работать с бинарными данными.
when H<192 -> [H,drle(L)]; drle([H,X|L]) -> [lists:duplicate(H-192,X),drle(L)]. Любой кто писал на Python, PHP, Perl, Ruby может писать на Erlang уже на второй неделе.
10% времени на парсинг • Много ошибок при ручном парсинге XML нужен только для связи с внешними системами. Нет смысла использовать внутри своей системы XML.
UMTS • DER - X.509 Certs and Keys • XER - XML encoding • ECN - Bluetooth, UMTS RRC, GPRS, GSM, SS7 ASN.1 разработанный в 1984 году на службе телекомов по сей день.