English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Введение в Erlang

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

Первая версия Erlang была разработана Joe Armstrong, Robert Virding и Mike Williams в 1986 году. Вначале это был закрытый язык внутри Эриксона. Позже в 1998 году он был выпущен в качестве открытого исходного кода. Erlang и OTP (сборник中间ウェア и библиотек в Erlang) теперь поддерживаются и обслуживаются отделом OTP компании Ericsson и широко известны какErlang/OTP.

Почему выбирают Erlang?

Если у вас есть следующие требования, то для разработки приложений следует использовать Erlang-

  • Приложение должно обрабатывать большое количество параллельных операций.

  • Он должен легко распространяться по компьютерной сети.

  • Должен быть инструмент, который позволял бы приложению быть устойчивым к ошибкам как программного, так и аппаратного обеспечения.

  • Приложение должно быть масштабируемым. Это означает, что оно должно быть способно работать на нескольких серверах, не требуя значительных изменений.

  • Он должен быть легко обновляем и пере конфигурируем, не требуя остановки и повторного запуска приложения.

  • Данное приложение должно реагировать на пользователя в определенном строго определенном временном интервале.

Официальный веб-сайт Erlang —https://www.erlang.org/.

Описание

Erlang — это универсальный параллельный языки программирования, разработанный CS-Lab,隶属于瑞典电信设备制造商爱立с, с целью создания языков программирования и среда выполнения, способные справляться с массовыми параллельными операциями. Erlang был представлен в 1987 году, и за десять лет развития был выпущен в 1998 году в открытом доступе. Erlang — это интерпретируемый язык, работающий на виртуальной машине, но теперь также включает в себя локальный кодовый компилятор, разработанный Университетом Упсалы в рамках высокопроизводительного плана Erlang (HiPE), с версии R11B-4 Erlang также поддерживает скриптовый интерпретатор. В отношении программирования Erlang является многопараметрическим языком программирования, охватывающим функциональное, параллельное и распределенное программирование. Erlang, выполняющий последовательные действия, является языком функционального программирования с ранним оцениванием, единичным присваиванием и динамическим типом.

Erlang — это структурированный, динамический тип языков программирования, который поддерживает параллельные вычисления. Он был первоначально разработан для通信 приложений компанией Ericsson, например, для управления коммутаторами или преобразования протоколов, и поэтому идеально подходит для создания распределенных, реальных систем параллельных вычислений. Приложения, написанные на Erlang, обычно состоят из тысяч легковесных процессов, которые общаются彼此 через передачу сообщений. Переключение контекста между процессами для Erlang — это всего лишь один или два шага, что значительно эффективнее, чем переключение потоков в программах на C.

Использование Erlang для написания распределенных приложений значительно проще, так как его распределенные механизмы прозрачны: для программы не известно, что она выполняется в распределенной системе. Runtime 环境 Erlang — это виртуальная машина, несколько похожая на Java Virtual Machine, так что после компиляции код может выполняться везде. Его runtime система даже позволяет обновлять код без прерывания. Кроме того, если необходимо получить более высокую производительность, bytecode можно компилировать в локальный код.

История развития

Erlang назван в честь датского математика и статистика Agner Krarup Erlang, и также Erlang может означать Ericsson Language.

Erlang не является новым языком, он появился в 1987 году, но в то время потребности в параллельности и распределенных системах не были так распространены, и поэтому он мог не найти своего места. Основатель языка Erlang Joe Armstrong работал в Ericsson над разработкой телефонных сетей и использовал Smalltalk, но в то время Smalltalk был слишком медленным, чтобы удовлетворить требованиям высоких производительности телефонных сетей. Но Joe действительно любил Smalltalk, и поэтому он заказал машину Tektronix Smalltalk. Но машина заняла два месяца, и Joe, скучая в ожидании, начал использовать Prolog. Когда Tektronix наконец прибыл, Joe уже был более интересован Prolog. Joe не был удовлетворен просто знанием Prolog, и после нескольких экспериментов он добавил параллельное управление и восстановление из ошибок, и так родился Erlang. Это также объясняет, почему грамматика Erlang и Prolog имеют много общего, например, их списки выражены как [Head | Tail].

В 1987 году был выпущен тестовый вариант Erlang, и он不断完善 в реальных приложениях пользователей, в 1991 году был выпущен первый выпуск для пользователей, который содержал компилятор и графический интерфейс и другие функции. В 1992 году Erlang получил больше пользователей, таких как проект RACE. В то же время Erlang был移植ирован на различные платформы, такие как VxWorks, PC и Macintosh, и два проекта продуктов, использующих Erlang, начали запускаться. В 1993 году независимая организация внутри Ericsson начала поддерживать и поддерживать реализацию и инструменты Erlang.

Особенности языка

Отличаясь от традиционных языков программирования面向对象, он имеет свои преимущества: во-первых, он основан на процессе параллельного выполнения, эти процессы легковесны и взаимодействуют друг с другом в упорядоченной обработке дел, пользователи не должны беспокоиться о конкретных операциях PV, эти процессы для операционной системы прозрачны, для операционной системы работает только один процесс. Во-вторых, каждый процесс имеет свою собственную независимую память, в процессе обмена сообщениями полностью зависит от передачи сообщений, каждый процесс имеет свою собственную почтовую ящик и использует способ совпадения шаблонов для поиска сообщений, которые необходимо обработать, затем они обрабатываются асинхронно. Это уменьшает耦合 между процессами,提高了独立性. Erlang также имеет надежную систему容错, так как процессы относительно независимы, в Erlang можно использовать некоторые процессы для связи или мониторинга других процессов, когда эти мониторы выходят из строя из-за ошибок, программы, ответственные за мониторинг, получают сообщения о выходе из строя этих процессов и проводят соответствующие действия. В OTP Erlang может использовать дерево мониторинга для выполнения一对一 или множественного мониторинга.最重要的是, поддержка многоядерных процессоров, в Erlang операции с многоядерными процессорами не требуют управления разработчиками, для разработчиков это полностью прозрачно, нам нужно только так же, как всегда, писать программы. В конце концов, Erlang поддерживает обновление.hot кода, в Erlang можно выполнять обновление кода без остановки работы, чтобы обеспечить обновление программного обеспечения в процессе выполнения. В управлении версиями Erlang можно сохранять две различные версии модуля, поддерживая обратный откат версий.

Язык Erlang сосредоточен на определённых потребностях, и не подходит для всех ситуаций. У него много привлекательных свойств, но также и некоторые недостатки: его абстрактные возможности不强, Erlang является слабо типизированным языком, при совпадении можно относительно легко корректировать содержимое сообщений или требования шаблонов, но при возникновении ошибок, их скрытность довольно сильна. Кроме того, при масштабе проекта, который比较大, можно заметить, что из-за свойств языка части программы имеют плоский характер, структура программы с множеством тупиков и хаотичных структур. Второе, функциональное программирование differs от традиционных языков, в настоящее время主流 языки программирования - это языки C и объектно-ориентированные, функциональное программирование страдает от отсутствия зрелых теоретических концепций, и связанных с этим талантов и материалов также немного, что добавляет сложности обучения. Кроме того, идеология объектно-ориентированного программирования уже прочно укоренилась в сознании, что затрудняет转变 мышления при изучении функционального программирования.最重要的是, Erlang является языком IO-интенсивного типа, подходящим для проектов с明显ными 分布енными характеристиками, для требований к вычислительным ресурсам может быть трудно, но все же есть потенциал для оптимизации и улучшения.

Перспективы развития

В последние годы развитие Erlang в Китае происходит очень быстро, и он主要用于游戏 серверных систем разработке. Erlang легко начать использовать, имеет высокую способность к ошибкам и быстрый итеративный процесс, что очень подходит для разработки браузерных и мобильных игр. Особенно в Гуанчжоу, Шэньчжэне и некоторых других средних и малых игровых компаниях почти все используют Erlang. Игровые серверные системы на основе C++ требуют длительного технического накопления, и эффективность разработки C++不如Erlang, а высокие затраты на найм сотрудников представляют собой значительный вызов для новых компаний. Но малые и средние компании уделяют больше внимания продуктам, чем технике, что не в пользу развития Erlang в Китае, большинство компаний используют одно и то же сформированное вокруг Erlang рамки, акцентируя внимание на конкретной бизнес-логике, но пренебрегая оптимизацией нижнего уровня. Это极其 неэффективно для развития Erlang.

Erlang имеет длительную историю развития за рубежом, как зрелый язык, его уже证实了。 В настоящее время он используется в нескольких сотнях重大项目, включая решения системы широкополосного доступа, GPRS и ATM-переключение от Ericsson, что обеспечивает богатый опыт проектов, программные рамки (OTP) предоставляют набор инструментов и библиотек для обеспечения устойчивости и отказоустойчивости системы Erlang, а также полной структурированной рамки. Но по сравнению с отечественными играми разработки, за рубежом он主要用于 веб-сервисы, компьютерная телефония, системы обмена сообщениями и коммерческие банки и другие области. В начале этого века на сайте Erlang.org было около 36000 веб-страниц, а через десять лет это количество увеличилось до 2,8 миллиона, что показывает, что сообщество Erlang不断扩大, включая коммерческие, исследовательские и开源 проекты, вирусный маркетинг, книги и блоги, что, конечно, исходит из最初的 дизайна Erlang - для решения специфических проблем в определенной области и продвижения.