ความหมายคืออะไร?


13

มีภาษายอดนิยมมากมาย แต่นักวิทยาศาสตร์คอมพิวเตอร์บอกเราว่าเพื่อให้เข้าใจถึงพฤติกรรมของโปรแกรมในภาษาเหล่านั้นอย่างแน่นอนและโต้แย้งอย่างไร้เหตุผลกับพฤติกรรมของโปรแกรม (เช่นพิสูจน์ตัวตนของพวกเขา) เราจำเป็นต้องแปลมันเป็นภาษาอื่นที่เข้าใจกันดี พวกเขาเรียกภาษานี้ว่า "ความหมาย" ผู้เขียนเสนอหนึ่งในหลายความหมาย พวกเขาอธิบายความหมายของสิ่งปลูกสร้างและวิธีที่คุณสามารถแปลภาษาของคุณเป็นของพวกเขา เมื่อคุณทำอย่างนั้นทุกคนจะเข้าใจโปรแกรมของคุณแน่นอนพวกเขาจะพูด

ดูดี แต่ฉันไม่เข้าใจบางสิ่ง พวกเขาบอกเราหรือไม่ว่าพวกเขาแนะนำภาษาอื่นให้เข้าใจภาษาแรก ทำไมเราเข้าใจดีกว่าต้นฉบับ? ทำไมความหมายนี้ดีกว่านั้น ทำไมไม่เรียนรู้ความหมายของ C ทันทีแทนที่จะประดิษฐ์ภาษาอื่นเพื่ออธิบายความหมายของ C? เช่นเดียวกับไวยากรณ์ ทำไมฉันไม่ถามคำถามเดียวกันเกี่ยวกับไวยากรณ์

ป.ล.ในความคิดเห็นที่ฉันได้ยินว่าความหมายไม่ได้หมายถึงภาษาอื่นหรือการแปลเป็น แต่ความหมายที่เป็นทางการสำหรับ VHDL บอกว่าถ้าคุณเข้าใจบางสิ่งในทางเดียวคุณจะไม่เข้าใจและสามารถระบุ "ความหมายของความหมาย" ถ้าเราจัดหาภาษาที่มีกลไกที่แปลมันเป็นภาษาอื่น (ที่รู้จัก) นั่นคือ "ความหมายคือความสัมพันธ์ระหว่างระบบที่เป็นทางการ" Hennessy ในซีแมนทิกส์ของ Programming Languagesกล่าวว่าซีแมนติกส์อนุญาตให้มีการประมวลผลอย่างเป็นทางการของโปรแกรม "ความหมาย" เมื่อซีแมนทิกส์ถูกจัดให้เป็น BNF หรือ Syntax Diagram ระบบที่เป็นทางการคืออะไรถ้าไม่ใช่ภาษา?

PS2ฉันสามารถพูดได้ว่าการสังเคราะห์ HW ของโปรแกรม HDL ที่กำหนดให้เป็นการเชื่อมต่อโครงข่ายประตูเป็นกระบวนการสกัดความหมายหรือไม่? เราแปลคำอธิบาย (ระดับสูง) เป็นภาษา (ระดับต่ำ) ที่เราเข้าใจหลังจากนั้น


คุณหมายถึงไดอะแกรมชนิดใด ฉันทำงานกับซีแมนทิกส์ แต่ไม่เคยใช้ไดอะแกรมเลย
Dave Clarke

1
{0,1}+value(w)=i=1|w|wi2ni+1

@ เดฟขอโทษฉันฉันสร้างคำถามของฉันภายใต้การแสดงผลของไดอะแกรมตัดสินใจ ฉันยังเป็นแค่ซีแมนติกที่เป็นทางการสำหรับ VHDL หนังสือที่ผู้เขียนเสนอความหมายที่แตกต่างกันและไดอะแกรมจำนวนมากในแต่ละอัน ฉันคิดว่านี่เป็นภาษาที่เราใช้ทำแผนที่
Val

สิ่งนี้ฟังดูคล้ายซีแมนทิกส์น้อยกว่าและคล้ายกับขั้นตอนกลางในการรวบรวมฮาร์ดแวร์
Dave Clarke

ใช่ แต่พวกเขาแยก "ความหมาย" จากคำอธิบาย
Val

คำตอบ:


15

ทำไมไม่เรียนรู้ความหมายของ C ทันทีแทนที่จะประดิษฐ์ภาษาอื่นเพื่ออธิบายความหมายของ C?

เพราะเพื่อที่จะกำหนดซีแมนทิกส์ของ C คุณต้องการภาษาบางประเภทเช่นภาษาอังกฤษ ภาษาอังกฤษอาจคลุมเครือโดยเฉพาะอย่างยิ่งความหมายของ C99

แนวคิดทางวิทยาการคอมพิวเตอร์ของซีแมนทิกส์นั้นเป็นคำอธิบายทางคณิตศาสตร์ของโปรแกรมและคำอธิบายนี้ไม่ได้แปลอย่างแท้จริง มีความหมายหลายประเภทซึ่งอาจเกี่ยวกับสิ่งต่าง ๆ :

  1. เกี่ยวกับฟังก์ชันทางคณิตศาสตร์ที่โปรแกรมคำนวณ ( ความหมายเชิง ),
    lambda x: x + x =(x2x)
  2. เกี่ยวกับคุณสมบัติที่ต้องมีก่อนและหลังโปรแกรม ( สัจพจน์เชิงสัจพจน์ ),
    {a>0} x = a; y = 0; while(1 < x){ x = x/2; y++; } {y=log(a)}
  3. เกี่ยวกับวิธีที่โปรแกรมจะลดลง (ซีแมนทิกส์ปฏิบัติการ ) โดยที่แสดงถึงหน่วยความจำของคุณก่อนและหลัง ในกรณีนี้และถ้าและเป็นเซลล์หน่วยความจำสำหรับและและถ้าa∈ℕ
    (σ, while(x){x--;y++;})σ
    σ,σσ=(xa,yb)σ=(xa+b,y0)xyxya

เศร้าเล็กน้อยสำหรับตอนนี้ความเข้าใจในระดับสากลผ่านความหมายของโปรแกรมไม่ใช่เรื่องง่ายหรือความตั้งใจของมันทั้งหมด มันไม่ได้เป็นอดีตเพราะอย่างนั้นคณิตศาสตร์เหล่านั้นอาจยุ่งเหยิง มันไม่ได้เป็นอย่างหลังเพราะความหมายให้แน่นอนให้คำอธิบายทั่วไปและไม่คลุมเครือ แต่ไม่ได้ใช้ในการเข้าใจโปรแกรม

หากการอ่านความหมายไม่ได้มีความหมายมากนักการอ่านและการยอมรับความหมายขององค์ประกอบพื้นฐานของภาษานั้นมีความสำคัญมากเช่นเพื่ออธิบายอย่างชัดเจนว่า Cงานดั้งเดิมcontinue

สรุปแล้ว:

พวกเขาบอกเราหรือไม่ว่าพวกเขาแนะนำภาษาอื่นให้เข้าใจภาษาแรก

ในทางเทคนิคแล้วภาษาเป็นคณิตศาสตร์ นอกจากนี้มันก็เหมือนกันสำหรับทุกภาษาการเขียนโปรแกรมดังนั้นแม้แต่การแนะนำภาษาใหม่ถ้ามันเหมือนกันสำหรับทุกคนจะค่อนข้างโอเค

ทำไมเราเข้าใจดีกว่าต้นฉบับ?

เพราะมันเป็นคณิตศาสตร์ดังนั้นมันจึงยากที่จะเข้าใจ แต่มันแม่นยำและสมบูรณ์มากขึ้น

เช่นเดียวกับไวยากรณ์

มีงานในตัวแยกวิเคราะห์ที่ตรวจสอบแล้ว แต่คำถามของสิ่งที่จะหมายถึงความหมายของตัวแยกวิเคราะห์ไม่ได้เป็นเรื่องเล็กน้อย


2
"คณิตศาสตร์ [... ] นั้นแม่นยำและสมบูรณ์ยิ่งขึ้น" - ซึ่งแน่นอนว่าจะทำให้เกิดคำถามสำหรับไวยากรณ์อย่างเป็นทางการและความหมายของคณิตศาสตร์เอง ;)
Raphael
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.