Math vs Code: ตรรกะที่ซ้อนทับกัน
นั่งแก้โจทย์คณิตศาสตร์จนปวดหัว กับนั่งแก้บั๊กจนตี 3 จริง ๆ แล้วมันคือเรื่องเดียวกันไหม? มาดูว่าทำไมคนเก่งคณิตศาสตร์มักเขียนโค้ดเก่ง
สารบัญ

เคยไหม? นั่งหน้าจอคอมพิวเตอร์แก้บั๊กจนตี 3 จนตาเบิ้ม แล้วนึกขึ้นได้ว่าความรู้สึกนี้มันคุ้น ๆ เหมือนตอนนั่งทำโจทย์แคลคูลัสสมัยม.ปลาย ที่นั่งเทียนหาคำตอบจนปวดหัว
หลายคนอาจมองว่าคณิตศาสตร์กับการเขียนโปรแกรม (Programming) เป็นคนละโลก อันนึงอยู่ในสมุดฝึกหัดเรียน อีกอันนึงอยู่ในจอคอมพิวเตอร์ของนักพัฒนา แต่ถ้าบอกคุณว่า ตรรกะของทั้งสองสิ่งนี้มันซ้อนทับกันเป๊ะ ๆ ล่ะ?
วันนี้เราจะมาเปิดมุมมองใหม่ ว่าทำไมเด็กที่เก่งคณิตศาสตร์มักจะเขียนโค้ดได้ไม่ยาก และถ้าคุณเก่งโค้ดอยู่แล้ว การกลับไปเรียนคณิตศาสตร์ก็ไม่ใช่เรื่องยากอย่างที่คิด
ฟังก์ชันในคณิตศาสตร์ คือ Function ในโค้ด
เริ่มจากสิ่งที่ง่ายที่สุดก่อน ในวิชาคณิตศาสตร์ เราเรียนเรื่องฟังก์ชัน (Function) สมมุติว่าเรามีสมการง่าย ๆ ว่า f(x) = 2x + 1 มันหมายความว่า ถ้าเราใส่ค่า x เข้าไป มันจะคูณ 2 และบวก 1 ออกมาเป็นผลลัพธ์
ในโลกของการเขียนโปรแกรม โดยเฉพาะภาษา Python เราก็เขียนฟังก์ชันเหมือนกันเป๊ะ ๆ
def f(x):
return 2 * x + 1
เห็นไหมล่ะ? มันคือเรื่องเดียวกัน คณิตศาสตร์ใช้สัญลักษณ์เพื่อสื่อสารความสัมพันธ์ระหว่างตัวแปร ส่วนโค้ดก็ใช้ภาษาโปรแกรมเพื่อบอกคอมพิวเตอร์ว่าให้ทำอะไรกับข้อมูลที่ส่งเข้ามา ทั้งคู่มี Input และ Output
ตัวแปรและสมการ: การกำหนดค่าในสองโลก
ในวิชาพีชคณิต เราเรียนเรื่องการแก้สมการ เช่น x + 5 = 10 เรารู้ว่า x คือตัวแปรที่เก็บค่าไว้ และเป้าหมายของเราคือหาค่าของ x ที่ทำให้สมการเป็นจริง
ในโลกของโปรแกรมเมอร์ เราก็ทำแบบเดียวกัน แต่เราเรียกมันว่าการ "ประกาศตัวแปร" (Variable Declaration) และ "กำหนดค่า" (Assignment)
x = 10 - 5
print(x) # ผลลัพธ์คือ 5
ความคล้ายคลึงกันไม่ได้หยุดแค่ตัวเลข ในคณิตศาสตร์เรามีเซต (Set) ที่เก็บสมาชิกที่ไม่ซ้ำกัน ในโค้ดเราก็มีข้อมูลประเภท Set หรือ Array/List ที่เก็บข้อมูลย่อย ๆ ไว้เหมือนกัน การจัดกลุ่มข้อมูลให้เป็นระบบคือหัวใจของทั้งสองวิชา
ลูปและซิกม่า: การวนซ้ำในสองโลก
ถ้าคุณเคยเจอสัญลักษณ์ Sigma () ในห้องเรียนคณิตศาสตร์ มันคือการบอกให้เราบวกค่าตั้งแต่จุดเริ่มต้นจนถึงจุดสิ้นสุด เช่น ผลรวมของ ตั้งแต่ 1 ถึง 5 ก็คือ
ในการเขียนโปรแกรม เราไม่ได้นั่งบวกทีละตัวเอง เราใช้ "Loop" หรือการวนซ้ำ เช่น for loop เพื่อให้คอมพิวเตอร์บวกให้เรา
sum = 0
for i in range(1, 6):
sum += i
print(sum) # ผลลัพธ์คือ 15
สัญลักษณ์ ในคณิตศาสตร์ ก็คือ for loop ในการเขียนโค้ดนั่นเอง มันคือวิธีการอธิบาย "การทำซ้ำ" (Iteration) ที่กระชับและเป็นสากล
เงื่อนไข If-else กับฟังก์ชันแบบเป็นช่วง (Piecewise Function)
ในคณิตศาสตร์ เรามีฟังก์ชันที่ให้คำตอบต่างกันตามช่วงของค่า ยกตัวอย่างฟังก์ชันค่าสัมบูรณ์ (Absolute Value) ก็ได้
ถ้า แล้ว ถ้า แล้ว
ในโลกของโค้ด นี่คือเงื่อนไข if-else ที่เราใช้กันทุกวัน!
def absolute_value(x):
if x >= 0:
return x
else:
return -x
การเขียนโค้ดที่ดี คือการคิดว่า "ถ้าเกิดเหตุการณ์ A จะเกิดอะไรขึ้น ถ้าเกิดเหตุการณ์ B จะเกิดอะไรขึ้น" ซึ่งนี่คือกระบวนการคิดเชิงตรรกะ (Logical Thinking) ที่ครูคณิตศาสตร์พยายามปลูกฝังให้เราตั้งแต่สมัยเด็ก
กรณีศึกษา: โจทย์คำนวณเกรดเฉลี่ย
ลองมาดูโจทย์จริงที่นักเรียนและนักศึกษาต้องเจอ สมมติเราต้องการคำนวณเกรดเฉลี่ย (GPA) โดยมีเกรด A=4, B=3, C=2, D=1, F=0
มุมมองคณิตศาสตร์: เราจะตั้งสมการว่า
มุมมองโปรแกรมเมอร์: เราจะเขียนโค้ดเพื่อให้คอมพิวเตอร์คำนวณสมการนั้นให้
grades = ['A', 'B', 'A', 'C']
grade_points = {'A': 4, 'B': 3, 'C': 2, 'D': 1, 'F': 0}
total = 0
for grade in grades:
total += grade_points[grade]
gpa = total / len(grades)
print(f"Your GPA is: {gpa}")
จะเห็นว่า ก่อนที่จะเขียนโค้ดได้ เราต้องเข้าใจสมการคณิตศาสตร์ก่อน และเมื่อเราเข้าใจสมการแล้ว การแปลงมันเป็นโค้ดก็เป็นเพียงแค่การเลือกใช้ Syntax ของภาษาโปรแกรมให้ถูกต้องเท่านั้นเอง
พลิกมุมมอง: ถ้าเก่งโค้ดแล้วเรียนคณิตศาสตร์ง่ายขึ้นไหม?
คำตอบคือ "ง่ายขึ้นแน่นอน" การเขียนโปรแกรมช่วยให้เราเห็นภาพนามธรรมในคณิตศาสตร์ได้ชัดเจนขึ้น
เวลาเราเรียนเรื่องการหาค่า Factorial (n!) ในคณิตศาสตร์ เช่น 5! = 5 x 4 x 3 x 2 x 1 บางคนอาจจะคิดไม่ออกว่ามันจะนำไปใช้ทำอะไรได้ แต่ในโลกของโปรแกรมเมอร์ เราใช้มันในการหาความน่าจะเป็น การจัดเรียงข้อมูล (Permutations) หรือแม้แต่การเขียนฟังก์ชันแบบเรียกซ้ำ (Recursion)
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
การเขียนฟังก์ชันแบบ Recursion นี้ก็คือแนวคิดของ "Mathematical Induction" (การพิสูจน์โดยอุปนัย) ในคณิตศาสตร์นั่นเอง คือเราต้องหา Base case (จุดที่จบ) และ Inductive step (การทำซ้ำไปเรื่อย ๆ จนถึงจุดจบ)
สรุป: คณิตศาสตร์และโค้ดคือเครื่องมือแก้ปัญหา
จริง ๆ แล้ว คณิตศาสตร์และการเขียนโปรแกรมไม่ใช่ศัตรูกัน แต่มันคือเครื่องมือสองชิ้นที่ใช้ตรรกะเดียวกันในการแก้ปัญหา คณิตศาสตร์สอนให้เราคิดอย่างเป็นระบบและมีเหตุผล ส่วนการเขียนโปรแกรมสอนให้เราเอาตรรกะนั้นไปสั่งการคอมพิวเตอร์ให้ทำงานแทนเราได้
ถ้าคุณเป็นนักเรียนที่กำลังเกลียดคณิตศาสตร์ ลองเปิดใจเรียนรู้การเขียนโปรแกรมดูสักครั้ง คุณอาจจะพบว่าตรรกะที่คุณเกลียดนั้น มันมีประโยชน์มากมายในโลกของการสร้างสรรค์สิ่งใหม่ ๆ และถ้าคุณเป็นโปรแกรมเมอร์ที่ไม่เก่งคณิตศาสตร์ ลองมองย้อนกลับไปดูพื้นฐานตรรกะของมัน คุณอาจจะเขียนโค้ดที่มีประสิทธิภาพและสวยงามขึ้นกว่าเดิม
ลองเอาโจทย์คณิตศาสตร์ที่คุณเจอในห้องเรียนวันนี้ มาแปลงเป็นโค้ดดูสักครั้งซิ แล้วคุณจะรู้ว่ามันเป็นเรื่องสนุกแค่ไหน
คุณล่ะครับ? มีโจทย์คณิตศาสตร์หรือเรื่องราวไหนที่เคยทำให้คุณปวดหัว แต่พอมาเขียนโค้ดแล้วเข้าใจง่ายขึ้นไหม? มาแชร์กันในคอมเมนต์ได้เลย อยากรู้ว่าเพื่อน ๆ นักพัฒนาคนไหนเจอเรื่องแบบเดียวกันบ้าง!
เนื้อหาที่จัดทำโดยมี AI ช่วยจะมีป้ายกำกับ "เรียบเรียงโดยมี AI ช่วย" เพื่อให้คุณทราบอย่างชัดเจน เราถือว่าความโปร่งใสเรื่องการใช้ AI เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน
ความคิดเห็น (0)
ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!