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

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

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы