เราเรียนเพื่ออะไร กันแน่ ……. และทำไม เด็กไทยสมัยนี้ถึงได้แขยง Text Book กันนัก

พอดีว่าได้พูดคุยกับพี่ … (ไม่ขอเอยนาม) และได้เข้าไปอ่านในกระทู้มากมายเกี่ยวกับเรื่องพวกนี้มาเลยเก็บเอามาให้อ่านกันครับ

CS ไม่ได้เรียนเพื่อเป็น programmer

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

ถ้าคุณเข้าใจที่ผมพูดเมื่อไหร่ คุณจะเข้าใจว่า CS มีไว้เพื่ออะไร ผมจะอธิบายเพิ่มเติมอีกหน่อย เขียนโปรแกรมได้กับเขียนได้ดีไม่เหมือนกัน

ในการเรียน CS จะต้องศึกษาเรื่อง algorithms โดยต้องมี 3 อย่าง

1) correctness โปรแกรมที่คุณเขียนจะต้องถูกต้องทุกกรณี ไม่มีความผิดพลาดเกิดขึ้น โดยต้อง ทำ math proof ได้ ว่าทำไมถึงถูกต้อง คุณเคยทำรึเปล่าครับ รึว่าใช้ sense เอาว่าอย่างนี้น่าจะถูกแล้ว

2) performance โปรแกรมที่เขียนจะต้องมีประสิทธิภาพใสการทำงานสูง ทำงานเร็ว โปรแกรมเปรียบเทียบบางโปรแกรมอาจจะใช้ O(n^2), O(n^3) แต่คนที่มีความรู้เรื่อง algorithms เป็นอย่างดี อาจจะสามารถเขียนให้โปรแกรมทำงานใน O(n log n) หรือ O(n) ได้ คุณเคยปรับ algorithms ให้ทำงานเร็วขึ้นรึเปล่าครับ

3) efficency โปรแกรมที่เขียนจะต้องทำงานได้ดีที่สุดโดยใช้หน่วยความจำน้อยที่สุด คุณเคยทำการประเมินบ้างมั้ยครับ ว่าโปรแกรมที่คุณเขียนใช้หน่วยความจำเท่าไหร่ และใช้ให้น้อยลงได้หรือไม่

นี่คือ ความแตกต่างระหว่าง โปรแกรมของคนที่เรียน CS กับคนที่ไม่ได้เรียนครับ

แล้วก็ computer science ไม่ได้เรียนเน้นไปทางเขียนโปรแกรม ถ้าอย่างนั้นจะมีความรู้ที่แคบ

มีอย่างอื่นที่ต้องเรียนอีกมาก เช่น OS เวลาเขียนโปรแกรมใหญ่ ๆ ที่ใช้ thread มากมาย ถ้าเขียนแล้วเกิด deadlock ขึ้นคุณจะแก้ปัญหายังไง คุณเคยเจอรึเปล่าครับ เรื่อง priority อีก ว่า thread ไหนจะได้ทำงานก่อน ถ้าคุณไม่เข้าใจเรื่องนี้ ก็อาจจะเขียน thread มั่ว ๆ ซึ่งอาจทำให้โปรแกรมทำงานช้า, เกิด deadlock ได้

เรื่อง data communication and network คุณเรียน cs มา ผมถามคุณหน่อยได้มั้ยครับ ว่า ในระบบ LAN คอมพิวเตอร์มันคุยกันได้ยังไงครับ ในเมื่อ IP address เป็นสิ่งที่สมมติขึ้นมา ในการที่เราจะวางระบบเครือข่าย เช่น ใน SW ขนาดใหญ่ เวลา implement อาจจะต้องดูเรื่อง network ด้วย ถ้าคุณไม่เข้าใจเรื่อง router, gateway, dns ต่าง ๆ คุณจะวางระบบได้มั้ยครับ

ความจริง CS ยังมีเรื่องอื่น ๆ อีกมากเช่น AI, IR

ถ้าคุณจะไปเป็นนักพัฒนา SW เกมส์ แล้วคุณไม่รู้จักเรื่อง AI คุณก็จะทำไม่ได้อีก นี่ก็เป็นอีกความแตกต่างระหว่างคนเรียน CS กับไม่ได้เรียนครับ

เรื่อง IR ก็เหมือนกัน ถ้าคุณไปเขียนระบบที่ต้องมี Full Text Search ถ้าคุณไม่มีความรู้เรื่อง IR ก็ทำไม่ได้อีก

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

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

logic ง่ายๆ สบายๆ ครับ

ซึ่งผมเห็นด้วยอย่างมาเลยในเรื่องนี้ ……… อย่างแรงเลยครับ ผมคิดต่ออีกว่า

คนไทยมอง ผลก่อน แล้วตามด้วยเหตุ …….. และเป็นประเทศเดียวในโลกด้วยในตอนนี้ที่ย่ำอยู่กับที่ได้นานที่สุด

ผมจะเปรียบเทียบให้ดู นี่คือสิ่งที่ได้จากคนที่ไปคลุกคลีกับคนที่ไม่ได้มอง ผลก่อนเหตุ แต่มอง เหตุก่อนผล …..

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

และคนไทยนี่แปลกนะครับ ……. อ่านหนังสือกันยังจะเลือกภาษาในการอ่านเพื่อสะดวกสบาย แทนที่เลือกจะเสพความรู้ที่ดี และตรงประเด็น

ดังเช่นกระทู้นี้

ทำอะไรกันอยู่ …… เรียน Com กันแต่อ่าน ภาษาอังกฤษไม่ออกอีกเหรอ แถมไม่พยายามหรือขวนขวาย ผมเห็นนิสิตเดี่ยวนี้ช่าง ทำอะไรแคบๆ อ่านอะไรก็ยึดด้านนั้นด้านเดียว

อ่านอะไรก็อ่านแต่สิ่งไร้สาระ หาสาระในการเสริมสร้างความรู้ไม่

อย่างที่เห็นๆ กันง่ายๆ หนังสือด้านคอมฯ เกี่ยวกับ Com Sci จริงๆ หนังสือคอมฯ ในไทย ดีๆ มี 10% ของทั้งหมด นอกนั้นขยะดีๆ นี่เอง ……. (พูดเรื่องจริง) ทำไมหรือ เพราะทุกเล่มสอนให้ทำตาม แต่ไม่ “ให้คิด” คือ ทำได้ไง แต่ทำแบบใหม่ๆ แหวกแนวไม่เป็น ซึ่งก็ทำให้คิดว่าตัวเองทำได้ แต่จริงๆ แล้ว ทำไม่ได้หรอก ถ้าไม่มีสูตร ไม่มี step by step

ง่ายๆ หนังสือ c++ หรือ java คุณรู้ไหม ว่า include มันมายังไง มันต่างจาก require ยังไง

หรืออย่างพวก comment มันเอาไว้ทำไมมั้ง ควรมีไว้เพื่ออะไร จำเป็นมากไหม

อีกอย่างคือ พวกหนังสือพวกนี้สอน แนว concept การมองโปรแกรมอย่างเป็นเหตุเป็นผลไหม พวก logic พื้นฐานต่างๆ flowcontrol ต่างๆ หรือ concept พื้นฐานจริงๆ เลยที่ควรรู้อย่างพวก การทำงานของ cycle ใน cpu หรือ แนว com architect พวกนี้

ผมหามาทั้งตลาดหนังสือไทย มีอยู่ 1 – 2 เล่มนอกนั้น “ขยะ”

ถ้าใครจะเถียงว่า คนมันคิดไม่เหมือนกัน บางคนต้องการเร็ว งั้นก็ไม่ต้องเรียน ไม่มีอะไรที่ได้มาด้วยความรวดเร็วถ้าไม่มีพื้นฐานที่ดี พื้นฐานไม่ดี เดี่ยวก็ตันเองหล่ะ เชื่อผมไหมหล่ะ

หนังสือคอมฯ ที่ผมคิดว่ายังไงก็ต้องอ่านก็พวก “computation theory” ต่างๆ หรือ พวก Concept ต่างๆ พวก AI, Data Com, Data Structure, Logic Theory, Database System ฯลฯ พวกนี้ ผมไม่เห็นมันจะโดนแปลเป็นภาษาไทยเลย หรือถ้าแปลก็แปล แบบ ผิดๆ ซะมาก

นั้นมันทำให้เราต้องอ่านหนังสือ ภาษาอังกฤษ หรือ Text Book ซะ แต่เท่าที่ผมได้เห็น ได้เจอ กลับไม่มีใครกล้าอ่านมัน เพราะกลัวภาษาอังกฤษ หรืออ่านมันไม่ออก ทั้งๆ ที่หนังสือพวกนี้คือสิ่งที่จำเป็นอย่างมาก เพราะคอมพิวเตอร์มันสร้างมาจากพวกที่ใช้ภาษาอังกฤษนั้นเอง

ซึ่ง “ผมก็ไม่แน่ใจเหมือนกันว่า สอบ ent’ วิชา อังกฤษ เข้ามาได้ยังไง “

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

อยากให้อ่าน text book กันมากขึ้น ไม่ใช่มองคนอ่าน text เป็นพวกเทวดา หรือให้ อ. ท่านแปลให้ ……..

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

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

ซึ่งส่วนหนึ่งเพราะไม่กล้าอ่านหนังสือ text นั้นเอง และไม่กล้าที่จะหาความรู้เพิ่มเติม

แล้วอย่างงี้จะพัฒนาได้ไหมเนี่ย โอ้ว !!! ประเทศชาติ ……

เป็นยังไงมั้ง สะใจไหมครับ กับข้อความพวกนี้ รับกันได้ไหมกับความเป็นจริงของเราเอง คนไทยเราเอง ผมไม่รู้ใครจะคิดยังไง แต่ผมคิด และเห็นด้วยกับสิ่งเหล่าน้อย่างแรงกล้า เช่นกัน ……….