Открыть сервис

Джо Армстронг

Джо Армстронг (англ. 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:

Критика и наследие

Критика

  • Синтаксис — 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 →