Разработчик языка программирования создает только стандарт?

Прошу прощения за глупый вопрос.
Язык ведь определяет его транслятор? Когда говорят, что Страуструп создал ЯП, это значит он создал стандарт и рекомендации для компилятора или еще и сам компилятор?
  • Вопрос задан
  • 872 просмотра
Пригласить эксперта
Ответы на вопрос 3
Язык ведь определяет его транслятор?

Вообще, это плохо. Конечно, у некоторых языков есть популярные стандартные реализации, на которые все равняются и которые как бы задают стандарт языка де-факто, но записанный стандарт всегда лучше стандарта-по-реализации. Потому что всегда есть, куда посмотреть, и бага реализации не превратится в фичу языка: почитайте про typeof null === 'object' в Джаваскрипте, это отличный пример, когда в стандарте языка закрепилась бага реализации.

С другой стороны, при написании стандарта обязательно делаются тестовые (пусть и не вполне стабильные, но все-таки рабочие) реализации. Иначе можно стандартизировать нерабочие или нереализуемые концепции и фичи. Особенно это касается сложных языков вроде C++, где при добавлении новой фичи нужно учесть кучу моментов и состыковать её с уже существующими возможностями языка.

Когда говорят, что Страуструп создал ЯП, это значит он создал стандарт и рекомендации для компилятора или еще и сам компилятор?

Точного определения понятия "создать язык программирования" мне не известно. Те же плюсы сначала были Си с классами, и классы, ЕМНИП, были реализованы с помощью макросов. Можно уже тогда было сказать, что был создан C++ или еще нет? А может, C++ был создан когда была написана первая программа на нём? Или когда был разработан первый стандарт? Поэтому лучше говорить конкретно - "была создана формальная спецификация языка" или "была создана первая реализация".

Для некоторых эзотерических языков (например, Malborge), первые программы были написаны гораздо позже создания самого языка, причём в автоматическом режиме. Это конечно извращенный пример, но он (как и сам вышеупомянутый язык) показывает относительность понятия "создание языка".
Ответ написан
@mamkaololosha
Стандарт создает группа экспертов, которые гарантируют, что через 5 лет не окажется, что в языке есть смертельная ошибка и он уничтожит человечество. Кстати Страуструп написал сам один из первых компиляторов С++ и написал на нем недо-гугл. Там еще была какая-то женщина, но её постоянно забывают.
Ответ написан
@abcd0x00
Язык ведь определяет его транслятор?

Язык - это множество цепочек над алфавитом. Чтобы задать язык, нужно составить грамматику, порождающую все цепочки языка.
Транслятор - это программа, переводящая цепочку одного языка над одним алфавитом в цепочку другого языка над другим алфавитом. При этом цепочки должны быть семантически эквивалентными.

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

Например, ассемблер - это язык (грамматика). Цепочка инструкций ассемблера с помощью транслятора транслируется в цепочку кодов машинного языка.

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

Войдите, чтобы написать ответ

Похожие вопросы