ลองมาเขียน Functional Programming ด้วย Javascript [PART 1]

เมื่อวานได้มีโอกาสนั่งเรียนการเขียน Functional Programming ที่ทำงาน Sellsuki (พี่อั๋น)โอเค เรามาเรียนรู้พร้อมกันเลย
Functional Programming with Javascript
ทำไม Functional Programming มันถึงดัเฉยเลยเเล้วมีการพูดถึงอยู่บ่อยครั้ง จนผมอดสงสัยว่ามันเกิดอะไรขึ้น เลยลองถามพี่ๆ ที่เคยลองเขียนดู ปราฏว่ามันเขียนยากเหมือนกันเเต่มันเขียนยากจริงหรือเปล่าก็ไม่มีใครรู้ฉะนั้นจะต้องลองเองล่ะครับ ถึงจะรู้ว่ายากไหม…..
“ เค้าว่ากันว่า functional programming นั้นจะทำให้เราสามารถลด code ได้ในระดับหนึ่ง ”
Functional Programming นั้นจริงๆเเล้วมันก็คือรากฐานของคณิตศาสตร์ชนิดนึ่งก็เเล้วกัน ซึ่งเอาตรงๆ ผมก็ไม่ค่อยรู้เท่าไร เพราะผมเริ่มจะหัดเขียนนั้นเอง ซึ่งก็แปลว่าถ้าเราเขียน Code จริงๆนั้น เราก็สามารถที่จะเขียนเป็น Functional ได้หมดเลยซึ่งมันก็ขึ้นกับ logic ของการเขียนของเเต่ละ่คน
“ เราสามารถใช้ functional programming มา implement algorithm ใดๆ ก็ได้ ”
ตัดภาพสลับมาก่อน ก่อนที่มันจะยากไป ToT
จากนั้นเราพี่อั๋นก็อธิบายว่า ทำไมเราถึงต้องเขียน functional programming แทน oop สะส่วนใหญ่ เเละจากพี่อั๋นก็เริ่มด้วยการให้อ่านเเละอธิบาย Function programming ผ่านทางเว็บนี้เลย
เริ่มบทเเรกกันเลยนะครับ
Chapter 1: What ever are we doing?
“ การที่เราเขียน OOP นั้นเหมือนเราใช้ขวานตัดต้นไม้ เเต่การเขียน Functional Programming เหมือนเราใช้เลื่อยตัดต้นไม้ มันจะยากหน่อยเเต่รับรองว่ามันง่ายกว่า ”
พี่อั๋นสรุปบทนี้ให้ฟังประมาณนี้ มันก็คือที่ผมเล่าไปด้านบทนั้นเเหละ โอเคคพี่อั๋นข้ามไป
Chapter 2: First Class Functions
พี่อั๋นได้กล่าว …. . ว่า First class Function มันเปรียบเหมือน Function นั้นเป็นตัวแปรหนึ่งนั้นเอง เเล้วใน Functionส่วนมากจะทำเเค่งานเดียวย่อยๆ นั้นเอง
ยกตัวเองกันสะหน่อย
var hi = function(name) {
return 'Hi ' + name;
};เราเก็บฟังก์ชันที่มีการreturnคืนค่า String 'Hi' + name(parameter) . ที่ส่งเข้ามานั้นเองvar greeting = function(name) {
return hi(name);
};
ถ้า name = ‘tak’ เช่น
hi(‘tak’) // Hitak
greeting(‘tak’) // Hitak
ได้ผลลัทธิ์เหมือนกันเลย
ทำให้เราเห็นข้อดีของการเขียน Function แบบนี้ว่า เราสามารถเรียกใช้ซ้ำกันได้โดยไม่ต้องเขียนใหม่ มัน Reuse ได้นั้นเอง (เเต่วิธีการที่ว่านั้นจะเริ่มยากนิดหน่อยนะ เดี๋ยวจะพูดถึงต่อไปนั้นเอง)
Chapter 3: Pure Happiness with Pure Functions
สิ่งที่สำคัญที่สุดของ functional programming มันจะต้องไม่เกิด Side effect ใน Function หรือเปลี่ยนเเปลงค่าที่เราคาดเดาไม่ได้นั้นเอง…… อ้าวเเล้วพี่อั๋นก็หัวเราะ ฮ่าๆๆ อ้าววว ทั้งห้องเงียบกรี๋บ ….
โอเคต่อ จากนั้นพี่อั๋นยกตัวอย่างง่ายว่าอันไหนมัน Pure Function ให้ดูนะครับ
var xs = [1, 2, 3, 4, 5];// pure function
xs.slice(0, 3);
//=> [1, 2, 3]
** ความหมายของ Array.slice()
รีเทิร์นค่าตามตำแหน่งที่เลือกใน array มาในรูปของ array ชุดใหม่ โดยไม่กระทบกับตัวแปรตั้งต้น
อะไร pure มั้งอะ
อย่างเเรกมันจะต้องไม่เปลี่ยนแปลงตัวแปรหลักเเละไม่ไปยุ่งกับ Function อื่นๆ นั้นเอง อย่างที่สองมันจะต้องเกิด side effect นั้นเอง ….
เดี๋ยวมาต่อกับการทำแบบฝึกหัดเกี่ยวกับ Functional Programming ว่าจะรอดไหม สำหรับวันนี้ง่วงเเล้ว นอนล่ะบายยย
LINK PART 2 :
เรื่องที่เขียนค้างไว้มีเรื่อง
- Native script Vue
- vue- router mode
- javascript Shorthand
- ค้างไวเยอะเหมือนกันนะเนี่ย …..
