ฟังก์ชั่นการเขียนโปรแกรมคืออะไร?

ฟังก์ชั่นการเขียนโปรแกรมเป็นกระบวนทัศน์การเขียนโปรแกรมที่ฐานของการคำนวณคือการประเมินผลของการแสดงออก ลักษณะบางอย่างคือการใช้ฟังก์ชั่นลำดับสูงกว่าความโปร่งใสอ้างอิงและการประเมินผลที่ขี้เกียจ ข้อดีของรูปแบบการเขียนโปรแกรมรวมถึงโปรแกรมที่อ่านง่ายมีความน่าเชื่อถือและสามารถแบ่งออกเป็นองค์ประกอบ ข้อเสียคือการคำนวณอาจช้าและสไตล์และไวยากรณ์แตกต่างจากรูปแบบการเขียนโปรแกรมทั่วไปอื่น ๆ โดยสิ้นเชิง รูปแบบการเขียนโปรแกรมเชิงฟังก์ชั่นมักจะถูกโอบกอดโดยนักวิชาการมากกว่าโดยผู้เชี่ยวชาญด้านวิทยาศาสตร์คอมพิวเตอร์

ฟังก์ชั่นเป็นส่วนพื้นฐานของกระบวนทัศน์การเขียนโปรแกรมนี้ ฟังก์ชั่นอาจซ้อนกันภายในฟังก์ชั่นอื่น ๆ ที่เรียกว่าฟังก์ชั่นการสั่งซื้อที่สูงขึ้นและแต่ละฟังก์ชั่นการสั่งซื้อที่สูงขึ้นสามารถแบ่งออกเป็นฟังก์ชั่นการสร้างที่ง่ายต่อการเข้าใจและแก้ปัญหา ตัวอย่างของฟังก์ชั่นการสั่งซื้อที่สูงขึ้นคือ Map and Nest ฟังก์ชันแผนที่ใช้ฟังก์ชัน F และรายการตัวแปรตัวอย่างเช่น (x, y, z) และให้ผลลัพธ์ในรายการ: แผนที่ [F, (x, y, z)] = (F (x), F (y), F (z)) Nest ใช้ฟังก์ชัน F ตัวแปร x และจำนวนการวนซ้ำ: Nest [F, x, 3] = F (F (F (x (x)))

ฟังก์ชั่นการเขียนโปรแกรมบริสุทธิ์ใช้เวลาอินพุตและส่งออกผลลัพธ์โดยไม่ต้องเปลี่ยนสถานะของตัวแปร กล่าวอีกนัยหนึ่งฟังก์ชั่นที่มีอินพุตเดียวกันจะให้ผลลัพธ์เดียวกันเสมอโดยไม่คำนึงถึงสิ่งที่เกิดขึ้นก่อนหน้านี้ในโปรแกรม สิ่งนี้เรียกว่าความโปร่งใสในการอ้างอิง เนื่องจากฟังก์ชันทางคณิตศาสตร์มีความโปร่งใสในการอ้างอิงการโปรแกรมเชิงฟังก์ชันจึงเป็นเรื่องง่ายสำหรับนักคณิตศาสตร์วิศวกรและนักวิทยาศาสตร์หลายคน

ความโปร่งใสอ้างอิงของฟังก์ชั่นหมายความว่าลำดับของการประเมินฟังก์ชั่นไม่สำคัญ ดังนั้นจึงไม่จำเป็นต้องประเมินฟังก์ชั่นจนกว่าจะต้องการผลลัพธ์ซึ่งเรียกว่าการประเมินแบบสันหลังยาว นี่คือความแตกต่างอย่างสมบูรณ์กับการเขียนโปรแกรมที่จำเป็นซึ่งโปรแกรมเริ่มต้นด้วยคำสั่งแรกและเรียกใช้ผ่านรายการจนถึงคำสั่งสุดท้าย การประเมิน Lazy ข้ามส่วนต่าง ๆ ของโปรแกรมที่ไม่เป็นไปตามหลักเหตุผลหรือฟุ่มเฟือยซึ่งปรับโปรแกรมให้เหมาะสมโดยอัตโนมัติและอาจลดเวลาในการคำนวณ

ฟังก์ชั่นการเขียนโปรแกรมมีข้อดีกว่ากระบวนทัศน์การเขียนโปรแกรมอื่น ๆ ฟังก์ชั่นที่มีอินพุตและเอาต์พุตชัดเจนอ่านและเข้าใจได้ง่าย เมื่อฟังก์ชั่นบั๊กอย่างละเอียดแล้วมันสามารถใช้ในแอปพลิเคชั่นอื่น ๆ ได้อย่างน่าเชื่อถือ เครื่องมัลติคอร์อาจสามารถคำนวณฟังก์ชั่นที่ได้รับการประเมินอย่างอิสระในแบบคู่ขนานซึ่งช่วยปรับปรุงประสิทธิภาพของโปรแกรมได้อย่างมาก

แต่น่าเสียดายที่ไม่ใช่ทุกโปรแกรมที่ให้ตัวเองกับการคำนวณแบบขนานและการใช้งานโปรแกรมการทำงานอาจจะค่อนข้างช้า โปรแกรมการใช้งานอาศัยการเรียกซ้ำอย่างหนักซึ่งมักจะมีประสิทธิภาพน้อยกว่าที่ใช้ลูปแบบดั้งเดิมหรือวิธีการทำซ้ำ ในความเป็นจริงการเขียนโปรแกรมใช้งานได้ค่อนข้างงุ่มง่ามและยากที่จะเรียนรู้เพราะมันไม่เหมือนกับกระบวนทัศน์ทั่วไปอื่น ๆ เช่นการเขียนโปรแกรมเชิงวัตถุ

นักวิชาการมักจะชื่นชอบการเขียนโปรแกรมที่ใช้งานได้เนื่องจากมันให้วิธีการที่ชัดเจนและเข้าใจได้ในการเขียนปัญหาที่ซับซ้อน ภาษาบริสุทธิ์บางภาษาคือ Haskell และ Erlang Mathematica มีความเชี่ยวชาญในคณิตศาสตร์สัญลักษณ์, R มีความเชี่ยวชาญด้านสถิติและ J มีความเชี่ยวชาญในการวิเคราะห์ทางการเงิน ภาษา Multiparadigm เช่น Scala และ F # รองรับทั้งการเขียนโปรแกรมการทำงานและรูปแบบการเขียนโปรแกรมอื่น ๆ