Язык ведь определяет его транслятор?
Вообще, это плохо. Конечно, у некоторых языков есть популярные стандартные реализации, на которые все равняются и которые как бы задают стандарт языка де-факто, но записанный стандарт всегда лучше стандарта-по-реализации. Потому что всегда есть, куда посмотреть, и бага реализации не превратится в фичу языка: почитайте про
typeof null === 'object'
в Джаваскрипте, это отличный пример, когда в стандарте языка закрепилась бага реализации.
С другой стороны, при написании стандарта обязательно делаются тестовые (пусть и не вполне стабильные, но все-таки рабочие) реализации. Иначе можно стандартизировать нерабочие или нереализуемые концепции и фичи. Особенно это касается сложных языков вроде C++, где при добавлении новой фичи нужно учесть кучу моментов и состыковать её с уже существующими возможностями языка.
Когда говорят, что Страуструп создал ЯП, это значит он создал стандарт и рекомендации для компилятора или еще и сам компилятор?
Точного определения понятия "создать язык программирования" мне не известно. Те же плюсы сначала были Си с классами, и классы, ЕМНИП, были реализованы с помощью макросов. Можно уже тогда было сказать, что был создан C++ или еще нет? А может, C++ был создан когда была написана первая программа на нём? Или когда был разработан первый стандарт? Поэтому лучше говорить конкретно - "была создана формальная спецификация языка" или "была создана первая реализация".
Для некоторых эзотерических языков (например,
Malborge), первые программы были написаны гораздо позже создания самого языка, причём в автоматическом режиме. Это конечно извращенный пример, но он (как и сам вышеупомянутый язык) показывает относительность понятия "создание языка".