Джо Армстронг
Джо Армстронг (англ. Joe Armstrong; 27 декабря 1950, Борнмут, Великобритания — 20 апреля 2019, Стокгольм, Швеция) — британский и шведский учёный в области информатики, один из создателей языка программирования Erlang и сооснователь компании Ericsson Computer Science Laboratory. Наиболее известен как главный архитектор и разработчик виртуальной машины Erlang, а также как автор концепции «акторов» в контексте промышленного программирования.
Биография
Ранние годы и образование
Джо Армстронг родился 27 декабря 1950 года в Борнмуте (графство Дорсет, Англия). В 1974 году окончил Университетский колледж Лондона (UCL) по специальности «физика». В 1980-х годах работал в лаборатории Ericsson Computer Science Laboratory (CSLab) в Стокгольме, где занимался разработкой систем для телекоммуникационного оборудования.
Создание Erlang
В 1986 году Армстронг совместно с Робертом Вирдингом и Майком Уильямсом начал работу над языком программирования, который мог бы эффективно обрабатывать параллельные запросы в реальном времени в телефонных станциях. Первая версия Erlang была написана на Прологе, но в 1991 году Армстронг реализовал виртуальную машину BEAM (Bogdan/Björn’s Erlang Abstract Machine), написанную на C, что позволило значительно повысить производительность. В 1993 году Erlang был открыт для внешнего использования, а в 1998 году — выпущен под открытой лицензией.
Дальнейшая карьера
После ухода из Ericsson в 1998 году Армстронг работал в ряде стартапов, включая Bluetail (позже приобретённый Alteon WebSystems) и Tail-f Systems (позже приобретённый Cisco). В 2003 году защитил докторскую диссертацию в Королевском технологическом институте (KTH) в Стокгольме на тему «Making reliable distributed systems in the presence of software errors». В последние годы жизни занимался популяризацией Erlang и функционального программирования, выступал на конференциях и вёл блог.
Смерть
Джо Армстронг скончался 20 апреля 2019 года в Стокгольме в возрасте 68 лет от осложнений, вызванных раком. Его смерть вызвала широкий резонанс в сообществе разработчиков.
Вклад в информатику
Язык программирования Erlang
Erlang, созданный Армстронгом, стал одним из первых языков, ориентированных на массовое параллельное программирование с использованием модели акторов. Ключевые особенности Erlang, заложенные Армстронгом:
- Лёгкие процессы — тысячи и миллионы параллельных потоков выполнения, управляемых виртуальной машиной.
- Обмен сообщениями — асинхронная передача данных между процессами без общей памяти.
- Отказоустойчивость — механизмы «let it crash» (пусть падает) и супервизоров для автоматического восстановления после сбоев.
- Горячая замена кода — возможность обновления работающей системы без остановки.
Виртуальная машина BEAM
Армстронг разработал виртуальную машину BEAM, которая компилирует Erlang-код в байт-код и выполняет его на C-уровне. BEAM обеспечивает:
- Эффективное управление памятью с использованием сборки мусора на основе поколений.
- Планирование процессов с приоритетами и вытеснением.
- Поддержку распределённых вычислений через узлы Erlang.
Модель акторов
Хотя концепция акторов была предложена Карлом Хьюиттом в 1973 году, Армстронг адаптировал её для промышленного использования. В Erlang акторы реализованы как процессы, которые:
- Получают и отправляют сообщения.
- Могут создавать новые процессы.
- Не имеют общего состояния, что исключает проблемы синхронизации.
Применение Erlang
Телекоммуникации
Erlang изначально разрабатывался для телефонных станций Ericsson AXE. К 1990-м годам на Erlang работали системы управления трафиком, биллинга и маршрутизации в более чем 100 странах.
Сетевые протоколы
Erlang используется в реализации протоколов SIP, H.323, XMPP и других. Например, сервер MochiWeb (асинхронный веб-сервер) написан на Erlang.
Распределённые системы
Известные проекты, использующие Erlang:
- **WhatsApp (продукт Meta, признанной экстремистской и запрещённой в РФ)** — мессенджер, обрабатывающий более 2 миллиардов сообщений в день на Erlang.
- RabbitMQ — брокер сообщений, реализованный на Erlang.
- CouchDB — документо-ориентированная база данных, использующая Erlang для репликации.
- Ejabberd — сервер мгновенных сообщений на основе XMPP.
Критика и наследие
Критика
- Синтаксис — Erlang использует синтаксис, близкий к Прологу, что отпугивает разработчиков, привыкших к C-подобным языкам.
- Производительность — BEAM медленнее нативных языков (C, Rust) в вычислительных задачах, хотя и превосходит их в параллельной обработке.
- Сложность отладки — распределённая природа Erlang усложняет поиск ошибок, особенно в больших системах.
Наследие
Джо Армстронг считается пионером в области параллельного программирования. Его идеи повлияли на языки:
- Elixir — язык, работающий на BEAM, но с Ruby-подобным синтаксисом.
- Erlang — остаётся основой для систем реального времени в телекоммуникациях и финансах.
- Akka — фреймворк для Scala и Java, реализующий модель акторов, вдохновлённую Erlang.
Интересные факты
- Армстронг был известен своим эксцентричным стилем: на конференциях он часто появлялся в футболке с надписью «Erlang — это язык, который я люблю».
- В 2014 году он получил премию «Dahl-Nygaard Prize» за вклад в объектно-ориентированное программирование, хотя сам Erlang не является объектно-ориентированным.
- Его докторская диссертация 2003 года считается одной из самых цитируемых работ по распределённым системам.
Источники
- Armstrong, J. (2003). Making reliable distributed systems in the presence of software errors. PhD thesis, KTH Stockholm.
- Armstrong, J., Virding, R., & Williams, M. (1993). Concurrent Programming in ERLANG. Prentice Hall.
- Hewitt, C. (1973). A universal modular ACTOR formalism for artificial intelligence. IJCAI.
- Ericsson Computer Science Laboratory. Erlang/OTP Documentation.
- Некролог в The Register (2019).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →