Có nhiều ngôn ngữ phổ biến. Nhưng, các nhà khoa học máy tính nói với chúng ta rằng để hiểu hành vi của các chương trình trong các ngôn ngữ đó một cách dứt khoát và rõ ràng tranh luận về hành vi của chương trình (ví dụ: chứng minh danh tính của chúng), chúng ta cần dịch chúng sang ngôn ngữ khác, được hiểu rõ. Họ gọi ngôn ngữ đó là "một ngữ nghĩa". Các tác giả đề xuất một trong nhiều ngữ nghĩa. Họ giải thích ý nghĩa của các công trình của họ và cách bạn có thể dịch ngôn ngữ của bạn sang ngôn ngữ của họ. Một khi bạn làm điều đó, mọi người sẽ hiểu chương trình của bạn chắc chắn, họ nói.
Có vẻ tốt, tuy nhiên, tôi không hiểu điều gì đó. Họ có nói với chúng tôi rằng họ giới thiệu một ngôn ngữ khác để hiểu ngôn ngữ đầu tiên không? Tại sao chúng ta hiểu nó tốt hơn bản gốc? Tại sao ngữ nghĩa này tốt hơn thế? Tại sao không học ngữ nghĩa của C ngay lập tức thay vì phát minh ra ngôn ngữ khác, để mô tả ngữ nghĩa của C? Điều tương tự áp dụng cho cú pháp. Tại sao tôi không hỏi cùng một câu hỏi về cú pháp?
PS Trong các ý kiến tôi nghe rằng ngữ nghĩa không có nghĩa là ngôn ngữ khác hoặc dịch sang ngôn ngữ đó. Nhưng ngữ nghĩa chính thức cho VHDL nói rằng nếu bạn hiểu một cái gì đó chỉ bằng một cách thì bạn không hiểu nó và "ý nghĩa của nghĩa" có thể được chỉ định nếu chúng ta cung cấp một ngôn ngữ với cơ chế dịch nó sang ngôn ngữ khác (đã biết). Đó là, "ngữ nghĩa là một mối quan hệ giữa các hệ thống chính thức". Hennessy, trong Ngữ nghĩa của Ngôn ngữ lập trình , nói rằng ngữ nghĩa cho phép xử lý chính thức chương trình "nghĩa", khi ngữ nghĩa được cung cấp dưới dạng Sơ đồ BNF hoặc Cú pháp. Một hệ thống chính thức là gì nếu không phải là một ngôn ngữ?
PS2 Cần tôi nói rằng HW tổng hợp các chương trình HDL đưa vào kết nối của cửa, là một quá trình khai thác ngữ nghĩa? Chúng tôi dịch mô tả (cấp cao) sang ngôn ngữ (cấp thấp) mà chúng tôi hiểu sau đó.