แทนที่จะฟังก์ชั่นเริ่มต้นด้วยซับรูทีน บอกพวกเขาว่าโปรแกรมเป็นเพียงรายการคำแนะนำสูตรในการบอกคอมพิวเตอร์ว่าต้องทำอะไร และมันจะถูกดำเนินการคำสั่งอย่างใดอย่างหนึ่งหลังจากที่อื่น (มีความเป็นไปได้ที่จะทำบางขั้นตอนในแบบคู่ขนาน แต่เพิ่มเติมเกี่ยวกับที่ในภายหลัง)
งานบางอย่างค่อนข้างบ่อยและซ้ำซากดังนั้นมันจะแย่มากถ้าเราต้องเขียนมันซ้ำแล้วซ้ำอีกดังนั้นเราเขียนมันแค่ครั้งเดียวและสร้าง "โปรแกรมเล็ก ๆ " ออกจากโปรแกรม - รูทีนย่อยที่สามารถนำมาใช้ซ้ำได้ ส่วนอื่น ๆ ของโปรแกรม เพื่อให้สามารถดำเนินการได้มากกว่าหนึ่งครั้งเราให้ชื่อที่มีความหมายในโปรแกรมของเรา และจากนั้นเราสามารถใช้ชื่อนั้นเมื่อเราต้องการเรียกใช้งาน "โปรแกรมเล็ก ๆ " นี้เป็นส่วนหนึ่งของชื่อที่ใหญ่กว่าโดยเรียกมันด้วยชื่อนั้น
การเรียกรูทีนย่อยนั้นเหมือนกับการเรียกปีศาจที่รู้วิธีการทำงานโดยใช้ชื่อของปีศาจนั้น ดังนั้นเมื่อเราต้องการทำงานเฉพาะในโปรแกรมของเราเราเขียน "เรียกปีศาจชื่ออาร์โก ธ " และปีศาจก็ปรากฏขึ้นและทำงานให้เราเมื่อเราสั่งให้เขาทำแล้วจากนั้นก็ไปต่อ งาน.
บางครั้งปีศาจต้องการข้อมูลเพิ่มเติมโดยที่เขาไม่สามารถตัดสินใจได้ว่าจะต้องทำงานอะไรหรืออะไรที่เราต้องการจากเขา เช่นถ้าปีศาจควรจะสร้างปราสาทเขาอาจจำเป็นต้องรู้ที่เขาควรจะสร้างมันหรือวิธีการใหญ่ฯลฯ เหล่านี้เป็นข้อโต้แย้งที่ส่งผ่านไปยังปีศาจ ... ผมหมายถึงย่อยซึ่งตอนนี้กลายเป็นparametrized
พารามิเตอร์คือชิ้นส่วนของข้อมูลที่ขาดหายไป แต่จำเป็นสำหรับการทำงาน พวกเขาเปลี่ยนสิ่งที่รูทีนย่อยสามารถทำได้เล็กน้อย พวกเขาเป็นเหมือนช่องว่างในสูตรที่ต้องกรอกก่อนที่เราจะสามารถดำเนินการได้
อาร์กิวเมนต์ในทางกลับกันคือข้อมูลจริง (ค่า) ที่เราจัดหาให้สำหรับพารามิเตอร์เหล่านี้
สำหรับการประมวลผลแบบขนานเราสามารถคิดได้ด้วยวิธีนี้: มีบางคน (หรือบางอย่าง ) ที่เรียกใช้งานโปรแกรม (รายการคำสั่ง) มันเป็นมนุษย์อีกคน (คุณรู้ไหมว่า "คอมพิวเตอร์" เคยเป็นชื่อของคนที่ทำการคำนวณหรือไม่) หรือเครื่องจักร โปรแกรมเป็นเพียงรายการคำสั่ง แต่ไม่สามารถทำงานได้ด้วยตนเอง ต้องมีบางคนหรือบางสิ่งที่จะทำกระบวนการคำนวณ(ทำสิ่งเหล่านี้จากรายการ) และบางครั้งการกระทำเหล่านี้สามารถทำได้ในแบบคู่ขนาน - เราสามารถแจกจ่ายสำเนาของรายการไปให้คนหลาย ๆ คนและปล่อยให้แต่ละคนทำหน้าที่แตกต่างกันจากรายการตราบใดที่พวกเขาไม่ขัดจังหวะกันและกันหรือไม่ ไม่ต้องรอผลงานของคนอื่น นั่นคือมัลติเธรดสำหรับคุณ;)
สำหรับความแตกต่างระหว่างฟังก์ชั่นและซับรูทีน (เรียกว่าขั้นตอน ) ที่แตกต่างกันตามปกติคือว่าการทำงานจะถูกเรียกว่าการคำนวณบางอย่างคุ้มค่าซึ่งมันกลับเป็นผลมาจากการดำเนินการในขณะที่ขั้นตอนมีการดำเนินการเพียงเพื่อความสนุกสนาน;) AKA สำหรับ "ผลข้างเคียง" ของพวกเขา - เพียงเพื่อประโยชน์ของการดำเนินการที่ทำจากรายการ
แต่ถ้าเรียกขั้นตอนหรือฟังก์ชั่นที่ทำให้เกิดปัญหาบางอย่างในตอนแรกคุณสามารถใช้อีกวาระหนึ่งที่ครั้งหนึ่งเคยเป็นที่นิยม: กระโดด หนึ่งสามารถกระโดดลงในรูทีนย่อยซึ่งหมายความว่าคุณหยุดดำเนินการสิ่งที่คุณกำลังทำในขณะนี้และ "กระโดด" ไปยังสถานที่อื่นในรายการ (หรือรายการอื่นใด ๆ ) - รูทีนย่อย - เพื่อทำงานของมัน จากนั้นเมื่อคุณทำเสร็จแล้วคุณ "กระโดดกลับ" นั่นคือคุณกลับไปยังสถานที่ที่คุณถูกขัดจังหวะเพื่อที่คุณจะสามารถทำงานต่อไปได้ ความแตกต่างระหว่างการโทรและกระโดดคือตอนนี้คุณคือปีศาจ
สำหรับวิธีที่บางคนกล่าวถึงที่นี่หรือความจริงที่ว่าบางภาษา "ไม่มีฟังก์ชั่นวิธีการเท่านั้น" - ที่ไม่ถูกต้องมากเพราะวิธีการที่มีฟังก์ชั่น! - ชนิดพิเศษ: เป็นฟังก์ชั่นที่ใช้ในการดึงข้อมูลบางอย่างที่ห่อหุ้มอยู่ในวัตถุหรือทำงานกับมัน พวกเขาเป็น "วิธีการทำงานกับข้อมูลเหล่านั้น" ชื่อมาจากกระบวนทัศน์เชิงวัตถุที่ข้อมูลถูกล้อมรอบด้วยวัตถุและไม่สามารถดำเนินการได้โดยตรงโดยฟังก์ชันพิเศษที่เรียกว่า "วิธีการ" เท่านั้น
วิธีการพิเศษในวิธีอื่น: ต้องทราบว่าวัตถุใดที่ควรจะใช้งาน / เรียกใช้บน (วัตถุ "นี้") นั่นเป็นสาเหตุที่วิธีการมักจะประดับด้วยพารามิเตอร์ที่ซ่อนเพิ่มเติมที่เก็บข้อมูลเกี่ยวกับวัตถุที่มันถูกเรียก (ตัวชี้ "นี้") วิธีนี้จะซับซ้อนวิธีที่ฟังก์ชั่นนั้นเรียกว่าบิต แต่เป็น "รายละเอียดการใช้งาน" โปรแกรมเมอร์ไม่ควรกังวลมากตราบใดที่เขารู้ว่าเขากำลังทำอะไรอยู่