วันพุธที่ 3 มิถุนายน พ.ศ. 2552

4 มิถุนายน 2552

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

ภาษา C มีจุดเด่น คือ สั้น กะทัดรัด ภาษา C มีรูปแบบย่อทำให้เขียนสั้นลงอยู่มาก ซึ่งข้อดีก็คือ สั้นดีครับ แต่ข้อเสีย ก็คือ ซับซ้อน อ่านยาก เวลาอ่านก็เหมือนกับการแก้สมการ คุณอาจจะบอกว่า คุณเลือกที่จะเขียนแบบไม่ซับซ้อนก็ได้ แต่พูดยากครับ คุณไม่เขียน แต่คนอื่นเขาเขียนครับ ถ้าคุณไม่เรียนรู้เสียเลย คุณก็อ่าน Code คนอื่นไม่รู้เรื่อง และการใช้ วงเล็บปีกกา ซึ่งดูคล้ายกับวงเล็บธรรมดา เวลาเขียนโปรแกรมก็สับสนพอสมควร จุดอ่อนอีกจุดหนึ่งที่สำคัญของภาษา C ก็คือ ภาษา C มองทุกอย่างเป็น Case Sensitive ทำให้เขียนโปรแกรมแล้วหลงเรื่อง Case เป็นประจำ
จุดเด่นที่สุดของภาษา C คือการรองรับ pointer นั้นอาจจะมองได้ว่าคือจุดอ่อนที่สุดของภาษา C ทำไมถึงเป็นเช่นนั้น
pointer คือความสามารถที่ภาษา อนุญาตให้เราสามารถอ่านเขียนหน่วยความจำได้โดยตรง ซึ่งประสิทธิภาพสูงมาก (สูสีกับภาษา Assembly) เปรียบได้กับเราเปิดร้านขายของชำ แล้วบอกลูกค้าว่า เพื่อความรวดเร็ว ไปหยิบของเองเลย แล้วมาจ่ายเงินก็แล้วกัน ซึ่งวิธีนี้เร็วมากครับ ลูกค้าไม่ต้องรอเราเป็นผู้หยิบให้เลย เขาหยิบได้เอง แต่ความสะดวกนี้ ก็ต้องแลกครับ ถ้าลูกค้าคนนั้นเมา เดินเตะของพังหมด หรืออาจจะขโมยด้วยซ้ำ ยุ่งมากครับ โดยความเห็นส่วนตัวแล้ว ผมว่าจุดนี้มีผลเสียร้ายแรง โปรแกรมที่เขียนด้วยภาษา C ส่วนมากแล้ว ถึงแม้จะคอมไพล์ผ่านแล้ว น้อยโปรแกรมครับ ที่จะทำงานได้โดยไม่รวนระบบ เวลาเขียนโปรแกรมภาษา C ต้องเผื่อว่าการ debug โปรแกรมไว้ให้มาก

อีกปัญหาหนึ่ง ก็คือตัวของภาษา C ไม่มีตัวจัดการจองหน่วยความจำในตัวเอง เมื่อเวลาเราต้องการจองหน่วยความจำแบบ Dynamic ภาษา C ทำ wrapper เพื่อติดต่อกับ OS เพื่อขอจองหน่วยความจำโดยตรง ปัญหาก็คือ การติดต่อกันระหว่างโปรแกรมของเรากับ OS เป็นไปอย่างหลวมๆ ถ้าโปรแกรมลืมบอก OS ว่าเลิกจองหน่วยความจำดังกล่าว หน่วยความจำนั้นก็จะถูกจองไปเรื่อยๆ เราจะเห็นเครื่องคอมพิวเตอร์ทำงานได้เร็วในตอนเช้า แต่พอตกบ่ายก็ช้าลงจนทำงานไม่ไหว จนสุดท้ายต้อง boot ใหม่ สาเหตุหลักของปัญหานี้คือ สิ่งที่เรียกว่าหน่วยความจำรั่ว หรือ Memory Leak ก็เรื่องจองแล้วลืมเอาคืนนั่นแหละครับ
ภาษาเคย C ถูกใช้เป็นบทพิสูจน์ว่าคุณเป็นโปรแกรมเมอร์ระดับดีหรือไม่ ถ้าโปรแกรมเมอร์คนไหน เขียนภาษา C ไม่ได้ เขาจะดูถูกเอา ภาษา C จึงดูเป็นของโก้เก๋ เอาไปคุยข่มกันได้ ในยุคหนึ่งมีการกล่าวกันว่า ถ้าคุณเขียนภาษา C ไม่เป็น คุณไม่ใช่โปรแกรมเมอร์ที่แท้จริง แต่ผมว่า โปรแกรมเมอร์ที่แท้จริงตายไปเยอะแล้วครับ
เห็นผมบ่นภาษา C แต่คงต้องบอกก่อนว่า ผมรักภาษา C มากที่สุด ก็ผมโตมากับมันนี่ครับ วันนี้ภาษา C ก็เสื่อมความนิยมไปมากแล้ว ตั้งแต่ GUI OS อย่าง Windows เข้ามามีบทบาท ภาษา C ปรับตัวเองเข้ากับการเขียนโปรแกรมแบบ GUI ไม่ค่อยได้ จึงเสื่อมความนิยมไปเกือบหมด คงเหลือแต่การใช้งานบน UNIX เท่านั้นครับ ที่ยังคงพอใช้ภาษา C กันอยู่

Source Program
#include
#include
main()
{
clrscr();
printf("Mr.Songkran Phochan\n");
printf("Address : 150/2 M.11 T.Ladyai A.Meuang J.Samutsongkram 75000\n");
printf("Age : 18\n");printf("Height : 170\n");
printf("Weigh : 50\n");
printf("Phone Number : 0839548977\n");
getch();
return 0;
}

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

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