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

Паскаль
Парадигма(ы) императив, структурированный
Появился в 1970
Разработанный компанией Niklaus Wirth
Дисциплина машинописи статический, сильный, безопасный
Основные реализации CDC 6000, ICL 1900, Pascal-P, PDP-11, PDP-10, IBM System/370, HP, GNU
Диалекты Borland, Turbo Pascal, UCSD Pascal
Под влиянием ALGOL W
Под влиянием Ada, Компонент Pascal, Java,[1][2][3]Modula, Modula-2, Oberon, Oberon-2, Object Pascal, Oxygene

Pascal-влиятельный императивный и процедурный язык программирования, разработанный в 1968/9 и опубликованный в 1970 году Никлаусом Виртом как небольшой и эффективный язык. Предназначенный для поощрения хороших методов программирования с использованием структурированного программирования и структурирования данных.

Производная. Известная как Object Pascal, предназначенная для объектно-ориентированного программирования

, была разработана в 1985 году.

История

Паскаль был разработан Никлаусом Виртом и основан на языке программирования ALGOL. Названном в честь французского математика и философа Блеза Паскаля.

До своей работы над Паскалем Вирт разработал Эйлера и АЛГОЛЬ W, а затем продолжил разработку паскалеподобных языков Modula-2 и Oberon.

Первоначально Паскаль был в основном. Но не исключительно. Предназначен для обучения студентов

структурированному программированию.[4] Целое поколение студентов использовало Паскаль в качестве вводного языка на курсах бакалавриата. Варианты языка Паскаль также часто использовались для всего-от исследовательских проектов до компьютерных игр и встроенных систем. Существуют более новые компиляторы Pascal. Которые широко используются.[5]

Паскаль был основным языком высокого уровня . Используемым для разработки в Apple Lisaи в первые годы Mac. Части оригинальной операционной системы Macintosh были переведены вручную на ассемблер Motorola 68000 из источников Pascal. Популярная система верстки TeX Дональда Э. Кнута была написана в WEB, оригинальной грамотной системе программирования. Основанной на DEC PDP-10 Pascal. В то время как приложение. Подобное Total Commander, было написано на Delphi (Object Pascal).

Object Pascal по-прежнему широко используется для разработки приложений Windows . Таких как Skype.[требуется цитирование] кросс-платформенная версия под названием Free Pascalс IDE Lazarus популярна среди пользователей Linux. Так как она обещает писать один раз. Компилировать в любомместе . Разработку.

Краткое описание

Намерение Вирта состояло в том . Чтобы создать эффективный язык (как в отношении скорости компиляции. Так и в отношении генерируемого кода). Основанный на так называемом структурированном программировании, концепции. Которая недавно стала популярной. Pascal имеет свои корни в языке ALGOL 60, но также ввел понятия и механизмы. Которые (поверх скаляров и массивов ALGOL) позволили программистам определять свои собственные сложные (структурированные) типы данных . А также облегчили построение динамических и рекурсивных структур данных. Таких как списки, деревья и графики. Важными функциями . Включенными для этого . Были записи, перечисления, поддиапазоны, динамически выделенные переменные с соответствующими указателямии множествами. Чтобы сделать это возможным и значимым. Pascal имеет строгую типизацию для всех объектов. Что означает. Что один тип данных не может быть преобразован или интерпретирован как другой без явных преобразований. Подобные механизмы сегодня стандартны во многих языках программирования. Другими языками , оказавшими влияние на развитие Паскаля, были COBOL, Simula 67 и собственный ALGOL W Вирта.

Pascal, как и многие современные языки программирования (но в отличие от большинства языков семейства C). Допускает вложенные определения процедур на любой уровень глубины. А также допускает большинство видов определений и объявлений внутри процедур и функций. Это обеспечивает очень простой и когерентный синтаксис. Когда полная программа синтаксически почти идентична одной процедуре или функции (за исключением самого ключевого слова, конечно.)

Реализации

Первый компилятор Pascal был разработан в Цюрихе для семейства мэйнфреймов серии CDC 6000. Никлаус Вирт сообщает. Что первая попытка реализовать его в Фортране в 1969 году была неудачной из-за неспособности Фортрана выразить сложные структуры данных. Вторая попытка была сформулирована в самом языке Паскаль и начала функционировать к середине 1970-х. С тех пор многие компиляторы Pascal стали точно такими же самодостаточными то есть компилятор сам написан на языке Pascal. И компилятор обычно способен перекомпилировать себя. Когда в язык добавляются новые функции или когда компилятор должен быть перенесен в новую среду. Компилятор GNU Pascal является одним заметным исключением. Будучи написанным на языке C.

Первый успешный перенос компилятора CDC Pascal на другой мэйнфрейм был завершен Уэлшем и Куинном в QUB в 1972 году. Целью была серия ICL 1900. Этот компилятор. В свою очередь. Был родоначальником компилятора Pascal для миникомпьютера ICS Multum. Порт Multum был разработан – с целью использования Паскаля в качестве языка системного программирования – Финдли, Капплсом. Кавурасом и Дэвисом. Работающими на кафедре вычислительной техники в Университете Глазго. Считается, что Multum Pascal. Который был завершен летом 1973 года, возможно. Был первой 16-битной реализацией.

Совершенно новый компилятор был завершен Welsh et al. в Кубе в 1977 году. Он предлагал диагностическую функцию на исходном языке (включающую профилирование. Трассировку и форматированные посмертные дампы с учетом типов). Которая была реализована Финдли и Уоттом в Университете Глазго. Эта реализация была перенесена в 1980 году в ICL Серия 2900, созданная командой из Саутгемптонского университета и Университета Глазго. Стандартная реализация модели Pascal также была основана на этом компиляторе. Адаптированном Уэлшем и Хэем в Манчестерском университете в 1984 году для строгой проверки соответствия стандарту BSI 6192/ISO 7185 и генерации кода для портативной абстрактной машины.

Первый компилятор Pascal, написанный в Северной Америке. Был сконструирован в Иллинойском университете под руководством Дональда Б. Джиллиса для PDP-11 и сгенерировал машинный код.

Для быстрого распространения языка в Цюрихе был создан Pascal-P. Компиляторы P-систем назывались Pascal-P1, Pascal-P2, Pascal-P3 и Pascal-P4. Паскаль-П1 был первой версией. А Паскаль-П4-последней.

Компилятор/интерпретатор Pascal-P4 все еще может быть запущен и скомпилирован в системах. Совместимых с оригинальным Pascal. Однако он принимает только подмножество языка Pascal.

Pascal-P5, созданный за пределами Цюрихской группы. Принимает полный язык Pascal и включает совместимость с ISO 7185.

UCSD Pascal ответвился от Pascal-P2, где Кеннет Боулз использовал его для создания интерпретирующей UCSD p-системы

Компилятор на основе компилятора Pascal-P4, который создавал собственные двоичные файлы. Был выпущен для мэйнфрейма IBM System/370 Австралийской комиссией по атомной энергии; он был назван

В начале 1980-х годов был разработан Watcom Pascal. Также для IBM System 370.

IP Pascal был реализацией языка программирования Pascal с использованием Micropolis DOS. Но был быстро перемещен в CP/M, работающий на Z80. Он был перенесен в типы машин 80386 в 1994 году и существует сегодня как реализации Windows/XP и Linux. В 2008 году система была выведена на новый уровень и полученный язык получил название Она включает в себя объекты. Элементы управления пространствами имен, динамические массивы, наряду со многими другими расширениями. Иак правило. Имеет ту же функциональность и защиту типов, что и C#. Это единственная такая реализация. Которая также совместима с оригинальной реализацией Pascal (которая стандартизирована как ISO 7185).

В начале 1980-х годов UCSD Pascal был портирован на компьютеры Apple II и Apple III, чтобы обеспечить структурированную альтернативу базовым интерпретаторам. Поставляемым вместе с машинами.

Apple Computer создал свой собственный Lisa Pascal для Lisa Workshop в 1982 году и портировал этот компилятор на Apple Macintosh и MPW в 1985 году. В 1985 году Ларри Теслер. Консультируясь с Никлаусом Виртом. Определил Object Pascal. И эти расширения были включены как в компиляторы Lisa Pascal. Так и в Mac Pascal.

В 1980-х годах Андерс Хейлсберг написал компилятор Blue Label Pascal для Nascom-2. Реимплементация этого компилятора для IBM PC продавалась под названиями Compas Pascal и PolyPascal до того. Как он был приобретен компанией Borland. Переименованный в Turbo Pascal, он стал чрезвычайно популярным. Отчасти благодаря агрессивной ценовой стратегии. Отчасти благодаря наличию одной из первых полноэкранных интегрированных сред разработкии быстрому времени выполнения (всего несколько секунд на компиляцию. Связывание и запуск).) Кроме того. Он был написан и высоко оптимизирован полностью на ассемблере, что сделало его меньше и быстрее. Чем большая часть конкурентов. В 1986 году Андерс портировал Turbo Pascal на Macintosh и включил расширения объекта Apple Pascal в Turbo Pascal. Затем эти расширения были добавлены обратно в ПК-версию Turbo Pascal для версии 5.5. В то же время Microsoft также реализовала компилятор Object Pascal.[6][7] Turbo Pascal 5.5 оказал большое влияние на сообщество Pascal. Которое начало концентрироваться в основном на IBM PC в конце 1980-х годов. Многие любители ПК в поисках структурированной замены для BASIC использовал этот продукт. Его также начали перенимать профессиональные разработчики. Примерно в то же время ряд концепций был импортирован из языка Си, чтобы позволить программистам Pascal напрямую использовать API на основе языка Си Microsoft Windows. Эти расширения включали строки с нулевым завершением, арифметику указателей. Указатели функций, оператор адреса и небезопасныетипы .

Однако позже Borland решила. Что ей нужны более сложные объектно-ориентированные функции. И начала работать в Delphi, используя проект стандарта Object Pascal. Предложенный Apple в качестве основы. (Этот проект Apple все еще не является формальным стандартом.) Первые версии языка Delphi были соответственно названы Object Pascal. Основными дополнениями по сравнению со старыми расширениями ООП были объектная модель на основе ссылок. Виртуальные конструкторы и деструкторы. А также свойства. Несколько других компиляторов также реализуют этот диалект.

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

Super Pascal был вариантом. Который добавлял нечисловые метки. Оператор return и выражения в качестве имен типов.

Университеты Цюриха, Карлсруэ и Вупперталя разработали EXtension for Scientific Computing (Pascal XSC). Который обеспечивает свободное решение для программирования численных вычислений с контролируемой точностью.

Языковые конструкции

Паскаль в своей первоначальной форме является чисто процедурным языком и включает традиционный набор алголоподобныхуправляющих структур с зарезервированными словами, такими как if, then, else, while, forи т. Д. Однако в Pascal также есть множество средств структурирования данных и других абстракций. Которые не были включены в исходный ALGOL 60, таких как определения типов, записи, указатели, перечисленияи наборы. Такие конструкции были частично унаследованы или вдохновлены Simula 67, ALGOL 68, собственным ALGOL W Никлауса Вирта и предложениями C. A. R. Hoare.

Привет мир

Программы на языке Паскаль начинаются с ключевого слова program со списком внешних файловых дескрипторов в качестве параметров; затем следует основной блок, заключенный в квадратные скобки ключевыми словами begin и end. Точки с запятой разделяют операторы, а точка с запятой (точка) завершает всю программу (или единицу). Буквенный регистр игнорируется в исходном коде Pascal.

Вот пример исходного кода. Используемого для очень простой программы

программа HelloWorld(вывод); begin Writeln(); конец. 

Типы данных

Тип в Pascal и в некоторых других популярных языках программирования определяет переменную таким образом. Что он определяет диапазон значений. Которые переменная способна хранить. А также определяет набор операций. Которые допустимо выполнять с переменными этого типа. Предопределенными типами являются:

Тип данных Тип значений. Которые переменная способна хранить
целое число Целые числа
реальный Числа с плавающей запятой
логический Значение TRUE или FALSE
обуглить Один символ из упорядоченного набора символов

Диапазон значений. Разрешенных для каждого из них (кроме логических). Определяется реализацией. Для некоторых преобразований данных предусмотрены функции. Для преобразования значения realв integerдоступны следующие функции:round, которые округляются до целого числа с помощью округления банкира;trunc, округляются до нуля.

Программист имеет свободу определять другие часто используемые типы данных (например, байт. Строку и т. Д.) в терминах предопределенных типов. Используя средство объявления типов Pascal.

введите byte = 0..255; signedbyte = -128..127; string = упакованный массив [1..255]  чара; 

Типы поддиапазонов

Поддиапазоны любого порядкового типа (любой простой тип. Кроме реального) могут быть сделаны:

var х: 1..10; y: 'a'..; z: груша..апельсин; 

Типы наборов

В отличие от других языков программирования своего времени. Pascal поддерживает тип набора:

var set1: набор из 1..10; set2: набор  ..'z'; set3: набор  груш..оранжевый; 

Множество является фундаментальным понятием для современной математики. И они могут быть использованы во многих алгоритмах. Такая функция полезна и может быть быстрее. Чем эквивалентная конструкция в языке. Который не поддерживает наборы. Например, для многих компиляторов Pascal:

если я в [5..10] затем ... 

выполняется быстрее, чем:

если (4) и (i

Наборы несмежных значений могут быть особенно полезны с точки зрения производительности и читаемости:

если я в [0..3, 7, 9, 12..15] тогда ... 

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

Объявления типов

Типы могут быть определены из других типов с помощью объявлений типов:

тип x = Целое число; y = x; ... 

Кроме того, сложные типы могут быть построены из простых типов:

тип a = Массив [1..10]  целогочисла ; b = запись x: Целое число; y:  Конец Char; c = Файл  a; 

Тип файла

Как показано в приведенном выше примере, файлы Pascal представляют собой последовательности компонентов. Каждый файл имеет буферную переменную. Которая обозначается символом f^. Процедуры get (для чтения) и put (для записи) перемещают переменную буфера в следующий элемент. Read вводится таким образом. Что read(f, x) совпадает с x:=f^; get(f);. Write вводится таким образом. Что write(f, x) совпадает с f^ := x; put(f); Тип text предопределен как файл char. В то время как переменная буфера может использоваться для проверки следующего используемого символа (проверьте цифру перед чтением целого числа). Это приводит к серьезным проблемам с интерактивными программами в ранних реализациях. Но было решено позже с помощью концепции

В Jensen & Wirth Pascal строки представлены в виде упакованных массивов символов; поэтому они имеют фиксированную длину и обычно заполняются пространством. Некоторые диалекты имеют собственный строковый тип.

Типы указателей

Pascal поддерживает использование указателей:

тип Nodeptr = ^Узел; Узел = запись a: Целое число; b: Char; c: Конец Nodeptr; var ptoNode: Nodeptr; Пинта : ^Целое число; 

Здесь переменная ptoNode является указателем на узел типа данных, запись. Указатели можно использовать до того. Как они будут объявлены. Это прямое объявление, исключение из правила. Что вещи должны быть объявлены до того. Как они будут использованы. Чтобы создать новую запись и присвоить значение 10 и символ A полям a и b в записи. А также инициализировать указатель c равным нулю. Необходимо выполнить следующие команды::

новый(ptoNode); ... ptoNode^.a := 10; Птонод^.b := 'A'; Птонод^.c := ноль; ... 

Это также можно сделать с помощью оператора with следующим образом

новый(ptoNode); ... с птоНода^ действительно начинайте a := 10; b := 'A'; c := нулевой конец; ... 

Внутри области оператора with a и b ссылаются на подполя ptoNode указателя записи, а не на узел записи или тип указателя Nodeptr.

Связанные списки, стеки и очереди могут быть созданы путем включения поля типа указателя (c) в запись (см. также nil).

В отличие от многих языков. Содержащих указатели. Pascal позволяет указателям ссылаться только на динамически создаваемые анонимные переменные и не позволяет им ссылаться на стандартные статические или локальные переменные. Указатели также должны иметь связанный тип. И указатель на один тип не совместим с указателем на другой тип (например. Указатель на символ не совместим с указателем на целое число). Это помогает устранить проблемы безопасности типов. Присущие другим реализациям указателей. Особенно тем. Которые используются для PL/I или C Это также устраняет некоторые риски. Вызванные висячими указателями. Но способность динамически освобождать ссылочное пространство с помощью функции dispose (которая имеет тот же эффект, что и функция свободной библиотеки. Найденная в C) означает. Что риск висячих указателей не был полностью устранен . [9]

Структуры управления

Pascal-это структурированный язык программирования. Означающий . Что поток управления структурирован в стандартные операторы, в идеале без команд ‘goto’.

в то времяdo writeln('Ожидание'); еслито writeln('Условие выполнено') else writeln('Условие не выполнено'); для i := от 1 до 10 do writeln('Iteration:', i:1); повторите a := a + 1 до a = 10; случай i из 0: запись(); 1: напишите(); 2: напишите() конец; 

Процедуры и функции

Паскаль структурирует программы в процедуры и функции.

программная шахта(выход); var i : целое число; процедура print(var j: integer); 

Процедуры и функции могут гнездиться на любой глубине. И конструкция

Каждая процедура или функция может иметь свои собственные объявления меток goto. Констант, типов. Переменных и других процедур и функций. Которые должны быть расположены в этом порядке. Это требование к порядку изначально было предназначено для обеспечения эффективной однопроходной компиляции. Однако в некоторых диалектах (таких как Embarcadero Delphi) строгое требование упорядочения разделов декларации было смягчено.

Точки с запятой как разделители операторов

Pascal перенял многие синтаксические особенности языка ALGOL, включая использование точки с запятой в качестве разделителя операторов. Это в отличие от других языков. Таких как PL/I, C и т. Д. которые используют точку с запятой в качестве терминатора оператора. Как показано в приведенных выше примерах. Точка с запятой не требуется перед ключевым словом end объявления типа записи. Блока или оператора case; перед ключевым словом until оператора repeat; и перед ключевым словом else оператора if.

Наличие дополнительной точки с запятой не было разрешено в ранних версиях Pascal. Однако добавление пустых утверждений типа ALGOL в Пересмотренном отчете 1973 года и последующие изменения языка в ISO 7185:1983 теперь допускают необязательные точки с запятой в большинстве этих случаев. Исключение состоит в том. Что точка с запятой все еще не разрешена непосредственно перед ключевым словом else в операторе if.

Ресурсы

Компиляторы и интерпретаторы

Несколько компиляторов и интерпретаторов Pascal доступны для широкой публики:

  • Delphi-это флагманский продукт Embarcadero (ранее Borland/CodeGear) для быстрой разработки приложений (RAD). Он использует язык Object Pascal (называемый Borland Delphi). Происходящий от языка Pascal. Для создания приложений для платформы Windows. Поддержка .NET,существовавшая с D8 по D2005, D2006 и D2007, была прекращена и заменена новым языком (Prism. Который переименован в Oxygene, см. Самая последняя итерация диапазона win32 (D2009) добавляет поддержку unicode и generics.
  • Free Pascal-это многоплатформенный компилятор. Написанный на Object Pascal (и являющийся самостоятельным хостингом). Он направлен на обеспечение удобного и мощного компилятора. Способного как компилировать устаревшие приложения. Так и быть средством разработки новых. Он распространяется под GNU GPL. В то время как пакеты и библиотека времени выполнения поставляются под модифицированным GNU LGPL. Помимо режимов совместимости для Turbo Pascal, Delphi и Mac Pascal. Он также имеет свои собственные процедурные и объектно-ориентированные синтаксические режимы с поддержкой расширенных функций. Таких как перегрузка операторов. Он поддерживает множество платформ и операционных систем.
  • Lazarus-это Delphi-подобная визуальная кросс-платформенная IDE для быстрой разработки приложений (RAD). Основанный на свободном Паскале, Lazarus доступен для многих платформ. Включая Linux, FreeBSD, Mac OS X и Microsoft Windows.
  • Dev-Pascal-это IDE Pascal. Разработанная в Borland Delphi и поддерживающая Free Pascal и GNU Pascal в качестве бэкендов.
  • Turbo51-это бесплатный компилятор Pascal для семейства микроконтроллеров 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. Одним из наиболее болезненных упущений является отсутствие 100% Turbo Pascal-совместимого строкового типа. Поддержка Borland Delphi и других языковых вариаций довольно ограничена, за исключением, может быть. Mac Pascal. Поддержка которого быстро растет.
  • DWScript, он же DelphiWebScript. — это интерпретатор. Созданный Маттиасом Аккерманом и Ханнесом Хернлером в 2000 году. Текущая версия работает на диалекте Object Pascal. В значительной степени совместимом с Delphi. Но также поддерживает элементы языковых конструкций. Введенные в Prism.
  • Доктор Паскаль-это интерпретатор. Работающий на стандартном языке Паскаль. Примечательны режим Запускает программы. Но не создает отдельный исполняемый двоичный файл. Работает на DOS. Windows в окне DOS и старом Macintosh.
  • Расширенный компилятор Dr. Pascal тестировался на DOS. Windows 3.1, 95, 98, NT.
  • Virtual Pascal был создан Виталием Мирьяновым в 1995 году как нативный компилятор OS/2, совместимый с синтаксисом Borland Pascal. Затем он был коммерчески разработан компанией FPrint, добавив поддержку Win32, а в 2000 году стал бесплатным. Сегодня он может компилироваться для Win32, OS/2 и Linux и в основном совместим с Borland Pascal и Delphi. Разработка была отменена 4 апреля 2005 года.
  • Компилятор P4, основа для многих последующих компиляторов Pascal. Реализованных в Pascal. Включая UCSD p-System. Он реализует подмножество полного Паскаля.
  • Компилятор P5— это адаптация P4 по стандарту ISO 7185 (full Pascal).
  • Turbo Pascal был доминирующим компилятором Pascal для ПК в 80-х и начале 90-х годов. Популярным как из-за своих мощных расширений. Так и из-за чрезвычайно короткого времени компиляции. Turbo Pascal был компактно написан и мог компилировать. Запускать и отлаживать все из памяти. Не обращаясь к диску. Медленные дисководы были обычным делом для программистов того времени. Что еще больше увеличивало преимущество Turbo Pascal в скорости. В настоящее время более старые версии Turbo Pascal (до 5.5) доступны для бесплатной загрузки с сайта Borland.
  • IP Pascal Реализует язык Он включает в себя модули с управлением пространством имен. Включая параллельные модули задач с семафорами, объектами. Динамическими массивами любых измерений. Которые выделяются во время выполнения. Перегрузками. Переопределениями и многими другими расширениями. IP Pascal имеет встроенную библиотеку переносимости. Которая специально адаптирована к языку Pascal. Например, стандартное приложение для вывода текста из оригинального Pascal 1970-х годов можно перекомпилировать для работы в окне и даже добавить графические конструкции.
  • Pascal-XT был создан компанией Siemens для своих мэйнфреймовых операционных систем BS2000 и SINIX.
  • PocketStudio-это компилятор подмножества Pascal и инструмент RAD для процессоров Palm OS и MC68xxx с некоторыми собственными расширениями для облегчения взаимодействия с API Palm OS. Он напоминает Delphi и Lazarus с визуальным дизайнером форм. Инспектором объектов и редактором исходного кода.
  • MIDletPascal — компилятор Pascal и IDE. Который генерирует небольшой и быстрый байт-код Java. Специально разработанный для создания программного обеспечения для мобильных телефонов
  • Vector Pascal Vector Pascal-это язык для наборов команд SIMD. Таких как MMX и AMD 3d Now. Поддерживающий все процессоры Intel и AMD. А также эмоциональный движок Sony PlayStation 2.
  • Morfik Pascal позволяет разрабатывать веб-приложения. Полностью написанные на Object Pascal (как на стороне сервера. Так и на стороне браузера).
  • WDSibyl — Визуальная среда разработки и компилятор Pascal для Win32 и OS/2
  • PP Compiler. Компилятор для Palm OS. Который работает непосредственно на КПК
  • Компилятор CDC 6000 Pascal Исходный код первого (CDC 6000) компилятора Pascal.
  • Pascal-S
  • AmigaPascal — AmigaPascal. Свободный Паскаль-компилятор для Amiga-компьютера.

Очень обширный список можно найти на сайте Pascaland. Сайт написан на французском языке. Но в основном это список АДРЕСОВ для компиляторов; для нефранкофонов нет никаких препятствий. Этот сайт , Pascal Central, ориентированный на Mac информационный и пропагандистский сайт Pascal с богатой коллекцией архивов статей. А также ссылок на многие компиляторы и учебные пособия. Также может представлять интерес.

Стандарты

В 1983 году этот язык был стандартизирован в международном стандарте IEC/ISO 7185 и нескольких местных национальных стандартах. Включая американский ANSI/IEEE770X3.97-1983 и ISO 7185:1983. Эти два стандарта отличались только тем. Что стандарт ISO включал расширение В 1989 году ISO 7185 был пересмотрен (ISO 7185:1990). Чтобы исправить различные ошибки и двусмысленности. Обнаруженные в оригинальном документе.

В 1990 году был создан расширенный стандарт Pascal под названием ISO/IEC 10206. В 1993 году стандарт ANSI был заменен организацией ANSI с

ISO 7185 был заявлен как разъяснение языка Вирта 1974 года. Подробно описанного в Руководстве пользователя и отчете [Jensen and Wirth]. Но также был примечателен добавлением Это дополнение было сделано по просьбе К. А. Р. Хоараи с одобрения Никлауса Вирта. Побудительной причиной было то. Что Хоар хотел создать Паскаль-версию библиотеки численных алгоритмов (NAG) , который первоначально был написан на ФОРТРАНЕ. И обнаружил. Что это невозможно сделать без расширения. Которое позволяло бы использовать параметры массива различного размера. Аналогичные соображения мотивировали включение в ИСО 7185 объекта для указания типов параметров процедурных и функциональных параметров.

Обратите внимание. Что сам Никлаус Вирт называл язык 1974 года Этот язык был задокументирован в , второй части

На больших машинах (мэйнфреймах и миникомпьютерах) Паскаль возник позже. Стандарты в целом соблюдались. На IBM-PC их не было. На IBM-ПК наибольшее число пользователей имеют стандарты Borland Turbo Pascal и Delphi. Таким образом. Обычно важно понять. Соответствует ли конкретная реализация оригинальному языку Паскаль или его борландскому диалекту.

Версии языка IBM-PC стали отличаться с появлением UCSD Pascal. Интерпретируемой реализации. Которая включала в себя несколько расширений языка. А также несколько пропусков и изменений. Многие особенности языка UCSD сохранились и сегодня. В том числе в диалекте Борланда.

Подразделения

Цюрихская версия Pascal Никлауса Вирта была выпущена за пределами ETH в двух основных формах: исходный код компилятора CDC 6000 и набор для переноса под названием Pascal-P system. Компилятор Pascal-P опустил некоторые особенности полного языка. Например, процедуры и функции. Используемые в качестве параметров. Неразличимые записи вариантов, упаковка. Утилизация. Межпроцедурные goto и другие функции полного компилятора были опущены.

UCSD Pascalпод руководством профессора Кеннета Боулза был основан на наборе Pascal-P2 и. Следовательно. Разделял некоторые ограничения языка Pascal-P. UCSD Pascal позже был принят как Apple Pascal и продолжался там в нескольких версиях. Хотя UCSD Pascal фактически расширил подмножество Pascal в наборе Pascal-P. Добавив обратно стандартные конструкции Pascal. Это все еще не была полная стандартная установка Pascal.

Turbo Pascal Борланда, написанный Андерсом Хейльсбергом, был написан на ассемблере независимо от UCSD или цюрихских компиляторов. Однако он принял большую часть того же подмножества и расширений. Что и компилятор UCSD. Вероятно, это связано с тем. Что система UCSD была наиболее распространенной системой Pascal. Подходящей для разработки приложений на ограниченных в ресурсах микропроцессорных системах. Доступных в то время.

Перечень соответствующих стандартов

  • ISO 8651-2:1988 Системы обработки информации—Компьютерная графика—Привязки языка графической системы ядра (GKS)—Часть 2: Pascal

Прием

Паскаль вызвал широкий спектр откликов в компьютерном сообществе. Как критических. Так и комплиментарных.

Критика

В то время как очень популярные (хотя и более популярные в 1980-х и начале 1990-х годов. Чем сейчас) реализации Pascal. Которые тесно следовали первоначальному определению Вирта языка. Широко критиковались за непригодность для использования вне обучения. Брайан Керниган, который популяризировал язык C, изложил свою наиболее заметную критику Паскаля еще в 1981 году в своей статье ] Самая серьезная проблема. Описанная в этой статье. Заключается в том. Что размеры массивов и длина строк были частью типа. Поэтому невозможно было написать функцию. Которая принимала бы массивы переменной длины или даже строки в качестве параметров (например. Библиотеку сортировки). Автор также критиковал непредсказуемый порядок вычисления булевых выражений. Плохую библиотечную поддержку. Отсутствие статических переменных и ряд более мелких проблем. Кроме того, он заявил. Что язык не предоставляет никаких простых конструкций. Позволяющих (Однако есть одна особенность Более общие жалобы из других источников[11][12] отмечали. Что сфера применения деклараций не была четко определена в определении оригинального языка. Что иногда имело серьезные последствия при использовании прямых деклараций для определения типов указателей. Или когда объявления записей приводят к взаимной рекурсии. Или когда идентификатор может использоваться или не использоваться в списке перечислений. Другая трудность заключалась в том, что, как и ALGOL 60, язык не позволял процедурам или функциям. Передаваемым в качестве параметров. Заранее определять. Какими должны быть их параметры.

С другой стороны. Многие крупные разработки в 1980-х годах. Такие как Apple Lisa и Macintosh. Сильно зависели от Pascal (до такой степени. Что интерфейс C для API операционной системы Macintosh должен был иметь дело с типами данных Pascal).

Реакции

Паскаль продолжал развиваться. И большинство замечаний Кернигана не относится к версиям языка. Которые были усовершенствованы. Чтобы быть пригодными для разработки коммерческих продуктов. Таких как Turbo PascalБорланда . К сожалению. Как и предсказывал Керниган в своей статье. Большинство расширений для устранения этих проблем были несовместимы от компилятора к компилятору. Однако с начала 1990-х эти разновидности. По-видимому. Сгустились в две категории-ИСО и борландоподобные. Что в конечном итоге привело к лучшему результату. Чем предполагал Керниган.[оригинальное исследование?]

Хотя Керниган порицал отсутствие побегов типа Паскаля (указателей и побегов типа стали сильно критикуемыми функциями сами по себе. А языки Java, C# и другие имеют резкий поворот к точке зрения Паскаля. То, что эти языки называют

На основе своего опыта работы с Паскалем (а ранее и с АЛГОЛОМ) Никлаус Вирт разработал еще несколько языков программирования: Modula, Modula-2, Oberon и Oberon-2. Эти языки адресуют некоторые критические замечания в адрес Pascal. Предназначены для различных групп пользователей и т. Д., Но ни один из них не оказал такого широкого влияния на компьютерную науку и пользователей компьютеров. Как Pascal. И ни один еще не встречал подобного коммерческого успеха.

Смотрите также

Дальнейшее чтение

  • Niklaus Wirth: The Programming Language Pascal. 35-63, Acta Informatica. Volume 1, 1971.
  • C A R Hoare: Заметки о структурировании данных. В O-J Dahl, E W Dijkstra and C A R Hoare, editors. Structured Programming. Pages 83-174. Academic Press, 1972.
  • Хоар, Никлаус Вирт: Аксиоматическое определение языка программирования Pascal. 335-355, Acta Informatica. Том 2, 1973.
  • Kathleen Jensen and Niklaus Wirth: PASCAL — User Manual and Report. Springer-Verlag, 1974, 1985, 1991, ISBN 0-387-97649-3 и ISBN 3-540-97649-3 [1]
  • Никлаус Вирт: Алгоритмы + Структуры данных = Программы. Prentice-Hall, 1975, ISBN 0-13-022418-9 [2]
  • Niklaus Wirth: An assessment of the programming LANGUAGE PASCAL 23-30 ACM SIGPLAN Notices Volume 10, Issue 6, June 1975.
  • N. Wirth, and A. I. Wasserman, ed: Programming Language Design. IEEE Computer Society Press, 1980
  • Д. У. Бэррон (Ред.): Паскаль — Язык и его реализация. Джон Уайли 1981, ISBN 0-471-27835-1
  • Peter Grogono: Programming in Pascal, Revised Edition. Addison-Wesley, 1980
  • Ричард С. Форсайт: Паскаль в работе и игре, Chapman and Hall, 1982
  • Н. Вирт, М. Брой. Эд и Э. Денерт, эд: Паскаль и его преемники в пионерах программного обеспечения: Вклад в разработку программного обеспечения. Springer-Verlag, 2002, ISBN 3-540-43081-4
  • Н. Вирт: Воспоминания о развитии Pascal. ACM SIGPLAN Notices, Том 28, № 3, март 1993 г.

Рекомендации

  1. ^ «Мы очень внимательно изучили Delphi Object Pascal и построили рабочий прототип ссылок на связанные методы. Чтобы понять их взаимодействие с языком программирования Java и его API
    ». «Наш вывод состоял в том. Что ссылки на связанные методы являются ненужными и вредными для языка. Это решение было принято в консультации с Borland International. Которая имела предыдущий опыт работы со связанными ссылками на методы в Delphi Object Pascal.О , java.sun.com
  2. ^ TechMetrix Research (1999). . Отчет Серверов приложений Java. http://www.fscript.org/prof/javapassport.pdf. UCSD Pascal, которая позволяет генерировать интерпретирующий код 
  3. Разговор с Джеймсом Гослингом
  4. ^ Эссенциальный Паскаль Марко Канту
  5. ^ Индекс сообщества программистов TIOBE за январь 2011 года
  6. ^ Джон Юделл. Крах объектно-ориентированных паскалей, БАЙТ. Июль 1989 г.
  7. ^ М. И. Трофимов. Конец Паскаля?, БАЙТ. Март 1990 г., с. 36.
  8. ^ Pascal ISO 7185:1990 6.10
  9. Welsh, W. J. Sneeringer и C. A. R. Hoare, , Software Practice and Experience 7, pp. 685-696 (1977)
  10. Брайан У. Керниган (1981). Почему Паскаль не является Моим Любимым Языком Программирования
  11. O. Lecarme, P. Desjardins, , Acta Informatica 4, pp. 231-243 (1975)
  12. Welsh, W. J. Sneeringer, C. A. R. Hoare, , Software Practice and Experience 7, pp. 685-696 (1977)

Внешние ссылки

v · d · e Стандарты ISO
от 1
до
9999
1 ··· 4 ···· 9 · 16 · 31 (-0, -1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13· 128 · 216 · 217 · 226 · 228 · 233 · 259 · 269 · 302 · 306 · 428 · 518 · 519 · 639 (-1, -2, -3, -5, -6· 646 · 690 · 732 · 764 · 843 · 898 · 1000 · 1004 · 1007 · 1073-1 · 1413 · 1538 · 1745 · 2014 · 2015 · 2022 · 2108 · 2145 · 2146 · 2240 · 2281 · 2709 · 2711 · 2788 · 3029 · 3103 · 3166 (-1, -2, -3· 3297 · 3307 · 3602 · 3864 · 3901 · 3977 · 4031 · 4157 · 4217 · 5218 · 5775 · 5776 · 5800 · 5964 · 6166 · 6344 · 6346 · 6425 · 6429 · 6438 · 6523 · 6709 · 7001 · 7002 · 7098 · 7185 · 7200 · 7498 · 7736 · 7810 · 7811 · 7812 · 7813 · 7816 · 8000 · 8178 · 8217 · 8571 · 8583 · 8601 · 8632 · 8652 · 8691 · 8807 · 8820-5 · 8859 (-1, -2, -3, -4, -5, -6, -7, -8, -9, -10, -11, -12, -13, -14, -15, -16· 8879 · 9000/9001 · 9075 · 9126 · 9241 · 9362 · 9407 · 9506 · 9529 · 9564 · 9594 · 9660 · 9897 · 9945 · 9984 · 9985 · 9995
от 10000
до
19999
10006 · 10118-3 · 10160 · 10161 · 10165 · 10179 · 10206 · 10303 (-11, -21, -22, -28, -238) · 10383 · 10487 · 10585 · 10589 · 10646 · 10664 · 10746 · 10861 · 10957 · 10962 · 10967 · 11073 · 11170 · 11179 · 11404 · 11544 · 11783 · 11784 · 11785 · 11801 · 11898 · 11940 · 11941 · 11941 (ТР) · 11992 · 12006 · 12182:1998 · 12207 · 12234-2 · 13211 (-1, -2) · 13216 · 13250 · 13399 · 13406-2 · 13407 · 13450 · 13485 · 13490 · 13567 · 13568 · 13584 · 13616 · 14000 · 14031 · 14396 · 14443 · 14496-10 · 14496-14 · 14644 (-1, -2, -3, -4, -5, -6, -7, -8, -9) · 14649 · 14651 · 14698 · 14698-2 · 14750 · 14882 · 14971 · 15022 · 15189 · 15288 · 15291 · 15292 · 15408 · 15444 · 15445 · 15438 · 15504 · 15511 · 15686 · 15693 · 15706 · 15706-2 · 15707 · 15897 · 15919 · 15924 · 15926 · 15926 НЗП · 15930 · 16023 · 16262 · 16750 · 17024 · 17025 · 17369 · 17799 · 18000 · 18004 · 18014 · 18245 · 18629 · 18916 · 19005 · 19011 · 19092-1 · 19092-2 · 19114 · 19115 · 19125 · 19136 · 19439 · 19501:2005 · 19752 · 19757 · 19770 · 19775-1 · 19794-5
20000+