วันอาทิตย์ที่ 28 ธันวาคม พ.ศ. 2557

จุดเด่น-จุดด้อยของภาษาซี


จุดเด่นของภาษาซี
        
     คือ สั้น กะทัดรัด ภาษาซี มีรูปแบบย่อทำให้เขียนสั้นลงอยู่

มาก ซึ่งข้อดีก็คือ สั้นดี แต่ข้อเสีย ก็คือ ซับซ้อน อ่านยาก เวลา

อ่านก็เหมือนกับการแก้สมการ ซึ่งการเขียนจะยาก แต่ก็ได้รับความ

นิยม และการใช้ วงเล็บปีกกา ซึ่งดูคล้ายกับวงเล็บธรรมดา จุด

อ่อนอีกจุดหนึ่งที่สำคัญของภาษาซีก็คือภาษาซี มองทุกอย่าง

เป็น Case Sensitiveทำให้เขียนโปรแกรมแล้วหลง

เรื่อง Case เป็นประจำ


จุดเด่นที่สุดของภาษาซี
        
     คือการรองรับ pointer นั้นอาจจะมองได้ว่าคือจุดอ่อน

ที่สุดของภาษาซี ทำไมถึงเป็นเช่นนั้นpointer คือความสามารถที่

ภาษาอนุญาตให้เราสามารถอ่านเขียนหน่วยความจำได้โดยตรง ซึ่ง

ประสิทธิภาพสูงมาก (สูสีกับภาษา Assembly) เปรียบได้กับเรา

เปิดร้านขายของชำ แล้วบอกลูกค้าว่า เพื่อความรวดเร็ว ไปหยิบ

ของเองเลย แล้วมาจ่ายเงินก็แล้วกัน ซึ่งวิธีนี้เร็วมากลูกค้าไม่ต้องรอ

เราเป็นผู้หยิบให้เลย เขาหยิบได้เอง แต่ความสะดวกนี้ ก็ต้องแลก 

ถ้าลูกค้าคนนั้นเมา เดินเตะของพังหมด หรืออาจจะขโมยด้วยซ้ำ 

อีกปัญหาหนึ่ง ก็คือตัวของภาษาซี ไม่มีตัวจัดการจองหน่วยความจำ

ในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำ

แบบ Dynamic ภาษาซี ทำ wrapperเพื่อติดต่อกับ OS เพื่อ

ขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่าง

โปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืม

บอก OS ว่าเลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะ

ถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอน

เช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot 

ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว 

หรือMemory Leak ถึงแม้วันนี้ ภาษาซี ก็เสื่อมความนิยมไปมาก

แล้ว ตั้งแต่ GUI OS อย่างWindows เข้ามามีบทบาทภาษาซี

ปรับตัวเองเข้ากับการเขียนโปรแกรมแบบ GUI ไม่ค่อยได้ จึงเสื่อม

ความนิยมไปเกือบหมด คงเหลือแต่การใช้งานบน UNIX เท่านั้น 

ที่ยังคงพอใช้ภาษาซีกันอยู่

จุดด้อยของภาษาซี
        
     ภาษาซี ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลา

เราต้องการจองหน่วยความจำแบบ Dynamic ภาษา 

ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำ

โดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรา

กับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่าเลิกจอง

หน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะ

เห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้า

ลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของ

ปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak















ไม่มีความคิดเห็น:

แสดงความคิดเห็น