Термин рутина происходит от подпрограммы , которая является более распространенным термином в таких языках, как BASIC, где фактически создаются подпрограммы. (BASIC действительно имел разницу между подпрограммой и функцией, но тем не менее ...)
Из записи в Википедии:
В информатике подпрограмма ( также называемая процедурой, функцией, подпрограммой, методом или подпрограммой ) представляет собой часть кода в более крупной программе, которая выполняет определенную задачу, и составляет относительно независимо от оставшегося кода.
Как следует из названия «подпрограмма», подпрограмма ведет себя почти так же, как компьютерная программа, которая используется в качестве одного шага в более крупной программе или другой подпрограмме. Подпрограмма часто кодируется таким образом, чтобы ее можно было запускать («вызывать») несколько раз и / или из нескольких мест в течение одного выполнения программы, в том числе из других подпрограмм, а затем переходить назад (возвращаться) к следующей инструкции после "вызов", когда задача подпрограммы выполнена.
Различные языки / среды / эпохи имеют разные экосистемы и, следовательно, разные термины для описания одной и той же общей концепции. Я обычно использую термин function (или method в среде "ООП") в эти дни.
Счастливого кодирования.
Для удовольствия у меня есть сообщество Wiki'ed. Надеемся, что приведенный ниже список охватывает, какой термин (термины) является (являются) «правильными» (общепринятыми) для использования на данном языке, что означает рутина . Неофициально рутина используется в контексте всех языков, представленных ниже, поэтому ее следует опускать, если это не термин «де-факто». Не стесняйтесь добавлять, исправлять и комментировать соответствующим образом.
- C - функция
- Java - метод . Хотя функция также часто используется, термин функция не появляется в Спецификации языка Java .
- C # - метод и функция . В спецификации функции относятся к объектам-функциям и анонимным функциям. Они не совпадают с методами, которые являются членами типов (классов или структур). Также рассмотрите делегатов.
- JavaScript - функция или метод . Методы - это функции, доступ к которым осуществляется через свойство объекта.
- Haskell - функция . Это принятая терминология.
- Scala - функция или метод . Метод, если
def
член типа, функции являются первоклассными значениями.
- BASIC - функция или подпрограмма . Подпрограммы не возвращают значения. Поддерживает вызов по ссылке.
- FORTRAN - функция или подпрограмма . Подпрограммы не возвращают значения. Поддерживает вызов по ссылке.
- LISP - функция . DEFUN -> DEfineFUNction, все формы являются допустимыми выражениями. Также рассмотрим макросы , которые сами по себе не являются функциями, но, вероятно, являются подпрограммами.
- VHDL - подпрограммы: функции и процедуры . Процедуры не имеют возвращаемого значения.
- SmallTalk - метод
- Python - метод
- Ruby - метод (часто взаимозаменяемый с функцией? Лямбды / процы можно считать разными?)
- Perl - функция и подпрограмма . Существует только одна форма для объявления функции / подпрограммы, поэтому нет различия между w.r.t. возвращаемые значения Использование метода (для объектно-связанных функций) кажется менее распространенным, чем в других языках.
- Паскаль - процедуры и функции
- Ада - процедуры и функции