Другие языки программирования и технологии
Что такое сабрутины? (Subroutine)
Сказали, что это те же функции, вроде void func(int a). Так ли это? Или есть различия?
На русский язык "subroutine" переводится словом "подпрограмма". И это обобщающий термин, обозначающий блок кода, который может быть неоднократно вызван в разных местах программы - с возвратом управления в место вызова после его завершения.
Подпрограммы бывают трёх типов:
1. Процедура (procedure) - просто выполняемый блок кода с параметрами. В явном виде ничего не возвращает. Вызов процедуры производится отдельным оператором. Каждый вызов процедуры запускает выполнение её кода с начала.
2. Функция (function) - выполняемый блок кода с параметрами, возвращающий значение в место своего вызова. Используются внутри выражений. По смыслу ближе всего к функциям в математике - например, sin или ln. Как и для процедуры, вызов функции запускает выполнение её кода с начала.
3. Сопрограмма (coroutine) - возвращает значение, как и функция, но, в отличие от функции, при возврате из сопрограммы сохраняет своё состояние и при следующем вызове возобновляет своё выполнение с точки возврата. Сопрограммы могут использоваться для реализации асинхронности. Частным случаем сопрограмм являются итераторы и генераторы.
Во многих современных языках нет отдельной конструкции для процедур: в некоторых языках процедура синтаксически отличается от функции отсутствием в заголовке типа возвращаемого значения, в некоторых языках - заданием для возвращаемого значения типа void.
Особый случай - язык Fortran. В нём служебное слово subroutine используется для объявления процедуры.
P.S. В твоём случае человек, которого ты цитируешь, перепутал "подпрограмму" и "процедуру".
Подпрограммы бывают трёх типов:
1. Процедура (procedure) - просто выполняемый блок кода с параметрами. В явном виде ничего не возвращает. Вызов процедуры производится отдельным оператором. Каждый вызов процедуры запускает выполнение её кода с начала.
2. Функция (function) - выполняемый блок кода с параметрами, возвращающий значение в место своего вызова. Используются внутри выражений. По смыслу ближе всего к функциям в математике - например, sin или ln. Как и для процедуры, вызов функции запускает выполнение её кода с начала.
3. Сопрограмма (coroutine) - возвращает значение, как и функция, но, в отличие от функции, при возврате из сопрограммы сохраняет своё состояние и при следующем вызове возобновляет своё выполнение с точки возврата. Сопрограммы могут использоваться для реализации асинхронности. Частным случаем сопрограмм являются итераторы и генераторы.
Во многих современных языках нет отдельной конструкции для процедур: в некоторых языках процедура синтаксически отличается от функции отсутствием в заголовке типа возвращаемого значения, в некоторых языках - заданием для возвращаемого значения типа void.
Особый случай - язык Fortran. В нём служебное слово subroutine используется для объявления процедуры.
P.S. В твоём случае человек, которого ты цитируешь, перепутал "подпрограмму" и "процедуру".
"Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства. "
(Википедия)
Подпрограммы можно поделить на два вида - возвращающие результат выполнения в своем имени (функции) и не делающие этого, у которых имя подпрограммы служит только для ее вызова (процедуры).
В C/C++ для унификации все подпрограммы называются функциями, а не возвращающие значение в своем имени подпрограммы считаются функциями, возвращающими пустое значение (void).
(Википедия)
Подпрограммы можно поделить на два вида - возвращающие результат выполнения в своем имени (функции) и не делающие этого, у которых имя подпрограммы служит только для ее вызова (процедуры).
В C/C++ для унификации все подпрограммы называются функциями, а не возвращающие значение в своем имени подпрограммы считаются функциями, возвращающими пустое значение (void).
Функция, которая ничего не возвращает.
термин идет из Бейсика и уже давно морально устарел
является неотъемлемой частью парадигмы функционального программирования
эта парадигма актуальна для языков C, assembler (множество видов) и некоторые библиотеки выполненные в духе функционального программирования
найти современный язык в котором реализованы рутины уже сложно; по факту все выполнено все равно через типичные function call
иногда рутиной могут называть некоторые бесконечные циклы типа while true, когда надо подчеркнуть именно его функциональную природу и роль в данном блоке кода
является неотъемлемой частью парадигмы функционального программирования
эта парадигма актуальна для языков C, assembler (множество видов) и некоторые библиотеки выполненные в духе функционального программирования
найти современный язык в котором реализованы рутины уже сложно; по факту все выполнено все равно через типичные function call
иногда рутиной могут называть некоторые бесконечные циклы типа while true, когда надо подчеркнуть именно его функциональную природу и роль в данном блоке кода