หน้าเว็บ

19 มิถุนายน 2552

096 | ภาษา C กับการเขียนโปรแกรมเบื้องต้น

9 เดือนผ่านไปหลังจาก Python สำแดงฤทธิ์ในวิชาหลักการเขียนโปรแกรม (Principle of Programming) ผมได้กลับมาสอนวิชานี้อีกครั้งแล้วครับ แต่คราวนี้เป็นนักศึกษาภาค กศ.บป. (ภาคเสาร์อาทิตย์) ก็ถึงคราวที่จะต้องมาพิจารณาถึงภาษาคอมพิวเตอร์ที่จะเอามาสอนกันอีกครั้ง

ผมสังเกตปัญหาที่เกิดจากการใช้ภาษา Python ในการสอนเขียนโปรแกรมคราวก่อน สรุปได้ประเด็นใหญ่ๆ ดังนี้ :

1. โครงสร้างภาษาง่ายเกินไป
ไม่ได้หมายความว่า Python เขียนง่ายนะครับ แต่หมายถึงว่าในการสอนให้ครอบคลุมกับ Course Syllabus ที่กำหนดไว้ในรายวิชานี้ (การประกาศตัวแปร, การทำตามคำสั่งแบบตามเงื่อนไข-ทำซ้ำ, ชนิดของข้อมูล ฯลฯ) มันยังไม่สามารถที่จะแสดงบร๊ะลานุภาพของภาษาออกมาได้เต็มที่ ดังนั้นกว่าที่เราจะได้รู้ว่า Python ดียังไง ก็จบคอร์สเสียแล้วโดยที่โปรแกรมที่เขียนๆ กันมา ยังไม่ถึงระดับที่ซับซ้อนเลย

2. การนำความรู้ไปใช้ต่อยอด
ปัญหานี้ใหญ่พอสมควรเลยครับ เนื่องจากนักศึกษาได้รู้จัก Python เพียงภาษาเดียวในตอนที่เรียนเขียนโปรแกรม ดังนั้นพวกเขาจะไม่คุ้นเคยกับรูปแบบการเขียนโปรแกรม ..เออ..ผมขอเรียกว่า "การเขียนโปรแกรมแบบ C" ละกัน คือพอไปเจอภาษาที่ต้องใช้มากขึ้นในรายวิชาที่ต้องเขียนโปรแกรมเอง เช่น Java, C# หรือแม้แต่ PHP มันก็เลยทำให้ไม่คุ้นเคย และต้องมาเริ่มศึกษารูปแบบกันใหม่หมด (Geek บางท่านอ่านแล้วอาจจะบอกว่า เขียนโปรแกรมไม่ควรยึดติดกับภาษา...ใช่ครับ แต่นี่คือนักศึกษาปี 1 ที่ไม่ได้เก่งมาจากที่ไหนกันทุกคนครับ) ซึ่งจะทำให้การเรียนรู้เนื้อหาในรายวิชานั้นต้องช้าลงไปอีก ..ตรงนี้ผมผิดเต็มๆ ครับ

3. ตลาดไม่โต
ตลาด Python ในไทยไม่ค่อยโตเท่า Java, C หรือ .NET แน่นอนครับ แค่แหล่งข้อมูลให้ศึกษาหรือดู Code เพิ่มเติมจากที่สอนก็หายากอยู่ (ถ้าไม่นับว่านักศึกษาไม่ค่อยชอบอ่าน Text Book เท่าไร) ด้วยตัวของนักศึกษาเองทำให้เขาน่าจะรู้สึกบ้างแหละว่า นี่ตูกำลังเรียนภาษาที่ไม่ค่อยมีคนใช้กันรึไง ความรู้สึกแบบนี้จะนำไปสู่อคติครับ

ด้วยเหตุผลดังที่กล่าวมา ทำให้ผมต้องกลับมาพิจารณากันใหม่อีกครั้งในเรื่องของการเลือกภาษา ว่าถึงอย่างไร Python ก็ยังไม่ใช่ตัวเลือกที่ใช้ได้ในตอนนี้ิ สุดท้ายผมก็ต้องเลือกภาษาคอมพิวเตอร์ที่นิยมใช้เรียนใช้สอนกันมากที่สุด ก็คือ ภาษา C ครับ

(อาจดูเหมือนว่าผมไม่ค่อยอยากจะเอาภาษา C มาสอนเท่าไร เหตุผลได้อธิบายไปแล้วในตอนที่ 017 อ่านได้จาก Link ด้านบนครับ)

แต่เดี๋ยวก่อน...นิสัยขบถแหกกฏตลอดของผมมันยังไม่ยอมแพ้ ไหนๆ ก็ต้องใช้ภาษา C แล้ว ไม่อยากเหมือนใคร เหอๆๆๆๆๆๆๆ

ปกติแล้ว C Compiler ที่นิยมใช้สอนกันมากที่สุดในคลาสสอนภาษา C ก็คือ Turbo C / Turbo C++ ใช่ไหมครับ ..แต่ผมจะไม่ใช้อ่ะ ทั้งๆ ที่ตอนผมเรียนปี 1 ผมก็ใช้ Turbo C++ 3.0 แต่ตอนนั้นเครื่องที่ใช้เรียนเป็นเครื่องโบราณ ติดตั้ง Windows 98 การใช้ Turbo C++ ก็ถือว่าสมเหตุสมผลที่สุดแล้วครับ แต่ว่าห้องเรียนที่ผมจะใช้สอนในเทอมนี้ มันเป็นเครื่อง Lenovo ใหม่เอี่ยม สเป็คหรู แถมจอยังเป็น Wide Screen อีก

หน้าจอของ Turbo C++ มันล้นขอบ Monitor ครับ...(ฮา)

เรื่องหน้าจอมันเรื่องเล็กน้อยครับ แต่จริงๆ แล้วที่ไม่อยากใช้ Turbo C++ เพราะ ไม่อยากให้นักศึกษายึดติดกับ Tools หรือ IDE ครับ ว่าถ้าจะเขียนโปรแกรมด้วยภาษา C แล้วต้องมี Turbo C++ (ซึ่งทุกวันนี้นักศึกษาที่นี่ส่วนใหญ่เป็นกันอยู่) อยากให้เห็นว่า ขอแค่มี C Compiler คุณจะอยู่ในสภาพแวดล้อมไหนก็ต้องเขียน C ได้

ในใจก็อยากจะเปลี่ยนไปใช้ gedit เขียน แล้วเอา gcc Compile บน Ubuntu ซะเลย (เครื่องในห้องนี้มี Ubuntu ด้วยครับ) ก้เกรงว่าจะแหกคอกเกินจนอาจทำให้ตกงานได้ ผมก็เลยพยายามหา C Compiler ที่ไม่ใช่ Turbo C++ แต่ยังต้องเขียนโปรแกรมเบื้องต้นได้ คุณสมบัติควรจะคล้ายกันมากที่สุด



เปิด Wikipedia แล้วก็ลองไปทีละตัวครับ

แน่นอนผมไม่รู้จักทุกตัวหรอกครับ ตอนเรียน ป.โท ปี 1 อ.ฝงแนะนำให้ใช้ djgpp ซึ่งมันเท่มาก! แต่ติดตั้งยากเย็นแสนสาหัส และผมคิดว่ามันไม่ค่อยสะดวกเท่าไรหากเราจะสร้าง Environment สำหรับเขียนโปรแกรม (กว่าจะได้เขียนก็ลำบากยากหนักหนา 555) อยากใช้ gcc ก็ไม่มีบน Windows Platforms (พอไปขวนขวายถึง Cygwin หรือ Mingw ผมก็รู้สึกว่าผมกำลังหลงประเด็น) อ.แมนแนะนำให้ใช้ Microsoft Visual Studio.NET เขียน ซึ่งผมว่าช้างตัวนี้มัน Cost สูงไปหน่อยถ้าจะเอาไปจับตั๊กแตนอะนะ (และสุดท้าย อ.แมนก็เห็นด้วย) หาไปหามาจนปวดลูกตาหมดแล้ว สุดท้ายก็ไปถูกใจตัวนี้ครับ...



Tiny C Compiler (ต่อไปจะขอเรียกว่า TCC)

TCC เป็น C Compiler ขนาดจิ๋วมาก และก็ Compile ได้แต่ภาษา C เท่านั้นด้วย (ไม่สามารถ Compile C++ ได้ ซึ่งผมก็ไม่ได้สอนถึงอยู่แล้ว) Download ตัว Zip มาแค่ 280 Kb และ Extract ใช้ได้เลย ไปกำหนด System Path กับ Environment Variables นิดหน่อยก็เวิร์คแล้ว แถมทำงานได้เร็วอีก

วิธีการอาจจะแตกต่างจาก Turbo C++ ที่มี IDE ในตัวนิดนึง ลองอธิบายให้ดูแบบคร่าวๆ ดังนี้ครับ :

1. เขียน Source Code ภาษา C ขึ้นมาโดยใช้ Text Editor ซักตัว (จะใช้ Notepad, EditPlus, Notepad++ หรือ ฯลฯ ก็ว่าไป) Save เป็นไฟล์นามสกุล .c

C:\code\hello_world.c

2. สั่ง Compile Source Code ด้วยคำสั่ง

C:\code>tcc hello_world.c

3. จะได้ไฟล์ Executable มา เรียกทดสอบได้เลย

C:\code>hello_world.exe

การ Compile และ Run ในข้อ 2-3 ทำใน Command Prompt (cmd) ครับ ...เท่แบบนี้แหละชอบที่สุดเลย

Homepage ของ TCC ครับ

พรุ่งนี้เช้าก็จะได้สอนวิชานี้เป็นครั้งแรกแล้วครับ แต่คงยังไม่ได้เขียนโปรแกรมเลย น่าจะ Intro ซัก 2 ครั้งแล้วถึงจะเริ่มเขียนโปรแกรม แต่ในที่สุดก็คือ ผมก็ยังไม่รู้ว่านักศึกษากลุ่มนี้เป็นยังไง เมื่อถึงเวลาสอนจริง TCC อาจจะไม่ได้ดั่งใจก็ได้ ผมเองก็ยังไม่รู้เหมือนกัน แต่ยังไงก็ต้องลองดูละครับ.

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