| | | | | | | | | | | | | | | | | | | | | | | | Я | з | ы | к | | п | р | о | г | р | а | м | м | и | р | о | в | а | н | и | я | | П | А | С | К | А | Л | Ь | . | | | | | | | | | | | | | | | | | | | | | | | | |
Язык программирования ПАСКАЛЬ (PASCAL) получил свое название не от |
сокращения каких-то слов, как другие языки: он назван так в честь великого |
французского математика и физика Блеза Паскаля, который в 1642 г. изобрел |
счетную машину для арифметических операций - паскалево колесо, как назвали ее |
современники. |
История создания языка начинается с | 1965 | г., когда Международная федерация |
по обработке информации (IFIP) предложила нескольким специалистам в области |
информатики принять участие в разработке нового языка программирования - |
преемника | АЛГОЛа-60 | . Среди них был швейцарский ученый, работавший в то время |
доцентом на факультете информатики Стэнфордского университета Никалаус Вирт, |
который принял участие в разработке проекта языка под названием | АЛГОЛ-W | . |
И хотя IFIP отклонила этот проект (был принят проект | АЛГОЛ-68 | - автор Аад |
ван Вейнгаартен), Никалаус Вирт по возвращению в Швейцарию в | 1967 | г. не |
прекратил работу по созданию нового языка. В результате этой работы в конце |
1968 | г. профессор Вирт и его сотрудники из Швейцарского федерального института |
технологии (ETH) в Цюрихе разработали первую версию ПАСКАЛЯ, а спустя два года |
- первый вариант компилятора. В | 1971 | г. Н. Вирт выпустил описание своего |
языка. В связи с появившимся интересом у широкого круга пользователей, а |
также с учетом первых оценок и апробаций | 1974 | г. разработана новая версия |
языка ПАСКАЛЬ. В следующем году опубликовано руководство для пользователей |
ПАСКАЛЯ, которое по словам Н. Вирта, вполне можно рассматривать как |
стандартное определение языка. |
Создавая ПАСКАЛЬ, Н. Вирт преследовал две цели: во-первых, разработать |
язык, пригодный для обучения программированию как систематической дисциплине; |
во-вторых, реализация языка должна быть эффективной и надежной на существующих |
вычислительных машинах. |
Как и всякий преемник, ПАСКАЛЬ наследовал многие черты основного |
предшественника и некоторых других. Как и | АЛГОЛ-60 | , он имеет блочную |
структуру, т. е. программы составляются из блоков, которые начинаются и |
оканчиваются словами BEGIN и END соответственно. Операторы языка ПАСКАЛЬ, как |
и в | АЛГОЛе-60 | , разделяются между собой точкой с запятой. Аналогично | АЛГОЛу | и |
ФОРТРАНу | в языке имеется оператор перехода, а оператор варианта выполняет те |
же функции, что и переключатель в | АЛГОЛе | или вычисляемый оператор перехода в |
ФОРТРАНе | . Простые и гибкие операторы цикла WHIKE и 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 | г. ч. Хоар и другие: " В настоящие время язык |
ПАСКАЛЬ является лучшим языком программирования общего назначения для целей |
системного программирования и реализации программного обеспечения. Открытие |
того, что преимущества языка программирования высокого уровня могут быть |
скомбинированы таким простым и элегантным способом, как это сделано в языке |
ПАСКАЛЬ, явилось откровением, заслуживающим названия крупнейшего открытия. |
Следствием необычайного успеха языка программирования ПАСКАЛЬ, который на |
много превзошел все ожидания его автора, явилось то, что оценка языков |
программирования высокого уровня теперь производится на совершенно ином, |
намного высоком уровне". |
А несколько лет спустя Н. Дейтел написал следующие: "Некоторые научные |
школы по информатике стали постепенно освобождаться от чар "изворотливой |
смекалистости", заложенной в обученных ПАСКАЛЮ студентов. Для некоторых |
приложений язык настолько скуден, что пользователи вынуждены встраивать |
возможности, общедоступные на других языках". |
|
Вычислительная техника и ее применение Э6'90 |