พอดีได้ไปช่วย อจ. ศรัณย์ สอนน้องๆที่ลาดกระบังมา
แล้วสิ่งนึงที่สะดุดมากๆในการสอนคือ
“น้องๆกำลังเรียน วิชา principle of programming language
แต่น้องๆแต่ละคนเขียน code ไม่ถึง 500 บรรทัด”
–
จริงๆนะ สำหรับการเรียนภาษาทั่วไป (เช่น ไทย อังกฤษ จีน ..)
เราว่า จะรู้ว่า “ไพเราะ เพราะพริ้ง” ของภาษาได้
ก็ต่อเมื่อเราเชี่ยวชาญภาษานั้นแล้ว
ซึ่งคำว่าเชี่ยวชาญ มันไม่ได้มาจากเขียน หรือใช้ภาษานั้น ไม่เกิน 500 บรรทัดหรอก
–
ดังนั้นการจะดื่มดำกับภาษาโปรแกรม ก็ไม่ต่างกัน
เราต้องฝึกจึงเข้าใจความงามของภาษา
–
ที่พูดว่า ภาษาโปรแกรม ไพเราะ เพราะพริ้ง ได้
มันไม่ใช่เรื่องโอเว่อร์เกินจริง อะไรนะ
อย่าคิดง่ายๆ แค่ว่า ภาษาโปรแกรม มันมีไว้แค่ให้คอมพิวเตอร์ทำงานตามที่เราต้องการ
เพราะถ้าคิดแบบนั้น เค้าควรตั้งชื่อว่า ชุดคำสั่งคอมพิวเตอร์
เพื่อจะให้มันแค่ทำงานตามที่เราต้องการ
แต่ถ้าเป็นคำว่า “ภาษา” มันต้องใช้สื่อสารระหว่าง คน กับคน
ซึ่งหมายถึง โปรแกรมเมอร์ กับ โปรแกรมเมอร์ ด้วยกันนั้นแหละ
และภาษา มันต้องน่าอ่านเสมอ
เมื่อภาษามันน่าอ่าน เราก็จะเห็นความไพเราะเพราะพริ้งของภาษา
–
เช่นเอาง่ายๆว่า เราเอาโจทย์ FizzBuzz มาเล่น
ถ้าเราเขียนเป็นวิธีเร็วๆ เขียนให้ไม่หน้าอ่าน
public String fizzbuzz(int input){
if (input % 15 == 0) return “FizzBuzz”;
else if (input%5 == 0) return “Buzz”;
else if (input%3 == 0) return “Fizz”;
else return input.toString();
}
จะเขียนแบบนี้ก็ได้ แต่ความไพเราะอยู่ตรงไหน…
–
ลองดูแบบนี้มั้ย
public String fizzbuzz(int input) {
if canModuloBy(input,15) return “FizzBuzz”;
else if canModuloBy(input, 5) return “Buzz”;
else if canModuloBy(input, 3) return “Fizz”;
else return input.toString;
}
private canModulo(input, modulo){
return (input% modulo == 0)
}
จะเห็นว่าความงามในการอ่าน public method มีมากขึ้น
และความสับสนใน code มีน้อยลง
–
code แบบแรก เราจะให้เห็นเลยว่า มัน describe อะไรให้โจทย์ FizzBuzz
แต่ code แบบหลัง กับการตั้งชื่อตัวแปล เราจะเห็นเลยว่า มัน describe ว่า
โจทย์ FizzBuzz คือการหาว่าตัวที่รับเข้ามา modulo ด้วย 15,5,3 แล้วได้ “FizzBuzz”, “Buzz”, “Fizz”
–
เราชอบนิยามการเขียนโปรแกรมที่ ไพเราะเพราะพริ้ง ว่า
มันคือการ capture วิธีการที่ธุรกิจนั้นๆ ประมวลผลข้อมูลมาอยู่ใน code
เพราะ code ที่เราเขียนให้ธุรกิจ มันไม่ได้อยู่แค่ 3-5 ปี
แต่ code พวกนี้มันอยู่ 10 – 20 ปี ถ้าไม่เชื่อลองดู Facebook หรือ Google สิ
ยังมีรูปแบบเหมือนเดิม มา 10 -20 ปีเลย
–
สวัสดีครับ
–