วันศุกร์ที่ 26 พฤศจิกายน พ.ศ. 2553

รู้จักกับ C/C++

มาตฐาน
ภาษา C++ ถูกสร้างและเพิ่มเติมจากผู้พัฒนาจำนวนมาก เมื่อเราจะศึกษาภาษา C++ จึงควรยึดมาตรฐานสากลไว้ เพื่อให้โค้ดสำสั่งสามารถอ้างอิงได้ และแน่ใจว่าจะเกิดปัญหาน้อยที่สุดเมื่อนำมันมาแปลโปรแกรมพร้อมสั่งให้ทำงานในเครื่องคอมพิวเตอร์ต่างแพลตฟอร์มกัน (แพลตฟอร์ม หมายถึง ระบบปฏิบัติการ เช่น Windows, Mac, Ubuntu ฯลฯ)

บทความที่จะเขียนจากนี้จึงอ้างอิงมาตรฐาน ISO/IEC 98 เป็นหลัก เป็นมาตรฐานสากลแรกที่เผยแพร่สู่สารณชนอย่างเป็นทางการในปี ค.ศ. 1998 ครับ

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

เมื่อพยายามเข้าใจความคิดของผู้เขียนแล้ว (แม้ว่ายังไม่เข้าใจ) ผู้เขียนน้อมเล่าให้ฟัง

C++ มาจากไหน ?
เครื่องหมาย ++ นี้มีความหมายคือ +1 หรือเพิ่มความสามารถอีกระดับหนึ่ง ดังนั้นภาษา C++ คือภาษา C ที่เพิ่มความสามารถนั่นเอง (ถ้างั้นภาษา C# คงหมายถึง C++ เพิ่มเครื่องหมาย ++ อีกชั้นหนึ่งสินะ ?)

เดิมทีภาษา C คือการเขียนโปรแกรมแบบโครงสร้าง คือคิดถึงการแก้ปัญหา แล้วลำดับปัญหาออกเป็นขั้นตอนย่อยๆ (ใช้ฟังก์ชัน) ต่อมามีแนวคิดใหม่เกิดขึ้น เรียกว่า การเขียนโปรแกรมเชิงวัตถุ เริ่มตั้งแต่ปลายทศวรรษ 1960 โดยมีภาษาต้นแบบชื่อ Simula 67 มันประกอบด้วยคลาส (class) การสืบทอด (inheritance) และเวอร์ชวลฟังก์ชัน (virtual function) การทำงานของมันเป็นลักษณะ event-driven (ฟังก์ชันจะถูกเรียกเมื่อเกิดเหตุการณ์บางอย่างที่สัมพันธ์กัน)

หลังจากนั้นไม่นานจึงเกิดภาษา Small talk ซึ่งเป็นมาตรฐานภาษาเชิงวัตถุในวงการอุตสาหกรรมซอฟท์แวร์ กระทั่งนาย เบียร์นี สตาวร์สตุป (Bjarne Stroustrup) คิดค้นภาษา C++ ขึ้น ณ ห้องวิจัย Bell Lap ของบริษัท AT&T เขาได้สร้างคลาสให้กับภาษา C เพื่อช่วยสนับสนุนการซ่อนข้อมูล (data hiding) และทำให้ข้อมูลอยู่ในขอบเขตจำกัด (encapsulation) สุดท้ายตั้งชื่อว่า C++ ในปี ค.ศ. 1983
***อ้างอิงจาก ยุทธนา ลีลาศวัฒนกุล, "เริ่มต้นการเขียนโปรแกรมด้วยภาษา C++"

การโปรแกรมแบบโครงสร้าง VS การโปรแกรมแบบเชิงวัตถุ
- การโปรแกรมแบบโครงสร้าง หรือ Procedure Programming
- การโปรแกรมแบบเชิงวัตถุ หรือ Object-Oriented Programming

การโปรแกรมแบบโครงสร้างเน้นไปทางอัลกอริทึม (วิธีการคิด) การแก้ปัญหาโดยลำดับขั้นตอนจากบนลงล่าง โดยสนใจไทป์ข้อมูลน้อยมาก เหมาะสำหรับผู้เริ่มศึกษาการเขียนโปรแกรมและโปรแกรมขนาดเล็ก แต่ไม่เหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่ประกอบด้วยโค้ดจำนวนมาก

การโปรแกรมแบบเชิงวัตถุ เน้นที่ไทป์ข้อมูล (Abstract data type และ User-defined type) และมองโปรแกรมจากล่างขึ้นบน
ล่างคือ การออกแบบชนิดข้อมูลใหม่ (นิยามคลาส) ที่สอดคล้องกับปัญหานั้น
บนคือ การมองภาพรวมที่จะประสานการทำงานชนิดข้อมูลใหม่เหล่านั้นเข้าด้วยกัน
ดังนั้นการโปรแกรมแบบเชิงวัตถุ จึงเหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่ประกอบด้วยความซับซ้อนครับ (มึนเลย)

หาตัวแปลภาษาได้จากไหน ?
อ่านบทความ ใช้อะไรเขียนโปรแกรมภาษา C/C++ ดีละ ?
***หมายเหตุ บทความนี้ผมจัดอยู่ในหมวด "บทความเกี่ยวกับภาษา C++" แต่ว่าเนื้อหาเกี่ยวข้องกับบทความ "แนวคิดอัลกอริทึม" อย่าลงทางเชียวนะ!

ต่อจากนี้ไปอ่านหนังสือเอาเองนะ ก๊ากๆ (อะล้อเล่น)

อ่านเนื้อหาที่เกี่ยวข้อง ถัดไป

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

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