เหตุใด C ยังอยู่ในหมวดของภาษาระดับสูง [ปิด]


12

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


3
การอ่านที่แนะนำ: อภิปราย $ {blog}
gnat

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

1
ในอดีต 'ภาษาระดับสูง [เอ้อ]' เป็นสิ่งที่ต่างจากภาษาแอสเซมบลีอนุญาตให้โปรแกรมเมอร์เขียนบทคัดย่อจากเครื่องเฉพาะและเขียนโค้ดด้วยวิธีที่มีปัญหามากกว่า Fortran และ Cobol เป็น 'ระดับสูง' เพราะในช่วงแรก ๆ C เป็นเพียงผ้าคลุมบาง ๆ เหนือสิ่งที่เฉพาะเจาะจงของเครื่อง แต่จุดประสงค์หลักของมันก็คือพกพาสะดวก ดังนั้นในปี 1960 มาตรฐาน C จึงอยู่ในระดับสูง เมื่อเทียบกับ C ++ 14 หรือ Haskell หรือ OCaml หรือ Rust แล้ว C คือระดับที่ไม่สูงมากนัก
9000

ภาษา "ทันสมัยระดับสูง" เหล่านี้ส่วนใหญ่เป็นเพียงภาษาสคริปต์ ความแตกต่างคือถ้ามันรวบรวมหรือตีความ
MarcusJ

Asm อยู่ในระดับสูง สิ่งที่เป็นนามธรรมที่จัดหาโดย asm บนฮาร์ดแวร์นั้นใหญ่หลวง
curiousguy

คำตอบ:


34

ในอดีตทุกอย่างที่เป็นนามธรรมเหนือรหัสการประกอบเรียกว่าระดับสูง C ทำเช่นนั้นอย่างแน่นอน คำจำกัดความนี้ก็ค่อนข้างชัดเจนเมื่อเปรียบเทียบกับสิ่งที่ตามมา

เมื่อเวลาผ่านไปเราได้สร้างภาษาการเขียนโปรแกรมมากขึ้นและมากขึ้นและคิดค้น abstractions และเครื่องมือมากขึ้น เมื่อเปรียบเทียบกับภาษาไพ ธ อนภาษา C นั้นเป็นภาษาดั้งเดิมในแง่บวกในเชิงความหมายและระดับของความเป็นนามธรรมเหนือฮาร์ดแวร์ โดยที่ในใจหลายคนพบว่ามันทำให้เข้าใจผิดในการโทร C ระดับสูงเมื่อมีความมั่งคั่งของภาษาที่สูงกว่าฮาร์ดแวร์

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


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

12

มันเป็นภาษาระดับสูงกว่ารหัสเครื่อง (ชุดประกอบ) ซึ่งเป็นมุมมองที่การเขียนโปรแกรม C หนังสือและแบบฝึกหัดมาจาก

ในส่วนที่เป็นภาษาการเขียนโปรแกรมระดับสูง

อย่างไรก็ตามมันยังคงใกล้เคียงกับฮาร์ดแวร์ - มากกว่าภาษาอื่น ๆ ที่ทันสมัยกว่า (Java, C # และอื่น ๆ ) - เมื่อดูจากมุมมองนี้มันเป็นภาษาการเขียนโปรแกรมระดับกลาง


1
แล้วทำไมเราถึงพูดไม่ได้อย่างชัดเจนว่า C เป็นภาษาการเขียนโปรแกรมระดับกลางในตำราเราไม่พบสิ่งนั้น
CodeIt

5
@manutd - เป็นคำถามที่จองผู้เขียน;) - แต่นั่นคือสิ่งที่ จากมุมมองของพวกเขา C เป็นภาษาระดับสูง นั่นคือสิ่งที่พวกเขาจัดการ แนวคิดของ "ภาษาระดับสูง" นั้นคลุมเครือ - ไม่มีคำจำกัดความเดียวที่ตกลงกันทั้งหมด
Oded

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

C # ช่วยให้โปรแกรมเมอร์สามารถเข้าถึงหน่วยความจำได้หลากหลายตามลำดับค่า 64 บิต, 32- บิต, 16- บิตหรือ 8 บิตตามความสะดวก ตัวอย่างเช่นหากหน่วยความจำมีพิกเซล 16 บิตรหัสสามารถประมวลผลพิกเซลเป็นรายบุคคลหรือเป็นกลุ่ม 2 หรือ 4 ขึ้นอยู่กับสิ่งที่ดีที่สุดสำหรับอัลกอริทึม C ตามที่กำหนดโดยมาตรฐานไม่ได้กำหนดวิธีการปฏิบัติที่โปรแกรมเมอร์สามารถร้องขอความหมายที่คล้ายกัน ภาษาซีหลายภาษาอยู่ในระดับที่ต่ำกว่า C # แน่นอน แต่ภาษาที่กำหนดโดยมาตรฐานไม่ใช่
supercat
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.