Как только упоминается язык Erlang, так сразу в качестве козырного туза предъявляется проект AXD 301 – ATM switch (телефонный цифровой коммутатор, если я правильно перевожу это на русский) от Ericsson-а. Поскольку практически всегда, когда речь заходит о нем, приходиться искать в Интернете статьи с указанием объема кода и количества разработчиков, то решил некоторые из них опубликовать здесь. Итак:
AXD 301-A new generation ATM switching system – рекламное-обзорное описание самого устройства. 1998 год.
Ulf Wiger’s Four-fold Increase in Productivity and Quality – презентация с рассказом о том, как программирование на Erlang увеличивает скорость и качество разработки. С примером AXD 301, естественно. 2001 год.
Joe Armstrong’s Concurrency Oriented Programming in Erlang – доклад о конкурентном программировании на Erlang. 2002 год (и тот же доклад, но уже в 2003 году).
Joe Armstrong’s Making reliable distributed systems in the presence of sodware errors – диссертация Армстронга, в которой он говорит, в том числе, и об AXD 301. 2003 год.
Mats Cronqvist’s Troubleshooting a Large Erlang System – небольшая статья о том, как разрабатывался софт для AXD 301. 2004 год.
Интересен рост количества строк в Erlang-овой части AXD от публикации к публикации. Ульф Виджер указывает 1M (+ еще 260K в самом OTP). Армстронг через год говорит об 1.7M (хотя в диссертации указана цифра в 1136150 строк кода). А Кронквист через два года – о 2.1M (хотя не факт, что там считались только Erlang-овские строки). Либо софт AXD 301 все время дорабатывают, либо со временем партизаны в воспоминаниях ветеранов становятся все толще и толще ;)
Меня впечатляют цифры из презентации Ульфа Виджера:
- 1M строк кода на Erlang-е;
- 400K строк на C/C++;
- 13K строк на Java;
- плюс к тому около 500K строк кода на C, который работал на т.н. device processor-ах;
- плюс к тому около 100K строк кода на C в стороннем ПО (запуском которого занимались программы на Erlang-е);
- плюс к тому 240K строк на Erlang-е, 460K строк на C++ и 15K строк на Java, которые входили в саму реализацию Erlang/OTP.
В статье Кронквиста указывается, что писало код около 300 человек, хотя раньше я слышал другие цифры – порядка 150.
Просьба к читателям: когда-то я читал то ли статью Армстронга (а может и не Армстронга), то ли его интервью, в котором он подробнее рассказывал о разработке AXD 301. Там, кажется, были более подробные цифры по разработчикам. Кажется, что 50 человек писали Erlang-овую часть и еще около 100 человек – C/C++ные и Java-вские модули. Еще там Армстронг указывал, что одним из факторов успеха проекта было то, что удалось всех разработчиков собрать в едином центре, что существенно сокращало издержки на коммуникации внутри коллектива. Сам я эту ссылку найти сейчас не смог. Буду признателен, если кто-то ею поделится.
Спасибо за ссылки. Особенно хороши тезисы диссертации Армстронга. Под их влиянием сейчас (надеюсь) буду переписывать один chat-like server с С на Erlang :)
ОтветитьУдалитьУ меня сложилось впечатление, что описанные Армстронгом тезисы (в частности let it crash) можно применять в любых языках. Так что может C-шный chat-like server можно просто модернизировать, а не переписать на Erlang? Тем более, что big rewritting, как правило, редко заканчивается успехом ;)
ОтветитьУдалить