จริงๆ เค้าเรียกว่า Point-Free Programming (HaskellWiki) หรือว่า Tacit Programming (Wikipedia) นะ :-P ผมเขียนชื่อล้อเลียนไปงั้นเอง เรื่องนิยามหรือว่าตัวอย่างลองไปดูใน Wiki link ด้านบนเอานะครับ แต่ว่าผลของมันเนี่ย มันมักจะทำให้โปรแกรมสั้นขึ้น ในขณะที่มันก็ยังอ่านง่ายขึ้นด้วยเออสิ แล้วมันเกี่ยวอะไรกับ Java 7 ล่ะเนี่ย? เพราะว่าใน spec ของ Java 7 มันจะมีเรื่อง Closures เข้ามาเกี่ยวข้องด้วย แล้วก็จะมีเรื่องอื่นๆ ที่เอา idea จาก Functional programming มายัดลงไปในภาษาที่มันค่อนข้างจะ bloat และ verbose ที่สุดภาษานึง ทำให้มันสั้นลง กระชับขึ้น น่าอ่านน่าเขียนขึ้นแบบไม่น่าเชื่อ ลองดูตาม Link ต่อไปนี้นะครับ
- Alex Miller – Java 7
- TWiki . JDK . ClosuresSyntaxInJava7
- Neal Gafter’s blog: Closures for Java
- Neal Gafter’s blog: What’s the point of Closures?
ส่วนนิยามของ Closures ในแบบ Computer Science และ Software Development จริงๆ ก็ตามนี้ครับ Closure (computer science) – Wikipediaขอปิดท้าย post นี้ด้วยเรื่องของ Point-Free Programming ใน Java 7 ครับ สวยดีเหมือนกัน ดูรายละเอียดเต็มๆ ที่นี่: Ricky’s technical blog: Point-free Programming in Java 7 – Beyond Closuresผมว่าโลกมันกำลังหมุนไปในทิศทางที่มันถูกต้องนะ ที่ในที่สุดก็เริ่มจะมีการเอา idea ของ Functional programming มาใช้ในภาษาโปรแกรมที่เป็น mainstream เสียที เพราะว่า programming model ของ Functional มัน elegance กว่า imperative เยอะมาก …สุดท้ายมันทำให้ผมนึกถึง paper ที่เป็น hall-mark สุดยอดอันนึงของ John Backus (ผมเคยเขียนถึงเรื่องเค้าทีนึงที่ Thai Mac Dev นะ) คือCan programming be liberated from the von Neumann style?: a functional style and its algebra of programs (Link ไปหา paper ที่ Stanford University)เมื่อ Java 7 ออกมาจริงๆ ผมคงจะต้องกลับมามองมันแบบ serious อีกที แต่ว่าเราก็ไม่รู้เหมือนกัน ว่าวันนั้นโลกมันจะหมุนไปถึงไหน และจะมี feature อะไรอีกบ้าง ใน niche programming languages ที่ทำให้ผมอ้าปากค้าง ตกหลุมรัก และมอง Java 7 “ในวันนั้น” ว่ามันไม่ elegance ….. อย่างว่าแหละครับ Programmers Don’t Like to Code ;-)
หากนำ functional programming ไปใส่ใน mainstream พวก c แบบนี้ คุณสมบัติใน c++ จะมีเพิ่มขึ้นด้วยไหมครับ? ผมอนุมานเอาว่า ใน c++ หากมีคุณสมบัติอย่าง c ด้วยแล้ว ก็น่าจะมี functional programming บวกเพิ่มไปด้วย : )
จริงๆ แล้ว มีการนำ idea ของ functional programming บางส่วนมาใส่ใน imperative language หลายตัวครับ เช่น c++ ก็มีส่วนของ standard template library ที่มีหลาย features ครับที่เอามาจากพวก functional programming
ลองเล่น stl ดูครับ
แต่ว่าพอไปเล่น functional แท้ๆ แล้ว stl มันน่าเกลียดน่ะ signal-to-noise มันต่ำมาก