คุณรู้ถึงความแตกต่างระหว่างไวยากรณ์ไวยากรณ์และความหมายในภาษาหรือไม่?


ตอบ 1:

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

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

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

ทั้งในภาษาศาสตร์และวิทยาศาสตร์คอมพิวเตอร์คำว่า "ความหมาย" หมายถึงชุดของกฎที่อธิบายว่าควรตีความลำดับของสัญลักษณ์อย่างไร


ตอบ 2:

ไวยากรณ์: วิธีจัดวางภาษา ซึ่งรวมถึงคำหลักและตำแหน่งเครื่องหมายวรรคตอน ตัวอย่างเช่นไวยากรณ์ของ Python แตกต่างจากไวยากรณ์ C ในหลาย ๆ กรณีคำสั่งที่ใหญ่ที่สุดจะต้องจบด้วยเครื่องหมายอัฒภาคใน C ในขณะที่ Python ต้องการการประมวลผลเฉพาะการเยื้อง

ไวยากรณ์คือที่ที่คุณจะเห็นนักพัฒนาหลายคนได้รับความรักหรือความเกลียดชังสำหรับภาษารวมถึงตัวฉันเอง ฉันเกลียด PHP และ JavaScript - พวกเขาอ่านน่าเกลียดบล็อกขนาดใหญ่กลายเป็นสิ่งที่ไม่น่าสนใจและมีความซับซ้อนโดยไม่จำเป็นและตรงไปตรงมาทั้งสองช่วยให้นักพัฒนาได้เลอะเทอะกับกระบวนทัศน์การพิมพ์แบบอนุมาน ถึงกระนั้นฉันรักทับทิมเพราะมันอ่านได้ดีมีการพิมพ์ที่เข้มงวดมากขึ้นเล็กน้อยและการบล็อกไม่ยุ่งยากเกินไปเพราะการพัฒนาภาษาของตัวเอง โครงสร้างภาษาทำให้มันเป็นภาษาที่สง่างามแม้จะเป็นเลเยอร์นามธรรมที่สำคัญมากใน C

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

**********

วิธีที่ดีกว่าเข้าใจได้ง่ายขึ้นและใช้งานคอมพิวเตอร์ได้น้อยกว่านั้นคือการใช้ชุดคำสั่ง printf () ไวยากรณ์เชิงโปรแกรมที่ดีนั้นมาพร้อมกับการฝึกฝนและนักพัฒนาใหม่ทุกคนมักจะสลับซับซ้อนในการแสวงหาความเรียบง่าย

นี่ไม่ใช่การบอกว่ามีวิธีที่ถูกและผิดในการบรรลุเป้าหมายของคุณ มี 100 วิธีในการสกินแมว แต่มีเพียงไม่กี่อย่างที่มีสัญลักษณ์ Big O ที่ยอมรับได้และโดยทั่วไปมีเพียงไม่กี่ตัวเท่านั้นที่อ่านง่ายพอที่จะถือว่าสง่างาม

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