PascalABC.NET
Общие сведения
Система PascalABC.NET
PascalABC.NET – это система программирования и язык Pascal нового поколения для платформы Microsoft .NET. Язык PascalABC.NET содержит все основные элементы современных языков программирования: модули, классы, перегрузку операций, интерфейсы, исключения, обобщенные классы, сборку мусора, лямбда-выражения, а также некоторые средства параллельности, в том числе директивы OpenMP. Система PascalABC.NET включает в себя также простую интегрированную среду, ориентированную на эффективное обучение современному программированию.
* Описание языка PascalABC.NET. Преимущества PascalABC.NET для разработки программ и для обучения. Отличия PascalABC.NET от Delphi (Object Pascal). Примеры, иллюстрирующие основные особенности PascalABC.NET, находятся в меню "Помощь/Коротко о главном".
Язык Паскаль был разработан швейцарским ученым Никлаусом Виртом в 1970 г. как язык со строгой типизацией и интуитивно понятным синтаксисом. В 80-е годы наиболее известной реализацией стал компилятор Turbo Pascal фирмы Borland, в 90-е ему на смену пришла среда программирования Delphi, которая стала одной из лучших сред для быстрого создания приложений под Windows. Delphi ввела в язык Паскаль ряд удачных объектно-ориентированных расширений, обновленный язык получил название Object Pascal. С версии Delphi 7 язык Delphi Object Pascal стал называться просто Delphi. Из альтернативных реализаций Object Pascal следует отметить многоплатформенный open source компилятор Free Pascal.
Создание PascalABC.NET диктовалось двумя основными причинами: устаревание стандартного языка Pascal и систем, построенных на его основе (Free Pascal), а также необходимость в современной простой, бесплатной и мощной интегрированной среде программирования.
PascalABC.NET опирается на передовую платформу программирования Microsoft.NET, которая обеспечивает язык PascalABC.NET огромным количеством стандартных библиотек и позволяет легко сочетать его с другими .NET-языками: C#, Visual Basic.NET, управляемый C++, Oxygene и др. Платформа .NET предоставляет также такие языковые средства как единый механизм обработки исключений, единый механизм управления памятью в виде сборки мусора, а также возможность свободного использования классов, наследования, полиморфизма и интерфейсов между модулями, написанными на разных .NET-языках. О том, что такое платформа Microsoft.NET, о ее преимуществах для программирования и для обучения можно прочитать здесь.
Язык PascalABC.NET близок к реализации Delphi (Object Pascal). В нем отсутствует ряд специфических языковых конструкций Delphi, некоторые конструкции изменены. Кроме этого, добавлен ряд возможностей: имеется автоопределение типа при описании, можно описывать переменные внутри блока, имеются операции +=, -=, *=, /=, методы можно описывать непосредственно в теле класса или записи, можно пользоваться встроенными в стандартные типы методами и свойствами, память под объекты управляется сборщиком мусора и не требует явного освобождения, множества set могут быть созданы на основе произвольных типов, введен операторы foreach, переменные циклов for и foreach можно описывать непосредственно в заголовке цикла, имеются обобщенные классы и подпрограммы (generics), лямбда-выражения и др.
Близким по идеологии к PascalABC.NET является язык RemObjects Oxygene (Object Pascal 21 века). Однако он сильно изменен в сторону .NET: нет глобальных описаний, все описания помещаются в класс, содержащий статический метод Main, отсутствует ряд стандартных подпрограмм языка Паскаль. Кроме того, система RemObjects Oxygene - платная и не содержит собственной оболочки (встраивается в Visual Studio и другие IDE), что практически делает невозможным ее в сфере образования.
Интегрированная среда PascalABC.NET обеспечивает подсветку синтаксиса, подсказку по коду (подсказка по точке, подсказка параметров подпрограмм, всплывающая подсказка по коду), форматирование текста программы по запросу, переход к определению и реализации имени, элементы рефакторинга.
Все права на систему программирования PascalABC.NET принадлежат PascalABCCompiler Team (web-сайт http://pascalabc.net).
Коротко о главном
Данный текст содержит краткий обзор особенностей PascalABC.NET.
* PascalABC.NET – легковесная и мощная среда разработки программ с подробной справочной системой, средствами подсказки по коду, автоформатированием, встроенным отладчиком и встроенным дизайнером форм. Интегрированная среда разработки PascalABC.NET ориентирована на создание проектов малой и средней сложности, а также на обучение современному программированию.
* PascalABC.NET – мощный и современный язык программирования. По предоставляемым возможностям он превосходит язык Delphi и содержит практически все возможности языка C#.
* PascalABC.NET опирается на платформу Microsoft .NET - её языковые возможности и библиотеки, что делает его гибким, эффективным, постоянно развивающимся. Кроме того, можно легко сочетать библиотеки, разработанные на PascalABC.NET и других .NET-языках.
* Компилятор PascalABC.NET генерирует код, выполняющийся так же быстро, как и код на C#, и несколько медленнее, чем код на C++ и Delphi.
* PascalABC.NET является представителем линейки современных языков Паскаль вместе с Delphi XE и Oxygene.
* Мнение, что язык Паскаль устарел и утрачивает свои позиции, основано на представлении о старом Паскале и старых средах программирования (например, Free Pascal с его несовременной консольной оболочкой и языком Delphi образца 2002 года). К сожалению, масса отечественной учебной литературы с упорством, достойным лучшего применения, ориентируется на отживший Turbo Pascal с древней консольной оболочкой, бедной графической библиотекой и устаревшими средствами объектно-ориентированного программирования, развивая у обучающихся стойкое отвращение к языку Паскаль вообще.
* PascalABC.NET расширен современными языковыми возможностями для легкого, компактного и понятного програмирования.
* PascalABC.NET – достаточно зрелая среда. Ее прототип – учебная система Pascal ABC – появилась в 2002 году. PascalABC.NET – развивающаяся среда. Ведутся разработки новых языковых возможностей, новых библиотек.
* PascalABC.NET имеет уникальную Web-версию WDE ProgrammingABC.NET, представляющую собой среду разработки в окне браузера. Программы при этом сохраняются и компилируются на сервере, ввод-вывод (в т.ч. и интерактивный) передается по сети.
Далее приводится ряд программ с короткими комментариями, раскрывающих возможности и особенности языка PascalABC.NET.
Тексты программ располагаются в рабочей папке (по умолчанию C:PABCWork.NET) в подпапке Samples!MainFeatures.
Для запуска программ данное окно должно быть открыто через пункт меню Помощь/Коротко о главном так, чтобы оно не полностью закрывало окно оболочки PascalABC.NET.
Основное
* AssignExt.pas. Данный пример иллюстрирует использование расширенных операторов присваивания += -= *= /= для целых и вещественных. Оператор /= для целых, разумеется, запрещен.
* BlockVar.pas. Переменные могут описываться внутри блока begin-end и инициализироваться при описании. Это крайне удобно для промежуточных переменных, а в PascalABC.NET в силу особенностей реализации еще и ускоряет доступ к переменным процентов на 30.
* AutoVars.pas. Если переменная инициализируется при описании, то ее тип можно не указывать: он определяется по типу правой части (автоопределение типа). Переменную - параметр цикла for можно описывать прямо в заголовке цикла, сочетая это с автоопределением типа.
* SimpleNewFeatures.pas. Пример, объединяющий возможности из предыдущих трех примеров.
* WriteAll.pas. Процедура write выводит любой тип. В частности, она выводит все элементы множества. Если тип ей неизвестен, то она выводит имя типа.
* WriteFormat.pas. Стандартная процедура WriteFormat позволяет осуществлять форматированный вывод. Вид форматной строки заимствуется из .NET.
* StandardTypes.pas. В этой программе приведены все стандартные целые и вещественные типы. Программа выводит их размеры.
* RandomDiap.pas. К функциям генерации случайных чисел добавилась Random(a,b), возвращающая случайное целое в диапазоне [a,b]. Процедуру Randomize в начале программы вызывать не надо.
* RealExtNums.pas. Действия с вещественными значениями не могут в .NET привести к переполнению. При некорректных операциях (деление на 0, переполнение или взятие логарифма отрицательного числа) мы получим либо значение бесконечность, либо значение NaN (не число).
* Foreach.pas. Оператор foreach предназначен для цикла по контейнерам, таким как массивы, множества и контейнеры стандартной библиотеки (например, List<T>). Элементы контейнера доступны только на чтение.
* Amp.pas. Ключевые слова могут использоваться в качестве имен, в этом случае перед ними следует ставить значок & снятия атрибута ключевого слова. Кроме того, ключевые слова могут использоваться в качестве полей. Например, &Type или System.Type.
Типы