Походження відступу коду


31

Мені цікаво дізнатися, хто запровадив відступ коду, а також коли і де він був введений.

Це здається таким критичним для розуміння коду, але воно не було універсальним. Більшість кодів Fortran і Basic були (є?) Безперешкодними, і те саме стосується і Cobol.

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

То звідки взялося таке величезне поліпшення? Я ніколи не бачив жодної згадки про його походження.

Крім оригінальних прикладів його використання, я також шукаю оригінальні обговорення відступів.


Я не впевнений, що він має єдину точку походження. Крім того, для деякого раннього коду, простір, зайнятий самими пробілами, був би проблемою.
Джек Едлі

1
Насправді FORTRAN був відступним. Сортами. Він був викладений у стовпці, перший зарезервований для Cперсонажа, якщо ви робили коментар.
Джонатан Ландрум

Заборонні випадки, коли відступ використовується для зміни смислового значення коду (тобто, коли зміна відступу покладе його в циклі або як частина a if, a la F #), відступ насправді не є мовною особливістю, це особливість IDE ( і трохи в компіляторі, щоб ігнорувати провідні пробіли). @ Право Джека - спочатку програми пробивались на картках, і відступ буквально не існував у сховищі (а може, і не повинен бути зараз). Стовпчастий RPG не використовує відступ (і у вас завжди є лише 20 символів безкоштовно на рядок), але IDE може "м'яко" відступити код для вас.
Завод-Муза

6
Думаючи про це протягом ночі, мені здається, що в значній мірі відступ, ймовірно, передує програмуванню. Відступ, ймовірно, використовувався в списках інструкцій, перш ніж хтось писав комп'ютерні програми. Я намагаюся вислідити приклад.
Джек Едлі

@ Clockwork-Muse відступ був мовною особливістю в COBOL приблизно до 20 років тому ("A area", "B area" тощо ).
Росс Паттерсон

Відповіді:


21

Витоки відступного коду, ймовірно, можна знайти в ALGOL :

Алгол введені блоки коду і тому , beginі endпар для обмежують їх , і це був також першим мову реалізації вкладених визначень функцій з лексичної областю.


Це звучить розумно, хоча мені цікаво, чи не може прогноз Ліспа прийти не першим. У будь-якому випадку я дійсно після конкретики щодо введення відступів.
Даніель Малер

4
@DanielMahler - Перегляньте посібник з програмування LISP 1 і переконайтеся самі. Деякі з прикладів коду є відступними, але це в кращому випадку. Більшість прикладів коду залишається залишком.
Девід Хаммен

@DavidHammen Це, мабуть, була однією з найгірших машинок ... Ви б могли подумати, що вони просто написали всю справу.
Panzercrisis

6
Я не думаю, що цитований текст насправді підтримує використання / існування відступу . Це підтримка коду секціонування. Java використовує дужки ( {}) для розмежування блоків, і ви можете визначити вкладені функції, але це нічого не говорить про те, чи дійсно код з відступом.
Завод-Муза

12

Відступний код повинен був надійти до 1958 року, оскільки він був присутній - але не є всюдисущим - у LISP та ALGOL. Найдавніший, який я можу знайти, - це COMTRAN, який був представлений у 1957 році, хоча я можу знайти лише керівництво 1960 року (див. Сторінку 90). Цей відступ відрізняється від сучасного поняття, оскільки COMTRAN не має структури блоку більшості мов, оскільки ALGOL, але я думаю, що це все ще слід вважати.

Я підозрюю, що це насправді не перший приклад, але я не можу знайти жодного раніше.

Оновлено

Мені прийшло в голову, що в значній мірі відступ, ймовірно, передує програмуванню. Відступ, ймовірно, використовувався в списках інструкцій, перш ніж хтось писав комп'ютерні програми. На жаль, я не можу знайти хороших прикладів цього.


-1

Розширення коментаря Росса Паттерсона - компілятори COBOL (або принаймні компілятори IBM, які я використовував у кар'єрі перед відкритими системами) змусили відступити (згадані ним області "А" та "В"). Якщо будь-який з елементів, які повинні були знаходитись у цих областях, не був розміщений точно, ваш код не зможе компілювати. Однак, крім цього, не потрібно було жодного конкретного відступу - це часто призводило до стискання при зміні коду іншого розробника, стиль стику якого відрізнявся від вашого - етикет пропонує вам дотримуватися існуючого шаблону, оскільки він зберігав спокій серед однолітків; крім того, різні стилі в одному джерелі будуть обтяжуючими для перегляду, майже схожими на тетріс.

Минуло роки, як я подумав про COBOL та його відступ - дякую, що ви поставили запитання та надали невелику подорож до минулого!

Марті

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.