Простейший язык программирования Паскаль
Язык программирования ПАСКАЛЬ (PASCAL) получил свое название не от сокращения каких-то слов, как другие языки: он назван так в честь великого французского математика и физика Блеза Паскаля.
История создания языка начинается с 1965 г., когда Международная федерация по обработке информации (IFIP) предложила нескольким специалистам в области информатики принять участие в разработке нового языка программирования — преемника АЛГОЛа. Среди них был швейцарский ученый, работавший в то время доцентом на факультете информатики Стэнфордского университета Никалаус Вирт, который принял участие в разработке проекта языка под названием АЛГОЛ-W.
И хотя IFIP отклонила этот проект (был принят проект АЛГОЛ-68 — автор Аад ван Вейнгаартен), Никалаус Вирт по возвращению в Швейцарию в 1967 г. не прекратил работу по созданию нового языка. В результате этой работы в конце 1968 г. профессор Вирт и его сотрудники из Швейцарского федерального института технологии (ETH) в Цюрихе разработали первую версию ПАСКАЛЯ, а спустя два года — первый вариант компилятора. В 1971 г. Н. Вирт выпустил описание своего языка. В связи с появившимся интересом у широкого круга пользователей, а также с учетом первых оценок и апробаций 1974 г. разработана новая версия языка ПАСКАЛЬ. В следующем году опубликовано руководство для пользователей ПАСКАЛЯ, которое по словам Н. Вирта, вполне можно рассматривать как стандартное определение языка.
Создавая ПАСКАЛЬ, Н. Вирт преследовал две цели: во-первых, разработать язык, пригодный для обучения программированию как систематической дисциплине; во-вторых, реализация языка должна быть эффективной и надежной на существующих вычислительных машинах.
Как и всякий преемник, ПАСКАЛЬ наследовал многие черты основного предшественника и некоторых других. Он имеет блочную структуру, т. е. программы составляются из блоков, которые начинаются и оканчиваются словами BEGIN и END соответственно. Операторы языка ПАСКАЛЬ разделяются между собой точкой с запятой. В языке имеется оператор перехода, а оператор варианта выполняет те же функции, что и переключатель в АЛГОЛе или вычисляемый оператор перехода в ФОРТРАНе. Простые и гибкие операторы цикла WHILE и REPEAT и оператор варианта CASE, отмечает Вирт, обладают переработанной версией оператора цикла FOR. Они позволяют программисту выразить все, что ему нужно путем использования вложенных иерархических структур, представляющих композиции этих операторов.
Одним из достоинств языка ПАСКАЛЬ является то, что он воплотил в себе идею структурного программирования, суть которой заключается в том, что с помощью нескольких конструкций можно выразить в принципе любые алгоритмы. «Структурное программирование нацелено на алгоритмический аспект написания программ», — пишет К. Кристиан.
Другие достоинства языка были предопределены двумя основополагающими статьями профессора Ч. Хоара, опубликованными на рубеже 60-70-х годов: «О структурной организации данных» и «Аксиоматическая основа программирования для вычислительных машин».
Суть первой состоит в том, что «данные прежде всего представляют собой абстракции реальных объектов и их предпочтительно рассматривать как некоторые абстрактные образования со структурами, не обязательно предусмотренными в общераспространенных языках программирования». Язык ПАСКАЛЬ, воплотивший концепции данной статьи, содержат богатый набор различных типов данных и является первым языком, имеющим в этом наборе не числовой тип данных — тип перечисления.
Во второй статье показано, что » программы поддаются точному анализу, основанному на строгих математических рассуждениях». В 1973 г. Хоар и Вирт создали аксиоматическое описание для большей части семантически языка ПАСКАЛЬ. Следуя аксиоматической системе Хоара, язык ПАСКАЛЬ, очевидно, явился первым языком, для которого имеются программные средства, позволяющие доказывать правильность написанных программ.
Краткость языка (некоторые называют его «спартанским» языком программирования), легкость программирования на нем, мобильность написанных программ, возможность эффективной реализации и пригодность с точки зрения формальных методов отладки программ обеспечили ПАСКАЛЮ успех в тех делах, для которых он предназначался.
При создании и совершенствовании языка ПАСКАЛЬ Н. Вирт ввел много новшеств, в частности: изобрел синтаксические диаграммы, с помощью которых удобно представлять конструкции языка; ввел, очевидно, первый в алфавит языка квадратные скобки; высказал идею решения проблемы переносимости программ в виде пи-систем (P-system), которая заключается в том, что написанные на ПАСКАЛЕ программы транслируются в пи-код (p-code) — в машинный язык некоторой идеальной машины а затем интерпретируется на реальных машинных языках.
Опыт использования языка ПАСКАЛЬ выявил ряд недостатков. В языке отсутствовали многие известные конструкции, такие, как: динамические массивы; возможность задания локальных переменных; понятие отдельно транслируемого модуля, затруднившие тем самым создание больших программ; операция возведения в степень; возможность включения в программу участков, написанных на машинном языке, и т. д. Одни программисты могли продолжить список недостатков ПАСКАЛЯ, другие возразить, что некоторые недостатки в их реализации отсутствуют. Такой разнобой мнений, как пишет О. Перминов, свидетельствует о том, что долгое время отсутствовал документ, который бы точно фиксировал состав и правила выполнения и правила выполнения языка. Такой документ появился только в 1982 г. — международный стандарт ISO на язык ПАСКАЛЬ. Этот стандарт соответствует авторскому «стандартному определению» язык, изложенному в книге Йенсена и Вирта «ПАСКАЛЬ. Руководство для пользователя и описание языка», но дает более полное и строгое описание некоторых деталей, опущенных в руководстве.
Первый компилятор с языка ПАСКАЛЬ был реализован в ЕТН для ЭВМ семейства CDC-6000. В дальнейшем появились компиляторы ПАСКАЛЯ для других типов ЭВМ, и к начале 80-х годов число этих типов (зарубежных и отечественных) достигло сотни.
Кроме авторской версии, стали появляться различные его расширения и диалекты, среди которых можно отметить такие, как УКСД-ПАСКАЛЬ, Эппл-ПАСКАЛЬ, ПАСКАЛЬ-80, Турбо-ПАСКАЛЬ, Квик-ПАСКАЛЬ.
УКСД-ПАСКАЛЬ (UCSD-PACKAL; UCSD-Universiti of California, San Diego) был разработан сотрудником Калифорнийского университета в Сан-Диего К. Бауэлсом УКСД-ПАСКАЛЬ является расширением стандартного определения языка и предназначен главным образом для мини- и микро-ЭВМ.
Эппл-ПАСКАЛЬ (Apple-PASCAL), разработанный для персональных компьютеров «Apple», по существу, является модификацией УКСД-ПАСКАЛЯ, однако в нем имеются дополнительные средства, в частности средства для графического отображения.
Компилятор ПАСКАЛЬ-80 разработан фирмой Microsoft для операционной системы СР/М-80, используемой В 8-разрядных персональных компьютерах. Этот компилятор допускает раздельную компиляцию файлов и использование программных модулей, созданных и откомпилированных в других системах программирования ( ФОРТРАН , СН и др.)
Особую популярность на микро-ЭВМ и персональных ЭВМ в настоящие время получило семейство ПАСКАЛЬ-систем, названное Турбо-ПАСКАЛЬ (Turbo-PASCAL) и разработанное фирмой Borland. Данное семейство, работающее с операционными системами СР/М-80, MS DOS, MSX DOS, имеет высокую производительность (используется ускоренная однопроходная процедура компиляции) и широко променяется пользователями персональных ЭВМ IBM PC XT/AT и совместными с ними компьютерами. Фирма Borland создала несколько версий Турбо-ПАСКАЛЯ, среди последних версия НО, которая включает пакет стандартной графики, позволяющий работать с различными графическими адаптерами IBM PC, и Турбо-ПАСКАЛЬ версий 5.0 и 5.5, назначением которых является объектно-ориентированное программирование.
Одновременно с появлением пятой версии Турбо-ПАСКАЛЯ конкурирующая фирма Microsoft выпустила версию 1.0 языка Квик-ПАСКАЛЬ (Quick-PASCAL-»быстрый» ПАСКАЛЬ), полностью совместимою с Турбо-ПАСКАЛЕМ, и, как заявляют сотрудники фирмы, в полтора раза дешевле последнего.
Известны аппаратные реализации языка ПАСКАЛЬ. Так, в 1983 г. инженеры японской фирмы Mitsubishi разработали аппаратный компилятор, состоящий из четырех однокристальных блоков и устройства управления шиной. Как утверждают создатели компилятора, язык ПАСКАЛЬ выбран потому, что его «регулярная структура делает возможной строго последовательную компиляцию, т. е. компиляцию, не требующую опережающего просмотра для обработки текущего предложения». ПАСКАЛЬ стал прародителем более поздних языков программирования. Через 10 лет после ПАСКАЛЯ Никалаус Вирт создал язык МОДУЛА-2, который основал на многих концепциях, введенных в ПАСКАЛЕ, хотя особое внимание в нем уделяется построению программы как набора независимых модулей. На ПАСКАЛЬ все четыре языка, принятые в конце 70-х годов министерством обороны США для разработки своего универсального высокоуровневого языка, который в дальнейшем получил название АДА. Хотя язык АДА в значительной степени отличается от ПАСКАЛЯ, в нем сохранено много удачных черт последнего.
В заключение хотелось бы привести некоторые высказывания о языке ПАСКАЛЬ. Надо отметить, что среди восторженных иногда встречаются и довольно резкие суждения (см., напр., Datamation. — 1984. — july).
Итак, вот что писали в 1977 г. ч. Хоар и другие: » В настоящие время язык ПАСКАЛЬ является лучшим языком программирования общего назначения для целей системного программирования и реализации программного обеспечения. Открытие того, что преимущества языка программирования высокого уровня могут быть скомбинированы таким простым и элегантным способом, как это сделано в языке ПАСКАЛЬ, явилось откровением, заслуживающим названия крупнейшего открытия. Следствием необычайного успеха языка программирования ПАСКАЛЬ, который на много превзошел все ожидания его автора, явилось то, что оценка языков программирования высокого уровня теперь производится на совершенно ином, намного высоком уровне».
А несколько лет спустя Н. Дейтел написал следующие: «Некоторые научные школы по информатике стали постепенно освобождаться от чар «изворотливой смекалистости», заложенной в обученных ПАСКАЛЮ студентов. Для некоторых приложений язык настолько скуден, что пользователи вынуждены встраивать возможности, общедоступные на других языках».
В следующем номере мы с Вами попробуем написать собственный калькулятор на языке Pascal.
Просмотров: 8936 | Дата: 04.10.2012