Apa Arti Khusus Dari Ketentuan: Fungsi, Metode, Prosedur, dan Subrutin?


11

Saya bertanya-tanya apa perbedaan spesifik dalam terminologi yang kami gunakan untuk mengelompokkan bagian-bagian kode yang terkait. Saya terkadang melihat istilah yang digunakan secara bergantian: banyak bahasa OO bahkan menggunakan kata kunci "fungsi" untuk mendefinisikan metode. (Mengapa?)

Jika Anda ingin lebih tepat, apa arti spesifik dari masing-masing? Atau apakah hanya apa saja yang dipilih oleh setiap bahasa untuk menyebutnya?


Hanya dua bahasa yang saya tahu yang digunakan functionuntuk metode adalah JavaScript dan PHP. Keduanya menggunakan kata kunci yang sama untuk non-metode (fungsi gratis), dan dalam kasus JavaScript sebenarnya tidak ada perbedaan antara fungsi dan metode, setidaknya tidak pada tingkat bahasa.

Contoh: di VB.Net Subadalah nilai Functiontanpa pengembalian. Di dalam PythonAnda dapat memiliki fungsi yang bukan bagian dari kelas apa pun, jadi itu bukan metode. Anda juga dapat mendeklarasikan fungsi dalam fungsi, dan Anda dapat melakukannya di C # juga. Terkadang mereka memiliki nama yang berbeda karena alasan yang sama dengan apel dan nanas: karena mereka berbeda.
Ayub

Apa yang telah Anda temukan sejauh ini yang membuat Anda berpikir ada perbedaan?
JeffO

Jawaban:


20
  • subprogram, subroutine
    "subroutine" mungkin berasal dari bahasa assembly. Beberapa prosesor menyertakan instruksi untuk mendukung subrutin sebagai cara mengatur kode dan menggunakan kembali bagian kode yang umum. Sebagai contoh, prosesor 6502 memiliki instruksi JSR (lompat ke subrutin) dan RTS (kembali dari subrutin). Saya ingat itu juga banyak digunakan dalam pemrograman terstruktur, di mana suatu program adalah hierarki unit kode yang kadang-kadang disebut subrutin atau subprogram. IMO, ini adalah istilah yang paling umum untuk beberapa unit kode yang kontrolnya sementara ditransfer untuk tujuan menyelesaikan tugas yang diberikan.

  • fungsi, prosedur
    Ini sering digunakan secara bergantian, tetapi dalam beberapa bahasa ada perbedaan. Dalam Pascal, fungsi adalah subprogram yang mengembalikan nilai, sedangkan prosedur adalah subprogram yang tidak. Dalam bahasa C dan bahasa terkait, setiap subprogram memiliki tipe pengembalian (bahkan jika itu void), jadi tidak ada perbedaan.

  • metode, fungsi anggota
    Ini adalah dua nama untuk hal yang sama - pada dasarnya fungsi yang dikaitkan dengan kelas atau objek tertentu.

  • operator
    Setiap bahasa memiliki seperangkat operator bawaan. Dalam beberapa bahasa, seperti C ++, operator adalah fungsi yang dapat diganti (mis. Diganti) dan / atau kelebihan (yaitu didefinisikan untuk tipe baru).

  • fungsi anonim
    Ini mengacu pada fungsi tanpa nama. Fungsi anonim pada dasarnya adalah blok kode yang dapat ditugaskan ke variabel atau diteruskan sebagai parameter untuk penggunaan selanjutnya, misalnya sebagai rutin penyelesaian.

  • closure, ekspresi lambda, block
    A closure adalah sepotong kode yang terikat pada satu set variabel. Saya menganggap penutupan sebagai fungsi anonim plus konteks.


4
Tidak semua bahasa dilengkapi dengan operator bawaan. Beberapa, seperti Skema dan Haskell, biarkan Anda mendefinisikan fungsi dengan nama seperti '+' atau '>> ='. Juga, Anda mungkin harus menambahkan bahwa dalam beberapa bahasa (seperti Skema), "fungsi" menyiratkan transparansi referensial (misalnya selalu mengembalikan nilai yang sama untuk input yang sama tanpa efek samping) sementara prosedur tidak. Kalau tidak, jawaban yang bagus.
Tikhon Jelvis

Sejauh ini saya ingat "operator" digunakan sebagian besar untuk fungsi dengan 2 argumen. Mereka infix (operator antara argumen:) 2 + 2. Ada pengecualian kecil seperti 1-arg seperti ++arg(awalan) atau arg++(postfix). Meskipun, saya belum melihat banyak operator postfix ..
Darek Nędza

-1

Itu tergantung pada bahasa, apa yang dapat Anda lakukan dengan mereka

  • apakah Anda perlu perbedaan
  • apakah ada perbedaan dalam sintaks, atau hanya kenyamanan, ketika berbicara tentang kode

AFAIK, di Basic, jika Anda memanggil sesuatu, yang tidak mengembalikan apa-apa, tetapi melakukan pekerjaan dengan efek samping, seperti mencetak, menulis ke file atau mengubah variabel global, itu disebut prosedur.

Jika mengembalikan sesuatu, itu disebut fungsi.

Dalam bahasa OOP seperti Java saya jarang menemukan istilah 'fungsi', tetapi 'metode', dan diajarkan bahwa fungsi adalah hal-hal yang bersifat global dan dapat dipanggil oleh semua orang.

Dalam scala fungsional dan bahasa-OOP, metode tidak disebut fungsi, tetapi Anda bisa meneruskan hal itu ke metode lain, dan kemudian menjadi fungsi.

Subrutin adalah rutinitas, yang disebut dengan rutinitas lain, menurut pemahaman saya.

Singkatnya, saya tidak berpikir ada definisi singkat atas semua bahasa dan lebih dari itu paradigma. Anda harus mempertimbangkan budaya spesifik, Anda masuk, jika Anda menggunakan istilah ini - mungkin Anda harus memperkenalkan definisi Anda terlebih dahulu.


-1

Saya akan mengatakan tergantung pada konteksnya, semua kata itu dapat berarti hal yang sama atau hal yang sangat berbeda, misalnya apa yang ditulis Caleb (tetapi ada lebih banyak lagi, yaitu bahasa di mana operator merupakan fungsi kelas satu, dll.). Jadi, sulit untuk memberikan definisi spesifik, dan bijak untuk tidak berasumsi terlalu banyak kecuali konteksnya (bahasa pemrograman) diketahui.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.