Паскаль (язык программирования)
Парадигма | |
---|---|
Семья | Вирт Паскаль |
Разработано | Никлаус Вирт |
Впервые появился | 1970 год |
Дисциплина набора текста | |
Объем | Лексический |
Основные реализации | |
Диалекты | |
Под влиянием | |
Под влиянием | |
Паскаль — это императивный и процедурный язык программирования , разработанный Никлаусом Виртом как небольшой эффективный язык, предназначенный для поощрения хороших практик программирования с использованием структурированного программирования и структурирования данных . Он назван в честь французского математика, философа и физика Блеза Паскаля .
Паскаль был разработан на основе языка АЛГОЛ 60 . Вирт участвовал в процессе улучшения языка в рамках разработки ALGOL X и предложил версию под названием ALGOL W. Это не было принято, и процесс ALGOL X застопорился. В 1968 году Вирт решил отказаться от процесса АЛГОЛ X и продолжить усовершенствование АЛГОЛА W, выпустив его под названием Pascal в 1970 году.
Помимо скаляров и массивов Алгола , Паскаль позволяет определять сложные типы данных и строить динамические и рекурсивные структуры данных, такие как списки , деревья и графики . Паскаль имеет строгую типизацию для всех объектов, что означает, что один тип данных не может быть преобразован в другой или интерпретирован как другой без явных преобразований. В отличие от C (и большинства языков семейства C ), Паскаль допускает определения вложенных процедур любого уровня глубины, а также допускает большинство видов определений и объявлений внутри подпрограмм (процедур и функций). Таким образом, программа синтаксически подобна отдельной процедуре или функции. Это похоже на блочную структуру АЛГОЛА 60, но ограничено произвольными блочными операторами и ограничивается только процедурами и функциями.
Паскаль стал очень успешным в 1970-х годах, особенно на растущем рынке миникомпьютеров . Компиляторы также были доступны для многих микрокомпьютеров , когда эта область возникла в конце 1970-х годов. Он широко использовался в качестве языка обучения на курсах программирования университетского уровня в 1980-х годах, а также использовался в производственных условиях для написания коммерческого программного обеспечения в тот же период. Он был вытеснен языком программирования C в конце 1980-х и начале 1990-х годов, когда системы на базе UNIX стали популярными, и особенно с выпуском C++ .
Производная версия под названием Object Pascal, предназначенная для объектно-ориентированного программирования, была разработана в 1985 году. Она использовалась Apple Computer (для компьютеров Lisa и Macintosh) и Borland в конце 1980-х годов, а затем была преобразована в Delphi на платформе Microsoft Windows . Расширение концепций Паскаля привело к появлению языков Modula-2 и Oberon , разработанных Виртом.
История [ править ]
Предыдущие попытки [ править ]
Большая часть истории разработки компьютерных языков в 1960-е годы восходит к языку АЛГОЛ 60 . АЛГОЛ был разработан в 1950-х годах с явной целью обеспечить возможность четкого описания алгоритмов . Он включал ряд функций структурного программирования , которые остаются распространенными в языках по сей день.
Вскоре после его появления, в 1962 году Вирт вместе с Хельмутом Вебером начал работать над диссертацией по языку программирования Эйлера . Эйлер был основан на синтаксисе АЛГОЛА и многих концепциях, но не был его производным. Его основной целью было добавление динамических списков и типов, позволяющих использовать его в ролях, аналогичных Lisp . Язык был опубликован в 1965 году.
К этому времени в АЛГОЛе был выявлен ряд проблем, в частности отсутствие стандартизированной строковой системы. Группа, которой было поручено поддерживать язык, начала процесс ALGOL X для выявления улучшений, требуя подачи заявок. Вирт и Тони Хоар представили консервативный набор модификаций, направленных на добавление строк и очистку синтаксиса. Они считались слишком незначительными, чтобы их можно было использовать в качестве нового стандарта АЛГОЛ, поэтому Вирт написал компилятор для языка, который получил название АЛГОЛ W.
В дальнейшем усилия по разработке АЛГОЛ X привели к выбору гораздо более сложного языка, АЛГОЛ 68 . Сложность этого языка привела к значительным трудностям при создании высокопроизводительных компиляторов, и он не получил широкого распространения в отрасли. Это открыло путь для новых языков.
Паскаль [ править ]
На Паскаль повлияли усилия ALGOL W с явными целями структурированного обучения программированию и разработки системного программного обеспечения. [4] Поколение студентов использовало Паскаль в качестве вводного языка на курсах бакалавриата.
Одним из первых успехов языка было появление UCSD Pascal , версии, работающей на специальной операционной системе , которую можно было портировать на разные платформы. Ключевой платформой был Apple II , где он получил широкое распространение как Apple Pascal . Это привело к тому, что Паскаль стал основным языком высокого уровня, используемым для разработки в Apple Lisa , а затем и в Macintosh . Части оригинальной операционной системы Macintosh были вручную переведены на Motorola 68000 язык ассемблера Pascal из исходного кода . [5]
Система текста набора TeX Дональда Кнута была написана в WEB , оригинальной системе грамотного программирования , основанной на DEC PDP-10 Pascal. Успешные коммерческие приложения, такие как Adobe Photoshop. [6] были написаны на Macintosh Programmer's Workshop Pascal, а такие приложения, как Total Commander , Skype [7] и Macromedia Captivate были написаны на Delphi ( Object Pascal ). Apollo Computer использовала Паскаль в качестве языка системного программирования для своих операционных систем, начиная с 1980 года.
Варианты Паскаля также использовались для самых разных целей: от исследовательских проектов до компьютерных игр и встроенных систем . Существуют более новые компиляторы Паскаля, которые широко используются. [8]
Диалекты [ править ]
Пример компилятора Вирта, предназначенного для распространения языка, системы Pascal-P, использовал подмножество языка, разработанное как минимальное подмножество языка, которое могло компилироваться самостоятельно. Идея заключалась в том, что это могло бы позволить запустить компилятор, который затем был бы расширен до полного статуса языка Паскаль. Это было сделано с помощью нескольких компиляторов, но одним заметным исключением был UCSD Pascal, основанный на Pascal-P2. Он сохранил статус подмножества языка, основываясь на идее, что он будет лучше работать на новых (тогда) микропроцессорах с ограниченной памятью. UCSD также преобразовал интерпретатор Pascal-P2 в «байтовую машину», опять же, потому что он лучше подходил для байт-ориентированных микропроцессоров.
UCSD Pascal лег в основу многих систем, включая Apple Pascal. Borland Pascal не был основан на кодовой базе UCSD, но появился в период популярности UCSD и соответствовал многим его функциям. Это положило начало линии, закончившейся Delphi Pascal и его бесплатной версией FPC.
Стандарт ISO для Паскаля, ISO 7185, был опубликован в 1983 году и широко внедрен и использовался на мейнфреймах, мини-компьютерах и IBM-ПК, а также на совместимых устройствах с 16-битными до 32-битных версий. Двумя диалектами Паскаля, которые наиболее широко использовались с конца 20-го века и до сегодняшнего дня, являются стандартная версия ISO 7185 и версии Delphi/Turbo Pascal (из которых две версии Borland в основном совместимы друг с другом).
Источник большей части ранней истории Паскаля можно найти в информационных бюллетенях группы пользователей Паскаля по адресу:
Информационные бюллетени группы пользователей Pascal .
Объект Паскаль [ править ]
Во время работы над Lisa Ларри Теслер начал переписываться с Виртом по поводу идеи добавления к языку объектно-ориентированных расширений, чтобы сделать Паскаль мультипарадигмальным языком программирования . Первоначально это привело к Clascal , представленному в 1983 году. Когда программа Lisa исчезла и была заменена Macintosh, была создана дополнительная версия, получившая название Object Pascal . Он был представлен на Mac в 1985 году как часть MacApp платформы приложений и стал основным языком разработки Apple в начале 1990-х годов.
Расширения Object Pascal были добавлены в Turbo Pascal с выпуском версии 5.5 в 1989 году. [9] С годами Object Pascal стал основой системы Delphi для Microsoft Windows , которая до сих пор используется для разработки приложений Windows и позволяет осуществлять кросс-компиляцию кода для других систем. Free Pascal — это кроссплатформенная альтернатива с открытым исходным кодом и собственной графической IDE под названием Lazarus .
Реализации [ править ]
Ранние Паскаля компиляторы
Первый компилятор Паскаля был разработан в Цюрихе для серии CDC 6000 семейства мейнфреймов . Никлаус Вирт сообщает, что первая попытка реализовать его на FORTRAN 66 в 1969 году оказалась неудачной из-за неспособности FORTRAN 66 выражать сложные структуры данных. Вторая попытка была реализована на C-подобном языке (Scallop Макса Энгели), а затем вручную переведена (Р. Шильдом) на сам Паскаль для начальной загрузки. [10] К середине 1970 года он был введен в эксплуатацию. Многие компиляторы Паскаля с тех пор были аналогичным образом самостоятельными , то есть компилятор сам был написан на Паскале, и компилятор обычно способен перекомпилировать себя, когда в язык добавляются новые функции или когда компилятор должен быть перенесен на другой язык. новая среда. на C. Заметным исключением является компилятор GNU Pascal, поскольку он написан
Первый успешный порт компилятора CDC Pascal на другой мэйнфрейм был завершен Уэлшем и Куинном в Королевском университете Белфаста (QUB) в 1972 году. Целью была серия International Computers Limited (ICL) 1900 . Этот компилятор, в свою очередь, был родителем компилятора Pascal для миникомпьютера Information Computer Systems (ICS) Multum . Порт Multum был разработан – с целью использования Паскаля в качестве языка системного программирования – Финдли, Капплсом, Кавурасом и Дэвисом, работавшими на факультете вычислительной техники в Университете Глазго . Считается, что Multum Pascal, завершенный летом 1973 года, мог быть первой 16-битной реализацией.
Совершенно новый компилятор был разработан Уэлшем и др. в QUB в 1977 году. Он предлагал функцию диагностики исходного языка (включающую профилирование, отслеживание и форматированные посмертные дампы с учетом типов), которая была реализована Финдли и Ваттом в Университете Глазго. Эта реализация была перенесена в 1980 году на серию ICL 2900 командой из Саутгемптонского университета и Университета Глазго. Реализация стандартной модели Паскаля также была основана на этом компиляторе, адаптированном Уэлшем и Хэем из Манчестерского университета в 1984 году для строгой проверки соответствия стандарту BSI 6192/ISO 7185 и генерации кода для портативной абстрактной машины.
Первый компилятор Паскаля , написанный в Северной Америке, был создан в Университете Иллинойса под руководством Дональда Б. Гиллиса для PDP-11 и генерировал собственный машинный код.
Система Паскаль-П [ править ]
Для быстрого распространения языка в Цюрихе был создан комплект для портирования компилятора , который включал в себя компилятор, генерирующий так называемый p-код для машины виртуального стека, то есть код, который поддается достаточно эффективной интерпретации, а также интерпретатор для этого кода – система Паскаль-П . Компиляторы P-системы назывались Pascal-P1, Pascal-P2, Pascal-P3 и Pascal-P4. Pascal-P1 был первой версией, а Pascal-P4 — последней, пришедшей из Цюриха. Версия под названием Pascal-P1 была придумана постфактум для множества различных источников Pascal-P, которые существовали. Компилятор был переработан для повышения переносимости и выпущен как Pascal-P2. Позже этот код был расширен и стал Pascal-P3 с промежуточным кодом, обратно совместимым с Pascal-P2, и Pascal-P4, который не имел обратной совместимости.
Компилятор-интерпретатор Pascal-P4 по-прежнему можно запускать и компилировать в системах, совместимых с исходным Pascal (как и Pascal-P2). Однако он принимает только подмножество языка Паскаль.
Pascal-P5, созданный вне группы Zürich, поддерживает полный язык Pascal и совместим с ISO 7185.
Pascal-P6 — это продолжение Pascal-P5, которое, наряду с другими функциями, призвано стать компилятором для конкретных процессоров, включая AMD64.
UCSD Pascal ответвился от Pascal-P2, где Кеннет Боулз использовал его для создания интерпретируемой p-системы UCSD. Это была одна из трех операционных систем, доступных на момент запуска оригинального персонального компьютера IBM . [11] UCSD Pascal использовал промежуточный код, основанный на значениях байтов, и, таким образом, был одним из первых байт-кода компиляторов . Apple Pascal был выпущен в 1979 году для компьютерных систем Apple II и Apple III . Это была реализация UCSD Pascal или во многом основанная на ней. От Pascal-P1 до Pascal-P4 они не были, а скорее основывались на 60-битной длине слова CDC 6600 .
Компилятор на основе компилятора Pascal-P4, который создавал собственные двоичные объектные файлы , был выпущен для IBM System/370 мейнфрейма Австралийской комиссией по атомной энергии ; он был назван компилятором AAEC Pascal 8000 в честь аббревиатуры названия комиссии. [12]
Объектный Паскаль и Турбо Паскаль [ править ]
Apple Computer создала собственный Lisa Pascal для Lisa Workshop в 1982 году и портировала компилятор на Apple Macintosh и MPW в 1985 году. В 1985 году Ларри Теслер , посоветовавшись с Никлаусом Виртом, определил Object Pascal, и эти расширения были включены как в Lisa, так и в Lisa Workshop. Компиляторы Pascal и Mac Pascal.
В 1980-х годах Андерс Хейлсберг написал компилятор Blue Label Pascal для Nascom -2. Повторная реализация этого компилятора для IBM PC продавалась под названиями Compas Pascal и PolyPascal, прежде чем она была приобретена Borland и переименована в Turbo Pascal .
Turbo Pascal стал чрезвычайно популярен благодаря агрессивной ценовой стратегии, наличию одной из первых полноэкранных IDE и очень быстрому времени выполнения работ (всего несколько секунд на компиляцию, связывание и запуск). Он был полностью написан и оптимизирован на языке ассемблера , что делает его меньше и быстрее, чем большинство конкурентов.
В 1986 году Андерс портировал Turbo Pascal на Macintosh и включил расширения Apple Object Pascal в Turbo Pascal. Эти расширения затем были добавлены обратно в версию Turbo Pascal для ПК версии 5.5. В то же время Microsoft также внедрила компилятор Object Pascal. [13] [14] Turbo Pascal 5.5 оказал большое влияние на сообщество Pascal, которое в конце 1980-х годов начало концентрироваться в основном на IBM PC. Многие любители ПК в поисках структурированной замены BASIC использовали этот продукт. Его также начали использовать профессиональные разработчики. был импортирован ряд концепций, Примерно в то же время из C позволяющих программистам на языке Pascal напрямую использовать интерфейс прикладного программирования (API) на основе C Microsoft Windows . с нулевым завершением Эти расширения включали строки , арифметику указателей , указатели на функции , оператор адреса и небезопасные приведения типов .
Turbo Pascal и другие производные со структурами модулей или модулей являются модульными языками программирования. Однако он не обеспечивает концепцию вложенных модулей или квалифицированный импорт и экспорт определенных символов.
Другие варианты [ править ]
Super Pascal добавляет нечисловые метки, оператор возврата и выражения в качестве имен типов.
TMT Pascal был первым Borland -совместимым компилятором для 32-битного MS-DOS , совместимого с защищенного режима , OS/2 и Win32 . Он расширяет язык за счет перегрузки функций и операторов .
Университеты Висконсина-Мэдисона , Цюриха , Карлсруэ и Вупперталя разработали систему Pascal-SC. [15] [16] и Паскаль-XSC [17] [18] [19] ( Расширения для научных вычислений ) компиляторы, предназначенные для программирования численных вычислений. Разработка Pascal-SC началась в 1978 году с поддержкой ISO 7185 Pascal уровня 0, но поддержка уровня 2 была добавлена на более позднем этапе. [20] Pascal-SC изначально предназначался для процессора Z80 , но позже был переписан для DOS ( x86 ) и 68000 . Pascal-XSC в разное время портировался на Unix (Linux, SunOS , HP-UX , AIX ) и Microsoft/IBM (DOS с EMX , OS/2, Windows операционные системы ). Он работает путем генерации промежуточного исходного кода C, который затем компилируется в собственный исполняемый файл. Некоторые расширения языка Pascal-SC были приняты GNU Pascal .
Pascal Sol был разработан примерно в 1983 году французской командой для реализации Unix-подобной системы под названием Sol. Это был стандартный Паскаль уровня 1 (с параметризованными границами массива), но определение допускало использование альтернативных ключевых слов и предопределенных идентификаторов на французском языке, а язык включал несколько расширений для упрощения системного программирования (например, эквивалент lseek). [21] Позже команда Sol перешла к проекту ChorusOS для разработки распределенной операционной системы . [22]
IP Pascal — это реализация языка программирования Pascal с использованием Micropolis DOS, но она была быстро перенесена на CP/M-80 , работающий на Z80. В 1994 году он был перенесен на машины типа 80386 и существует сегодня в виде для Windows XP реализаций и Linux. В 2008 году система была поднята на новый уровень, и полученный язык получил название «Паскалин» (в честь калькулятора Паскаля ). Он включает в себя объекты, элементы управления пространством имен , динамические массивы и многие другие расширения и обычно имеет ту же функциональность и защиту типов, что и C# . Это единственная такая реализация, которая также совместима с исходной реализацией Паскаля, стандартизированной как ISO 7185.
Языковые конструкции [ править ]
Паскаль в своей исходной форме является чисто процедурным языком и включает в себя традиционный набор АЛГОЛ -подобных управляющих структур с зарезервированными словами, такими как if
, then
, else
, while
, for
, и case
, начиная с одного утверждения или begin
- end
блок операторов. В Паскале также есть конструкции структурирования данных, не включенные в исходные ALGOL 60 типы , такие как записи , варианты, указатели , перечисления , а также множества и указатели процедур. Такие конструкции были частично унаследованы или вдохновлены Simula 67, ALGOL 68 , Никлауса Вирта собственным ALGOL W и предложениями CAR Hoare .
Программы на Паскале начинаются с program
ключевое слово со списком внешних файловых дескрипторов в качестве параметров [23] (не требуется в Турбо Паскале и т.п.); затем следует основной блок, заключенный в скобки begin
и end
ключевые слова. Точка с запятой разделяет операторы , а точка (т. е. точка) завершает всю программу (или модуль ). Регистр букв игнорируется в исходном коде Pascal.
Вот пример исходного кода очень простой фразы «Hello, World!». программа :
program HelloWorld(output); begin WriteLn('Hello, World!') {No ";" is required after the last statement of a block - adding one adds a "null statement" to the program, which is ignored by the compiler.} end.
Типы данных [ править ]
Объявление типа в Паскале используется для определения диапазона значений, которые может хранить переменная этого типа. Он также определяет набор операций, которые разрешено выполнять над переменными этого типа. Предопределенные типы:
Тип данных | Тип значений, которые может хранить переменная |
---|---|
целое число | целые (целые) числа |
настоящий | числа с плавающей запятой |
логическое значение | значения True или False |
голец | один символ из упорядоченного набора символов |
набор | эквивалент массива логических значений |
множество | счетная группа любого из предыдущих типов данных или записей |
записывать | Коллекция любого из предыдущих типов данных |
нить | последовательность или «строка» символов объявляется как «упакованный массив символов» с начальным индексом 1. Им можно присваивать строковые константы, а к отдельным символам можно обращаться как к элементам массива. |
Диапазон значений, разрешенных для базовых типов (кроме Boolean), определяется реализацией. Для некоторых преобразований данных предусмотрены функции. Для конвертации real
к integer
, доступны следующие функции: round
(которое округляется до целого числа с использованием банковского округления ) и trunc
(округляется в сторону нуля).
Программист имеет свободу определять другие часто используемые типы данных (например, байтовые, строковые и т. д.) в терминах предопределенных типов, используя, например, средство объявления типов Паскаля.
type byte = 0..255; signed_byte = -128..127; string = packed array[1..255] of char;
Часто используемые типы, такие как byte и string, уже определены во многих реализациях.
Обычно система использует слово для хранения данных. Например, byte
type может храниться в машинном целом числе (возможно, 32 бита), а не в 8-битном значении. Паскаль не содержит языковых элементов, позволяющих более детально определять базовые типы хранения. Эта возможность была включена в ряд расширений Паскаля и последующих языков, в то время как другие, такие как Modula-2 , расширили встроенный набор, чтобы охватить большинство типов машинных данных, таких как 16-битные целые числа.
The packed
Ключевое слово сообщает компилятору использовать наиболее эффективный метод хранения структурированных типов данных: наборов, массивов и записей, а не использовать одно слово для каждого элемента. Упаковка может замедлить доступ на машинах, которые не обеспечивают легкий доступ к частям слова.
Типы поддиапазонов [ править ]
поддиапазоны любого порядкового типа данных Также можно создать (любого простого типа, кроме вещественного):
var x : 1..10; y : 'a'..'z';
Типы наборов [ править ]
В отличие от других языков программирования того времени, Паскаль поддерживает набор типов: [24]
var Set1 : set of 1..10; Set2 : set of 'a'..'z';
Множество — это фундаментальное понятие современной математики, и оно может использоваться во многих алгоритмах. Такая функция полезна и может работать быстрее, чем эквивалентная конструкция в языке, не поддерживающем множества. Например, для многих компиляторов Pascal:
if i in [5..10] then ...
выполняется быстрее, чем:
if (i > 4) and (i < 11) then ...
Наборы несмежных значений могут быть особенно полезны как с точки зрения производительности, так и с точки зрения читаемости:
if i in [0..3, 7, 9, 12..15] then ...
В этих примерах, которые включают наборы в небольших областях, повышение производительности обычно достигается за счет того, что компилятор представляет переменные набора в виде битовых векторов . множества Затем операторы могут быть эффективно реализованы как побитовые операции машинного кода.
Типы записей [ править ]
Пример типа записи Pascal:
type car = record length: integer; width: integer end;
Пример варианта типа записи:
type Shape = (Circle, Square, Triangle); Dimensions = record case Figure: Shape of Circle: (Diameter: real); Square: (Width: real); Triangle: (Side: real; Angle1, Angle2: 0..360) end;
Вариантные записи позволяют нескольким полям записи перекрывать друг друга для экономии места.
Объявления типов [ править ]
Типы могут быть определены из других типов с помощью объявлений типов:
type x = integer; y = x; ...
Кроме того, сложные типы могут быть созданы из простых типов:
type a = array[1..10] of integer; b = record x : integer; y : char {extra semicolon not strictly required} end; c = file of a;
Тип файла [ править ]
type a = file of integer; b = record x : integer; y : char end; c = file of b;
Как показано в примере выше, файлы Pascal представляют собой последовательности компонентов. Каждый файл имеет переменную буфера, которая обозначается f^ . Процедуры get (для чтения) и put (для записи) перемещают переменную буфера к следующему элементу. Чтение введено таким образом, что read(f, x) совпадает с x := f^; получить (е); . Write введен таким образом, что write(f, x) совпадает с f^ := x; положить (е); Тип text
предопределен как файл char. Хотя переменную буфера можно было использовать для проверки следующего символа, который будет использоваться (проверка цифры перед чтением целого числа), это приводит к серьезным проблемам с интерактивными программами в ранних реализациях, но позже было решено с помощью «ленивого ввода-вывода». Концепция, которая ожидает фактического доступа к переменной файлового буфера, прежде чем выполнять файловые операции.
Типы указателей [ править ]
Паскаль поддерживает использование указателей :
type pNode = ^Node; Node = record a : integer; b : char; c : pNode end; var NodePtr : pNode; IntPtr : ^integer;
Здесь переменная NodePtr — это указатель на тип данных Node , запись. Указатели можно использовать до их объявления. Это предварительное объявление , исключение из правила, согласно которому вещи должны быть объявлены до их использования.
Чтобы создать новую запись и присвоить значение 10 и символ A полям a и b в записи, а также инициализировать указатель c нулевым указателем («NIL» в Паскале), операторы будут такими:
new(NodePtr); ... NodePtr^.a := 10; NodePtr^.b := 'A'; NodePtr^.c := nil; ...
Это также можно сделать с помощью with
заявление следующего содержания:
new(NodePtr);
...
with NodePtr^ do
begin
a := 10;
b := 'A';
c := nil
end;
...
Внутри области действия оператора with a и b относятся к подполям указателя записи NodePtr , а не к узлу записи или типу указателя pNode.
Связанные списки , стеки и очереди можно создавать, включив в запись поле типа указателя (c).
В отличие от многих языков, в которых есть указатели, Паскаль позволяет указателям ссылаться только на динамически созданные переменные, которые являются анонимными, и не позволяет им ссылаться на стандартные статические или локальные переменные. У указателей также должен быть связанный тип, а указатель на один тип несовместим с указателем на другой тип (например, указатель на символ несовместим с указателем на целое число). Это помогает устранить проблемы безопасности типов, присущие другим реализациям указателей, особенно тем, которые используются для /I или C. PL Он также устраняет некоторые риски, вызванные висячими указателями , но возможность динамически освобождать ссылочное пространство с помощью функции удаления (которая имеет тот же эффект, что и функция бесплатной библиотеки, найденная в C ) означает, что риск висячих указателей не устранен. [25] как это происходит в таких языках, как Java и C#, которые обеспечивают автоматическую сборку мусора (но не устраняют связанную с этим проблему утечек памяти ).
Некоторые из этих ограничений могут быть сняты в новых диалектах.
Структуры управления [ править ]
Паскаль — это структурированный язык программирования , что означает, что поток управления структурирован в виде стандартных операторов , обычно без « goto команд ».
while a <> b do WriteLn('Waiting'); if a > b then WriteLn('Condition met') {no semicolon allowed before else} else WriteLn('Condition not met'); for i := 1 to 10 do {no semicolon here as it would detach the next statement} WriteLn('Iteration: ', i); repeat a := a + 1 until a = 10; case i of 0 : Write('zero'); 1 : Write('one'); 2 : Write('two'); 3,4,5,6,7,8,9,10: Write('?') end;
Процедуры и функции [ править ]
Паскаль структурирует программы в процедуры и функции. Обычно процедура используется для получения побочных эффектов, тогда как функция используется для возвращаемого значения.
program Printing(output); var i : integer; procedure PrintAnInteger(j : integer); begin ... end; function triple(const x: integer): integer; begin triple := x * 3 end; begin { main program } ... PrintAnInteger(i); PrintAnInteger(triple(i)) end.
Процедуры и функции могут быть вложены на любую глубину, а конструкция «программа» является самым логическим внешним блоком.
По умолчанию параметры передаются по значению. Если «var» предшествует имени параметра, он передается по ссылке.
Каждая процедура или функция может иметь свои собственные объявления меток перехода, констант, типов, переменных и других процедур и функций, которые должны быть расположены в указанном порядке. Это требование к упорядочению изначально было предназначено для обеспечения эффективной однопроходной компиляции . Однако в некоторых диалектах (например, Delphi ) строгие требования к порядку разделов объявлений были смягчены.
Точки с запятой как разделители операторов [ править ]
Паскаль перенял многие особенности синтаксиса языка из языка АЛГОЛ , включая использование точки с запятой в качестве разделителя операторов. В этом отличие от других языков, таких как PL/I и C , которые используют точку с запятой в качестве признака завершения оператора. Точка с запятой перед end
ключевое слово объявления типа записи, блока или оператора case ; перед until
ключевое слово оператора повторения; и перед else
ключевое слово оператора if .
Наличие лишней точки с запятой не допускалось в ранних версиях Паскаля. Однако добавление ALGOL пустых операторов типа в Пересмотренный отчет 1973 года и последующие изменения в языке ISO 7185:1983 теперь позволяют использовать необязательные точки с запятой в большинстве этих случаев. Точка с запятой по-прежнему не допускается непосредственно перед else
ключевое слово в операторе if , поскольку else
следует за одним оператором, а не за последовательностью операторов. В случае вложенных ifs точку с запятой нельзя использовать, чтобы избежать проблемы висячего else (когда у внутреннего if нет else, а у внешнего if есть) путем предположительного завершения вложенного if точкой с запятой — вместо этого это завершает оба if. статьи. Вместо этого явный begin
... end
блок необходимо использовать. [26]
Ресурсы [ править ]
Компиляторы и интерпретаторы [ править ]
Для общего использования доступны несколько компиляторов и интерпретаторов Pascal:
- Delphi (RAD) компании Embarcadero (ранее Borland/CodeGear) — это флагманский продукт для быстрой разработки приложений . Он использует язык Object Pascal (названный Borland «Delphi»), произошедший от Pascal, для создания приложений для Windows , macOS , iOS и Android . Поддержка .NET, существовавшая с D8 по D2005, D2006 и D2007, была прекращена и заменена новым языком (Prism, который переименован в Oxygene, см. ниже), который не имеет полной обратной совместимости. В последние годы были добавлены поддержка Unicode и дженерики (D2009, D2010, Delphi XE).
- Free Pascal — это кроссплатформенный компилятор, написанный на Object Pascal (и размещаемый самостоятельно ). Его цель — предоставить удобный и мощный компилятор, способный как компилировать устаревшие приложения, так и служить средством разработки новых. Он распространяется под лицензией GNU General Public License (GNU GPL), а пакеты и библиотеки времени выполнения — под модифицированной GNU Lesser General Public License (GNU LGPL). Помимо режимов совместимости с Turbo Pascal , Delphi и Mac Pascal, он имеет собственные режимы процедурного и объектно-ориентированного синтаксиса с поддержкой расширенных функций, таких как перегрузка операторов . Он поддерживает множество платформ и операционных систем. Текущие версии также имеют режим ISO.
- Turbo51 — это бесплатный компилятор Pascal для Intel 8051 микроконтроллеров семейства с синтаксисом Turbo Pascal 7.
- Oxygene (ранее называвшийся Chrome ) — это компилятор Object Pascal для платформ .NET и Mono . Он был создан и продается RemObjects Software, а также какое-то время продавался Embarcadero в качестве бэкэнд-компилятора Prism .
- Kylix был потомком Delphi с поддержкой операционной системы Linux и улучшенной библиотекой объектов. Он больше не поддерживается. Компилятор и IDE теперь доступны для некоммерческого использования.
- Компилятор GNU Pascal (GPC) — это компилятор Pascal из коллекции компиляторов GNU (GCC). Компилятор написан на C, библиотека времени выполнения в основном на Pascal. Распространяется под лицензией GNU General Public License и работает на многих платформах и операционных системах. Он поддерживает языки стандарта ANSI/ISO и имеет частичную поддержку диалекта Turbo Pascal. Одним из наиболее заметных упущений является отсутствие полностью совместимого с Turbo Pascal (короткого) строкового типа. Поддержка Borland Delphi и других языковых вариантов весьма ограничена. Однако существует некоторая поддержка Mac-pascal.
- Virtual Pascal был создан Виталием Мирьяновым в 1995 году как собственный компилятор OS/2, совместимый с синтаксисом Borland Pascal. Затем компания fPrint разработала его на коммерческой основе, добавив поддержку Win32, а в 2000 году он стал бесплатным. Сегодня он может компилироваться для Win32, OS/2 и Linux и в основном совместим с Borland Pascal и Delphi. Разработка была прекращена 4 апреля 2005 года.
- Компилятор Pascal-P4 , основа для многих последующих компиляторов Pascal, реализованных в Pascal. Он реализует подмножество полного Паскаля.
- Компилятор Pascal-P5 представляет собой адаптацию Pascal-P4 ISO 7185 (полный Pascal).
- Компилятор Pascal-P6 — это расширенная версия адаптации Pascal-P5 в соответствии со спецификацией языка Pascaline.
- Pascal в HTML5 / JavaScript. Smart Mobile Studio — это компилятор
- Turbo Pascal был доминирующим компилятором Pascal для ПК в 1980-х и начале 1990-х годов, популярным как из-за своих мощных расширений, так и из-за чрезвычайно короткого времени компиляции. Turbo Pascal был компактно написан и мог компилировать, запускать и отлаживать все из памяти, не обращаясь к диску. В то время медленные дисководы для гибких дисков были обычным явлением для программистов, что еще больше увеличивало преимущество Turbo Pascal в скорости. В настоящее время более старые версии Turbo Pascal (до 5.5) доступны для бесплатной загрузки с сайта Borland.
- IP Pascal реализует язык «Pascaline» (названный в честь калькулятора Паскаля ), который представляет собой сильно расширенный язык Pascal, совместимый с оригинальным Pascal в соответствии с ISO 7185. Он содержит модули с управлением пространством имен, включая модули параллельного выполнения задач с семафорами, объектами, динамическими массивами любого типа. измерения, выделяемые во время выполнения, перегрузки, переопределения и многие другие расширения. IP Pascal имеет встроенную библиотеку переносимости, специально адаптированную для языка Pascal. Например, стандартное приложение вывода текста из оригинального языка Паскаль 1970-х годов можно перекомпилировать для работы в окне и даже добавить графические конструкции.
- Pascal-XT был создан компанией Siemens для своих мейнфреймов операционных систем BS2000 и SINIX .
- PocketStudio — это подмножество компилятора Pascal и инструмент RAD для процессоров Palm OS и MC68xxx с некоторыми собственными расширениями для облегчения взаимодействия с API Palm OS . Он напоминает Delphi и Lazarus с визуальным конструктором форм, инспектором объектов и редактором исходного кода .
- MIDletPascal — компилятор Pascal и интегрированная среда разработки, генерирующая небольшой и быстрый байт-код Java, специально предназначенный для создания программного обеспечения для мобильных устройств.
- Vector Pascal — это язык для наборов инструкций SIMD , таких как MMX и AMD 3d Now , поддерживающий все процессоры Intel и AMD, а также Sony PlayStation 2 Emotion Engine .
- Morfik Pascal позволяет разрабатывать веб-приложения, полностью написанные на Object Pascal (как на стороне сервера, так и на стороне браузера).
- WDSibyl — среда визуальной разработки и компилятор Pascal для Win32 и OS/2.
- PP Compiler — компилятор для Palm OS, работающий непосредственно на карманном компьютере.
- Компилятор CDC 6000 Pascal — это исходный код первого (CDC 6000) компилятора Pascal.
- Паскаль-С [27]
- AmigaPascal — бесплатный компилятор Pascal для Amiga . систем
- VSI Pascal для OpenVMS (ранее HP Pascal для OpenVMS, Compaq Pascal, DEC Pascal, VAX Pascal и первоначально VAX-11 Pascal [28] ) — это компилятор Паскаля, работающий в OpenVMS . системах [29] Он также поддерживался в Tru64 . [30] [31] VSI Pascal для OpenVMS совместим с ISO/IEC 7185:1990 Pascal, а также с некоторыми расширенными Pascal ISO/IEC 10206:1990, а также включает собственные расширения. [29] компилятора Интерфейс реализован в BLISS . [32]
- Stony Brook Pascal+ представлял собой 16-битный (позже 32-битный) оптимизирующий компилятор для DOS и OS/2, продававшийся как прямая замена Turbo Pascal, но производивший код, который выполнялся как минимум в два раза быстрее.
IDE [ править ]
- Dev-Pascal — это среда разработки Pascal , разработанная в Borland Delphi и поддерживающая Free Pascal и GNU Pascal в качестве серверных частей.
- Lazarus — это бесплатная визуальная кроссплатформенная среда разработки в стиле Delphi для быстрой разработки приложений (RAD). Основанный на Free Pascal , Lazarus доступен для множества платформ, включая Linux , FreeBSD , macOS и Microsoft Windows .
- Огонь (macOS) и Вода (Windows) для Oxygene и компилятора Elements
Библиотеки [ править ]
- Библиотека WOL для создания приложений с графическим интерфейсом с помощью компилятора Free Pascal.
Стандарты [ править ]
ISO/IEC 7185:1990 Паскаль [ править ]
В 1983 году язык был стандартизирован в международном стандарте IEC/ISO 7185. [33] и несколько местных стандартов, специфичных для конкретной страны, включая американский ANSI/IEEE770X3.97-1983 и ISO 7185:1983. Эти два стандарта отличались только тем, что стандарт ISO включал расширение «уровня 1» для соответствующих массивов (массив, границы которого неизвестны до времени выполнения), где ANSI не допускал этого расширения к оригиналу (Вирт версия) язык. В 1989 году стандарт ISO 7185 был пересмотрен (ISO 7185:1990) для исправления различных ошибок и неясностей, обнаруженных в исходном документе.
Стандарт ISO 7185 был заявлен как разъяснение языка Вирта 1974 года, подробно описанного в Руководстве пользователя и отчете [Дженсен и Вирт], но он также отличался добавлением «Параметры соответствующего массива» в качестве уровня 1 к стандарту, уровень 0 соответствует Паскалю. без соответствующих массивов. Это дополнение было сделано по просьбе CAR Hoare и с одобрения Никлауса Вирта. Предварительной причиной было то, что Хоар хотел создать версию библиотеки числовых алгоритмов (NAG) для Паскаля , которая изначально была написана на FORTRAN, и обнаружил, что это невозможно сделать без расширения, которое позволяло бы использовать параметры массива различного размера. . Подобные соображения побудили включение в ISO 7185 средства для определения типов процедурных и функциональных параметров.
Сам Никлаус Вирт называл язык 1974 года «Стандартом», например, чтобы отличить его от машинных особенностей компилятора CDC 6000 . Этот язык был задокументирован в The Pascal Report , [34] вторая часть «Руководства пользователя и отчета Pascal».
На больших машинах (мейнфреймах и мини-компьютерах), на которых возник Паскаль, обычно соблюдались стандарты. На IBM PC их не было. На компьютерах IBM наибольшее количество пользователей используют стандарты Borland Turbo Pascal и Delphi. Таким образом, обычно важно понять, соответствует ли конкретная реализация исходному языку Паскаль или его диалекту Borland.
Версии языка для IBM PC начали различаться с появлением UCSD Pascal, интерпретируемой реализации, которая содержала несколько расширений языка, а также несколько упущений и изменений. Многие языковые особенности UCSD сохранились и сегодня, в том числе в диалекте Borland.
ISO/IEC 10206:1990 Расширенный Паскаль [ править ]
Этот раздел нуждается в расширении . Вы можете помочь, добавив к нему . ( февраль 2018 г. ) |
В 1990 году был создан расширенный стандарт Паскаля под названием ISO/IEC 10206. [35] который идентичен по техническому содержанию [36] IEEE/ANSI 770X3.160-1989 [37] С 2019 года FreePascal . планируется поддержка Extended Pascal в компиляторе [38]
Вариации [ править ]
Цюрихская версия Pascal, созданная Никлаусом Виртом, была выпущена за пределами ETH в двух основных формах: исходный код компилятора CDC 6000 и комплект для переноса под названием система Pascal-P. Компилятор Pascal-P упустил несколько функций полного языка, которые не требовались для начальной загрузки компилятора. Например, были опущены процедуры и функции, используемые в качестве параметров, нераспознаваемые варианты записей, упаковка, удаление, межпроцедурные переходы и другие функции полного компилятора.
UCSD Pascal под руководством профессора Кеннета Боулза был основан на наборе Pascal-P2 и, следовательно, имел некоторые языковые ограничения Pascal-P. UCSD Pascal позже был принят как Apple Pascal, и там было выпущено несколько версий. Хотя UCSD Pascal фактически расширил подмножество Pascal в комплекте Pascal-P, добавив обратно стандартные конструкции Pascal, это все еще не была полной стандартной установкой Pascal.
В начале 1990-х годов Алан Бернс и Джефф Дэвис разработали Pascal-FC, расширение Pl/0 (из книги Никлауса « Алгоритмы + структуры данных = программы» ). Было добавлено несколько конструкций для использования Pascal-FC в качестве инструмента обучения параллельному программированию (например, семафоры, мониторы, каналы, удаленный вызов и ресурсы). Чтобы продемонстрировать параллелизм, выходные данные компилятора (разновидность P-кода ) можно затем выполнить на виртуальной машине. Эта виртуальная машина не только имитировала нормальную – справедливую – среду, но также могла имитировать экстремальные условия (несправедливый режим).
Borland- Pascal подобные компиляторы
Borland компании Turbo Pascal , написанный Андерсом Хейлсбергом , был написан на языке ассемблера независимо от UCSD и компиляторов Цюриха. Однако он принял большую часть того же подмножества и расширений, что и компилятор UCSD. Вероятно, это связано с тем, что система UCSD была наиболее распространенной системой Pascal, подходящей для разработки приложений на микропроцессорных системах с ограниченными ресурсами, доступных в то время.
Упакованная а также почти совместимые с Borland аналоги, стали популярными среди программистов , версия Turbo Pascal 3 и более поздние версии, включая Borland Object Pascal и Delphi, включая авторов условно-бесплатных программ, поэтому библиотека кода Pascal SWAG содержит большое количество кода, написанного с использованием таких версии как Delphi в виду.
Программные продукты ( компиляторы и IDE/ Rad Application Development (RAD)) в этой категории:
- Turbo Pascal — «TURBO.EXE» до версии 7, а также Turbo Pascal для Windows («TPW») и Turbo Pascal для Macintosh .
- Языковая среда Pure Pascal и HiSPeed Pascal 2 Pascal для компьютеров линейки Atari ST .
- Borland Pascal 7 — профессиональная версия линейки Turbo Pascal, предназначенная как для DOS, так и для Windows.
- Object Pascal — расширение языка Pascal, разработанное в Apple Computer командой под руководством Ларри Теслера при консультации с Никлаусом Виртом , изобретателем Pascal; его функции были добавлены в Turbo Pascal от Borland для Macintosh и в 1989 году в Turbo Pascal 5.5 для DOS.
- Delphi – Object Pascal, по сути, является его базовым языком.
- Компилятор Free Pascal (FPC) – Free Pascal принял стандартный диалект программистов Borland Pascal, Borland Turbo Pascal и, позже, Delphi.
- PascalABC.NET – язык программирования Pascal нового поколения, включающий компилятор и IDE.
- Borland Kylix — это компилятор и IDE, ранее продававшаяся компанией Borland, но позже прекращенная. Это Linux- версия среды разработки программного обеспечения Borland Delphi и C++Builder .
- Lazarus - по функциям похож на Kylix, представляет собой бесплатную кроссплатформенную визуальную среду IDE для RAD, использующую компилятор Free Pascal, который поддерживает диалекты Object Pascal . в различной степени
- Virtual Pascal – VP2/1 – это полностью совместимый с Borland Pascal и Borland Delphi 32-битный компилятор Pascal для OS/2 и Windows 32 (версия для Linux «в разработке»). [39]
- Sybil — это Delphi-подобная IDE и компилятор с открытым исходным кодом; реализации включают в себя:
- WDСивилла [40] для Microsoft Windows и OS/2 — коммерческая среда, совместимая с Borland Pascal, выпущенная компанией Speedsoft, которая позже была развита в подобную Delphi среду быстрой разработки приложений (RAD) под названием Sybil, а затем с открытым исходным кодом под лицензией GPL, когда эта компания закрылась. ;
- Open Sybil, продолжающийся проект, инструмент с открытым исходным кодом для OS/2 и eCS, который изначально был основан на источниках WDsybl Sibyl Portable Component Classes (SPCC) и Sibyl Visual Development Tool (SVDE) от Speedsoft, но теперь его ядром является IBM System. Объектная модель (SOM), WPS и OpenDoc . [41]
[ править ]
- ISO 8651-2:1988 Системы обработки информации. Компьютерная графика. Языковые привязки графического ядра (GKS). Часть 2. Паскаль.
Прием [ править ]
Паскаль вызвал в компьютерном сообществе самые разнообразные отклики, как критические, так и хвалебные.
Ранняя критика
Несмотря на то, что реализации Паскаля, которые были очень популярны в 1980-х и начале 1990-х годов, внимательно следовали первоначальному определению языка Вирта, они подвергались широкой критике как непригодные для использования вне обучения. Брайан Керниган , популяризировавший язык C , изложил наиболее заметные критические замечания в адрес Паскаля еще в 1981 году в своей статье «Почему Паскаль — не мой любимый язык программирования». [42] Самая серьезная проблема, описанная Керниганом, заключалась в том, что размеры массивов и длины строк были частью типа, поэтому было невозможно написать функцию, которая принимала бы массивы переменной длины или даже строки в качестве параметров. Это делало невозможным написание, например, библиотеки сортировки. Керниган также раскритиковал непредсказуемый порядок вычисления логических выражений, плохую поддержку библиотеки и отсутствие статических переменных , а также поднял ряд более мелких проблем. Также он заявил, что язык не предоставляет каких-либо простых конструкций, позволяющих «уйти» (сознательно и принудительно игнорировать) ограничений и ограничений. Более общие жалобы из других источников [25] [43] отметил, что область объявлений не была четко определена в определении исходного языка, что иногда имело серьезные последствия при использовании прямых объявлений для определения типов указателей, или когда объявления записей приводили к взаимной рекурсии , или когда идентификатор мог использоваться, а мог и не использоваться. в списке перечисления. Другая трудность заключалась в том, что, как и АЛГОЛ 60 , этот язык не позволял процедурам или функциям, передаваемым в качестве параметров, заранее определять ожидаемый тип своих параметров.
Несмотря на первоначальную критику, Паскаль продолжал развиваться, и большинство замечаний Кернигана не применимо к версиям языка, которые были усовершенствованы, чтобы быть пригодными для разработки коммерческих продуктов, таких как Turbo Pascal от Borland . Как предсказал Керниган в своей статье, большинство расширений, исправляющих эти проблемы, были несовместимы от компилятора к компилятору. Однако с начала 1990-х годов большинство разновидностей, похоже, сведены в две категории: ISO и Borland-подобные. Расширенный Паскаль устраняет многие из этих ранних критических замечаний. Он поддерживает строки переменной длины, инициализацию переменных, раздельную компиляцию, логические операторы короткого замыкания и стандартные ( otherwise
) предложения для операторов падежа. [44]
См. также [ править ]
- Ада (язык программирования)
- Параллельный Паскаль
- Сравнение Паскаля и Дельфи
- Сравнение Паскаля и C
- Модуль-2
- Оберон (язык программирования)
- Объектный Паскаль
- ПаскальКейс
- Стандартный ML
Ссылки [ править ]
- ^ «О «Делегатах» Microsoft » . Архивировано из оригинала 27 июня 2012 г.
Мы очень внимательно изучили Delphi Object Pascal и построили рабочий прототип ссылок на привязанные методы, чтобы понять их взаимодействие с языком программирования Java и его API... Наш вывод заключался в том, что ссылки на привязанные методы не нужны и вредны для языка. Это решение было принято после консультаций с компанией Borland International, у которой уже был опыт работы со ссылками на связанные методы в Delphi Object Pascal .
- ^ Исследования TechMetrix (1999). «История Явы» (PDF) . Отчет о серверах приложений Java . Архивировано из оригинала (PDF) 29 декабря 2010 г. Проверено 16 октября 2009 г.
Проект получил название «зеленый», а язык был основан на старой модели UCSD Pascal , позволяющей генерировать интерпретируемый код.
- ^ «Разговор с Джеймсом Гослингом – Очередь ACM» . Архивировано из оригинала 16 июля 2015 года . Проверено 11 августа 2015 г.
- ^ Вирт, Никлаус (2000). «Развитие процедурных языков программирования: личный вклад и перспективы» . Модульные языки программирования . Конспекты лекций по информатике. Том. 1897. стр. 1–10. дои : 10.1007/10722581_1 . ISBN 978-3-540-67958-5 .
- ^ Херцфельд, Энди. » Венгерский фольклор.org. Архивировано 18 ноября 2015 г. в Wayback Machine : Macintosh Stories. Проверено 6 марта 2012 г.
- ^ https://www.computerhistory.org/atchm/adobe-photoshop-source-code/. Архивировано 7 мая 2014 г. на Wayback Machine , исходный код Adobe Photoshop.
- ^ «Демонстрация приложений RAD Studio» . 2021-10-29.
- ^ tiobe.com. Архивировано 15 марта 2012 г. в Wayback Machine , Индекс сообщества программистов за январь 2011 г.
- ^ «Антикварное программное обеспечение: Turbo Pascal v5.5» . Архивировано из оригинала 24 ноября 2010 г. Проверено 17 мая 2018 г.
- ^ Компьютеры и вычислительная техника. Личная перспектива. Архивировано 10 мая 2017 г. в Wayback Machine Никлаусом Виртом.
- ^ cbi.umn.edu , «Интервью с Джоном Брэкеттом и Дугом Россом» [ постоянная мертвая ссылка ] , стр. 15, Институт Чарльза Бэббиджа, 2004 г.
- ^ Исследовательское учреждение Австралийской комиссии по атомной энергии, Лукас-Хайтс, Отчет отделения ядерной науки и технологий, Отдельные исследования (PDF) . Международное агентство по атомной энергии (IEAE) (Отчет). 1977. с. 22.
- ^ Джон Уделл, Крах объектно-ориентированного Паскаля, BYTE, июль 1989 г.
- ^ М. И. Трофимов, Конец Паскаля?, БАЙТ, март 1990 г., с. 36.
- ^ Ралл, Л.Б. (1987). «Введение в язык научных вычислений Pascal-SC». Компьютеры . 14 : 53–69. дои : 10.1016/0898-1221(87)90181-7 .
- ^ ПИ (29 августа 1986 г.). «Теперь Cadmus поставляется с арифметикой Кулиша — университет Карлсруэ доставляет в Мюнхен компилятор Паскаля». Компьютерная неделя (на немецком языке). Мюнхен – Карлсруэ, Германия: IDG Business Media GmbH . Архивировано из оригинала 30 мая 2016 г. Проверено 30 мая 2016 г.
- ^ «Pascal-XSC: Паскаль для расширенных научных вычислений» . Архивировано из оригинала 05 января 2014 г.
- ^ «Программное обеспечение XSC» . Архивировано из оригинала 1 ноября 2015 года . Проверено 11 августа 2015 г.
- ^ «Университет Вупперталя: научные вычисления/технологии программного обеспечения» . Архивировано из оригинала 6 ноября 2015 года . Проверено 11 августа 2015 г.
- ^ Бамбергер, Лотар; Давенпорт, Джеймс Х.; Фишер, Ганс Кристоф; Кок, Ян; Шумахер, Гюнтер; Ульрих, Кристиан; Уоллис, Питер Дж.Л.; Зима, Дик Т.; Вольф фон Гуденберг, Юрген (1990). Уоллис, Питер Дж.Л. (ред.). Улучшение программирования с плавающей запятой (1-е изд.). Бат, Великобритания: John Wiley & Sons Ltd. ISBN 0-471-92437-7 .
- ^ Мишель Жьен, «Операционная система SOL», на конференции Usenix Summer '83, Торонто, Онтарио (июль 1983 г.), стр. 75–78.
- ^ «Обзор распределенных операционных систем CHORUS» (PDF) . Хоровые системы . 1991. Архивировано из оригинала (PDF) 7 февраля 2015 г. – через cs.berkeley.edu.
- ^ Pascal ISO 7185:1990. Архивировано 17 июня 2012 г. в Wayback Machine 6.10.
- ^ Манделл, Стивен Л. (1987). Программирование на Паскале сегодня . Западная издательская компания. ISBN 978-0-314-33935-5 .
- ^ Jump up to: Перейти обратно: а б Дж. Уэлш, В. Дж. Снирингер и К. А. Хоар, «Двусмысленность и неуверенность в Паскале», Программное обеспечение: Практика и опыт 7 , стр. 685–696 (1977).
- ^ Паскаль, Нелл Дейл и Чип Уимс, «Висящее еще», с. 160–161. Архивировано 18 марта 2017 г. в Wayback Machine.
- ^ «Pascal-S: подмножество и его реализация», Н. Вирт в книге «Паскаль - язык и его реализация», Д. У. Бэррон, Wiley, 1979.
- ^ «Руководство пользователя VAX-11 Pascal V1.0» (PDF) .
- ^ Jump up to: Перейти обратно: а б «Описание программного обеспечения VSI Pascal для OpenVMS» (PDF) . ВСИ. 2017. Архивировано из оригинала (PDF) 18 апреля 2021 г. Проверено 7 февраля 2022 г.
- ^ «Интервью с архитектором Паскаля - Compaq Pascal» . Архивировано из оригинала 19 октября 2021 г. Проверено 28 мая 2022 г.
- ^ «Описание программного обеспечения Compaq Pascal версии 5.8 для Tru64 UNIX» . Архивировано из оригинала 25 июля 2020 г. Проверено 28 мая 2022 г.
- ^ «Интервью Джона Рейгана из VSI о GEM и LLVM для X86/64» . Системы eCube . 2019-03-12. Архивировано из оригинала 12 августа 2020 г. Проверено 7 февраля 2022 г.
- ^ ISO/IEC 7185:1990 Паскаль (PDF) . Архивировано из оригинала (PDF) 27 января 2016 года . Проверено 16 сентября 2014 г.
- ^ Вирт, Никлаус (июль 1973 г.). Язык программирования Паскаль (пересмотренный отчет) . ETH Цюрих. дои : 10.3929/ethz-a-000814158 .
- ^ Расширенный Паскаль: ISO/IEC 10206:1990 . Архивировано из оригинала 27 марта 2016 г. Проверено 16 сентября 2014 г.
- ^ «Стандарты языка: Паскаль, Расширенный Паскаль, Фортан» . Архивировано из оригинала 14 июля 2014 г. Проверено 16 сентября 2014 г.
- ^ Стандарт IEEE/ANSI для языка программирования Extended Pascal . 1990. doi : 10.1109/IEESTD.1990.101061 . ISBN 978-0-7381-4247-0 .
- ^ «Расширенный Pascal — Free Pascal wiki» . wiki.freepascal.org .
- ^ «Виртуальный Паскаль для OS/2» . Архивировано из оригинала 30 августа 2011 года . Проверено 3 апреля 2016 г.
- ^ Вольфганг (15 октября 2020 г.). «WDSibyl: среда визуальной разработки» . WDSibyl.org . Архивировано из оригинала 12 февраля 2020 г. Проверено 20 апреля 2020 г.
- ^ «netlabs.org – Проект: Открытая Сивилла» . Архивировано из оригинала 4 марта 2016 года . Проверено 3 апреля 2016 г.
- ^ Брайан В. Керниган (1981). «Почему Паскаль не мой любимый язык программирования» . Архивировано 28 апреля 2009 г. в Wayback Machine.
- ^ О. Лекарм, П. Дежарден, «Дополнительные комментарии к языку программирования Паскаль», Acta Informatica 4 , стр. 231–243 (1975).
- ^ «Расширенный Паскаль» . Архивировано из оригинала 18 октября 2015 г. Проверено 17 октября 2015 г.
Дальнейшее чтение [ править ]
- Никлаус Вирт: Язык программирования Паскаль . 35–63, Acta Informatica, том 1, 1971.
- КАР Хоар: «Заметки о структурировании данных». В О.-Ж. Даль, Э. В. Дейкстра и К. А. Хоар, редакторы, «Структурное программирование» , страницы 83–174. Академик Пресс, 1972.
- К. А. Хоар, Никлаус Вирт: Аксиоматическое определение языка программирования Паскаль . 335–355, Acta Informatica, том 2, 1973.
- Кэтлин Дженсен и Никлаус Вирт: Паскаль – Руководство пользователя и отчет . Шпрингер-Верлаг, 1974, 1985, 1991, ISBN 0-387-97649-3 и ISBN 3-540-97649-3 .
- Никлаус Вирт: Алгоритмы + Структуры данных = Программы . Прентис-Холл, 1975 г., ISBN 0-13-022418-9 .
- Никлаус Вирт: Оценка языка программирования Паскаль . 23–30 Уведомления ACM SIGPLAN, том 10, выпуск 6, июнь 1975 г.
- Н. Вирт и А. И. Вассерман, изд.: Проектирование языков программирования . Издательство компьютерного общества IEEE, 1980 г.
- Д. У. Бэррон (ред.): Паскаль – язык и его реализация . Джон Уайли 1981, ISBN 0-471-27835-1
- Питер Грогоно: Программирование на языке Паскаль , исправленное издание, Аддисон-Уэсли, 1980 г.
- Ричард С. Форсайт: Паскаль в работе и игре , Чепмен и Холл, 1 982
- Н. Вирт, М. Брой, редактор, и Э. Денерт, редактор: Паскаль и его преемники среди пионеров программного обеспечения: вклад в разработку программного обеспечения. Спрингер-Верлаг, 2002 г., ISBN 3-540-43081-4
- Н. Вирт: Воспоминания о разработке Паскаля . Уведомления ACM SIGPLAN, том 28, № 3, март 1993 г.
- Паскаль (язык программирования)
- Академические языки программирования
- Языки системного программирования
- Образовательные языки программирования
- Языки программирования высокого уровня
- Языки программирования, созданные в 1970 году.
- Языки программирования со стандартом ISO
- программное обеспечение 1970 года