ภาษาโปรแกรมโดย milo อ่าน 7 นาทีเรียบเรียงโดยมี AI ช่วย

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 (Σ\Sigma) ในห้องเรียนคณิตศาสตร์ มันคือการบอกให้เราบวกค่าตั้งแต่จุดเริ่มต้นจนถึงจุดสิ้นสุด เช่น ผลรวมของ ii ตั้งแต่ 1 ถึง 5 ก็คือ 1+2+3+4+5=151 + 2 + 3 + 4 + 5 = 15

ในการเขียนโปรแกรม เราไม่ได้นั่งบวกทีละตัวเอง เราใช้ "Loop" หรือการวนซ้ำ เช่น for loop เพื่อให้คอมพิวเตอร์บวกให้เรา

sum = 0
for i in range(1, 6):
    sum += i
print(sum) # ผลลัพธ์คือ 15

สัญลักษณ์ Σ\Sigma ในคณิตศาสตร์ ก็คือ for loop ในการเขียนโค้ดนั่นเอง มันคือวิธีการอธิบาย "การทำซ้ำ" (Iteration) ที่กระชับและเป็นสากล

เงื่อนไข If-else กับฟังก์ชันแบบเป็นช่วง (Piecewise Function)

ในคณิตศาสตร์ เรามีฟังก์ชันที่ให้คำตอบต่างกันตามช่วงของค่า xx ยกตัวอย่างฟังก์ชันค่าสัมบูรณ์ (Absolute Value) ก็ได้

ถ้า x0x \ge 0 แล้ว x=x|x| = x ถ้า x<0x < 0 แล้ว x=x|x| = -x

ในโลกของโค้ด นี่คือเงื่อนไข 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

มุมมองคณิตศาสตร์: เราจะตั้งสมการว่า GPA=(จำนวนเกรดA×4)+(จำนวนเกรดB×3)+...จำนวนวิชาทั้งหมดGPA = \frac{(จำนวนเกรดA \times 4) + (จำนวนเกรดB \times 3) + ...}{จำนวนวิชาทั้งหมด}

มุมมองโปรแกรมเมอร์: เราจะเขียนโค้ดเพื่อให้คอมพิวเตอร์คำนวณสมการนั้นให้

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 เป็นสิ่งสำคัญต่อความไว้วางใจของผู้อ่าน

พบข้อมูลที่ไม่ถูกต้องหรือคลาดเคลื่อน?เข้าสู่ระบบเพื่อทักท้วง
บทความนี้เป็นอย่างไร?

ยังไม่มีความคิดเห็น — มาเป็นคนแรกกันเถอะ!