พื้นหลัง
หน้า Wikipedia เกี่ยวกับSyntactic Sugarกล่าวว่า:
ในวิทยาการคอมพิวเตอร์น้ำตาล syntactic เป็นไวยากรณ์ในภาษาการเขียนโปรแกรมที่ออกแบบมาเพื่อให้สิ่งที่ง่ายต่อการอ่านหรือการแสดง มันทำให้ภาษา "หวาน" สำหรับมนุษย์ที่จะใช้: สิ่งที่สามารถแสดงได้ชัดเจนยิ่งขึ้นรัดกุมหรือในรูปแบบทางเลือกที่บางคนอาจชอบ
ฉันไม่เข้าใจจริงๆว่าความแตกต่างระหว่างวากยสัมพันธ์น้ำตาลกับวากยสัมพันธ์คืออะไร
ฉันขอขอบคุณจุดที่รุ่นน้ำตาลสามารถชัดเจนและกระชับมากขึ้นบางทีต้มออกไปบางแผ่น แต่ฉันรู้สึกว่าในบางระดับไวยากรณ์ทั้งหมดจะทำเช่นนั้นเพื่อสร้างสิ่งที่เป็นนามธรรมเกี่ยวกับสิ่งที่โค้ดได้รับการรวบรวมลงไป
จากหน้า Wikipedia เดียวกัน:
ตัวประมวลผลภาษารวมถึงคอมไพเลอร์ตัววิเคราะห์แบบคงที่และที่คล้ายกันมักจะขยายการสร้าง sugared เป็นโครงสร้างพื้นฐานมากขึ้นก่อนการประมวลผลบางครั้งกระบวนการที่เรียกว่า "desugaring"
ในฐานะที่เป็นแบบฝึกหัดทางความคิดถ้าฉันใช้ "บ่อยครั้ง" ในคำสั่งนี้เพื่อหมายถึง "เสมอ": หากความแตกต่างเป็นเพียงว่าคอมไพเลอร์ "desugars" ไวยากรณ์ก่อนที่จะย้ายไปยังขั้นตอนถัดไป ของคอมไพเลอร์รู้ (หรือสนใจ) อะไรคือ Sugar'd Syntax หรือไม่
คำถามที่เกี่ยวข้องมากในเว็บไซต์นี้"คำจำกัดความที่เข้มงวดของน้ำตาลซินแทคติค" มีคำตอบที่เริ่ม:
IMHO ฉันไม่คิดว่าคุณจะมีคำจำกัดความเกี่ยวกับน้ำตาลในประโยคเพราะวลีนี้เป็น BS และน่าจะถูกใช้โดยคนที่พูดถึง "โปรแกรมเมอร์จริง" โดยใช้ "เครื่องมือจริง" ใน "ระบบปฏิบัติการจริง"
สิ่งใดที่อาจบ่งบอกฉันได้ว่าอาจไม่มีความแตกต่างอย่างมากกับ coder ที่ใช้ภาษานี้ บางทีความแตกต่างอาจสังเกตได้เฉพาะนักเขียนคอมไพเลอร์เท่านั้น? แม้ว่าอาจมีบางกรณีที่ผู้ใช้ coder ใช้ภาษารู้ว่าอะไรคือสิ่งที่อยู่ภายใต้การควบคุมของ Syntactic Sugar? (แต่บางทีในความเป็นจริงวาทกรรมใด ๆ ของผู้ทดลองมีแนวโน้มที่จะใช้คำนี้เป็นเหยื่อล่อเปลวไฟ?)
หัวใจของคำถาม
ดังนั้น ... คำถามสั้น ๆ :
- มีความแตกต่างที่แท้จริงระหว่างวากยสัมพันธ์และวากยสัมพันธ์น้ำตาลไหม?
- ใครจะสำคัญกับใคร
อาหารเสริมสำหรับความคิด
โบนัสตามหัวข้อที่ขัดแย้งกัน:
ในหน้า Wikipedia จะมีตัวอย่างให้ดู:
ยกตัวอย่างเช่นในภาษา C
a[i]
สัญกรณ์เป็นน้ำตาลเชิงประโยคสำหรับ*(a + i)
ในขณะที่คำตอบอีกข้อหนึ่งของคำถามที่เชื่อมโยงข้างต้นพูดถึงตัวอย่างเดียวกัน:
a[i] == *(a + i)
ตอนนี้พิจารณา คิดเกี่ยวกับโปรแกรม C ใด ๆ ที่ใช้อาร์เรย์ด้วยวิธีการที่สำคัญ
และสรุปว่า:
[]
สัญกรณ์อำนวยความสะดวกในสิ่งที่เป็นนามธรรมนี้ มันไม่ใช่น้ำตาลทราย
ข้อสรุปตรงข้ามสำหรับตัวอย่างเดียวกัน!