Точки с запятой
Точки с запятой
Со времен появления Алгола точки с запятой были частью почти каждого современного языка. Все мы использовали их считая это само собой разумеющимся. Однако я полагаю, что больше ошибок компиляции происходило из-за неправильно размещенной или отсутствующей точки с запятой, чем в любом другом случае. И если бы мы получали один пенни за каждое дополнительное нажатие клавиши, использованное программистами для набора этих маленьких мошенников, мы смогли бы оплатить национальный долг.
Будучи воспитанным на Фортране, я потратил много времени чтобы привыкнуть к использованию точек с запятой и сказать по правде я никогда полностью не понимал почему они необходимы. Так как я программирую на Паскале и так как использование точек с запятой в Паскале особенно мудрено, этот один небольшой символ является моим наибольшим источником ошибок.
Когда я начал разработку KISS, я решил критически относиться к каждой конструкции в других языках и попытаться избежать наиболее общих проблем, происходящих с ними. Это ставит точку с запятой очень высоко в моем хит-листе.
Чтобы понять роль точки с запятой, вы должны изучить краткую предисторию.
Ранние языки программирования были строчно-ориентированными. В Фортране, например, различные части утверждения занимали определенные столбцы и поля, в которых они должны были располагаться. Так как некоторые утверждения были слишком длинными для одной строки, существовал механизм «карта продолжения» («continuation card»), позволяющий компилятору знать, что данная карта все еще является частью предыдущей строки. Механизм дожил до наших дней, хотя перфокарты теперь – дела отдаленного прошлого.
Когда появились другие языки, они также приняли различные механизмы для работы с многострочными операторами. Хороший пример – BASIC. Важно осознать, тем не менее, что механизм Фортрана был затребован не столько строчной ориентацией языка, сколько ориентацией по столбцам. В тех версиях Фортрана, где разрешен ввод в свободной форме, он больше не нужен.
Когда отцы Алгола представили этот язык, они хотели уйти от строчно-ориентированных программ подобных Фортрану или Бейсику и разрешить ввод в свободной форме. Это дало возможность связывать множество утверждений в одну строку как например:
a=b; c=d; e=e+1;
В случаях подобных этому, точка с запятой почти обязательна. Та же самая строка без точек с запятой выглядит просто «странной»:
a=b c= d e=e+1
Я полагаю, что это главная... возможно единственная... причина точек с запятой: не давать программам выглядеть странно.
Но идея со связыванием множества утверждений вместе в одну строку в лучшем случае сомнительная. Это не очень хороший стиль программирования и возвращение назад к дням, когда считалось важным сэкономить карты. В наши дни CRT и выровненного кода ясность программ гораздо лучше обеспечивается сохранением раздельных утверждений. Все-таки хорошо иметь возможность множественных утверждений, но это позор – оставлять программистов в рабстве у точек с запятой только чтобы этот редкий случай не «выглядел странно».
Когда я начинал KISS, я попытался держать глаза открытыми. Я решил, что буду использовать точки с запятой когда это станет необходимо для синтаксического анализатора, но только тогда. Я рассчитывал, что это случится примерно в то время, когда я добавил возможность разложения утверждений на несколько строк. Но как вы можете видеть это никогда не случилось. Компилятор TINY совершенно счастлив анализировать наиболее сложные утверждения, разложенные на любое число строк, без точек с запятой.
Однако, есть люди, которые использовали точки с запятой так долго, что они чувствуют себя без них голыми. Я один из них. Как только KISS стал достаточно хорошо определен, я попробовал написать на этом языке несколько программ-примеров. Я обнаружил, к своему ужасу, что пытаюсь в любом случае расставлять точки с запятой. Так что теперь я стою перед перспективой нового потока ошибок компилятора, вызванных нежелательными точками с запятой. Тьфу!
Возможно более важно, что есть читатели, которые разрабатывают свои собственные языки, которые могут включать точки с запятой или которые хотят использовать методы из этого руководства для компиляции стандартных языков типа C. В обоих случаях, нам необходима возможность работать с точками с запятой.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Точки монтирования
Точки монтирования NT 5.0 разрешает монтирование (или подключение) одной файловой системы в точке монтирования, находящейся в другой файловой системе. Обычно управление точками монтирования является прерогативой администратора системы, но эти же задачи можно решать и
Точки пояснения
Точки пояснения Это ссылки, содержащие ответы на вопросы, которые, возможно, возникнут у посетителей в процессе покупки. Каждая точка пояснения ссылается либо на путевую точку, либо на точку конверсии (см. ниже). Они помогают посетителю не сбиться с
Путевые точки
Путевые точки Эти точки дают дополнительный стимул для покупателей. Они одновременно способствуют и достижению целей продавца, и удовлетворению потребностей целевой группы покупателей. Путевые точки помогают процессу продаж и имеют большое значение для конверсии
§ 105. Трагедия запятой
§ 105. Трагедия запятой 14 июня 2004Американский инженер Шолес с коллегами занимался созданием пишущих машин с конца 1860-х.Практически все источники пересказывают один и тот же миф: в первых моделях литерные рычаги залипали от быстрой печати, поэтому Шолес перемешал все таким
Кольца и точки
Кольца и точки Кольцо Кольцо представляет собой примитив, ограниченный двумя концентрическими окружностями различного диаметра (рис. 2.23). Рис. 2.23. Параметры, используемые при построении кольцаКоманда, создающая кольцо, имеет два наименования: DONUT и DOUGHNUT. Поэтому, чтобы
Указание внутренней точки
Указание внутренней точки Чтобы определить контур указанием внутренней точки, нужно щелкнуть в окне Hatch and Gradient (Штриховка и градиент) на кнопке Add: Pick points (Добавить: указание точек), после чего диалоговое окно скроется и вам необходимо будет указать точку, принадлежащую
30. Избегайте перегрузки && , || и , (запятой)
30. Избегайте перегрузки &&, || и , (запятой) РезюмеМудрость — это знание того, когда надо воздержаться. Встроенные операторы &&, || и , (запятая) трактуются компилятором специальным образом. После перегрузки они становятся обычными функциями с весьма отличной
7.5.3. Точки монтирования
7.5.3. Точки монтирования В файле /proc/mounts находится перечень смонтированных файловых систем. Каждая строка соответствует одному дескриптору монтирования и содержит имя устройства, имя точки монтирования и прочие сведения. Та же самая информация хранится в обычном файле
Пользовательские точки сохранения
Пользовательские точки сохранения Операторы пользовательских точек сохранения (user savepoints), также называемые вложенными транзакциями, позволяют вам "упаковать" группы операций внутри транзакции и отмечать их, если пересылка в базу данных была успешной. Если позже в
"Точки сохранения" в PSQL
"Точки сохранения" в PSQL Добавление возможностей создания пользовательских точек сохранения в Firebird 1.5 позволяет приложению управлять область действия отката транзакции. В PSQL всегда была возможность обработки исключений. Подробности см. в главе
Кольца и точки
Кольца и точки Кольцо Кольцо представляет собой примитив, ограниченный двумя концентрическими окружностями различного диаметра (рис. 2.23). Рис. 2.23. Параметры, используемые при построении кольцаКоманда, создающая кольцо, имеет два наименования: DONUT и DOUGHNUT. Поэтому, чтобы
Указание внутренней точки
Указание внутренней точки Чтобы определить контур указанием внутренней точки, нужно щелкнуть в окне Hatch and Gradient (Штриховка и градиенты) на кнопке Add: Pick points (Добавить: указание точек), после чего диалоговое окно скроется и вам необходимо будет указать точку, принадлежащую
Выбор точки съемки
Выбор точки съемки Очень эффектные кадры получаются, если снимать виды сверху. Владельцы цифровых камер среднего качества очень быстро замечают, что на дальних планах получаются неприемлемые искажения. При съемке сверху искажения не так заметны. Полезно также пробовать
У6.1 Точки
У6.1 Точки Написать спецификацию, задающую абстрактный тип данных ТОЧКА (POINT), моделирующий точки на плоскости в планиметрии. Эта спецификация должна отражать следующие аспекты: декартовы и полярные координаты, повороты, параллельные переносы, расстояние от начала
Василий Щепетнёв: Принцип одной запятой Василий Щепетнев
Василий Щепетнёв: Принцип одной запятой Василий Щепетнев Опубликовано 02 декабря 2010 года Как всякий самоучка, я обречен изобретать велосипеды. Плохого в том ничего нет, однако ж порой досадно: как много усилий затрачивается там, где нужны заемные