หลายวันก่อนก็เริ่มรวบรวมข้อมูลเกี่ยวกับภาษา C เพิ่มเติม เพราะกำลังจะจัดทำบทเรียน ภาษา C ในรูปแบบคลิปนั่นเองครับ การรวบรวมข้อมูลต่างๆ ก็ทำให้ได้เห็นที่มาที่ไปของภาษา C ในแง่มุมที่น่าสนใจจึงได้มีการนำข้อมูล ต่างๆ มาเล่าสู่กันฟังครับ
โดยผมจะลองเล่า จาก หนังสือชื่อ The C Programming Language เขียน โดย Brian W. Kernighan, Dennis M. Ritchie ซึ่ง คุณ เดนนิส ริชชี่ นี่ล่ะ ที่คนไทยส่วนมาก รู้จักกันว่า เป็นผู้ให้กำเนิดภาษา C นั่นเอง
โดยเล่มนี้เป็น ฉบับแก้ไขปรับปรุง ครั้งที่ 2 ครับ มีการเพิ่ม เรื่องของ ANSI C เข้ามาเป็นที่เรียบร้อย
ในทัศนะของผม ใครมีโอกาสก็น่าจะหา ฉบับแรกไว้ครอบครองเป็นของสะสม แต่ถ้าหากจะเริ่มเรียนภาษา C แบบจากตำราเก่า ล่ะก็ ผมว่า เล่มแรกนี่ อาจจะไม่คุ้ม เพราะ มีจุด ที่ยังไม่เข้ามาตรฐาน และ การบรรยาย ที่ไม่มากพออยู่ในเล่ม นั่นเป็นสาเหตุให้มี ฉบับแก้ไข ครั้งที่ 2 ออกมาครับ หากจะเริ่มให้เริ่มจาก Second Edition ดีกว่าครับ จะได้รู้เรื่อง ANSI C ไปพร้อมๆ กันเลย ครับ ซึ่งเล่มครั้งที่ 2 นี่ออกมาหลัง
จากเล่มหนึ่งออกไปเวียนว่ายใน โปรแกรมภพ อยู่ราวๆ 10 ปี เลยนะครับ
ตัวผมรู้ C และ C++ มาก่อนหน้า ต่อมาก็ไม่ค่อยได้ใช้งาน และเรียนมากับทั้งการเรียน และ จากตำราด้วยตนเอง ตำราแต่ละเล่ม หนาราวๆ นิ้วกว่า ซึ่งมีเนื้อหา ยาว เยอะ และ มากจริงๆ ทำให้เคยเชื่อว่า C เป็นภาษาแห่งความเยอะในรายละเอียดจริงๆ แม้จะมีประสิทธิภาพสูงก็ตาม
อย่างไรก็ตาม พอมาเจอเล่ม Second Edition ตกใจครับ ฉบับปี พ.ศ. 2531 ผมได้พบว่าทั้งเล่มมีเนื้อหาอยู่ 272 หน้าเท่านั้น จากที่เคยอ่านมาแบบ เป็นพันหน้า หรือใกล้เคียง ผมก็เลยคิดว่า อาจจะนำเสนอ การเรียนภาษา C ในสไตล์ ของต้นฉบับดีกว่าครับ โดยเน้นเนื้อหาที่ตรงจุด สำคัญ เน้นการเขียนโปรแกรม ให้เขียนโปรแกรม เป็น ดังที่ ผู้เขียนและผู้ให้กำเนิด ภาษา C ระบุเอาไว้ว่า
"..C wears well as one's experience with it grows.."
หรือ แปลเป็นไทย แบบ เชี่ยวๆ ก็ได้ว่า
"..ความเชี่ยวในภาษา (การใช้ได้ถึงจุด, ได้เหมาะสม ได้เต็มประสิทธิภาพ) ของ ภาษา C..พัฒนาขึ้นไปตาม ประสบการณ์ ที่โปรแกรมเมอร์ได้สั่งสมขึ้นมา..."
ดังนั้นทั้งจากการพัฒนา ที่เริ่มมี ANSI C เข้ามา และ จากการที่ผู้เขียนเองก็มีประสบการณ์กับภาษา C ที่ตัวเองได้สร้างขึ้นมา มันก็ย่อมแน่ชัดว่า ฉบับปรับปรุงครั้งที่ 2 ย่อมดีกว่าครับ
สำหรับแนวทางในการจัดทำหนังสือ นั้น ผุ้เขียนยังย้ำไว้ในส่วน Preface to the First Edition ว่า หนังสือที่ ทำขึ้นมานี้ ไม่ได้มีวัตถุประสงค์ในการเขียนเพื่อเป็น ตำรา เกี่ยวกับการแนะนำการเขียนโปรแกรม ที่ลงลึกไปในรายละเอียด แต่จะเน้นว่า ผู้เรียนควรมีความเข้าใจ เรื่องการเขียนโปรแกรมอยู่บ้าง อย่างไรก็ตามผู้เขียนย้ำว่า แม้แต่โปรแกรมเมอร์หน้าใหม่ ก็อ่านหนังสือเล่มนี้ได้ ส่วนตรงไหนที่ยากหน่อย ก็ให้ลองปรึกษากับคนที่ชำนาญกว่าก็แล้วกัน
คือทำให้เหมือนว่า นี่เป็นหนังสือของคนที่ไขว่คว้า ความรู้ ไม่ใช่ป้อนให้หมด เหมือนตำราทั่วไปครับ
มาในส่วน Introduction ผู้เขียนและผู้ให้กำเนิดภาษา C ได้ให้ข้อคิด ไว้อย่างน่าสนใจในหลายประเด็น เช่นว่า
-ย้ำกันชัดๆเลย ตั้งแต่ย่อหน้าแรกว่า ภาษา C เป็นภาษาที่เรียกว่า ใช้ได้หลากหลาย หรือ General-
Purpose Language
-ภาษา C นั้นจะไม่ยึดติดอยู่กับ ระบบปฏิบัติการแบบใดแบบหนึ่ง แม้ว่า จะพัฒนามาใช้ทีแรก บน
UNIX ก็ตาม
-แม้จะมีการเรียก ภาษา C ว่าเป็น ภาษาสำหรับการเขียนระบบปฏิบัติการ หรือ System Programming
Language ซึ่งก็เป็นจริงตามนั้น เพราะมีการนำ C ไปเขียนระบบปฏิบัติการ และ ยังเขียน คอมไพเลอร์
อีกด้วย แต่ผู้เขียนย้ำว่า C ยังไปได้สวย ในการถูกนำไปเขียนโปรแกรมหลักๆ ในหัวข้ออื่นๆ อีกด้วย
-มีการให้เครดิตว่า C มีจุดกำเนิดจากตรงไหน (พวกเรานักเขียนบล็อก หรือ เว็บ หรือ ตามกระดาน ขอ
ให้เริ่มเน้นเรื่อง เครดิตกันได้แล้วนะครับ อ้างถึงว่า เอามาจากไหน และ ใส่ลิงค์กลับมาที่ ที่มาด้วย
จ้า) ผู้เขียนเล่าว่า แรงบันดาลใจมาจาก ภาษาชื่อ BCPL หรือ Basic Combined Programming
Language สร้างโดย คุณ Martin Richards จาก มหาวิทยาลัย University of
Cambridge เมื่อปี ค.ศ. 1966 หรือ ปี พ.ศ.2509
ศึกษาเพิ่มเติม BCPL ที่ WIKI ครับ คลิกเพื่ออ่าน
ทั้งนี้เป็นแรงบันดาลใจทางอ้อมครับ เพราะก่อนจะมาเป็น C นั้น ได้มีการสร้าง ภาษา B ขึ้นมาโดย
โดย Ken Thompson ก่อน ซึ่งได้รับแรงบันดาลใจโดยตรงจาก BCPL ซึ่งได้สร้างภาษา B ขึ้นในปี
พ.ศ.2513 จนเป็นที่มาของการพัฒนาต่อเนื่อง และเกิดมาเป็น ภาษา C ในที่สุด
ภาษา B ในตอนนั้น พัฒนาขึ้นเพื่อใช้งานสำหรับ ระบบปฏิบัติการ UNIX ระบบแรกของโลก ที่
ทำงานบน เครื่องคอมพิวเตอร์ DEC PDP-7
DEC PDP-7 ตัวจริงครับ
ที่มา: คลิกที่นี่
-ภาษา C มีโครงสร้าง ที่เพียงในการคุมการทำงานของโปรแกรม อันประกอบด้วย
1. การดำเนินไปของโปรแกรม Sequence (เพิ่มเติมโดยกระผมครับ)
2. ส่วนการเลือก หรือ ตัดสินใจ หรือ Selecting เช่น If, Switch
3. ส่วนการทำซ้ำ Repetition เช่น While, For และมี break กับ เพื่อออกจาก Loop ได้
-การเน้นย้ำเรื่อง ความเป็น Portable Programs อันทำให้นำไปใช้บนเครื่องคอมพิวเตอร์ ที่ต่างกันได้ ง่ายโดยไม่ต้องแก้ไขโปรแกรม หรืออาจแก้เพียงเล็กน้อย
ทั้งหมดก็เป็นประเด็นคร่าวๆ ครับ
พอหนังสือกล่าวส่วนนีหมดก็เข้าบทเรียนแรก ที่ หน้า 5 คือ CHAPTER 1: ผมลองนั่งนับหน้าอีกครั้งเล่นๆ (ว่างมั้งเนี่ย) พบว่า หากตัดส่วนที่เป็น APPENDIX ออกไปแล้ว เนื้อหาในการสอนภาษา C จะหมดเพียง หน้าที่ 189 เท่านั้น หากลบกันแล้ว ก็พบว่า มีเนื้อหา ในเรียนกันเพียง 184 หน้าเท่านั้น นี่ล่ะครับ ที่เรียกว่า แก่นของวิชา ภาษา C ไม่ว่าจะมาก จะน้อย จะเก่ง ไม่เก่ง สิ่งที่คุณเรียนไม่ได้มากกว่า ต้นกำเนิืิดทั้ง 184 หน้านี้เท่านั้น ส่วนหลังๆ เรื่อง Library และอื่นๆ จนจบเล่มนั้น คือ ประสบการณ์ครับ
จงหมั่นศึกษา เขียนโปรแกรมตามบทเรียนไปเรื่อยๆ จงเรียนการโปรแกรมโดยการ เขียนโปรแกรม ครับนี่คือวิธีที่ดีที่สุด ความหน้า 184 หน้า หนาน้อยกว่า นิยาย ตั้งครึ่งๆ ดังนั้น จงมั่นใจครับว่า คุณก็เขียนโปรแกรมได้ครับ
พบกันในบทความต่อไป
* ฝากไว้ให้ฮาเล่น: มีคนล้อเลียน ว่า ภาษา BCPL คือ Before C Programming Language เข้าใจทำครับ
สวัสดีครับ
คุณ บอลล์ :0)
No comments:
Post a Comment