Есть много популярных языков. Но компьютерные ученые говорят нам, что для того, чтобы точно понять поведение программ на этих языках и однозначно спорить с поведением программы (например, доказать их идентичность), нам нужно перевести их на другой, хорошо понятный язык. Они называют такой язык "семантикой". Авторы предлагают одну из многих семантик. Они объясняют смысл своих конструкций и как вы можете перевести свой язык на их. Как только вы это сделаете, все наверняка поймут вашу программу, говорят они.
Выглядит хорошо, пока я что-то не понимаю. Они говорят нам, что они вводят другой язык, чтобы понять первый? Почему мы понимаем это лучше, чем оригинал? Почему эта семантика лучше этой? Почему бы не изучить семантику C сразу же, а не изобретать другой язык для описания семантики C? То же самое относится и к синтаксису. Почему бы мне не задать тот же вопрос относительно синтаксиса?
PS В комментариях слышу, что семантика не означает другой язык или перевод на него. Но формальная семантика для VHDL говорит, что если вы понимаете что-то только одним способом, то вы не понимаете этого, и можно указать «значение смысла», если мы предоставим языку механизм, который переводит его на другой (известный) язык. То есть «семантика - это связь между формальными системами». Хеннесси в « Семантике языков программирования» говорит, что семантика позволяет формально обрабатывать «смысл» программы, когда семантика предоставляется в виде BNF или синтаксической диаграммы. Что такое формальная система, если не язык?
PS2 Могу ли я сказать, что синтез HW данной программы HDL во взаимосвязи ворот - это процесс извлечения семантики? Мы переводим (высокоуровневое) описание на (низкоуровневый) язык, который мы понимаем, впоследствии.
Ответы:
Потому что для определения семантики C вам нужен какой-то язык, например английский. Английский может быть неоднозначным, особенно это касается семантики C99.
Понятие семантики в информатике - это, как правило, математическое описание программы, и это описание не совсем перевод. Существует несколько видов семантики, которые могут касаться разных вещей:
Немного печально, но универсальное понимание программы через ее семантику не является ни легким, ни намерением всего этого. Это не первое, потому что математика может быть грязной. Это не последнее, потому что семантика действительно обеспечивает общее и однозначное описание, но она не используется для понимания программы.
Если чтение семантики не имеет особого смысла, очень важно прочитать и согласовать семантику по основным элементам языка, например, чтобы однозначно объяснить, как C'sПродолжить примитивные работы.
В заключение:
Технически нет, язык математический. Кроме того, это в основном одинаково для всех языков программирования, так что даже введение нового языка, если он одинаков для всех, было бы в значительной степени хорошо.
Потому что это математика, поэтому ее может быть сложнее понять, но она более точна и полна.
Есть работы по проверенным парсерам, но вопрос о том, что означало бы семантику парсера, не тривиален.
источник