ฟังก์ชั่นโปรแกรมแทนรูปแบบการออกแบบของ GoF หรือไม่?
ตั้งแต่ฉันเริ่มเรียนรู้F #และOCamlเมื่อปีที่แล้วฉันได้อ่านบทความจำนวนมากที่ยืนยันว่ารูปแบบการออกแบบ (โดยเฉพาะใน Java) เป็นวิธีแก้ปัญหาสำหรับคุณสมบัติที่ขาดหายไปในภาษาที่จำเป็น บทความหนึ่งที่ฉันพบมีการอ้างสิทธิ์ค่อนข้างแรง : คนส่วนใหญ่ที่ฉันพบเจอได้อ่าน หนังสือรูปแบบการออกแบบโดย Gang of Four (GoF) โปรแกรมเมอร์ที่เคารพตนเองจะบอกคุณว่าหนังสือเล่มนี้เป็นผู้ไม่เชื่อเรื่องภาษาและรูปแบบที่ใช้กับวิศวกรรมซอฟต์แวร์โดยทั่วไปไม่ว่าคุณจะใช้ภาษาใด นี่คือการเรียกร้องอันสูงส่ง น่าเสียดายที่มันห่างไกลจากความจริง ภาษาหน้าที่มีความหมายอย่างมาก ในภาษาที่ใช้งานได้เราไม่จำเป็นต้องมีรูปแบบการออกแบบเพราะภาษานั้นมีระดับสูงมากดังนั้นคุณจึงต้องเขียนโปรแกรมในแนวคิดที่กำจัดรูปแบบการออกแบบทั้งหมดเข้าด้วยกัน คุณสมบัติหลักของ functional programming (FP) รวมถึงฟังก์ชั่นเป็นค่าชั้นหนึ่ง, currying, ค่าที่ไม่เปลี่ยนรูปแบบ ฯลฯ ฉันไม่เห็นว่ารูปแบบการออกแบบ OO ใกล้เคียงกับคุณลักษณะใด ๆ เหล่านั้น นอกจากนี้ในภาษาที่ใช้งานได้ซึ่งสนับสนุน OOP (เช่น F # และ OCaml) ดูเหมือนว่าสำหรับฉันแล้วโปรแกรมเมอร์ที่ใช้ภาษาเหล่านี้จะใช้รูปแบบการออกแบบเดียวกันกับภาษา OOP อื่น ๆ อันที่จริงตอนนี้ฉันใช้ F # และ OCaml ทุกวันและไม่มีความแตกต่างที่โดดเด่นระหว่างรูปแบบที่ฉันใช้ในภาษาเหล่านี้กับรูปแบบที่ฉันใช้เมื่อฉันเขียนด้วย Java มีความจริงใด …