วิชาคณิตศาสตร์ (Math) เป็นเสมือนยาพิษสำหรับชีวิตนักเรียน ในทางกลับกันวิชาวิทยาศาสตร์คอมพิวเตอร์ (หรือ วิทยาการคอมพิวเตอร์ - Computer Science) เป็นสิ่งที่น่าสนใจของใครหลาย ๆ คน ด้วยความฝันที่จบมาได้เป็นโปรแกรมเมอร์ ได้ทำงานกับคอมพิวเตอร์ แถมเงินเดือนยังดีอีกด้วย ฟังดูเป็นความฝันที่สวยงาม แต่น่าเศร้าที่ต้องบอกว่าการเรียนวิทยาศาสตร์คอมพิวเตอร์นั้น เป็นเรื่องยากที่จะหลีกเลี่ยงการใช้คณิตศาสตร์
มหาวิทยาลัยอ๊อกซฟอร์ด (University of Oxford) ได้เคยกล่าวเอาไว้ว่า "คณิตศาสตร์เป็นเครื่องมือพื้นฐานตัวสำคัญที่คอมพิวเตอร์ใช้ในการคำนวณ แต่คอมพิวเตอร์ก็ถูกนำมาใช้เป็นองค์ประกอบหลักในการแก้ปัญหาทางคณิตศาสตร์มากขึ้นด้วยเช่นกัน"
อ่านแล้วอาจจะรู้สึกลักลั่นย้อนแย้ง ในเมื่อคอมพิวเตอร์ในปัจจุบันนี้สามารถแก้ปัญหาคณิตศาสตร์ให้เราได้แล้ว ทำไมคณิตศาสตร์ถึงยังสำคัญต่อการเรียนวิทยาศาสตร์คอมพิวเตอร์อยู่อีก ? มาอ่านกันต่อได้เลย ...
ก่อนที่จะอธิบายลงลึกในรายละเอียด มีสิ่งสำคัญที่อยากจะจดจำเอาไว้ก่อนว่า ไม่ใช่ว่านักวิทยาศาสตร์คอมพิวเตอร์ทุกคนจะใช้คณิตศาสตร์เป็นประจำ ในความเป็นจริง มีบางคนไม่เคยใช้มันด้วยซ้ำ แต่คณิตศาสตร์ก็ยังมีประโยชน์ด้วยสองเหตุผล
หลักคณิตศาสตร์ส่วนใหญ่แล้วจะสอนด้วยภาวะนามธรรม (Abstraction) หมายถึง กระบวนการขยายความสาระสำคัญ ที่เป็นหลักพื้นฐานของแนวความคิดทางคณิตศาสตร์ โดยไร้ข้อผูกมัดกับความเป็นจริง ซึ่งปกติอาจเชื่อมโยงกันอยู่ โดยเป็นการให้ความหมายทั่วไปของแนวความคิดนั้น เพื่อให้สามารถนำไปประยุกต์ใช้กับสิ่งต่าง ๆ ได้อย่างกว้างขวางมากขึ้น
ในการเรียนวิทยาศาสตร์คอมพิวเตอร์ เราก็จำเป็นต้องเรียนภาษาโปรแกรมมิ่ง (Programming Language) ซึ่งธรรมชาติของภาษาเหล่านี้ ส่วนใหญ่ก็เป็นภาวะนามธรรมด้วยเช่นกัน มีไวยากรณ์, กระบวนการที่ถูกกำหนดไว้, สัญลักษณ์ ฯลฯ คล้ายคลึงกับภาษาทางคณิตศาสตร์
การคุ้นชินกับภาวะนามธรรมจึงสามารถช่วยให้คุณเรียนรู้ และเข้าใจภาษาโปรแกรมมิ่งได้ราบรื่นมากขึ้น คณิตศาสตร์ยังช่วยปูพื้นฐานทักษะการอ่าน, ทำความเข้าใจ และวิเคราะห์ เพื่อนำไปสู่แนวทางแก้ไขปัญหา โดยทั่วไปแล้ว ทักษะเหล่านี้มีความสำคัญต่อการเขียนโปรแกรม และการศึกษาวิทยาศาสตร์คอมพิวเตอร์
อัลกอริทึม คือ ชุดลำดับคำสั่งที่ใช้แก้ปัญหาอย่างใดอย่างหนึ่ง เป็นกระบวนการแก้ปัญหาที่สามารถอธิบายออกมาเป็นขั้นตอนที่ชัดเจน เมื่อนำเข้าข้อมูลอะไรไป แล้วจะต้องได้ผลลัพธ์เช่นไร กระบวนการนี้ประกอบไปด้วย วิธีการเป็นขั้น ๆ และ ส่วนที่ต้องวนซ้ำ (Loop) จนกระทั่งเสร็จสิ้นการทำงาน และได้ผลลัพธ์
ในสาขาวิทยาศาสตร์คอมพิวเตอร์ อัลกอริทึมเป็นพื้นฐานที่ต้องใช้ในการพัฒนาซอฟต์แวร์ หรือแอปพลิเคชัน แม้ว่าคนส่วนใหญ่จะเจอกับคำว่าอัลกอริทึมเป็นครั้งแรกในชั้นเรียนวิทยาศาสตร์คอมพิวเตอร์ แต่ความจริงเราเจอคำนี้ตั้งแต่ในชั้นเรียนคณิตศาสตร์ตอนประถม หรืออนุบาลแล้วด้วยซ้ำ สมการง่าย ๆ อย่าง "1+1 = 2" ก็ถือว่าเป็นอัลกอริทึมเช่นกัน เพียงแต่ในการเรียนวิทยาศาสตร์คอมพิวเตอร์สมการมันจะมีความซับซ้อนขึ้นไปอีกหลายขั้น
การเขียนโค้ดไม่ใช่กระบวนการแบบทางเดียวที่เขียนเสร็จแล้วงานจบทันที เราจำเป็นต้องตรวจทานโค้ดของเราอีกรอบว่ามันถูกต้องหรือเปล่า เพราะมันเป็นเรื่องปกติที่จะมีข้อผิดพลาดเกิดขึ้นในโค้ด ตัวอย่างเช่น ระบบปฏิบัติการ Windows 10 ที่มีโค้ดประมาณ 50 ล้านบรรทัด ไม่มีทางเลยที่จะไม่มีข้อผิดพลาดเกิดขึ้นในระหว่างการพัฒนา
ในการเรียนคณิตศาสตร์ ผู้เรียนจะถูกบังคับให้ตรวจสอบการคำนวณอยู่แล้ว เพื่อให้เกิดความมั่นใจว่าคำตอบที่หาได้นั้นเป็นคำตอบที่ถูก เป็นขั้นตอนที่ไม่ต่างจากการตรวจหาข้อผิดพลาดในโค้ดเพื่อแก้ไขบั๊กที่มีอยู่ แม้ปัจจุบันนี้จะมีเครื่องมือที่ช่วยตรวจสอบโค้ดให้อัตโนมัติ แต่นักพัฒนาก็จำเป็นต้องรู้วิธีตรวจสอบข้อผิดพลาดด้วยตนเองอยู่ดี
นอกเหนือจากทักษะที่เราได้กล่าวไปข้างต้นแล้ว คุณจะต้องเจอกับคณิตศาสตร์เป็นจำนวนมาก พวกตรรกศาสตร์, พีชคณิต, สถิติ, แคลคูลัส ฯลฯ จำเป็นต่อการนำไปมาสร้างอัลกอริทึมเพื่อใช้ในเขียนโค้ด แน่นอนว่าคุณจะเรียนรู้สิ่งเหล่านี้ได้จากวิชาคณิตศาสตร์
ตัวอย่างเช่น การจะเขียนโปรแกรมสำหรับควบคุมรถยนต์แบบไร้คนขับ การจะแปลงข้อมูลที่เซ็นเซอร์จับได้ ไม่ว่าจะเป็นระยะห่าง, ความเร็ว, ระยะเบรก, องศาที่พวงมาลัยต้องหมุน จำเป็นต้องใช้สูตร และสมการทางคณิตศาสตร์มากมาย หากคุณไม่มีความรู้ด้านคณิตศาสตร์เลย มันจะยากมาก หรือแทบเป็นไปไม่ได้ที่จะเขียนโปรแกรมนี้ออกมาได้สำเร็จ
ภาพจาก https://www.engadget.com/2017-10-17-intel-mobileye-autonomous-vehicle-safety.html
วิยุตคณิต หรือคณิตศาสตร์ไม่ต่อเนื่อง (Discrete mathematics) เป็นการศึกษาโครงสร้างทางคณิตศาสตร์ซึ่งมีลักษณะเป็นค่าเฉพาะเจาะจง และไม่ต่อเนื่อง แนวคิดจากวิยุตคณิตมีประโยชน์ในการศึกษา หรืออธิบายปัญหาที่เกิดขึ้นในขั้นตอนการเขียนโปรแกรมได้
สามารถกล่าวได้ว่าวิยุตคณิตได้กลายเป็นรากฐานที่สำคัญของการเรียนพัฒนาโปรแกรม และวิทยาศาสตร์คอมพิวเตอร์ มันช่วยให้คุณเข้าใจอัลกอริทึม,การคำนวณ และการจัดการกับความซับซ้อนได้ดียิ่งขึ้น เพื่อสร้างฟังก์ชันควบคุมตามที่ต้องการได้ในเวลาที่คุณเขียนโปรแกรม หากคุณเชี่ยวชาญวิชาคณิตศาสตร์เหล่านี้อย่างถ่องแท้แล้ว จะทำให้คุณเรียนวิชาวิทยาศาสตร์คอมพิวเตอร์ได้ง่ายยิ่งขึ้น
แม้เราจะกล่าวมาอย่างยาวเหยียดถึงความสำคัญของคณิตศาสตร์ในการเรียนวิทยาศาสตร์คอมพิวเตอร์ แต่เอาจริงๆ สิ่งที่มีให้เรียนในภาควิชานี้นั้นมีย่อยออกไปอีกหลายแขนง และถึงแม้ในการเรียนวิทยาศาสตร์คอมพิวเตอร์จะมีคณิตศาสตร์เข้ามาเกี่ยวข้องมากมาย แต่ไม่ใช่ว่าในการเขียนโค้ด คุณจะต้อง "เก่ง" คณิตศาสตร์เสมอไป (แต่ไม่ใช่ว่าไม่มีเลยนะ อย่างน้อยก็ควรเข้าใจเรื่องตรรกศาสตร์ และแคลคูลัส)
ถ้าคุณต้องสร้างเกม, 3D Rendering Engine หรือพัฒนา แอปพลิเคชัน GIS (Geographic Information System) หรือจะเรียนรู้หรือคิดค้นในเรื่องของวิทยาการเข้ารหัส (Cryptography), Bloackchain, Artificial Intelligence หรือ Machine Learning อะไรจำพวกนี้นั้น แน่นอนว่าคุณจำเป็นต้องมีสกิลทักษะทางคณิตศาสตร์ระดับสูงเลยล่ะ และสูตรคณิตศาสตร์ที่ใช้ก็มีความซับซ้อนมาก คุณอาจจะไม่ต้องเก่งคณิตศาสตร์ถึงขนาดที่สร้างสูตรเหล่านี้เอง ขอแค่มีความรู้คณิตศาสตร์ในระดับที่สามารถเข้าใจอัลกอริทึมหลักการทำงานของมันได้
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |