Происхождение отступа кода


31

Мне интересно узнать, кто ввел отступ кода, а также когда и где он был введен.

Это кажется настолько важным для понимания кода, но оно не было универсальным. Большая часть кода на Фортране и Базовом языке была (есть?) Без отступов, и то же самое относится и к Коболу.

Я почти уверен, что даже видел старый код на Лиспе, написанный как непрерывный текст с переносом строк. Вы должны были посчитать скобки в своей голове, просто чтобы разобрать это, не говоря уже о том, чтобы понять это.

Итак, откуда появилось такое огромное улучшение? Я никогда не видел упоминаний о его происхождении.

Помимо оригинальных примеров его использования, я также ищу оригинальные обсуждения отступов.


Я не уверен, что у этого есть единственная точка происхождения. Кроме того, для некоторого раннего кода проблема была бы занята самими пробелами.
— Джек Эйдли,

1
На самом деле, Фортран был с отступом. В роде. Он был размещен в столбцах, первый из которых был зарезервирован для Cперсонажа, если вы делали комментарий.
— Джонатан Ландрум

За исключением случаев, когда отступ используется для изменения семантического значения кода (то есть, когда изменение отступа помещает его в циклы или как часть if, как в F #), отступ на самом деле не является языковой функцией, это особенность IDE ( и немного в компиляторе, чтобы игнорировать ведущие пробелы). @ Джек прав - изначально программы были перфорированы на карточках, а отступы буквально не существовали в хранилище (и, возможно, не должны сейчас тоже). Колонка RPG не использует отступы (в любом случае у вас есть только ~ 20 символов на строку), но IDE может «мягко» сделать отступ для вас.
— Заводная муза

6
Размышляя об этом в одночасье, мне приходит в голову, что в значительной степени отступы, вероятно, предшествуют программированию. Отступы, вероятно, использовались в списках команд до того, как кто-либо писал компьютерные программы. Я пытаюсь найти пример.
— Джек Эйдли,

@ Clockwork-Muse Отступы были языковой функцией в языке COBOL примерно 20 лет назад («Область A», «Область B», т . Д. ).
— Росс Паттерсон

Ответы:


21

Истоки кода с отступом, вероятно, можно найти в ALGOL :

ALGOL представил блоки кода и пары beginand endдля их разделения, а также был первым языком, реализующим определения вложенных функций с лексической областью действия.


Это звучит разумно, хотя мне интересно, может, прога Лиспа не появилась первой? В любом случае я действительно после специфики о введении отступа.
— Даниэль Малер

4
@DanielMahler - Просмотрите руководство по программированию LISP 1 и убедитесь сами. Часть кода примера имеет отступ, но в лучшем случае она случайна. Большая часть кода примера расположена слева.
— Дэвид Хаммен

@DavidHammen Должно быть, это была одна из худших пишущих машинок ... Вы бы подумали, что они просто написали все это от руки.
— Panzercrisis

6
Я не думаю, что цитируемый текст на самом деле поддерживает использование / существование отступа . Это поддержка секционирования кода. Java использует скобки ( {}) для разделения блоков, и вы можете определять вложенные функции, но это ничего не говорит мне о том, действительно ли код имеет отступ.
— Заводная муза

12

Код с отступом должен был появиться до 1958 года, поскольку он присутствовал - но не был повсеместным - в LISP и ALGOL. Самое раннее, что я могу найти, это COMTRAN который был представлен в 1957 году, хотя я могу найти только руководство 1960 года (см. Стр. 90ish). Этот отступ отличается от современной концепции, так как в COMTRAN отсутствует блочная структура большинства языков со времен ALGOL, но я думаю, что он все равно должен учитываться.

Я подозреваю, что это на самом деле не первый пример, но я не могу найти его раньше.

обновленный

Мне пришло в голову, что в значительной степени отступы, вероятно, предшествуют программированию. Отступы, вероятно, использовались в списках команд до того, как кто-либо писал компьютерные программы. К сожалению, я не могу найти хороших примеров этого.


-1

Расширение комментария Росса Паттерсона - компиляторы COBOL (или, по крайней мере, компиляторы IBM, которые я использовал в своей карьере до открытия систем) заставили отступы (области «A» и «B», которые он упоминает). Если какой-либо из элементов, которые должны были находиться в этих областях, не был размещен точно, ваш код не сможет скомпилироваться. Однако помимо этого никаких особых отступов не требовалось - это часто приводило к затруднениям при изменении кода другого разработчика, стиль отступов которого отличался от вашего - этикет предлагал бы вам следовать существующему шаблону, поскольку это сохраняло мир среди сверстников; Кроме того, различные стили в одном и том же источнике могут ухудшить внешний вид, похожий на тетрис.

Прошло много лет с тех пор, как я думал о COBOL и его отступах - спасибо, что задали вопрос и сделали небольшую поездку в прошлое!

Marty

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.