ตอนเด็กๆ เราเคยดูหนัง...
หลายเรื่องเลยที่มันจะมีฉากที่พวกตัวเอกบางคน นั่งหน้าคอมพิวเตอร์คอยสนับสนุนการปฏิบัติการของพวกตัวเอกอยู่ในห้องลับที่บางเรื่องก็ปิดไฟหมดเหลือแต่จอคอมที่เรื่องแสงอยู่พร้อมตัวอักษรภาษาอังกฤษที่ไม่ใช่ภาษาอังกฤษ (ฮา) ยั้วเยี้ยอ่านไม่รู้เรื่องเต็มไปหมด
ตอนนั้น เราก็อยากรู้ว่าไอ้พวกที่นั่งทำอย่างนี้อยู่เนี่ยเขาทำอะไรกันน่ะ แล้วไอ้ตัวอักษรพวกนั้นมันคืออะไร แล้วจากนั้นก็มารู้ที่หลังจากอาชีพพวกนี้เขาเรียกันว่า
"โปรแกรมเมอร์"
ซึ่งเอาจริงๆ แล้วคำว่าโปรแกรมเมอร์น่าจะหมายถึงคนที่ทำหน้าที่เขียนโปรแกรมคอมพิวเตอร์มากกว่า เจ้าพวกในหนังนี่น่าจะเรียกว่า แฮกเกอร์ (หรือแครกเกอร์เสียมากกว่า)
อยากไรก็ตาม .. ความคิดเรื่องจะเป็นโปรแกรมเมอร์ไม่ได้อยู่ในหัวสมองเลยจนก่อนที่จะเข้ามหา'ลัยแล้วต้องเลือกคณะ
ตอนนั้นเป็นช่วงที่เพิ่งเริ่มใช้คอมพิวเตอร์อย่างจริงจัง เลยรู้สึกว่าเลือกเข้าคณะที่เกี่ยวกับคอมฯ ก็น่าจะดีนะ
นั่นแหละ เป็นจุดเริ่มของการ "เขียนโปรแกรม" ของเรา
จาก "ผู้ใช้" ผันตัวสู่ "ผู้สร้าง"
หลังจากเข้ามหา'ลัย ผ่านการรับน้องฯ และกิจกรรมประปรายพอหอบปากหอมคอแล้ว ในอาทิตย์แรกหลังเปิดเทอม เราจำได้เลย วันนั้นเป็นวันอังคาร คาบเรียนแรกตอน9โมงเช้า เรานั่งอยู่ในห้องกำลังลุ้นอยู่ว่าอาจารย์ที่จะเข้ามาสอนเขียนโปรแกรมจะเป็นยังไง
ในตอนนั้น ยังไม่มีความรู้เรื่องการเขียนโปรแกรมเลยสักนิดเดียว เรียกได้ว่าเป็น End User ขนาดแท้
อะไรคือ End User งั้นเหรอ?
ปกคือคนสามัญเดินดินทั่วๆ ไปที่ใช้คอมพิวเตอร์อยู่ทุกวี่ทุกวันอย่างเราๆ นั่นแหละ
- อยากพิมพ์งาน ก็เป็น Word
- อยากฟังเพลงก็เปิด Media Player
- อยากแต่งรูปก็เปิด Photoshop
- อยากวาดการ์ตูนก็เปิด SAI Paint-tool
อะไรประมาณนั้น...
นี่เป็นสิ่งที่เราเข้าใจผิดมาตลอดตอนที่เลือกเข้าคณะทางคอม
คิดว่าการใช้คอมเก่ง (ใช้โปรแกรมเก่ง) แล้วจะเขียนโปรแกรมเก่งไปด้วยน่ะเหรอ มันไม่ใช่เลย
หลายคนที่ชอบเล่นเกม แล้วเลือกเอนฯ เข้าคณะทางคอมเพราะอยากสร้างเกมต้องปวดใจมาหลายคนแล้ว เพราะการเปลี่ยนตัวเองจากผู้ใช้ไปเป็นผู้สร้างมันไม่ได้ง่ายขนาดนั้น
เอ๊ะ เดี๋ยวก่อน .. มันก็ไม่ได้ยากเช่นกัน เพียงแต่ว่าคุณจะเหมาะกับมันหรือเปล่า
ทุกศาสตร์ในโลกนี้มีทั้งคนที่ ถนัด และ ไม่ถนัด
การเขียนโปรแกรมก็เช่นเดียวกัน
ถ้าคุณตรัสรู้ถึงหลักการแห่งโปรแกรมมิ่งเมื่อไหร่ .. มันก็เป็นเรื่องง่ายสำหรับคุณ
แต่ใช่ว่าเราจะพึ่ง sense อย่างเดียวไม่! การฝึกฝนและประสบการณ์ก็เป็นอีกอย่างที่จะทำให้คุณปิ๊งถึงหลักการของโปรแกรมมิ่งได้เช่นกัน
เอ้า เข้าเรื่องดีกว่า!!
(แล้วที่ผ่านมาแกจะร่ายมาทำไมตั้งยืดยาว?)
อยากเขียนโปรแกรม เริ่มยังไงดี?
บอกไว้ก่อนว่าคุณไม่จำเป็นต้องเข้าเรียนคณะทางคอม คุณก็เขียนโปรแกรมได้ (แต่ส่วนใหญ่จะได้ช้ากว่าคนที่เขียนเรียนทางคอม เพราะคนพวกนั้นเขาเจอมันอยู่ทุกวัน เป็นการบังคับให้เขียนมันเข้าไปทุกวัน)
แล้วถ้าเราไม่ได้เรียนทางคอมมา เริ่มตรงไหนดีล่ะ?
คุณต้องเป็นคนใฝ่รู้ก่อนเป็นอันดับแรก
โลกสมัยอินเตอร์เน็ตกลายมาเป็นปัจจัยที่5แบบทุกวันนี้ทำให้โลกเปลี่ยนไปเร็วมาก โดยเฉพาะโลกของคอมพิวเตอร์ที่เปลี่ยนแปลกบ่อยมาก แค่คุณหยุดหาความรู้ สกิลด้านโปรแกรมมิ่งของคุณก็ล้าหลังซะแล้ว ดังนั้น อ่านมันเข้าไปเถิด ยิ่งอ่านเยอะคุณก็จะเห็นคอนเซ็ปมันชัดมากขึ้น
เดี๋ยวนี้มีหนังสือดีๆ มากมายเขียนกันออกมาเกี่ยวกับพวก How to ซึ่งการเขียนโปรแกรมก็เป็นหนึ่งในนั้น
แต่ปัญหาสำหรับบางคนก็คือ How to น่ะ มันเขียนออกมาดูเหมือนจะเข้าใจ แต่ทำไมเวลาไปทำจริงๆ แล้วมันไม่เห็นจะได้บ้างเลย
นั่นแหละครับ .. คุณต้องการประสบการณ์มาช่วย
ป.ล. อย่าไปกลัวภาษาอังกฤษหากคิดจะเขียนโปรแกรม! หากคุณเขียนโปรแกรมแล้วมีปัญหา คำตอบของคุณมีคนเจอมาแลวล่ะ ลองเข้าไปดูในเว็บไซท์ stackoverflow.com นะ มันเป็น google ของชาวโปรแกรมเมอร์เลยเชียวล่ะ
แต่ก่อนหน้านั้นเรามาพูดถึงเรื่องแนวคิดการเขียนโปรแกรมกันก่อนดีกว่า
มันก็แค่...เครื่องคำนวณ นั่นหมายความว่า มันคำนวณได้ แต่ "คิด" ไม่ได้!
คุณขี้เกียจมั้ย...??
เออน่า ตอบมาเถอะ ไม่มีใครว่าคุณหรอก
เพราะเราเองก็ขี้เกียจเหมือนกัน
และไม่ใช่แค่เราซะด้วย!
มนุษย์ทุกคนขี้เกียจหมดนั่นแหละ เอ้า หรือว่าไม่จริง ไม่มีใครหน้าไหนอยากทำงานหรอก
และเนื่องจากมนุษย์ขี้เกียจ คนเราจึงพัฒนาและประดิษฐ์สิ่งของต่างๆ มากมายขึ้นมาเพื่ออำนวยความสะดวกแก่เรา
- คนสร้างเตาไฟขึ้นมาเพื่อเราจะได้ไม่ต้องจุดไฟหุงอาหารเอง
- คนสร้างรถยนต์ขึ้นมาเพราะเราขี้เกียจเดิน
- คนสร้าง@#$%&*ขึ้นมาเพราะเราขี้เกียจทำอะไรสักอย่าง
- คนสร้าง...โหย อีกเยอะแยะเลย
เราจะเห็นได้ว่าเมื่อมนุษย์ขี้เกียจทำอะไรพวกเราก็จะ “คิด” สร้างสิ่งใหม่ๆ ขึ้นมาทำหน้าที่แทนพวกเขา
งั้น...?
อะไรล่ะที่มนุษย์ทำบ่อยที่สุด...ถูกต้องแล้วล่ะครับ
“คิด” ไงล่ะ...นั่นคือสิ่งที่มนุษย์ทำบ่อยที่สุด พวกเราต้องคิดให้สมองแล่นไม่มากก็น้อยอยู่ตลอดเวลาที่คุณตื่นอยู่ (แม้แต่ตอนที่คุณนั่งเหม่อสมองคุณก็ยังคิด แม้แต่นอนอยู่สมองคุณก็ยังไม่หยุดทำงาน)
เพราะฉะนั้นแล้ว...หากมีอะไรที่มาช่วยมนุษย์คิดได้ก็คงจะดีไม่น้อย และด้วยเหตุฉะนี้แหละ คอมพิวเตอร์ หรือแปลแบบตรงๆ ก็คือ “เครื่องคำนวณ” พวกนี้จึงเกิดขึ้น
แล้วคอมพิวเตอร์มันดียังไงล่ะ?
คำตอบของคำถามนี้คงมีอยู่เป็นพันๆ คำตอบแน่นอนเพราะถ้าคุณถามคนที่ใช้งานคอมทั่วไปก็คงจะได้คำตอบประมาณว่าใช้ทำงาน เล่นเกม Facebook และก็เอ็นเตอร์เทนอีกมากมาย
แต่จุดเด่นที่สุดของเครื่องคำนวณพวกนี้มันก็พอจะแบ่งง่ายๆ ได้ประมาณนี้ล่ะนะ
- ความเร็ว อืม...คอมพิวเตอร์คิดเร็วกว่าคนเป็นล้านๆ เท่า (ขอเสียงหน่อย ว้าว ^o^) ลองคลิกขวาที่ไอคอนMy Computerแล้วเลือกpropertiesดูก็ได้ว่าคอมของคุณน่ะคิดเร็วขนาดไหน และเผื่อสำหรับคนที่ยังตามไม่ทัน บอกให้เลยละกันว่าทุกวันนี้คอมพิวเตอร์จะมีหน่วยวัดความเร็วในการประมวลผล หรือเอาง่ายๆ ก็ประมาณว่ามันคิดเร็วเท่าไหร่นั่นแล เป็น GHz เช่น 2.0GHz หมายความว่า ใน1วินาที มันสามารถคิดได้ถึง 2,000,000,000 ครั้งเชียวนะ!!
- ความถูกต้องแม่นยำ ไม่ว่าคุณจะกดให้มันคิดหาคำตอบของสมการ x = 15.24*4y + 4.127 บลา..ๆๆ มันก็ชัวร์ว่าคำตอบที่ออกมาจะถูกต้องเกือบ 100% (เราใช้คำว่าเกือบนะเพราะมีโอกาสอีก 1% ที่มันจะผิดได้เหมือนกัน)
- การทำงานซ้ำๆ กัน แน่นอนว่าคอมของคุณน่ะมันไม่เคยบ่นแม้ว่าคุณจะสั่งให้มันทำงานที่น่าเบื่อหน่ายแค่ไหนก็ตาม
เอาง่ายๆ เลยเช่นคุณกดเปิดโปรแกรมมาซะครั้งหนึ่งแล้วปิดมันไป ตามมาด้วยการเปิดโปรแกรมนั้นใหม่ซ้ำไปเรื่อยๆ คุณจะเห็นว่าคอมของคุณอ่ะมันก็จะโหลดข้อมูลของโปรแกรมขึ้นมาแล้วก็เซฟข้อมูลโปรแกรมเก็บไว้เมื่อคุณเปิดปิดอย่างไม่รู้จักเบื่อ...ลองไปทำแบบนี้กับคนสิ แค่สั่งวกวนครั้งสองครั้งก็โดนว่าได้แล้ว อิอิ - เก็บข้อมูลได้เยอะ! ไม่ต้องพูดอะไรมาก เข้าใจกันหมดนะทุกคน
นอกจากนี้มันยังมาพร้อมกับความสามารถที่เด็กนักเรียนก่อนเข้าห้องสอบอยากได้นั่นคือ "สามารถเพิ่ม memory ได้เรื่อยๆ อย่างไม่มีจำกัด" (ตามทุนทรัพย์ของคุณ) อีกด้วยนะ - ความน่าเชื่อถือ อา...เคยไหม กำลังทำงานหรือทำการบ้านอยู่แล้วพอส่งคำตอบให้เพื่อน เพื่อนกลับบอกว่าขอเช็คอีกที่แล้วก็หันไปหาคอมพิวเตอร์ให้คิดคำตอบให้ในทันทีก่อนจะบอกว่าเราคิดผิดถ้าคำตอบไม่ตรง หรือยอมรับโดยง่ายดายว่าคำตอบถูกถ้ามันตรงกับสิ่งที่คอมตอบออกมา (จะเห็นได้ชัดกับพวกวิชาทางวิทย์หรืออะไรที่เกี่ยวกับตัวเลข)
A: แกไม่เชื่อฉันเหรอ วันนี้จะมีพายุพัดถล่มเมืองนะ เราต้องอพยพผู้คน
B: มันจะเป็นไปได้ยังไงกันฮะ
A: ฉันดูจากเมฆที่มันลอยตัว เมื่อวานนกบินหลบไปทางใต้ฝูงใหญ่ แล้วก็ บลาๆๆๆ
B: ไม่ อย่ามาเดาสุ่มแบบนั้นสิ มันเชื่อถือไม่ได้! เอ๊ะ สักครู่นะ ... แย่แล้ว! คอมพิวเตอร์บอกว่าตอนนี้ความกดอากาศกำลัง@#$%^& นั่นหมายความว่าจะมาพายุ10ลูกพัดถล่มเมืองเรา
A: ทำไมทีนี้เชื่อล่ะ?
B: ก็คอมมันบอกอย่างนี้...
ป.ล.อย่าไปจริงจังกับบทสนทนานี้มากนะ คนเขียนกำลังโม้ (ฮา)
เอาล่ะ อาจจะมีอะไรอีกแต่ก็ไม่สำคัญแล้วล่ะ เอาเป็นว่าแค่จุดเด่นพวกนี้ก็ทำให้คอมพิวเตอร์อยู่ในแทบจะทุกครัวเรือนได้แล้ว
แต่ก็แน่นอน...
คอมพิวเตอร์ไม่ได้เป็นผู้วิเศษที่ทำได้ทุกอย่าง
พวกมันทำงานผิดพลาดได้และบ่อยครั้ง...ที่พวกมันหยุดทำงานซะด้วยสิ!!
คอมพิวเตอร์เป็นสิ่ง(ไม่)มีชีวิตที่โง่มาก มันคิดเองไม่เป็น!
ดังนั้น หน้าที่ในการทำตัวเป็นสมองให้กับคอมพิวเตอร์จึงตกเป็นของ "กรรมกรผู้ใช้แรงงานทางสมอง" ที่เรียกว่า โปรแกรมเมอร์ ไงล่ะ
รู้จักภาษาโปรแกรมมั้ย?
คุณจะคุยกับคนจีน (ถือว่าคนจีนคนนั้นพูดไทยไม่ได้ อังกฤษก็ไม่เอา) คุณก็ต้องเริ่มด้วยการหัดเรียนภาษาจีน (อยากบอกว่าให้เขาเรียนภาษาไทยนะ ไม่เอาๆ) .. กับคอมพิวเตอร์ก็เหมือนกันนั่นแหละ
อยากคุยกับคอมพิวเตอร์ ก็หัดเรียนภาษาคอมฯ ซะ
ตัวอย่างภาษาโปรแกรม php (ส่วนหนึ่งของ Laravel Framework) |
จากที่เห็น นี่มันภาษาอังกฤษนี่นา?
ใช่แล้ว ภาษาคอมพิวเตอร์เป็นภาษาอังกฤษ คุณอ่านมันออก เยี่ยมไปเลย ..แต่ไม่รู้ละสิว่าแต่ละคำ แต่ละบรรทัดมันคืออะไร (อิอิ)
ปัจจุบันภาษาโปรแกรมพัฒนามาไกลแล้ว เราจะไม่ย้อนกลับไปพูดถึงภาษาที่เป็นต้นตระกูลของภาษาโปรแกรมที่ใช้อยู่ในตอนนี้ (แค่นี้ก็ออกนอกเรื่องไปไกลแล้ว คอยติดตามในบทความต่อๆ ไปละกัน)
ภาษาโปรแกรมตอนนี้ใช้งานง่าย และมีประสิทธิ์ภาพสูง นั่นช่วยให้่โปรแกรมเมอร์ทำงานง่ายขึ้นและได้งานเร็วขึ้น
แล้วเราจะเริ่มจากภาษาไหนล่ะ?
คำถามนี้ไม่มีคำตอบตายตัว เราเคยอ่านบทความของ guru บางท่าน เขากล่าวเอาไว้ว่า
ภาษาโปรแกรมก็เหมือนกับศาสนา แต่ละคนเลือกได้ที่จะ "เชื่อ" และ "ศรัทธา" ในภาษาที่ต่างกัน ภาษาแต่ละภาษาก็มีหลักคำสอน (สไตล์การเรียกใช้งาน) ต่างกันไปทั้งข้อดีและข้อเสีย
จนกว่าคุณจะหาภาษาที่เหมาะกันคุณได้ ก็คงต้องใช้เวลานาน เพราะคอนเซ็ปของแต่ละภาษาก็ไม่ต่างกันมากหรอก จะมีก็แต่รายละเอียดซึ่งกว่าคุณจะรู้ลึกถึงรายละเอียดได้ก็คงต้องผ่านการเขียนภาษานั้นมาอย่างเชี่ยวชาญแล้ว
ตัวอย่างภาษาโปรแกรมที่ใช้กันเยอะ
- C/C++ เป็นภาษาเก่าที่มีการพัฒนามาอย่างยาวนาน มีความสามารถของภาษาระดับต่ำแต่เขียนแบบภาษาระดับสูงได้ เหมาะกับการเอาไว้สอนเบสิกมากๆ บอกตรง (ภาษานี่ดีนะ แต่คุมยากมาก)
- Java ภาษาที่มากับคอนเซ็ปที่ดูหรูเลิศอย่าง write once, run anywhere คือเขียนครั้งเดียวแล้วเอาโปรแกรมของเราไปใช้เครื่องไหนก็ได้ ว๊าว ...ทว่า! เงื่อนไขที่มันไม่ได้พูดไว้คือเครื่องคอมเครื่องนั้นต้องลงโปรแกรมจำลองสภาพ JVM ของ Java เสียก่อน .. และนั่น ทำให้โปรแกรมภาษานี้ รันได้อืดอย่างไม่น่าเชื่อ (แต่เราชอบภาษานี้นะ)
- VB และ C# .NET ภาษาจากบริษัทยักใหญ่ทางด้าน IT อย่างไมโครซอฟท์ คอนเซ็ปก็ค่อนข้างจะดี (แต่เหมือนลอกภาษาแถวๆ นี้มานะ) ที่ว่าwrite once, run anywhere คือเขียนครั้งเดียวแล้วเอาโปรแกรมของเราไปใช้เครื่องไหนก็ได้ ว๊าว .. เอ๊ะ คุ้นๆ เนอะ 55+
- php ตัวนี้เป็นตระกูลภาษา script หรือภาษาในรูปแบบของ interpreter (ภาษาที่ผ่านมาจะเป็นนแบบ compiler) ทำให้มันเขียนได้ dynamic มาก ความคล่องตัวสูง (เป็นภาษาที่ชอบที่สุดในขณะนี้)
สังเกตว่าชื่อภาษาโปรแกรมมันแปลกๆ บ้างมั้ย ส่วนใหญ่มันมาจากตัวย่อ เช่น ภาษา C เป็นภาษาที่พัฒนามาจาก ภาษา B ซึ่งพัฒนามาจาก ภาษา A อีกที 555+
นอกจากนี้ยังมีภาษาโปรแกรมอีกเป็นร้อยในโลกนี้ ซึ่งคุณรู้สึกถูกชะตากับภาษาไหนก็เลือกมาซักตัวเถอะ ในระดับเบื้องต้นมันไม่ต่างกันเท่าไหร่หรอก
คอมพิวเตอร์เป็นพวกเถรตรง และมันก็ทำงานได้ทีละอย่างซะด้วย
ไม่ว่าคุณจะเลือกภาษาไหนมา ตัวอย่างเช่น คุณเลือก Java (เนื่องจากคุณชอบกินกาแฟ .. และหากใครไม่รู้ Java เป็นเชื่อกาแฟนะครับ) สิ่งแรกที่่คุณจะต้องทำก็คือเรียนรู้ว่าภาษา Java มีหลัก ไวยากรณ์ ของภาษาเป็นยังไง
ภาษาทุกภาษามีหลัก gamma ของมัน ซึ่งภาษาพูดของคนอนุญาตให้เราแหกกฎได้ในบางครั้ง เช่นเราพูดว่า I is a boy. (อย่าพูดเป็นเล่นไป ฝรั่งบางคนก็หลุดคำแบบนี้ออกมาได้นะ) คนฟังก็เข้าใจได้ ..มันแปลก แต่มนุษย์มีความสามารถในการทำความเข้าใจที่สุดมาก
แต่มันไม่ใช่กับคอมพิวเตอร์นะ ภาษาโปรแกรมมีสิ่งที่เรียกว่า syntax ซึ่งมันก็คือหลักไวยากรณ์ของภาษานั้นๆ และมันไม่อนุญาตให้เราแหกกฎใดๆ ทั้งสิ้นด้วย!
ดังนั้นการสั่งให้คอมพิวเตอร์ทำอะไร (ผ่านภาษาโปรแกรม) เราจำเป็นต้องละเอียด และจัดแจงคำสั่งให้ดีๆ เป็นขั้นตอนที่เขาเรียกว่า Algorithm อ่านว่า อัลกอริทึ่ม ... ชื่ออาจจะฟังดูทึ่มๆ นั่นเป็นเพราะเราจะต้องสั่งงานแบบที่สิ่งที่ทึ่มที่สุดในโลกยังเข้าใจได้นั่นเอง (อ๊ะ หลังๆ ไม่เกี่ยวนะ คนเขียนโม้อีกแล้ว)
ซึ่งสิ่งที่ยากที่สุดในเรื่องการเขียนโปรแกรมก็คือ algorithm นี่แหละ
เดี๋ยวจะมาเขียนต่อตอนต่อไปนะ...วันนี้พอแค่นี้ก่อน ขอบคุณที่ติดตามอ่าน เนื้อหาหลุดสาระไปเยอะพอดู
เขียนได้น่าอ่านมากครับ แต่ออกทะเลบ่อยนะพี่ 555 (ขอติดตามจ้าาาา กำลังหัดเขียนโปรแกรม ตอนนี้อยู่ม.6 เขียนเป็นแต่เว็บ =w=)