ธรรมชาติของภาษาในระดับต่ำช่วยให้โปรแกรมเมอร์ควบคุมสิ่งที่คอมพิวเตอร์กระทำได้อย่างใกล้ชิด
ในขณะที่อนุญาตให้มีการปรับแต่งพิเศษและการทำให้เหมาะที่สุดสำหรับแพลตฟอร์มหนึ่งใดโดยเฉพาะ
สิ่งนี้ทำให้รหัสสามารถทำงานได้อย่างมีประสิทธิภาพบนฮาร์ดแวร์ที่มีทรัพยากรจำกัดมาก
ๆ ได้เช่นระบบฝังตัว
ภาษาซีไม่มีคุณลักษณะบางอย่างที่มีในภาษาอื่นอาทิ
1.ไม่มีการนิยามฟังก์ชันซ้อนใน
2.ไม่มีการกำหนดค่าแถวลำดับหรือสายอักขระโดยตรง
(การคัดลอกข้อมูลจะกระทำผ่านฟังก์ชันมาตรฐาน
แต่ก็รองรับการกำหนดค่าวัตถุที่มีชนิดเป็น struct หรือ union)
3.ไม่มีการเก็บข้อมูลขยะโดยอัตโนมัติ
4.ไม่มีข้อกำหนดเพื่อการตรวจสอบขอบเขตของแถวลำดับ
5.ไม่มีการดำเนินการสำหรับแถวลำดับทั้งชุดในระดับตัวภาษา
6.ไม่มีวากยสัมพันธ์สำหรับช่วงค่า (range) เช่น A..B ที่ใช้ในบางภาษา
7.ก่อนถึงภาษาซี99
ไม่มีการแบ่งแยกชนิดข้อมูลแบบบูล (ค่าศูนย์หรือไม่ศูนย์ถูกนำมาใช้แทน)
8.ไม่มีส่วนปิดคลุมแบบรูปนัย (closure) หรือฟังก์ชันในรูปแบบพารามิเตอร์ (มีเพียงตัวชี้ของฟังก์ชันและตัวแปร)
9.ไม่มีตัวสร้างและโครูทีน
การควบคุมกระแสการทำงานภายในเทร็ดมีเพียงการเรียกใช้ฟังก์ชันซ้อนลงไป
เว้นแต่การใช้ฟังก์ชัน longjmp หรือ setcontext จากไลบรารี
10.ไม่มีการจัดกระทำสิ่งผิดปรกติ (exception handling) ฟังก์ชันไลบรารีมาตรฐานจะแสดงเงื่อนไขข้อผิดพลาดด้วยตัวแปรส่วนกลาง errno และ/หรือค่ากลับคืนพิเศษ
และฟังก์ชันไลบรารีได้เตรียม goto แบบไม่ใช่เฉพาะที่ไว้ด้วย
11.การเขียนโปรแกรมเชิงมอดูลรองรับแค่ระดับพื้นฐานเท่านั้น
12.การโอเวอร์โหลดฟังก์ชันหรือตัวดำเนินการไม่รองรับภาวะหลายรูปแบบขณะแปลโปรแกรม
13.การเขียนโปรแกรมเชิงวัตถุรองรับในระดับที่จำกัดมาก
โดยพิจารณาจากภาวะหลายรูปแบบกับการรับทอด (inheritance)
14.การซ่อนสารสนเทศ (encapsulation) รองรับในระดับที่จำกัด
15.ไม่รองรับโดยพื้นฐานกับการทำงานแบบมัลติเทร็ดและเครือข่ายคอมพิวเตอร์
16.ไม่มีไลบรารีมาตรฐานสำหรับคอมพิวเตอร์กราฟิกส์และความจำเป็นหลายอย่างในการเขียนโปรแกรมประยุกต์
17.คุณลักษณะเหล่านี้จำนวนหนึ่งมีให้ใช้ได้จากส่วนขยายในตัวแปลโปรแกรมบางตัว
หรือจัดสรรไว้แล้วในสภาพแวดล้อมของระบบปฏิบัติการ (เช่นโพสซิกซ์)
หรือจัดเตรียมโดยไลบรารีภายนอก หรือสามารถจำลองโดยดัดแปลงแก้ไขรหัสที่มีอยู่
หรือบางครั้งก็ถูกพิจารณาว่าไม่ใช่รูปแบบการเขียนโปรแกรมที่เหมาะสม
ไม่มีความคิดเห็น:
แสดงความคิดเห็น