В рамках цикла лекций сообщества Ворчалки о программировании и Института компилятороварения, лекцию прочитал Евгений Зуев — один из авторов компилятора для С++ и автор замечательной статьи в PC Magazine, а затем и книги «Редкая профессия», посвященной уникальному и сложному труду создателей компиляторов. Сама встреча была посвящена нестандартному опыту русификации компилятора языка C. Несмотря на то, что презентация была намеренно сделана короткой из-за ограниченности темы, спикер раскрыл глубокие технические, исторические и философские аспекты создания оригинальной системы программирования с русским синтаксисом.
История проекта началась задолго до идеи локализации. Изначально компилятор создавался с прицелом на мировой рынок. Толчком к развитию стал контракт с голландской компанией ACE — Associated Computer Experts, позднее переименованной в Associate Compiler Experts с сохранением прежней аббревиатуры. Для неё требовалось разработать интерфейсный компонент для многоязычной SDK, работавшей на Solaris и SPARC-станциях. Низкоуровневый ассемблер для генерации кода был предоставлен компанией-заказчиком, поэтому команда занималась только фронт-ендом С++. Проект завершился получением сертификата и передачей обширного набора тестов.Позже идея локализации трансформировалась в практическую плоскость: была создана компания «Интерстрон», а компилятор начал генерировать код для пяти российских дизайн-центров, разрабатывавших собственные микропроцессоры. Код поставлялся как часть системного программного обеспечения.
Локализация не сводилась к простому переводу. Евгений Зуев рассказал о перепроектировании архитектуры под стандарт 2011 года, создании компонентных структур (включая лексический анализатор) и разработке виртуальной машины для повышения надежности языка C.Ключевым вызовом стала русификация служебных слов (их список насчитывал около 80 терминов) и создание русскоязычной диагностики ошибок.
- Принципы перевода: Перевод не должен быть буквальным, но обязан быть единообразным. Учитывались особенности русской грамматики, например, род прилагательных.
- Избегание эмоций: Термины подбирались так, чтобы не нести эмоциональной окраски. Например, вместо эмоционального «уничтожить» использовались нейтральные аналоги, а
gotoбыло решено перевести как «переход». - Диагностика: В отличие от Pascal, диагностика в новом компиляторе была «обучаемой» и могла выдавать пояснения и примеры на двух языках (русском и английском).
Почему проект не стал массовым? Несмотря на технический успех, проект не был завершен в виде большой коммерческой системы. Среди причин спикер назвал исчерпание рыночного потенциала, переориентацию на узкий сегмент, нехватку ресурсов, а также личные обстоятельства. Также обсуждались сложности с написанием учебника и взаимодействием с профильными авторами.Философия кода: скепсис относительно «родного» программирования Наиболее дискуссионной частью встречи стал блок вопросов и ответов, в котором Евгений Зуев выразил свой скепсис по поводу программирования на родном языке.
- Эмоции против формализма: Родной язык воспринимается слишком эмоционально, тогда как программирование требует строгой формальности и безэмоциональности.
- Парадокс создателей языков: Замечательно, что среди создателей современных языков доминируют люди, для которых английский не является родным. При этом автор отметил, что языки, созданные европейцами, часто оказываются удачнее американских.
- Предел мнемоники: Была выдвинута гипотеза о том, что родной язык может искажать восприятие формальной информации. Если заменить слишком много терминов на родные мнемоники, код быстро превратится в «китайскую грамоту», потеряв свою читаемость и универсальность.
Несмотря на личный скепсис, спикер подчеркнул важность и актуальность подобных экспериментов и пообещал исследовать архивы для публикации сохранившихся материалов.
🔗 Материалы лекции: Ссылка на видеозапись лекции
Ссылка на материалы к лекции Евгения Зуева