понедельник, 28 апреля 2008 г.

"Редкая профессия" на сайте Интерстрона

Типа информация. :-)
Моя давняя-давняя статья "Редкая профессия", о том, как мы делали компилятор C++, выложена на сайте фирмы Интерстрон (www.interstron.ru). Статья вышла в конце 1997 года в PC Magazine/Russian Edition, довольно долгое время лежала у них в электронном архиве, но недавно исчезла (наверное, в связи с десятилетним юбилеем :-)) По этой причине я счел естественным опубликовать ее на сайте "своей" фирмы, подправив кое-какие ляпы и опечатки (не все, к сожалению).

С момента выхода статьи я получил на нее довольно много отзывов, как в различных профессиональных форумах, так и в личных письмах. Один раз даже удостоился критики: автор, мол, "ничего не понимает в компиляторах" или что-то в этом роде. Было очень лестно :-). Как ни покажется удивительным, отзывы продолжают приходить и по сей день (даже с утверждениями, что "статья не устарела"!), что послужило дополнительным мотивом ее повторного опубликования.

Прямая ссылка на статью:
http://www.interstron.ru/upload/images/pubs/Redkaya_professiya.pdf
Enjoy! :-)

Да, чуть не забыл. Вопрос к читателям (на сто тысяч):
Если вы смогли одолеть этот довольно длинный текст, то как бы вы отнеслись к появлению статьи под условным заголовком "Редкая профессия: десять лет спустя" - с рассказом о том, что последовало за описанными событиями, и о некоторых других похожих проектах? Не умею устраивать голосование на блоге (да и не хочу заморачиваться, честно говоря), но узнать интегральное мнение было бы очень интересно...

UPD: Оказывается, статья не исчезла, а просто переехала на другое место в связи с редизайном сайта PC Magazine/RE. Прошу прощения за ошибку, и спасибо Олегу Лебедеву за поправку. Вот новая ссылка на статью.

51 комментарий:

Андрей Валяев комментирует...

Прочитал полностью а потом еще и перечитывал спустя некоторое время. :)

С интересом прочитаю и продолжение.

Kpoxa комментирует...

Было бы очень интересно почитать.

Олег. комментирует...

Очень интересно будет прочитать продолжение!

blacklion комментирует...

Да! Да! Да!

born-to-be-cool комментирует...

Yes!, yes, yes!

Samolisov Pavel комментирует...

Сам являюсь прикладным программистом, но всегда считал, что системное программирование интереснее. С удовольствием прочитал вашу статью, много думал. Буду рад прочитать и продолжение.

rssh комментирует...

Да, безусловно
(Кстати - давно следу за вами и хотел бы спросить -- а чем сейчас занимаетесь и может найдется возможность как-то повзаимодействовать)

zouev комментирует...

Для rssh:
То-то я смотрю, в последнее время какой-то мерс от меня не отстает! Я на работу - он за мной, я с работы - и он тут как тут. А это Вы, оказывается, следите! Отлегло... А то я уж Бог знает что думать начал... :-))))))
Если серьезно - все никак руки не доходят сесть и написать о своих текущих проектах. На самом деле руки уже почти дошли. :-) Вот-вот. За праздники постараюсь пару постов кинуть.

balmaster комментирует...

С большим интересом прочитал бы продолжение.

potan комментирует...

Знакомая ситуация. Как функциональный программист говорю :-).

Но про наличие книг я бы посморил. По компиляторам как раз книги есть. Хотя бы Dragonbook. А вот по Common Lisp - нет. По Haskell и SML совсем недовно появились. По теориям типов, программированию в ограничениях и прочей экзотике - только в мечтах.

Про неизбежную сложность инструментов для сложных задач - С++ неадекватно сложен. 90% (допускающих сборку мусора) всех плюсовых задач лучше делаютсь на OCaml. Для оставшихся 10% при отсуствии аппаратной сборки мусора в реальном времени подойдет значительно более простой Cyclone или менее экзотические Oberon и Effel. Сложности C++ нет оправдания!

Идея суперлексем замечательна!

al-zatv комментирует...

с удовольствием почитаю продолжение!

Анонимный комментирует...

В свое время просто зачитывался этой статьей! Собственно, Зуев известен как мужик, который написал ТУ САМУЮ статью про компилятор.

Так что ждем продолжение этого бестселлера!

yuhala комментирует...

Очень хорошая интересная статья. И конечно же хочется увидеть продолжение.

Qbit комментирует...

Конечно, с преогромнейшим удовольствием прочитаем! Буду ждать с нетерпением. На технические детали не скупитесь :)

Алёна комментирует...

Я бы с удовольствием почитала продолжение.

Анонимный комментирует...

Статья никоим образом не исчезла, просто в связи с редизайном сайта, она была выложена на другом адресе ;-)

http://www.pcmag.ru/issues/detail.php?ID=9972

Как можно, такие рассказы -- это же наша история :-)

Анонимный комментирует...

Да, и конечно продолжение с удовольствием опубликуем ;-)

pcmag комментирует...

(сорри, почему-то слетел логин: предыдущие сообщения написал Олег Лебедев, главный редактор PC Magazine/RE).

Виталий комментирует...

"глаза боятся, а руки делают"
мне бы такую светлую голову.

У меня есть догадки по поводу продолжения, и поэтому очень хочется узнать, что же там дальше было.

Павел комментирует...

Помню статью до сих пор, когда был студентом, после её прочтения я провел много времени в библиотеках и в компьютерном классе, в попытке написать свой интерпретатор бейсика. Интерпретатор так и не написал, но узнал много нового и интересного.

Алексей Баранцев комментирует...

Чёрт побери, как будто про себя читал! Заменить только название продукта, заказчика, исполнителя. Видимо это был действительно типовой сценарий выживания НИИ в 90-е годы...
У нас до сих пор тихо стоят в уголочке те "чпуксы" (HP-UX), которые заказчик у себя списал, а нам поставил в счёт оплаты контракта :)

denis_dda комментирует...

первая статья вызвала я меня живой интерес к программированию, статью перечитывали на парах по с++, бурно обсуждали вместе с преподавателями :-).

очень жду "10 лет спустя".

Mikhail комментирует...

Обязательно пишите продолжение, очень интересно!

AGK комментирует...

Так же с удовольствием прочитал бы продолжение.

Yuriy Volkov комментирует...

мне в свое время эта статья очень понравилась, долго пытался тогда найти продолжение, но не нашел :(. Буду очень благодарен.

Roman комментирует...

А когда можно будет ждать продолжение?

Roman комментирует...

А у вас нет перевода статьи на английский? Думаю, что её было бы интересно почитать и жителям других стран.

zouev комментирует...

To Roman:
Продолжение появится не раньше конца года. На днях напишу пост, в котором этот срок найдет свое объяснение.
Насчет перевода на другие языки - не знаю... Все-таки, реалии описаны совершенно нашенские, да еще и десятилетней давности. Мы сами-то многое уже забыли, а иностранным людям и вовсе будет непонятно...
Впрочем, если переписать текст, добавив больше технических подробностей, то может получиться что-то вроде популярного руководства по разработке компиляторов в "боевых" условиях. :-) Тогда, может, и перевод стал бы оправдан.

Ximik комментирует...

Вот уж не ожидал наткнуться на человека, написавшего эту статью, конечно ждем продолжения!

OCTAGRAM комментирует...

Это, конечно, будет невиданный некропост, но во время написания это ещё не было так ясно видно.

Mike White в данном конкретном случае едва ли бы справился. Допустим, что у него 3 года на одну платформу. Только он сделал версию для Macintosh, а Apple перешла с m68k на ppc. Только он сделал версию для ppc, а Apple уже саму платформу поменяла, у них Mac OS X уже, совсем другая OS. Только он под неё портанул, а Apple уже на x86. Этот промежуток (Mac OS X PowerPC), правда, был побольше, чем остальные, на этот период на MacAda.org был расцвет тулзов, примеров, и вообще закачек. Сейчас вроде бы анонсировали Long Term Support версию GNAT для Intel (не AdaCore пока что), начинается оживление.
А это только GNAT портировать, а не свой кастомный компилер.

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

Gryz комментирует...

Было бы очень интересно почитать продолжение. С кучей технических подробностей :)

Gezakht комментирует...

Интересно. Тоже буду ждать продолжения.

Анонимный комментирует...

Эта статья является неким сочитанием рассказа в стиле Джека Лондона с кратким введением в проблемы при написании компилятора.
Читается легко как первый, иноформативна как второй. Спасибо большое за труд. Надеюсь увидеть продолжение, со счастливым концом. Хотя, если судить по месту жительства Евгения (простите, отчество не знаю), его талант все-таки был оценен по достоинству, но, увы, не на родине.

woodroof комментирует...

С большим удовольствием прочитаю продолжение.
Вопрос: вы пишите, что перевели стандарт Си++ на русский язык. А не могли бы вы его выложить? Было бы очень интересно ознакомиться - всё-таки родной язык воспринимать гораздо легче :)
Ещё вопрос: будете ли вы переводить грядущий c++0x?

woodroof комментирует...

Увидел ваше следующее сообщение - все вопросы снимаются :)
Обязательно куплю эту книгу!

kandidate комментирует...

Большое спасибо за статью - легко читается, интересно и познавательно.

С удовольствием прочитал бы продолжение.

vitaliy комментирует...

Interesno i poznovatel'no.
Gdems prodolgenija

Анонимный комментирует...

Я с интересом ткнулся на описание Portable C Compiler, ссылка на которую была в статье. Формат там действительно древний, если, кто хочет прочитать без проблем, берите здесь:

http://mihd.net/b96gtmi
S. C. Johnson -- A Tour Through the Portable C Compiler

Lotrex комментирует...

Статья классная, продолжения жду с нетерпением :)

Анонимный комментирует...

Сообщение за конец 2008 года, но решил всё же комментарий написать...

Статья очень понравилась, читается на ура! Продолжение прочитаю с таким же интересом (а оно случайно ещё не появилось?)

Кстати, статья послужила толчком к тому, чтобы полазить по сайту Интерстрона и подробнее узнать про компилятор. В связи с чем вопрос: можно ли его где-либо достать/купить/скачать? На сайте почему-то не нашёл никакой информации о том, как приобрести...

zouev комментирует...

Для Анонима
Спасибо за интерес к статье (уже как-то и неудобно читать похвалы; кто бы покритиковал, что ли?.. :-)).

Насчет продолжения: обязательно будет. Уже пишу. Когда закончу - пока точно не знаю: дико много других дел. Вот пойду в отпуск - может, продвину...

Насчет компилятора: сейчас он поставляется как заказной продукт, в основном, корпоративным заказчикам, вместе с генераторами кода для различных спецпроцессоров.

Сделать из него "коробочный" продукт для массового распространения - задача очень тяжелая, и конкуренция на этом поле велика. Да и ресурсов маловато. Когда-то пытались - не получилось.

Но если есть какие-то вопросы - смело пишите по нашим адресам, они есть на сайте.

Анонимный комментирует...

Статья супер.
У самого не сложились отношения с С++ , поэтому ушел в прикладную область , .NET, о чем нисколько не жалею. Нидавно встала задача пропарсить C# и оказалось что внутри .NET нет такой фичи. Как считаете - реально ли в наши дни рядовому программеру написать парсер C# на самом C#? Что вы думаете про .NET вообще?
Alexander Slepov

zouev комментирует...

Для Alexander Slepov

...встала задача пропарсить C# и оказалось что внутри .NET нет такой фичи. Как считаете - реально ли в наши дни рядовому программеру написать парсер C# на самом C#?

По-моему, абсолютно реально. Есть по крайней мере два очевидных пути. Либо написать нисходящий рекурсивный парсер "руками". Это довольно хлопотно (синтаксис большой), но особых подводных камней не видно. Второй путь - воспользоваться YACC/Bison. В первом русском издании Dragon Book есть такие описания для Си++ и C# (в качестве приложений). Для их написания мне хватило нескольких вечеров.

Кроме того, посмотрите COCO (ссылок под рукой нет, но легко найти поиском). В этой системе есть готовые описания грамматик для нескольких языков, в том числе и для C#.

cheusov комментирует...

Александр Кротов, видимо, где-то здесь.
http://www.finnov.net/~ank/

Несколько лет назад появлялся в fido7.ru.c-cpp и fido7.ru.cpp.

Что касается "коробочного" продукта. Я думаю, это совершенно не обязательно. Достаточно выпустить консольный компилятор под наиболее распространенные версии Linux/xxxBSD/Windows под EULA. Для расширения аудитории, так сказать, если уж не хочется открывать исходный текст.
Да и geek-и, которые нашли бы ему достойное применение в разработке open source проектов, думаю, нашлись бы.
Это же бесплатный feedback. Лично мне совершенно несложно запустить bulk build на Linux/x86/interstron-C++ :-) Правда, в основном, для С. С++ open source проектов не очень много.

leikind комментирует...

Помню, читал статью много лет назад, сейчас перечитал с удовольствием.

Долго думал, что же это за компания европейская, у которой свой Юникс был. Единственное что в голову приходит - Сименс, у них подразделение в Бельгии есть. Это так?

Анонимный комментирует...

Добавил в закладки. Теперь буду почаще читать!

Анонимный комментирует...

Супер статья! Подписался на RSS, буду следить =)

Анонимный комментирует...

Спасибо за статью.

Анонимный комментирует...

Спасибо за статью.

Гоша Мазов aka Carc комментирует...

Огромное спасибо за статью, лично я мимо нее в PC Magazine как-то пролетел мимо... С нетерпением жду продолжения!!!

PS: Кстати говоря, отдельное и самое искреннее СПАСИБО лично Вам, и конечно же Интерстрону за более чем познавательный спецкурс по компиляторам, в свое время шедший на ВМиК. Лично для себя всегда считал его одним из тройки самых впечатливших курсов, которые "повернули голову" совсем на другой лад.

potan комментирует...

А Вы следите за развитием языка Rust?
По моему, интерес к компиляторам возрождается.