ฟังก์ชั่นการเขียนโปรแกรมเป็นกระบวนทัศน์ที่เปิดเผย หนึ่งในพลังของ FP คือการหลีกเลี่ยงผลข้างเคียง ได้มีการกล่าวว่าสำหรับปัญหาบางอย่าง FP นั้นไม่เหมาะสม
สำหรับปัญหาทั่วไปที่พบว่าการเขียนโปรแกรมใช้งานไม่ได้เหมาะสมหรือไม่
ฟังก์ชั่นการเขียนโปรแกรมเป็นกระบวนทัศน์ที่เปิดเผย หนึ่งในพลังของ FP คือการหลีกเลี่ยงผลข้างเคียง ได้มีการกล่าวว่าสำหรับปัญหาบางอย่าง FP นั้นไม่เหมาะสม
สำหรับปัญหาทั่วไปที่พบว่าการเขียนโปรแกรมใช้งานไม่ได้เหมาะสมหรือไม่
คำตอบ:
แอปพลิเคชั่นที่มีสภาพเป็นธรรมชาติมาก วิดีโอเกมเป็นตัวอย่างที่ดีเพราะพวกเขาจำลองโลกแห่งความจริง มันสมเหตุสมผลมากกว่าที่จะคิดเกี่ยวกับการปรับเปลี่ยนสถานะของโลกแทนที่จะสร้างใหม่จากสถานะก่อนหน้าทุกครั้งที่มีการเปลี่ยนแปลง
ตัวอย่างที่เป็นรูปธรรมจะเปลี่ยนสุขภาพของสัตว์ประหลาดหลังจากถูกยิง มันมีเหตุผลมากกว่าที่จะเปลี่ยนสุขภาพของมันมากกว่าที่จะแทนที่มันด้วยสัตว์ประหลาดตัวใหม่ที่เหมือนกันในทุก ๆ ด้านยกเว้นตอนนี้มันจะมีสุขภาพที่น้อยลง การเปลี่ยนแปลงประเภทนี้ประกอบขึ้นด้วยทุกอย่างในโลกของเกมและการทำสิ่งนี้ในลักษณะการทำงานที่บริสุทธิ์นั้นไม่ได้ใช้งานง่าย ฉันคิดว่าอาจมีการลงโทษด้านประสิทธิภาพที่สำคัญอย่างน้อยถ้าคุณทำด้วยภาษาที่ใช้งานได้จริง
(ในฐานะที่เป็นบันทึกด้านข้าง, ปัญหาบางอย่างในเกมเหมาะมากสำหรับการเขียนโปรแกรมการทำงานเช่น AI ภาษาที่ใช้งานได้ / คำสั่งแบบผสมจะเหมาะอย่างยิ่งสำหรับกรณีเหล่านั้น)
การโปรแกรมแบบฝังตัวแบบเรียลไทม์นั้นเกี่ยวกับผลข้างเคียง การโต้ตอบกับ io แบบดิจิตอลและอะนาล็อกตัวจับเวลาพอร์ตอนุกรมและพอร์ตขนานทุกสิ่งที่น่าสนใจทำได้โดยการเรียกใช้ฟังก์ชั่นที่มีการกำจัดด้านข้าง
ฉันขอยืนยันว่าการเขียนโปรแกรม GUI ไม่เหมาะสำหรับการเขียนโปรแกรมการทำงาน โดยทั่วไปแล้ว GUIs จะมีสถานะเป็นรัฐมากและง่ายกว่ามากในการสร้างแบบจำลอง / จัดการโดยใช้สถานะแทนที่จะใช้ผลข้างเคียงฟรี แน่นอนว่าเป็นไปได้ที่จะใช้ภาษาการเขียนโปรแกรมที่ใช้งานได้กับ GUI ... แต่อาจไม่ใช่ความคิดที่ดี
ดังที่ระบุไว้ในคำตอบอื่น ๆ เกมมักจะจัดการได้ง่ายขึ้นโดยการติดตามสถานะและในขณะที่คุณสามารถเขียนเกมในภาษาที่ใช้งานได้มักจะง่ายกว่าและมีประสิทธิภาพมากกว่าในภาษา "stateful" (เช่นเป็นเชิงวัตถุ ภาษา).
โปรแกรมประยุกต์ทางธุรกิจที่ขับเคลื่อนด้วยข้อมูล ส่วนต่อประสานผู้ใช้และการใช้งานข้อมูลอย่างง่ายไม่จำเป็นต้องมี FP
filter
, และreduce
map
โยนในบางsort
, ,partition
groupBy
ท้ายที่สุดแล้วภาษาการเขียนโปรแกรมที่ใช้กันอย่างแพร่หลายสำหรับการเขียนโปรแกรมดังกล่าวคือ Excel ซึ่งเป็นภาษาที่ใช้งานได้
คุณไม่สามารถยกเลิกชุดปัญหาใด ๆ ได้อย่างง่ายดายเพราะไม่เหมาะกับการเขียนโปรแกรมใช้งานต่อเนื่อง
มากขึ้นอยู่กับภาษาจริงที่ใช้สำหรับการเขียนโปรแกรมการทำงานและคุณสมบัติของมัน
ตัวอย่างหนึ่งคือ Erlang ที่กล่าวถึงแล้วสำหรับระบบฝังตัวตามเวลาจริง
ความสมบูรณ์ของรัฐยังไม่เป็นเกณฑ์ที่ดีในการเขียนโปรแกรมฟังก์ชั่น แต่ก็มีวิธีการที่ประสบความสำเร็จหลายอย่างในการใช้ภาษาโปรแกรมการทำงานเพื่อจัดการกับสิ่งนี้
ผลข้างเคียงมักถูกกล่าวถึงกับการโปรแกรมเชิงฟังก์ชัน ทุกโปรแกรมที่ไม่ได้เด็ดขาดมีผลข้างเคียง ดังนั้นทุกภาษา FP โลกแห่งความจริงจึงมีวิธีการจัดการกับเรื่องนี้มันเป็นเพียงวิธีการที่จะห่อหุ้มผลข้างเคียงของโลกอย่างงดงาม
ไม่จำเป็นต้องมีผลข้างเคียงโดยพลการเช่นตัวแปรส่วนกลางเลย
แต่มีชุดปัญหาที่ทำให้การเข้าโปรแกรมฟังก์ชั่นง่ายขึ้นเพราะพวกมันไม่ได้บิดวิธีที่คุณคุ้นเคยในการดูปัญหามากนัก แต่เมื่อคุณคิดว่าการทำงานมากขึ้นชุดปัญหาเปิดให้มีผลข้างเคียงน้อยลง
แม้ว่าการเขียนโปรแกรม C เป็นความคิดที่ดีเสมอที่จะลดผลข้างเคียงโดยพลการเช่นตัวแปรทั่วโลกให้มากที่สุด