วันนี้เราจะพูดถึงการเขียนโปรแกรมเชิงฟังก์ชัน โดยเฉพาะอย่างยิ่ง เราจะดูความแตกต่างระหว่างการเขียนโปรแกรมเชิงประกาศและการเขียนโปรแกรมที่จำเป็น

อันดับแรก มาดูข้อกำหนดกันอย่างรวดเร็ว จากนั้นเราจะเปรียบเทียบรูปแบบการเขียนโปรแกรมเหล่านี้และดูว่ามีลักษณะอย่างไรใน Java และภาษาสนับสนุนการอยู่ร่วมกันอย่างมีความสุขหรือไม่

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

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

ข้อดีของการเขียนโปรแกรมเชิงฟังก์ชัน

  • ปรับปรุงความน่าเชื่อถือของรหัส
  • การทดสอบหน่วยที่สะดวก
  • โอกาสในการปรับแต่งโค้ดระหว่างการคอมไพล์
  • โอกาสสำหรับการทำงานพร้อมกัน

ข้อเสียของการเขียนโปรแกรมเชิงฟังก์ชัน

ข้อเสียของการเขียนโปรแกรมเชิงฟังก์ชันเกิดจากคุณสมบัติเดียวกันนี้ทั้งหมด:

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

  • การประเมินที่ไม่เข้มงวดหมายถึงลำดับของการเรียกใช้ฟังก์ชันไม่สามารถคาดเดาได้ ซึ่งสร้างปัญหา I/O เมื่อลำดับของการดำเนินการมีความสำคัญ

สรุปการตรวจสอบการเขียนโปรแกรมการทำงานอย่างรวดเร็วของเรา ทีนี้มาดูรูปแบบการเขียนโปรแกรมกัน

การเขียนโปรแกรมที่จำเป็นเป็นกระบวนทัศน์การเขียนโปรแกรมที่มีลักษณะดังต่อไปนี้:

  • ซอร์สโค้ดของโปรแกรมประกอบด้วยคำสั่ง (คำสั่ง)

  • ต้องปฏิบัติตามคำแนะนำตามลำดับ

  • ข้อมูลที่สร้างขึ้นโดยการดำเนินการตามคำสั่งก่อนหน้านี้สามารถอ่านได้จากหน่วยความจำโดยคำสั่งที่ตามมา

  • ข้อมูลที่ได้รับจากการดำเนินการตามคำสั่งสามารถเขียนลงในหน่วยความจำได้

นี่คือคุณสมบัติหลักของภาษาที่จำเป็น:

  • การใช้ตัวแปรบูลีน
  • การใช้ตัวดำเนินการมอบหมาย
  • การใช้นิพจน์ผสม
  • การใช้รูทีนย่อย

โปรแกรมที่จำเป็นเป็นเหมือนคำสั่งที่แสดงอารมณ์ที่จำเป็นในภาษาธรรมชาติ กล่าวอีกนัยหนึ่ง โปรแกรมที่จำเป็นคือลำดับของคำสั่ง

ภาษาโปรแกรมที่จำเป็น ได้แก่ C และ C++

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

ภาษาโปรแกรมเชิงประกาศอีกภาษาหนึ่งคือ SQL

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

ลองนึกภาพสถานการณ์นี้: ชายคนหนึ่งมาหาเราที่ถนนและถามว่า "ฉันจะไปพิพิธภัณฑ์ได้อย่างไร"

ด้วยแนวทางที่จำเป็น เราจะให้อัลกอริทึมวิธีการเดินเท้าแก่เขา:

  • เลี้ยวตรงนี้
  • เดิน 2 ช่วงตึกเป็นเส้นตรง
  • เลี้ยวขวา

ด้วยวิธีการที่เปิดเผย เราจะเพียงแค่ให้ที่อยู่ แล้วคนๆ นั้นจะไปยังสถานที่ที่เหมาะสมด้วยตัวเขาเอง

ปัจจุบัน Javaเป็น ภาษาโปรแกรม แบบหลายกระบวนทัศน์ หลายกระบวนทัศน์หมายความว่าภาษาสนับสนุนหลายกระบวนทัศน์

ในช่วงวิวัฒนาการอันยาวนาน ภาษาได้ขยายโมเดลเชิงวัตถุเพื่อให้ผู้ใช้มีเครื่องมือที่แตกต่างกันและสามารถเลือกเครื่องมือที่ดีที่สุดสำหรับงานเฉพาะของพวกเขา

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

สรุป:

  • มีกระบวนทัศน์ในการเขียนโปรแกรมที่หลากหลาย

  • มีวิธีการที่เปิดเผยและจำเป็น

  • คุณควรเลือกแบบที่เหมาะกับงานที่ทำอยู่

  • Java เป็นภาษาหลายกระบวนทัศน์ที่รองรับทั้งสองวิธี