Tech@Agoda#03: The Functions and The Machines – Functional Programming

หลังจากมืนๆไปกับการสอบเพื่อเข้าเรียนปริญญาโทที่จุฬาในตอนเช้า เมื่อสอบเสร็จมันมี Calendar แจ้งมาว่าผมมีสิทธิ์เข้าไปงาน Tech@Agoda เลยแวะเข้าไปฟังครับ แต่ผมเข้าฟังแค่เรื่องเดียวนะครับ เนื่องจากต้องมีภาระกิจในช่วงเย็นครับ สำหรับการเดินทาง ผมงงครับ เห็นในกำหนดการบอกว่าให้ไป Starbucks ขั้น 3 แต่มันมี 2 ที่ มีทั้งในตัว Central World กับอาคาร Office เลยเสียเวลาเดินวนไปครับ ฮ่าๆ เข้าเรื่องเลยดีกว่า The Functions and The Machines – Functional Programming (Speaker: Dave Ravitat) มุมมองของ Speaker Assembly is Higher !!! แล้วทำไมหละ อันนี้ต้องย้อนกลับไปถึงจุดเริ่มต้นของ Computer เลยทีเดียวครับ สำหรับแนวคิดของคอมพิวเตอร์ที่เราเรียนกันมา มันมาจาก แล้วเราต้องคิดเหมือนเครื่องจักร หรือ ป่าว ? คำตอบ คือ ไม่ครับ หากมองลงไปที่แก่น มันมีวิชาหนึ่งในสาย Computer Science คือ Theory of computation มันมี Models หลายอันครับ ที่เรียนกันมาจะเป็นพวก Finite state machine ครับ แต่มันมีอีกหลายตัว ตัวที่เราจะสนใจ คือ Lambda Calculus มองทุกอย่างให้เป็น Function ครับ ก่อนเข้าไปเรื่อง Functional Programming อยากให้ลองคิดแบบ Functional Thinking ก่อนครับ คิดแบบคณิตศาสตร์ครับ ซึ่ง ลองดูตัวอย่างได้ครับ ของผมขอเป็นเรื่อง Fibonacci (ตามมาจากข้อสอบเมื่อเช้า 5555) ลองดูนะครับ ว่าอันไหนอ่านง่ายกว่ากัน ? เราถูกให้คิดแบบ Function ตั้งแต่เด็กๆ ผ่านวิชาคณิตศาสตร์แล้ว แต่มาเปลี่ยนให้คิดแบบเครื่องจักร ก็ตอนเรียน Programming !!! การที่เราคิดแบบ Function ทำงานหนึ่งอย่าง ไม่ต้องยุ่งกับใคร (Pure…