Functional Programming คือ?

ถ้าใครชอบคณิตศาสตร์ (ผมตกเลข) คงจะคุ้นเคยกับคำว่า function กันมาบ้าง หน้าตามันประมาณนี้ f(x) = x2 หรือ f(x, y) = 2x + y เวลาใช้งานเราก็ต้องแทนค่าตัวแปรใน function เช่นกำหนดให้

x = 5

f(5)
= 5 x 5
= 25

หรือส่งเป็นสมการเข้าไปได้เช่น

x = 5
y = x + 4

f(x, y)
= f(5, x + 4)
= f(5, 9)
= 2 x 5 + 9
= 10 + 9
= 19

แล้วมันเกี่ยวอย่างไรกับการเขียนโปรแกรม???

สังเกตุตัวอย่าง f(x, y) จะเห็นว่าผมสามารถส่งสมการเข้าไปให้ function ได้ แล้วค่อยไปแทนตัวแปรกันข้างใน คราวนี้ในมุมของการเขียนโปรแกรม functional programming คือเราต้องประกาศการทำงานที่เป็น function ไว้ แล้วส่งเข้าไปใน api ให้ทำงานตามที่เราต้องการ ยกตัวอย่างภาษาที่รองรับ functional programming เช่น javascript ลองดูตัวอย่างต่อไปนี้ครับ

ผมมีตัวแปรรายชื่อ และผมต้องการ filter เฉพาะที่ขึ้นต้นด้วย “นางสาว” โค้ดหน้าตาประมาณนี้

let members = [];
let names = ['นาย A', 'นางสาว B', 'นาย C', 'นาง D'];
for(let i = 0; i < names.length; i++){
	if(names[i].startsWith('นางสาว')){
		members.push(names[i]);
	}
}

console.log(members);

เมื่อเขียนเป็น functional ผมจะแยกเงื่อนไขในการ filter ออกมาเป็นตัวแปร แล้วส่งเข้าในตอนเรียก function filter ดังนี้

let names = ['นาย A', 'นางสาว B', 'นาย C', 'นาง D'];
        
let nameFilter = name => name.startsWith('นางสาว');

let members = names.filter(nameFilter);

console.log(members);

ตัวแปร nameFilter ถ้าอ่านแบบคณิตศาสตร์จะอ่านได้ว่า “ประกาศตัวแปร nameFilter เท่ากับ function ที่รับค่าหนึ่งตัวแปรชื่อ name โดยที่ name จะต้องขึ้นต้นด้วยคำว่า นางสาว”
จะเห็นว่าเราสามารถอ่านโค้ดได้ง่ายขึ้น เขียนได้สั้นขึ้นด้วย แต่กว่าผมจะชินกับการอ่าน functional ก็ปรับตัวนานพอสมควร

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s