วันเสาร์ที่ 27 กรกฎาคม พ.ศ. 2556

นึกครึ้ม ๆ ขึ้นมา เลยมานั่งทำบล็อกสอนภาษาซีดีกว่า

ทำบล็อกสอนภาษาซีดีกว่า  (Introduction to C programming language)

(ตรงนี้ข้ามไปได้นะครับผมแค่บ่น ๆ เล่น ๆ ตามประสาคนเขียนบล็อก)


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


วันนี้ไม่รู้เป็นอะไรนึกครึ้ม ๆ ขึ้นมาว่า เรามานั่งทำบล็อกสอนภาษาซีดีกว่าไหม ?   เพราะว่าผมมานั่งคิด ๆ ดูแล้วเวลาเราเขียนโค้ดแล้วติด ทำไงหล่ะครับ ... ก็ต้อง google สิ 

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

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

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

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

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

ข้อต่อมาก็คือ ถ้าคุณเล่นเน็ตต่อวัน 1 ชั่วโมง คุณควรจะหาเวลามานั่งเขียนโปรแกรม นั่งฝึกฝนทักษะ 30 นาที เพราะสิ่งหนึ่งที่เด็กสมัยนี้เรียนเขียนโปรแกรมแล้วสำเร็จกันยาก  สาเหตุหนึ่งมาจากพวกเขาเห็นว่าคอมพิวเตอร์เป็นอะไรที่อุดมไปด้วยสิ่งที่เอ็นเตอร์เทน ไหนจะ facebook, youtube, 4share โหลดเพลง หรืออาจจะเป็นเล่นเกมส์ออนไลน์ ออฟไลน์ มันมีเทรนของความบันเทิงในรูปแบบใหม่ ๆ เข้ามาเสมอตั้งแต่ยุคของ internet เปิดกว้างขึ้น  คือสามารถเข้าถึงโลกอินเตอร์เน็ตได้ง่ายขึ้น มือถือก็เล่นเน็ตได้ ทำอะไรได้หลาย ๆ อย่างเทียบเท่ากับการใช้ pc เพื่อเอ็นเตอร์เทนตัวเองเลยทีเดียว  บ่อยครั้งที่ผมเห็นก็คือความประมาท เพราะคิดว่าคอมพิวเตอร์นั้น มั่ว ๆ เดียวก็ออก   Microsoft Office นี่มั่ว ๆ เดี๋ยวก็ได้แล้วรายงานหนึ่งฉบับ พรีเซ็นเตชั่นสวย ๆ สิ่งเหล่านั้นลึก ๆ แล้วมันเกิดจากโปรแกรมเมอร์ระดับเทพจัดการไว้ให้เสร็จแล้ว แต่คุณมองไม่เห็น จึงเกิดความประมาท คิดว่า "ง่าย"  วิชาเขียนโปรแกรมนั้นไม่มีหรอกครับคำว่ามั่วแล้วสามารถทำให้โปรแกรมออกมาได้ตรงตามโจทย์ 
หลาย ๆ ครั้งผมเห็นเด็กบอกว่าเครียด เขียนโปรแกรมไม่ออก ทำไม่ได้ และทุกครั้งคือใกล้จะส่งงาน เวลาเริ่มจะหมด   สิ่งที่ต้องถามย้อนกลับไปว่า แล้วเวลาที่ผ่านมาไปทำอะไรอยู่ ?   ก็คือเปิดคอมพ์มาก็เอ็นเตอร์เทนกันจนหมดแรง หมดเวลา แล้วก็นอนนั่นเอง  บางทีก็เกิดจากการเรียนไม่รู้เรื่องไปต่อไม่เป็น อันนี้ก็คือการขาดการฝึกฝน หรือการขาดทักษะ เพราะถ้าโปรแกรมเล็ก ๆ เรายังไม่คล่องเลย แล้วจะไปทำโปรแกรมใหญ่ ๆ ได้อย่างไร  ผมคิดว่านะ คนที่เรียนจบในสาขานี้นะ ในช่วงระยะเวลา 4 ปีที่เรียน ถ้าเขียนโค้ด (หมายถึง คิดแล้วเขียนออกมา รันและได้ผลตามต้องการ) ให้รวมโปรเจ็คน้อยใหญ่ แต่ไม่รวมโปรเจ็คที่ทำเป็นกลุ่มนะ นอกจากว่าคุณรังแกเพื่อนด้วยการเอาโปรเจ็คมาทำคนเดียว แต่ให้เพื่อนติดชื่อส่ง ไม่ควรน้อยกว่า 15000 บรรทัด ถ้าคุณเขียนได้ถึงขนาดนี้ผมว่าทักษะคุณเกิดแล้วหล่ะ ส่วนโปรแกรมจะออกมาดีหรือไม่ดี ผมเชื่อว่าคนที่เขียนโปรแกรมได้มากขนาดนั้น เขาน่าจะมองเห็นอะไรบ้างหล่ะ 

วิชาเขียนโปรแกรมนั้นไม่ใช่วิชาที่จะสอนให้ได้ในระยะเวลาอันสั้น เป็นวิชาที่ไม่มีทางลัด คุณต้องเรียนไปเรื่อย ๆ อย่าคิดว่าจะมีโรงเรียนกวดวิชาหล่ะ ไม่มีหรอก Tutor อ.อุ๊ อ.ช่วง อะไรพวกนี้ (ยังมีอยู่ป่าวหว่า ฮ่า ๆ )  มันเป็นวิชาที่มีลักษณะของคำว่า "ทักษะ" คือเขียนบ่อย ๆ ทำบ่อย ๆ ก็ชำนาญ ก็เก่งขึ้นมาได้เหมือนกัน  คนที่หัวดีแน่นอนว่าย่อมไปได้เร็วกว่าเพื่อน แต่คนที่หัวไม่ดีฝึกฝนบ่อย ๆ พอจับเคล็ดได้ก็สามารถที่จะทำงานได้ไม่แพ้กันเช่นเดียวกัน

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

พื้นฐานที่ควรมีสำหรับวิชานี้
1. การพิมพ์สัมผัส  หมายถีึงการพิมพ์โดยที่สายตามองที่จอภาพ  หรือสามารถพิืมพ์ได้แม้ว่าคุณจะมองไม่เห็นแป้นคีย์บอร์ดเลยก็ตาม
ถ้าไม่เป็นควรรีบไปฝึกเลยนะ ... อันนี้จำเป็นมาก ผมเห็นมาเยอะแล้วพวกที่คอยมองคีย์บอร์ด ไปพิมพ์ไป สิ่งที่จะเจอบ่อย ๆ เลยคือการเขียนโค้ดผิดไวยกรณ์ เพราะสายตาจะทำงานหนักมากและจะล้าได้ไว ทำไมหน่ะหรือ ?  ก็เพราะว่าความสว่างของหน้าจอมันก็อีกระดับหนึ่ง ความสว่างของแสงที่ตกกระทบคีย์บอร์ดแล้วมาเข้าตาเราก็อีกระดับหนึ่ง หากก้ม ๆ เงย ๆ แน่นอนคุณจะเบลอไวแน่นอน พอเบลอสมองก็พาลจะไม่อยากคิดเอาเสียดื้อ ๆ ก็ต้องออกไปพัก
ทักษะการพิมพ์สัมผัสนี้ควรจะมีเลย เพราะมันจะเป็นประโยชน์กับสายอาชีพที่เกี่ยวกับคอมพิวเตอร์ไปอีกยาว

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

-----------------------------------------------------------------------------------------------------------
อันนี้สำหรับให้ google มันหาเจอนะครับ

สอน เรียน ความรู้ เกี่ยวกับ ภาษาซี Turbo C , C , Turbo C++ 3.0 , Borland Turbo C++ 3.0  อยากเริ่มต้นการเขียนโปรแกรมทำไง เขียนโปรแกรมทำอย่างไรดี อยากเรียนภาษาซี เรียนภาษาซี Turbo C
เรียนเขียนโปรแกรม สอนเขียนโปรแกรม ภาษา ซี