พื้นฐานภาษาซี


คำนำ
ภาษาซี (C Programming Language) ถูกพัฒนาขึ้นมาในปี ค.ศ. 1970 โดย Dennis Ritchie แห่ง Bell Laboratories และได้ถูกใช้งานแต่ในห้องปฏิบัติการของ Bell จนกระทั่งปี 1978 นั้น Brian Kerninghan กับ Dennis Ritchie สองคู่หูขาโจ๋ จึงได้ออกหนังสือ กำหนดมาตรฐานของภาษาซี ข้อกำหนดนี้คนมักเรียกขานกันว่า K&R C

หลังจากนั้นปี 1980 ภาษาซี ก็ได้รับความนิยมมากขึ้น มีการพัฒนา comiler ภาษาซีออกมามากมาย ความได้เปรียบของภาษาซี ที่เหนือกว่าภาษาอื่นคือ

  1. ภาษาซี สามารถนำไปใช้ได้บนเครื่องทุก Platform ไม่ว่าจะเป็น Intel PC ที่วิ่ง Windows 95 หรือ Windows NT หรือ แม้แต่ Linux ทั้งเครื่อง Macintosh และ เครื่องเวอร์คสเตชัน ตลอดจนเมนเฟรม เนื่องจากมี compiler ของภาษาซี อยู่ทั่วไป
  2. ภาษาซี เป็นภาษาที่ง่ายๆ คือมีแต่ข้อกำหนดในการใช้งาน หรือ syntax แต่ไม่มีฟังก์ชันสำเร็จรูป (Built-in Function) ใดๆ ดังนั้นหากผู้ใช้ต้องการทำอะไรก็ตาม ต้องเขียนทุกอย่างขึ้นเอง หรือ อาจเรียก Library Functions มาใช้งาน โดย ฟังก์ชันที่เป็นงานที่ใช้บ่อยๆ จะถูกรวบรวมไว้ใน Library Functions เช่น การจัดการข้อความ การดำเนินการเกี่ยวกับ Input/Output (I/O) การจองหน่วยความจำ (Memory Allocation) แต่ฟังก์ชันที่วิลิศสมาหรา จะไม่มีใน Standard Library เช่น ฟังก์ชันที่จัดการ Graphics ทั้งนี้จะขึ้นกับระบบที่ใช้ (เช่น เป็นระบบ UNIX หรือ Windows 95) และ สิ่งแวดล้อมในการทำงาน (เช่น GUI เป็น X-Windows หรือ Direct X) การทำเช่นนี้จะทำให้ภาษาซี เป็นภาษาที่เคลื่อนย้ายได้ง่าย (portable)

เมื่อภาษาซี ได้รับความนิยมมากขึ้น จึงมีผู้ผลิต compiler ภาษาซีออกมาแข่งขันกันมากมาย ทำให้เริ่มมีการใส่ลูกเล่นต่างๆ เพื่อดึงดูดใจผู้ซื้อ ทาง American National Standard Institute (ANSI) จึงตั้งข้อกำหนดมาตรฐานของภาษาซีขึ้น เรียกว่า ANSI C เพื่อคงมาตรฐานของภาษาไว้ไม่ให้เปลี่ยนแปลงไป ใน lecture ของผมก็จะยึดแนวของ ANSI C นะครับ



เส้นทางของ Programmer
นักศึกษาโดยทั่วไป มักจะคิดว่าการเขียนโปรแกรมเป็นเรื่องยาก และต้องมีความรู้ทาง computer science อย่างดี จริงๆ แล้วมันไม่ได้เป็นอย่างนั้นเลย การเป็นนักเขียนโปรแกรมที่ดี ไม่จำเป็นต้องมีความรู้ทาง computer science ระดับปริญญาก็ได้ ตัวอย่างนี้เห็นชัดๆ นักเขียนโปรแกรมระดับเซียนส่วนใหญ่ กลับไม่ได้จบ computer science แต่มักจะเป็นนักฟิสิกส์ หรือ นักคณิตศาสตร์ คุณสมบัติที่นักเขียนโปรแกรมควรจะมีคือ

  1. มีความจำดี
    ทำไม ? เพราะอย่างร้อยเราต้องจำว่า syntax ของภาษามีอะไรบ้าง คงไม่ใช่เรื่องสนุกถ้าต้องคอยเปิด manual ทุกครั้งที่มา นั่งเขียนโปรแกรม
  2. เข้าใจคอมพิวเตอร์
    เข้าใจอะไร ? เข้าใจว่าคอมพิวเตอร์นั้นโง่แสนโง่ เราต้องการให้คอมพิวเตอร์ทำอะไร เราต้องระบุให้ชัดเจน ห้ามคลุมเคลือ อย่าคิดในแง่ดีว่าคำสั่งต่างๆนั้นที่มีสองแง่สามง่ามแล้วคอมพิวเตอร์จะเข้าใจเอง ไม่มีทางครับ
  3. เป็นคนละเอียด
    นักศึกษาจะต้องสนใจกับรายละเอียดให้มาก การเขียนโปรแกรมที่มีการใช้สมการทางคณิตศาสตร์ที่ซับซ้อน มีวงเล็บซ้อนกันหลายชั้น ต้องการความอดทนในการวิเคราะห์รายละเอียด ความเป็นคนละเอียดทำให้ programmer หลายๆ คนพัฒนาตนเองจนกลายเป็นมืออาชีพ ที่มีรายได้แตกต่างจากคนอื่นได้
  4. มีความคิดลึกซึ้ง
    สามารถคิดได้หลายชั้น (อาจจะไม่ต้องถึงกับสามก๊ก) และมีความสามารถในการแบ่งงานเป็นส่วนๆ ได้โดยไม่หลงทิศทาง โปรแกรมบางโปรแกรมที่มีขนาดใหญ่ เช่นอาจจะมี code ถึง 1,000,000 บรรทัด ต้องมี programmer หลายคนช่วยกันเขียน จึงต้องแบ่งงานออกเป็น ส่วนย่อยๆ programmer แต่ละคนจะลงรายละเอียดในชิ้นงานของตน แต่ก็ต้องมีมองเห็นภาพรวมของงานทั้งระบบด้วย

คุณสมบัติเหล่านี้นับว่าจิ๊บจ๊อย สำหรับคนที่มาเรียนเพื่อเป็นนักฟิสิกส์ จากคุณสมบัติ 4 ข้อของ programmer บวกกับความเป็นคนอยากรู้อยากเห็น มีความคิดสร้างสรร มีจินตนาการ บวกกับมีความคิดเป็นระบบ ของนักฟิสิกส์ ก็จะทำให้ programmer ที่เป็นนักฟิสิกส์มักจะประสบความสำเร็จมากกว่า programmer ทั่วๆไป

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


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

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