“ วิธีการ” เป็นคำพิเศษใน OOP มาจากที่ใด


13

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

คำตอบ:


11

Java และ C # มีวิธีการจาก C ++ ซึ่งได้รับมันจากSimula

และAlgolอาจมีอิทธิพลต่อ Simula:

นอกจากนี้เวอร์ชัน MIT ALGOL, AED-0, โครงสร้างข้อมูลที่เชื่อมโยง ("plexes", ในภาษานั้น) โดยตรงกับโพรซีเดอร์, การระบุสิ่งที่เรียกว่า "ข้อความ", "เมธอด" และ "ฟังก์ชั่นสมาชิก" ในภายหลัง


3
IIRC, C ++ มักจะชอบฟังก์ชั่นสมาชิกมากกว่าวิธีการ
tdammers

จากบทความของวิกิพีเดียฉบับเดียวกันที่วางเหรียญของคำ (เกี่ยวข้องกับ OOP) ภายในครึ่งแรกของยุค 60
Tulains Córdova

2

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

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


6
ฉันเกรงว่าคุณ 'คิด' ไม่ถูกต้อง - วิธีการ (กระบวนการเพื่อให้บรรลุเป้าหมาย) และระเบียบวิธี (การศึกษา) นั้นมีความหมายต่างกัน
JK

1
นอกจากนี้ "เมธอด" ยังมีอยู่เป็นคำภาษาอังกฤษเป็นเวลานานมาก ไม่จำเป็นต้องมองหาคำสัญญาอีกต่อไป
Steve314

เกี่ยวกับการใช้ "ฟังก์ชั่น" แทน "วิธีการ" ที่ส่วนใหญ่เป็นความผิดของ C ++ และเนื่องจากความจริงที่ว่า C มีแนวคิดของ "ขั้นตอน" ไม่เพียง "ฟังก์ชั่น" voidที่มีผลตอบแทน ฟังก์ชั่นสมาชิก C ++ นั้นมีความสัมพันธ์อย่างใกล้ชิดกับฟังก์ชั่นทั่วไป (ซึ่งแตกต่างจาก Simula) - การมีthisพารามิเตอร์โดยนัยและ (อาจ) กลไกการจัดส่งแบบรันไทม์ไม่ได้เปลี่ยนแปลงสิ่งที่คุณกำลังทำอยู่ ฉันไม่รู้ว่า C เป็นคนแรกที่ปฏิบัติหน้าที่และขั้นตอนเหมือนกันหรือไม่ แต่ Pascal (ภาษาที่ใหม่กว่า) มีfunctionและprocedureคำหลัก - แม้ว่า IIRC แล้วฟังก์ชัน Pascal อาจมีผลข้างเคียง
Steve314

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

1

ฉันได้รับการค้นหาข้อมูลเกี่ยวกับเรื่องนี้มานานหลายทศวรรษ ฉันเดาเพื่อให้ห่างไกลคำว่าเข้ามา Simula จากฟิลด์พิเศษของการคำนวณตัวเลขที่อัลกอริทึมที่เฉพาะเจาะจงที่จะใช้ฟังก์ชั่น (เช่นเป็นค่าเฉพาะหรืออะไรก็ตาม) มักจะเรียกว่าวิธีการ นี่เป็นเพราะคุณอาจมีวิธีการทางตัวเลขที่แตกต่างกันสำหรับการคำนวณฟังก์ชั่นทางคณิตศาสตร์เดียวกันกับการแลกเปลี่ยนที่แตกต่างกัน ใน OOP เนื่องจากวิธีการเอาชนะคุณอาจมีฟังก์ชั่น "เดียวกัน" ที่แตกต่างกันตามความเหมาะสมสำหรับชั้นเรียน - เช่นพื้นที่จะถูกนำไปใช้งานที่แตกต่างกันสำหรับCircleและสี่เหลี่ยมผืนผ้าซึ่งมีทั้งรูปร่างซึ่งมีพื้นที่. ดูเหมือนว่านี่เป็นการขยายที่เหมาะสมของแนวคิดดั้งเดิมของวิธีการเชิงตัวเลข


0

ฉันไม่รู้อะไรเลยเกี่ยวกับนิรุกติศาสตร์ของคำนี้ในประวัติศาสตร์ OOP แต่ฉันรู้ว่ามันไม่ใช่การหักทอน (อนุมานได้) ระยะที่ดีกว่า (คำศัพท์ที่ลดลงมากกว่าเดิมหรือ MDT) เพราะอาจเป็นปฏิกิริยาหรือการกระทำ


2
ฉันแน่ใจว่าฉันไม่เห็นด้วยกับคุณ "วิธีการ" เป็นคำที่สมบูรณ์แบบสำหรับสิ่งทั้งหมดที่เกิดขึ้นเป็นวิธีการสร้างแบบจำลองสิ่งต่าง ๆ ด้วยการ 'สิ่ง' แต่ละชั้นเรียนมีวิธีการเปลี่ยนวิธีการสิ่งที่เป็น ในทำนองเดียวกับที่วิธีการเปลี่ยนแปลงสิ่งต่าง ๆ ในโลกแห่งความเป็นจริงเช่น
Vatine

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

1
ฉันเดาว่า 'ฟังก์ชัน' สามคำ, 'โพรซีเดอร์' และ 'เมธอด', 'ฟังก์ชั่น' มีความหมายทางคณิตศาสตร์ (แผนที่อินพุตไปยังเอาท์พุต) 'โพรซีเดอร์' มีความจำเป็น (ทำชุดของขั้นตอนต่างๆ ความรู้สึกในการทหาร); 'method' ไม่มีความหมายแฝงซึ่งอาจเป็นเหตุผลว่าทำไมมันจึงเป็นที่ต้องการใน OOP
tdammers

@Vatine +1 สำหรับ "cromulent"
MattDavey

-1

โปรแกรมเมอร์ที่มีพื้นหลัง REAL BASIC, VBx และ VB.net ตระหนักถึงการประกาศเมธอดสองวิธี "FUNCTION" & "SUB" ภาษาตระกูล BASIC อนุญาตให้ประกาศฟังก์ชันด้วยคีย์เวิร์ด "FUNCTION" รวมถึงคีย์เวิร์ด "SUB" ความแตกต่างระหว่างสองสิ่งนี้คือ "FUNCTION" สามารถหรือจะไม่ส่งคืนค่าที่เป็น "SUB" เพียงเรียกใช้โค้ด แต่จะไม่ส่งคืนค่าใด ๆ แต่ด้วยการถือกำเนิดของแนวคิด OO ข้อตกลงและฟังก์ชั่นเริ่มถูกใช้แทนวิธีการ


2
กันไปสำหรับขั้นตอน / ฟังก์ชั่นของปาสกาล
Mchl

3
VB ใช้ "Function" และ "Sub" ย่อมาจาก "Subroutine" ไม่ใช่ "Method"
Ant

5
ฉันสงสัยว่า Alan Kay กำลังคิดพื้นฐานเมื่อมากับ OOP และ Smalltalk
Maglob
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.