Отступы говорят вам, где вы находитесь, в обоих стилях синтаксиса. Если вы напишите в одной строке VB-программу или C # -программу, вы вскоре не сможете определить, где находится вложенный синтаксис. Машина анализирует конечные фразы блока или фигурные скобки, но людям нужен отступ.
Фразы окончания блока приходят из эпохи перфокарт и бумажной ленты, когда программирование было гораздо менее интерактивным и визуальным. Или, на самом деле, не интерактивный вообще. Вводить программы было сложно, поэтому программистам требовалось, чтобы компиляторы были очень умны в анализе синтаксиса и устранении ошибок.
В ту ушедшую эпоху цикл редактирования-компиляции-запуска мог включать в себя подготовку перфокарт с помощью перфоратора карт, а затем выстраивание в очередь на окно отправки на работу, где клерк брал перфокарты и отправлял их на машину. Позже, программист будет собирать вывод (напечатанный на бумаге) из другого окна. Если бы в программе были ошибки, вывод состоял бы только из диагностики компилятора. Когда время выполнения операции велико, добавленная стоимость набора end if
вместо просто )
оправдана, если это помогает улучшить качество диагностики, потому что программист должен исправить как можно больше ошибок за одну итерацию, чтобы уменьшить количество потерянного времени итерации через окно представления работы.
Когда закрывающая фигурная скобка отсутствует, трудно сказать, какая открытая скобка является той, которая не является закрытой. (Компилятору, возможно, придется анализировать отступы, чтобы сделать обоснованное предположение.) Если вы удаляете закрывающую фигурную скобку внутри функции, то похоже, что весь остальной файл является частью этой функции, что приводит к потоку бесполезных сообщений об ошибках. Принимая во внимание, что если у вас есть end function
синтаксис, компилятор может определить, где заканчивается ошибочная функция, восстановить и правильно проанализировать последующие функции, предоставив вам дополнительную диагностику, если таковая имеется, что имеет смысл.
Когда вы работаете в текстовом редакторе с поддержкой кода, который автоматически выравнивает и раскрашивает ваш код, на экране с высоким разрешением, где вы можете видеть шестьдесят или более строк, аргументы для таких неуклюжих языков больше не применяются. Вы можете постепенно редактировать и перестраивать программы так быстро, что вы можете справиться только с одной ошибкой за раз. Более того, видя одновременно большие разделы программы на экране и поддерживая правильные отступы, вы можете в первую очередь уменьшить вероятность появления ошибок вложенности такого рода. А хороший текстовый редактор программирования даже будет отмечать некоторые виды синтаксических ошибок при вводе. Более того, есть складывающиеся редакторы, которые свернут блоки программы на основе ее синтаксиса, давая «контурное» представление о ее структуре.
Lisp использовал круглые скобки с самого начала и, возможно, не случайно хакеры Lisp впервые стали программировать как интерактивный опыт, создавая системы, которые принимают программы небольшими порциями (выражениями).
На самом деле, вам совсем не нужны конечные символы, как показывает язык Python. Идентификация может быть просто структурой. Люди уже используют отступы, чтобы понять структуру кода даже в тех языках, где машина использует конечные символы или фразы.