Какое техническое определение "рутинное"?

Я изучаю язык lisp (для выполнения lisp подпрограмм), и в общем контексте я знаю, что такое обычная программа, но в техническом контексте я могу говорить об этом, потому что сейчас я начинаю изучать подпрограммы, Итак, какое настоящее определение рутины? (я уже "googled", но ничего не нашел)

Ответы

Ответ 1

Термин "процедура" происходит от subroutine, что является более распространенным термином в таких языках, как BASIC, где фактически создается SUBroutines. (BASIC фактически имел разницу между SUBroutine и FUNCTION, но тем не менее...)

Из записи в Википедии:

В информатике подпрограмма (также называемая процедурой, функцией, подпрограммой, методом или подпрограммой) является частью кода в более крупной программе, которая выполняет определенную задачу и относительно независима от оставшегося кода.

     

Как следует из названия "подпрограмма", подпрограмма ведет себя точно так же, как компьютерная программа, которая используется как один шаг в более крупной программе или другой подпрограмме. Подпрограмма часто кодируется так, что ее можно запускать ( "вызывать" ) несколько раз и/или из нескольких мест во время одного выполнения программы, в том числе из других подпрограмм, а затем отводить назад (возврат) к следующей инструкции после "вызов" после выполнения задачи подпрограммы.

Различные языки/среды/эпохи имеют разные экосистемы и, следовательно, разные термины для описания одной и той же общей концепции. Обычно я использую только функцию термина (или метод в среде "ООП" ).

Счастливое кодирование.


Для удовольствия у меня есть Community Wiki'ed. Список, приведенный ниже, мы надеемся, что мы рассмотрим, какой термин является "правильным" (широко распространенным) для использования на данном языке, чтобы означать рутину. Неофициально подпрограмма используется в контексте всех нижеперечисленных языков, поэтому ее следует опустить, если она не используется. Не стесняйтесь добавлять, корректировать и комментировать по мере необходимости.

  • C - функция
  • Java - method. Хотя функция также часто используется, функция term не отображается в Спецификации языка Java.
  • С# - метод и функция. В спецификации функции относятся к функциям-объектам и анонимным функциям. Они не совпадают с методами, которые являются членами типов (классов или структур). Также рассмотрите делегатов.
  • JavaScript - функция или метод. Методы - это функции, к которым осуществляется доступ через свойство объекта.
  • Haskell - function. Это принятая терминология.
  • Scala - функция или метод. Метод, если def член типа, функции являются первоклассными значениями.
  • BASIC - функция или подпрограмма. Подпрограммы не возвращают значения. Поддерживает вызов по ссылке.
  • FORTRAN - функция или подпрограмма. Подпрограммы не возвращают значения. Поддерживает вызов по ссылке.
  • LISP - функция. DEFUN → DEfineFUNction, все формы являются допустимыми выражениями. Также рассмотрите macros, которые сами по себе не являются функциями, но, возможно, являются подпрограммами.
  • VHDL - подпрограммы: функции и процедуры. Процедуры не имеют возвращаемого значения.
  • SmallTalk - method
  • Python - method
  • Ruby - method (часто меняются с помощью функции? lambdas/Procs можно считать разными?)
  • Perl - функция и подпрограмма. Существует только одна форма для объявления функции /SUBroutine, поэтому нет различия w.r.t. возвращаемые значения. Использование метода (для объектно-связанных функций) кажется менее распространенным, чем на других языках.
  • Паскаль - процедуры и функции
  • Ada - процедуры и функции

Ответ 2

Вы не можете найти техническое определение, поскольку для lisp нет технического определения. "Подпрограмма", за пределами водевиля, является еще одним именем для функции. Хотя прошло много лет с тех пор, как я запрограммировал полный рабочий день на Lisp, никто никогда не использовал этот термин каким-либо формальным способом или даже не использовал его обычно. Мы говорили о "функциях", "макросах" и "формах". Если кто-то сказал: "О, есть рутина для подсчета количества яблок в пироге", это было совершенно неформально.