Python กับการเขียนโปรแกรมเบื้องต้น


บันทึกความเป็นไปตลอด 1 เทอมในการสอนภาษา Python ในวิชาเขียนโปรแกรมเบื้องต้นของนักศึกษาปี 1 ครับ

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

แล้วพอรู้ตัวว่าจะต้องมาสอนวิชานี้ ผมก็คิดอยู่ว่าจะสอนด้วยภาษาอะไรดี เนื่องจากที่นี่ไม่ได้บังคับ อาจารย์บางคนอาจจะสอน Java บางคนอาจสอน C (แต่ส่วนใหญ่จะเป็น C ตามธรรมเนียมที่สืบทอดกันมา) และด้วยความที่มีนิสัยผิดแปลกจากชาวบ้านเขา ผมก็เริ่มคิดที่จะเปลี่ยนภาษาที่ใช้สอน...

ทำไมต้องเปลี่ยน ? เหตุผลสำคัญ ของผมก็คือ อยากจะให้นักศึกษาได้เรียนรู้ภาษาคอมพิวเตอร์เบื้องต้นภาษาใหม่ๆ ที่เขาว่ากันว่าเขียนง่าย เขียนเร็ว และต้องเป็นไปตามแบบแผนของภาษาคอมพิวเตอร์ที่เป็นเสมือนแบบอย่างที่ใช้สอน กันมาแต่เก่าก่อนอย่างภาษา C/C++ ด้วย

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

ในที่สุด ผมก็ List ภาษาคอมพิวเตอร์ที่คิดว่าเอามาสอนได้ แล้วก็ได้มาตามนี้ครับ

- C
- Java
- Ruby
- Python

ภาษา C : ตัวเลือกที่ปลอดภัยที่สุด ก็คือสอนตามๆ เขานั่นแหละครับ

ภาษา Java : ตัวเลือกที่ดูดีขึ้น มาอีกระดับหนึ่ง แต่การนำไปสอนนักศึกษาปีหนึ่งนั่นอาจจะดูโหดร้ายไปสักนิด เพราะนักศึกษา 98% ในกลุ่มที่จะสอนนี้ไม่เคยเขียนโปรแกรมมาก่อน (และไม่เคยเรียนรู้เรื่องของกระบวนการพัฒนาโปรแกรม, เรื่องของ Algorithms ด้วย) แค่เขียนแบบ Structure ก็ดูจะไม่ใช่เรื่องง่ายที่จะทำความเข้าใจแล้ว นี่ไปพูดถึง Object-Oreinted ผมคงโดนนักศึกษากลุ่มนี้เกลียดชัีงไปตลอดชีวิต (ha)

/* มันเป็นเหตุผลที่ดีในการที่จะสอนภาษาแหล่มๆ อย่าง Java แต่ผมอยากจะปรับทัศนคติให้ นศ.ไม่รู้สึกถึงความน่าเบื่อหน่ายจากความยากในการเขียนโปรแกรม ซึ่งอาจจะทำให้ นศ.เหล่านั้นเกิดอคติหรือท้อแท้ในการเรียนไปเลยก็เป็นไปได้ */

ภาษา Ruby : เหมาะสมในเรื่องของความง่ายในการเขียนโปรแกรม แต่ปัญหาคือสำหรับแถวนี้ (แถวไหนลองคิดเอาเอง) ภาษา Ruby เป็นเรื่องใหม่มากๆ และเอกสารอ้างอิง / ข้อมูลจากอินเตอร์เน็ต ยังหายากอยู่ ผมคิดว่าตัวเลือกนี้เหมาะสมน้อยที่สุด

ภาษา Python : ดูเป็นตัวเลือกที่น่าสนใจ ด้วยความง่ายของภาษา, ข้อดีจากสื่อแหล่งต่างๆ ที่ชื่นชมกัน, แหล่งข้อมูลในรูปแบบภาษาไทยก็ยังหาได้ง่าย (มีหนังสือของ สสท. เล่มหนึ่ง, เอกสารที่ Download จากอินเตอร์เน็ต, เว็บ codenone.com) ผมคิดว่านี่เป็นตัวเลือกที่ดีเลยแหละ

สุดท้ายคนที่ตัดสินใจว่าจะใช้ภาษาใดในการเรียนการสอน ก็คือผู้เรียนนั่นเองครับ

ผมถามนักศึกษาในคาบแรกที่เข้าสอน ว่าจะเรียนภาษาอะไร ระหว่าง C กับ Python (เหลือสองตัวเลือกเพราะเหตุผลดังที่กล่าวมา) นักศึกษาในกลุ่มนี้มีบางคนซิ่วมาจาก ม.อื่น และเคยเรียนภาษา C มาบ้างแล้ว ทั้งห้องโหวตกันและเลือกภาษา Python ครับ..

เหตุผลของนักศึกษามีนิดเดียว คือเขาถามผมว่า ภาษาไหนใหม่กว่ากัน ระหว่าง C กับ Python เขาอยากเรียนภาษาใหม่ๆ อยากตามทันเทคโนโลยีและกระแสนิยม

สุดท้ายผมก็ใช้ภาษา Python สอน ผมเคย Search เจอในอินเตอร์เน็ตก็มีคนบอกว่า บาง ม.ก็ใช้ Python สอนเด็กปี 1 เหมือนกัน ผมเลยอุ่นใจขึ้นมาอีกนิดหน่อยว่า อย่างน้อยก็ไม่ใช่เราคนเดียวละที่แหกคอก

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

ผมติดตามพัฒนาการด้าน Programming ของนักศึกษากลุ่มนี้มาตลอดทั้งเทอม และผมได้เห็นความเปลี่ยนแปลงที่เกิดขึ้นซึ่งก็เป็นไปตามที่ผมคาดหวังไว้

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

แน่นอนครับ สุดท้ายแล้วสิ่งที่ผมต้องการจะจุดประกายให้นักศึกษากลุ่มนี้ ก็คือ Rapid Programming นั่นเอง

พรุ่งนี้จะสอบปลายภาคแล้ว ได้ผลเป็นอย่างไรผมจะมาเขียนเล่าให้อ่านกันอีกทีครับ

คำสำคัญ (Tags): #python
หมายเลขบันทึก: 213195เขียนเมื่อ 1 ตุลาคม 2008 11:37 น. ()แก้ไขเมื่อ 24 มิถุนายน 2012 02:56 น. ()สัญญาอนุญาต: จำนวนที่อ่านจำนวนที่อ่าน:


ความเห็น (7)

พึ่งละไดว่างจากการไม่ได้สอนเสาร์อาทิตย์ก็มีโอกาสได้นั่งอ่าน blog share ประสบการ์ณท่านอาจารย์ดิวครับ ก็ได้ทราบว่าท่านอาจารย์ดิวได้สอนนักศึกษาเทอมเดียวกับกับผมในเทอมนี้ เลยอยากจะมาขอคำแนะนำ และติดตามผลการสอนนะครับว่าเป็นอย่างไรบ้าง เพราะว่าเทอมนี้ ผมก็ลองตัดสินใจแวกแนวตามอ ติวไปละ http://gotoknow.org/blog/ekkawits/221493

สุดยอดครับอาจารย์ : )

ที่ ม.สงขลานครินทร์ คณะวิทยาการจัดการ เอกคอมพิวเตอร์ธุรกิจ ก็เรียน Python เหมือนกันครับ ซึ่งเป็น Python ในระดับที่สามารถสอนเด็กวิทยาการคอมฯ ได้สบายๆ ดำเนินการสอนโดย อ.ธวัชชัย ของเรานี่เองครับ

ผมเองก็เพิ่งเริ่มหัดเขียน Python ได้เดือนกว่าๆ ครับ ก่อนหน้านี้ก็เขียนทั้ง PHP, Java, Ruby แต่ละตัวก็มีจุดเด่นของตัวเอง ผมชอบ PHP เพราะเขียนง่าย learning curve ต่ำมาก แต่โค้ดไม่สวย, ชอบความสวยงามแบบมีระเบียบกฎเกณฑ์ของ Java, ชอบโครงสร้างโค้ดที่อ่านง่ายของ Python และชอบ Ruby เพราะมันค่อนข้างคล้ายกับภาษามนุษย์ครับ ผมคิดว่ามันเขียนง่ายกว่า Python อีกครับ จะเป็นรองก็แค่เรื่องประสิทธิภาพ กับเรื่องต้องเขียน end บ่อยๆ

สนับสนุนอาจารย์ครับ สู้ๆ

ขอโทษนะค่ะ ถ้ามีปัญหาเกี่ยวกับ python สามารถที่จะปรึกษาได้ไหมค่ะ

เพราะไม่เคนเรียนมาก่อนลย เลยไมู่้รู้เรื่องค่ะ

ผมเรียน ไพทอนเหมือนกาน ผมอยู่ปี1อ่ะ แต่เรียนไม่รู้เรื่องเลยอะ

มีใครช่วยผมได้บ้างให้ผมได้เข้าใจเกี่ยวกับการเขียนภาไพทอนอ่าคับ

[email protected] ถ้าใครมีไรแนะนำแอดมาหน่อยนะคับ

ขอบคุนคับ

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

อยากให้สอยเบื้องต้นการเขียนโปรแกรมเบื้องต้น

พบปัญหาการใช้งานกรุณาแจ้ง LINE ID @gotoknow
ClassStart
ระบบจัดการการเรียนการสอนผ่านอินเทอร์เน็ต
ทั้งเว็บทั้งแอปใช้งานฟรี
ClassStart Books
โครงการหนังสือจากคลาสสตาร์ท