Синтаксис семантика прагматика языков программирования

Синтаксис семантика прагматика языков программирования

Синтаксис, семантика и прагматика

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

Именно так пытались поступать на заре программирования, когда, скажем, легендарный язык FORTRAN создавался одновременно с первым транслятором с данного языка.

Первый вариант — совершенно неудовлетворительный путь, поскольку всякое изменение в программе-трансляторе может полностью изменить смысл некоторых конструкций языка со всеми вытекающими отсюда последствиями.
Второй вариант соответствует взгляду на язык как на множество правильно построенных последовательностей символов. Если последовательность символов принадлежит языку, то она считается синтаксически правильной. Для программы это означает, что транслятор на ней не выдает ошибки. Но синтаксическая правильность не гарантирует даже осмысленности программы. Таким образом, здесь определяется лишь одна сторона языка.
Третий вариант работает только вместе со вторым, поскольку структурные единицы должны соединиться в синтаксически правильную систему. Он раскрывает еще одну сторону языка.
Таким образом, мы видим, что каждый язык имеет три стороны: синтаксис (второй вариант), семантика (третий вариант), прагматика (первый вариант).
Синтаксис алгоритмического языка — совокупность правил, позволяющая:

Семантика алгоритмического языка — соответствие между синтаксически правильными программами и действиями абстрактного исполнителя, позволяющее определить, какие последовательности действий абстрактного исполнителя будут правильны в случае, если мы имеем данную программу и данное ее внешнее окружение.
Под внешним окружением понимаются характеристики машины, на которой исполняется программа (точность представления данных, объем памяти, другие программы, которые можно использовать при выполнении данной, и т. д.), и потоки входных данных, поступающие в программу в ходе ее исполнения.
Прагматика алгоритмического языка — то, что связывает программу с ее конкретной реализацией. При этом, в частности, происходит следующее.

Прагматика иногда предписывается стандартом языка, иногда нет. Это зависит от того, для каких целей предназначены язык и его реализация.
Описание языка требует точного задания синтаксиса и семантики. На практике, однако, чем точнее и чем лучше для построения транслятора описан язык, тем, как правило, такое описание более громоздко и менее понятно для обычного человека, и поэтому точные описания существуют не для всех реальных языков программирования. Даже если они имеются, то в виде стандартов, к которым обращаются лишь в крайних случаях.
Синтаксис
Синтаксис — самая простая и самая разработанная часть описания алгоритмического языка.
Грамматика определяется системой синтаксических правил (чаще всего в описаниях языков называемых просто правилами). На уровне грамматики определяются понятия, последовательное раскрытие которых, называемое выводом, в конце концов дает их представление в виде последовательностей символов. Символы называются также терминальными понятиями, а все остальные понятия нетерминальными. Понятия бывают смысловые, т. е. языковые конструкции, для которых определено то или иное действие абстрактного вычислителя, и вспомогательные, нужные лишь для построения текста, но самостоятельного смысла не имеющие. Минимальные смысловые понятия соответствуют лексемам. Некоторые понятия вводятся лишь для того, чтобы сделать текст читаемым для человека. Минимальные из них (они подобны знакам пунктуации) естественно считать вспомогательными лексемами.
Но даже задача полного описания синтаксиса достаточно сложна и требует выделения подзадач.
Синтаксис принято разделять на две части:

Понятие контекстно-свободной грамматики стало первым строгим понятием в описаниях практических алгоритмических языков. За понятием КС-грамматики при внешней его простоте стоит достаточно серьезная теория. Эта грамматика представляется во многих формах (синтаксические диаграммы, металингвистические формулы Бэкуса-Наура либо расширенные металингвистические формулы) и, как правило, сопровождает систематизированное изложение конкретного языка. Каждое такое конкретное представление КС-грамматики достаточно просто, и может быть изучено по любому учебнику программирования.
Содержательно можно охарактеризовать КС-грамматику языка как ту часть его синтаксиса, которая игнорирует вопросы, связанные с зависимостью интерпретации лексем от описаний имен в программе.
Контекстные зависимости сужают множество правильных программ. Например, правило «все идентификаторы должны иметь описания в программе» указывает на то, что программа с неописанными именами не принадлежит данному языку (хотя она и допустима с точки зрения контекстно-свободного синтаксиса).
Неоднократные попытки формально описывать контекстные зависимости при определении языков показали, что эта задача гораздо более сложная, чем задание контекстно-свободного синтаксиса. Вдобавок ко всему, даже такие естественные правила, как только что представленное, при формальном описании становятся громоздкими и весьма трудными для понимания человека. По этой причине в руководствах редко прибегают к формализации описаний контекстных зависимостей (одним из немногих исключений является Алгол 68).
Пример 4.2.1. Требование о том, что каждое имя должно быть описано (в частности, в языках Pascal и C), конкретизируется в следующей форме.

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программированияПрагматика

Источник

Синтаксис, семантика и прагматика

О языке

Python — современный язык программирования, работающий на всех распространенных операционных системах для настольных компьютеров. Язык программирования Питон разрабатывается чуть более 20 лет. В настоящее время активно используется две версии языка — более старая версия 2 и современная версия.

Версия 2 более не развивается, но до сих пор ещеиспользуется, поскольку очень много программного обеспечения и библиотек разработано именно для версии 2. Между версиями есть существенная несовместимость, в том числе в синтаксисе команд ввода-вывода (программа на языке Python 2-й версии может не работать в 3-й версии и наоборот), но в целом они очень похожи. Мы будет использовать именно версию 3, как более современную и совершенную.

Python — современный универсальный интерпретируемый язык программирования.

1. Кроссплатформенность и бесплатность.

2. Простой синтаксис и богатые возможности позволяют записывать программы очень кратко, но в то же время понятно.

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

4. Богатая стандартная библиотека, возможность разработки промышленных приложений (для работы с сетью, GUI, базами данных и т.д.)

Python — один из самых простых и лаконичных языков. Научившись писать на нём в одну строчку сложные программы, которые на C и Pascal занимают десятки строк, вам уже не захочется добровольно возвращаться к этим языкам!

Большинство школьных олимпиад по информатике поддерживают язык Python. C 2015 года в текстах задач ЕГЭ примеры приводятся также и на языке Python.

Практика показывает, что задания ЕГЭ по информатике, в которых требуется написать программу, существенно проще решать с использованием языка Python, чем классических языков Бейсик, Паскаль, C/C++.

В университетах разных стран Python постепенно вытесняет языки С и Java, которые долгое время ис­пользовались для обучения студен­тов программированию. В список университетов и колледжей, в кото­рых изучается Python, входят более 30 учебных заведений США, в том числе Массачусетсский технологи­ческий институт (MIT) — ведущий мировой центр инженерного образо­вания.

РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА

· Марк Лутц. Изучаем Python. 4-е издание – очень толстый и подробный учебник.

· Марк Саммерфилд. Программирование на Python 3 – менее толстый, не столь подробный учебник.

Где применяется Python

Язык программирования Python приобретает все большую популяр­ность. По данным одного из самых известных рейтингов ТЮВЕ, Python с 2008 года прочно удерживается в восьмерке наиболее популярных языков программирования.

Python — стабильный и достаточно распространенный язык программирования. Он используется в некоторых проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений, а также для написания скриптов. На Python реализовано некоторое количество проектов, также он активно используется для создания прототипов будущих программ.

Многие компании активно используют Python для написания своих продуктов или некоторых их частей. Среди крупнейших можно выделить:

· Apple( использует Python и Twisted для разработки сервера календарей iCal)

· Европейская организация по ядерным исследова­ниям (CERN)

· Национальное управ­ление по воздухоплаванию и иссле­дованию космического пространства США (NASA)

Кроме того, Python активно используется в различных проектах:

· CherryPy — среда для разработки веб-приложений

· Django — среда для разработки веб-приложений

· Google App Engine — Google-хостинг

· Matplotlib — визуализация научных данных в стиле MATLAB

· BitTorrent — первый клиент-сервер для популярного протокола файлообменных сетей.

· Dropbox — приложение для прозрачной синхронизации данных на множестве компьютеров.

Следующие проекты используют Python для написания скриптов:

· Википедия использует Python для написания ботов

· OpenOffice.org — набор офисных программ, альтернатива Microsoft Office

· Vim — текстовый редактор

Python также активно используется разработчиками компьютерных игр (Eve Online, Civilization IV и др.)

Свободно распространяемые реа­лизации языка Python существуют для всех популярных операционных систем (Windows, Linux, Mac OS X, FreeBSD, Android, iOS и др.), что сразу снимает проблему лицензирования программного обеспечения.

Язык блок-схем

Для записи алгоритмов в школьном курсе часто используется два языка – псевдокод и язык блок-схем.

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

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

Алгоритм вычисления корней квадратного уравнения

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

Та же программа на языке С++ будет выглядеть так:

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

И на языке блок-схем, и на языке С++ запись имеет строгие формальные правила, которые требуется соблюдать. Эти формальные правила записи конструкций называются синтаксисом языка.

Pascal

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

Комментарии к коду

Будьте аккуратны, С чувствителен к регистру букв, нельзя заменить print на Print или PRINT. Весь текст (за исключением текстовой строки «Hello, World!») нужно набирать в нижнем регистре.

Для начала можно считать, что все строки, кроме пятой являются некоторым набором «заклинаний», без которых программа не будет работать и которые обязательно нужно указать, а вот пятую строку можно заменить на другие строки с различными инструкциями.

Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования

Комментарии к коду

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

Источник

4: Синтаксис, семантика и прагматика

Данная лекция вводит в проблему точного определения языка программирования 1 лишь настолько, насколько это необходимо для понимания последующего анализа языков и стилей. Эта проблема многогранна, и более подробное ее рассмотрение дается в другом курсе.

Различные стороны определения языка

Для создания, проверки и преобразования программ, построения систем программирования, а также для многих других нужд нам необходимо если не определение, то хотя бы описание алгоритмического языка. При этом требуются точные описания как текстов, так и их интерпретации. Рассмотрим существующие варианты.

Именно так пытались поступать на заре программирования, когда, скажем, легендарный язык FORTRAN создавался одновременно с первым транслятором с данного языка.

Первый вариант — совершенно неудовлетворительный путь, поскольку всякое изменение в программе-трансляторе может полностью изменить смысл некоторых конструкций языка со всеми вытекающими отсюда последствиями.

Второй вариант соответствует взгляду на язык как на множество правильно построенных последовательностей символов. Если последовательность символов принадлежит языку, то она считается синтаксически правильной. Для программы это означает, чтотранслятор на ней не выдает ошибки. Но синтаксическая правильность не гарантирует даже осмысленности программы. Таким образом, здесь определяется лишь одна сторона языка.

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

Таким образом, мы видим, что каждый язык имеет три стороны: синтаксис (второй вариант), семантика (третий вариант), прагматика (первый вариант).

Синтаксис алгоритмического языка — совокупность правил, позволяющая:

Семантика алгоритмического языка — соответствие между синтаксически правильными программами и действиями абстрактного исполнителя, позволяющее определить, какие последовательности действий абстрактного исполнителя будут правильны в случае, если мы имеем данную программу и данное ее внешнее окружение.

Под внешним окружением понимаются характеристики машины, на которой исполняется программа (точность представления данных, объем памяти, другие программы, которые можно использовать при выполнении данной, и т. д.), и потоки входных данных, поступающие в программу в ходе ее исполнения.

Прагматика алгоритмического языка — то, что связывает программу с ее конкретной реализацией. При этом, в частности, происходит следующее.

Прагматика иногда предписывается стандартом языка, иногда нет. Это зависит от того, для каких целей предназначены язык и его реализация.

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

Синтаксис

Синтаксис — самая простая и самая разработанная часть описания алгоритмического языка.

Грамматика определяется системой синтаксических правил (чаще всего в описаниях языков называемых просто правилами ). На уровне грамматики определяются понятия, последовательное раскрытие которых, называемое выводом, в конце концов дает их представление в виде последовательностей символов. Символы называются также терминальными понятиями, а все остальные понятия нетерминальными. Понятия бывают смысловые, т. е. языковые конструкции, для которых определено то или иное действие абстрактного вычислителя, и вспомогательные, нужные лишь для построения текста, но самостоятельного смысла не имеющие. Минимальные смысловые понятия соответствуют лексемам. Некоторые понятия вводятся лишь для того, чтобы сделать текст читаемым для человека. Минимальные из них (они подобны знакам пунктуации) естественно считать вспомогательными лексемами.

Но даже задача полного описания синтаксиса достаточно сложна и требует выделения подзадач.

Синтаксис принято разделять на две части:

Понятие контекстно-свободной грамматики стало первым строгим понятием в описаниях практических алгоритмических языков. За понятием КС-грамматики при внешней его простоте стоит достаточно серьезная теория. Эта грамматика представляется во многих формах (синтаксические диаграммы, металингвистические формулы Бэкуса- Наура либо расширенные металингвистические формулы) и, как правило, сопровождает систематизированное изложение конкретного языка. Каждое такое конкретное представление КС-грамматикидостаточно просто, и может быть изучено по любому учебнику программирования.

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

Контекстные зависимости сужают множество правильных программ. Например, правило «все идентификаторы должны иметь описания в программе» указывает на то, что программа с неописанными именами не принадлежит данному языку (хотя она и допустима с точки зрения контекстно-свободного синтаксиса ).

Пример 4.2.1. Требование о том, что каждое имя должно быть описано (в частности, в языках Pascal и C), конкретизируется в следующей форме.

В практических описаниях языков и в курсах программирования обычно довольствуются неформальным, но достаточно точным описанием контекстных зависимостей. Приведем пример такого описания.

Семантика

Мы определили семантику как соответствие между синтаксически правильными программами и действиями абстрактного исполнителя. Но остается вопрос, как задавать это соответствие. Семантика чаще всего определяется индукцией (рекурсией) по синтаксическим определениям.

Задаваемое семантикой соответствие между входными данными, программой и действиями, вообще говоря, определяется лишь полным текстом программы, включающим, в частности, все тексты используемых библиотечных модулей, но для понимания программы и работы над ней необходимо, чтобы синтаксически законченные фрагменты программы могли интерпретироваться автономно от окружающего их текста. Надо заметить, что современные системы практически никогда этому требованию не удовлетворяют. Слишком часто для понимания ошибки в программе нужно анализировать необъятные тексты библиотек.

Реализованный язык всегда является прагматическим компромиссом между абстрактной моделью вычислений и возможностями ее воплощения.

Прагматика

До сих пор речь шла об определении языка его абстрактным вычислителем. Прагматика задает конкретизацию абстрактного вычислителя для данной вычислительной системы. Большая часть прагматики размазана по тексту документации о реализации языка (эту частьпрагматики программист варьировать не может). Например, прагматическим является замечание, что тип Longint в системе Visual C++ определяется как 32-разрядное двоичное число с фиксированной точкой, занимающее слово памяти.

Та часть прагматики, которую может варьировать программист, требует отдельного синтаксического оформления. В языке Pascal есть так называемые прагматические комментарии, например, <$I+>, <$I->(включение/выключение контроля ввода-вывода). Многие из таких комментариев практически во всех версиях одни и те же. В самом стандарте языка явно предписана лишь их внешняя форма: <$. >.

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

Синтаксическая прагматика — это правила сокращения записи, можно сказать, скоропись для данного языка. Пример, который можно рассматривать как синтаксическую прагматику — команды увеличения и уменьшения на единицу. В С/С++ они представлены операторами

В С/С++ команды такого рода следует относить к модели вычислений языка, так как для нее постулируется, что язык является машинно-ориентированным и отражает особенности архитектуры вычислительного оборудования, а команды увеличения и уменьшения на единицу предоставляются программисту на уровне оборудования достаточно часто.

В Turbo Pascal и Object Pascal эти команды выражены следующим образом:

Другой пример — возможность записи в языке Prolog вместо вызова +(X,Y) выражения X+Y.

Семантическая прагматика — это определение того, что в описании языка оставлено на усмотрение реализации или предписывается в качестве вариантов вычислений.

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

Пример 4.4.1. Стандарт языка С предписывает, что системы программирования на нем должны предусматривать специальный инструмент для обработки программных текстов, который называется препроцессором. Препроцессор делает массу полезных преобразований. Как уже упоминалось, он берет на себя решение задачи подключения к программе внешних (библиотечных) файлов, с его помощью можно скрывать утомительные детали программирования, достигать ряда нужных эффектов, не предусмотренных в основных средствах языка (например, именованные константы). Постулируется, что программа на языке С есть то, что получается после работы препроцессора с текстом (разумеется, если результат такой работы окажется корректным). Следовательно, использование препроцессора — синтаксическаяпрагматика языка. Но это противоречит практике работы программиста: он просто не в состоянии написать содержательную программу, которая может быть оттранслирована без использования препроцессора. Работа препроцессора не очень затрудняет понимание получившейся программы, если при программировании на С ограничиваются употреблением препроцессорных команд подключения файлов определений и определения констант. Но когда применяются, к примеру, условные препроцессорные конструкции, возможно появление программ-химер, зрительно воспринимаемый текст которых дезинформирует относительно их реальной структуры.

Кажется, что действие выполняется, если x Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования0, но первый макрос раскрывается как

Источник

Синтаксис, семантика и прагматика

Прагматика

До сих пор речь шла об определении языка его абстрактным вычислителем. Прагматика задает конкретизацию абстрактного вычислителя для данной вычислительной системы. Большая часть прагматики размазана по тексту документации о реализации языка (эту часть прагматики программист варьировать не может). Например, прагматическим является замечание, что тип Longint в системе Visual C++ определяется как 32-разрядное двоичное число с фиксированной точкой, занимающее слово памяти.

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

Принципиально различаются два вида прагматики языка программирования: синтаксическая и семантическая.

Синтаксическая прагматика — это правила сокращения записи, можно сказать, скоропись для данного языка. Пример, который можно рассматривать как синтаксическую прагматику — команды увеличения и уменьшения на единицу. В С/С++ они представлены операторами

В С/С++ команды такого рода следует относить к модели вычислений языка, так как для нее постулируется, что язык является машинно-ориентированным и отражает особенности архитектуры вычислительного оборудования, а команды увеличения и уменьшения на единицу предоставляются программисту на уровне оборудования достаточно часто.

В Turbo Pascal и Object Pascal эти команды выражены следующим образом:

Семантическая прагматика — это определение того, что в описании языка оставлено на усмотрение реализации или предписывается в качестве вариантов вычислений.

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

Пример 4.4.1. Стандарт языка С предписывает, что системы программирования на нем должны предусматривать специальный инструмент для обработки программных текстов, который называется препроцессором. Препроцессор делает массу полезных преобразований. Как уже упоминалось, он берет на себя решение задачи подключения к программе внешних (библиотечных) файлов, с его помощью можно скрывать утомительные детали программирования, достигать ряда нужных эффектов, не предусмотренных в основных средствах языка (например, именованные константы ). Постулируется, что программа на языке С есть то, что получается после работы препроцессора с текстом (разумеется, если результат такой работы окажется корректным). Следовательно, использование препроцессора — синтаксическая прагматика языка. Но это противоречит практике работы программиста: он просто не в состоянии написать содержательную программу, которая может быть оттранслирована без использования препроцессора. Работа препроцессора не очень затрудняет понимание получившейся программы, если при программировании на С ограничиваются употреблением препроцессорных команд подключения файлов определений и определения констант. Но когда применяются, к примеру, условные препроцессорные конструкции, возможно появление программ-химер, зрительно воспринимаемый текст которых дезинформирует относительно их реальной структуры.

Кажется, что действие выполняется, если x Синтаксис семантика прагматика языков программирования. Смотреть фото Синтаксис семантика прагматика языков программирования. Смотреть картинку Синтаксис семантика прагматика языков программирования. Картинка про Синтаксис семантика прагматика языков программирования. Фото Синтаксис семантика прагматика языков программирования0, но первый макрос раскрывается как

Даже автор данной программы через некоторое время не поймет, почему же она так себя ведет.

Как это ни странно, подобные построения используются в практике программирования на С: они применяются, чтобы в одном тексте задать несколько вариантов выполняемых программ, которые разграничиваются при работе препроцессора, т. е. до выполнения.

Разработчики С и С++ с самого начала не задумывались о соблюдении концептуальной целостности. Это приводило к тому, что при развитии языка он становился все более эклектичным.

Даже концептуально целостные системы в результате развития часто сползают к эклектичности. В этой связи поучительно обсудить развитие языка Pascal линии Turbo.

Таким образом, создатели линии Turbo Pascal успешно решили трудную задачу расширения языка при сохранении концептуального единства и отделения прагматики от развивающейся модели вычислений.

Есть большая опасность, связанная с добавлением новых возможностей к хорошей системе без глубокой концептуальной проработки. Сплошь и рядом то, что хорошо работало раньше, после таких модификаций перестает устойчиво работать.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *