Описание языка Pascal

  1. PascalABC.NET - это система программирования и язык Pascal нового поколения для платформы Microsoft...
  2. Основное
  3. типы
  4. подпрограммы
  5. модули
  6. Стандартные графические библиотеки
  7. классы
  8. Что такое .NET
  9. Преимущества платформы .NET
  10. преимущества PascalABC.NET Современный язык программирования Object Pascal
  11. Специализированные модули для обучения
  12. добавлено
  13. изменено
  14. отсутствует

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, в девяностые ему на смену пришла среда программирования 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.

типы

* CharFunc.pas. Символы Char сохраняют Unicode и потому занимают 2 байта. Для функций Ord и Chr оставлено, однако, прежнее действие (предполагается, что символы находятся в Windows-кодировке). Для работы с кодами Unicode следует использовать OrdUnicode и ChrUnicode.

* StringTypes.pas. Строки string занимают память переменной длины и проецируются на .NET-тип System.String. Однако, в отличие от NET-строк они изменяемые и индексируются с 1 Для работы со строками фиксированной длины следует использовать тип string [n] или shortstring = string [255]. В частности, типизированные файлы допустимы только для коротких строк.

* StringMethods.pas. Строки string имеют ряд методов как .NET-классы. В этих методах предполагается, что строки индексируются с нуля.

* StringInteger.pas. Все типы - классы. Простые типы тоже. Поэтому преобразования строки в целое и вещественное проще выполнять с помощью статических методов Parse соответствующего класса (например, integer.Parse (s)). Преобразование целого или вещественного в строку удобнее выполнять с помощью экземпляра метода ToString (например, r.ToString).

* Enum.pas. Перечислимый тип позволяет обращаться к его констант не только непосредственно, но и используя запись вида ИмяТипа.ИмяКонстанты. Нелишне отметить, что все перечисляемых типа - производные от System.Enum.

* Sets.pas. Множества могут иметь произвольный базовый тип. Внутри множество сохраняется как хеш-таблица, однако при выводе множества в процедуре write его элементы упорядочиваются.

* DynArray.pas. Динамические массивы array of T имеются ссылки. Память под них должна выделяться или вызовом стандартной процедуры SetLength, или использованием инициализатор вида new T [n]. Процедура SetLength сохраняет старое содержимое массива. Динамические массивы является классом, производным от класса System.Array, что имеет достаточно богатый интерфейс. Следует упомянуть прежде всего статические методы & Array.Sort и & Array.Resize.

* InitRecords.pas. В записях допустимые инициализатор полей. Поля записи инициализируются при создании переменной-записи.

* UntypedFile.pas. Бестиповые файлы file изменены по сравнению с Delphi. Отсутствуют процедуры BlockRead и BlockWrite, но в бестиповым файл можно непосредственно записывать данные разных типов. Чтобы считывания производилось в том же порядке.

* PointerToRef.pas. Имеют место некоторые ограничения для указателей на управляемую память. Так, указатель не может прямо или косвенно указывать на объект класса, память которого выделена вызовом конструктора.

* Pointers.pas и References.pas. Указатели теряют свои позиции. Вместо них мы рекомендуем активно использовать ссылки.

* StructTypeEquiv.pas. В отличие от Delphi, для некоторых типов имеет место структурная, а не именная эквивалентность типов. Так, структурная эквивалентность имеет место для динамических массивов, указателей, множеств и процедурных типов.

подпрограммы

* FuncParams.pas. Подпрограммы с переменным числом параметров делаются легко добавлением ключевого слова params перед параметром - динамическим массивом. Такой параметр должен быть последним в списке.

* Overload.pas. Перегрузка имен подпрограмм осуществляется без ключевого слова overload.

* ProcVars.pas. Процедурные переменные могут накапливать действия с помощью оператора + =. Эти действия можно отключать с помощью оператора - =. Процедурные переменные могут инициализироваться не только обычными подпрограммами, но и статическими и экземплярность методами класса.

* SwapT.pas. Обобщенные подпрограммы имеют простой синтаксис и используются сразу рядом с обычными: procedure Swap <T> (var x, y: T)

модули

* SystemUnitTest.pas. Системный модуль называется PABCSystem, а не System, как в Delphi, и подключается неявно первым в списке uses. Причина такого именования заключается в том, что самое важное пространство имен .NET имеет имя System. Системный модуль объединяет много подпрограммы модулей System, Math и Utils языка Delphi. Данная программа иллюстрирует сечение имен в модуле PABCSystem и пространстве имен System.

* MainProgram.pas и MyUnit.pas. Модуль может иметь упрощенный синтаксис (без разделения на раздел интерфейса и раздел реализации), что удобно для начального обучения. В этом случае все описанные имена попадают в раздел интерфейса модуля.

* SystemUnitTest.pas. Для использования пространств имен .NET применяется тот же синтаксис, что и при подключении модулей: пространства имен .NET указываются в списке uses. Порядок поиска имен такой же, как и в Delphi - справа налево в списке uses модуль PABCSystem просматривается последним.

* Main.pas и MyDll.pas. В PascalABC.NET легко создать и использовать dll. Библиотека dll по сути представляет собой модуль, где вместо ключевого слова unit используется слово library. Для подключения dll в другое приложение используется директива компилятора reference.

* CallCS.pas. PascalABC.NET - полноценный .NET-язык, легко сочетать с другими .NET-языках. В данном примере показывается, как в программе на PascalABC.NET вызвать функцию с dll, созданной на C #.

* CallNative.pas. PascalABC.NET позволяет легко вызвать функции из обычных dll.

Стандартные графические библиотеки

* GraphABCTest.pas. Графическая библиотека GraphABC заточена под легкое обучение программированию графики. Она скрывает большинство сложностей программирования графики: сама осуществляет перерисовку графического окна в нужный момент и заботится о синхронизации рисования в нескольких обработчиках. Кроме того, графические примитивы - процедурные, а значит, не надо создавать многочисленные классы, как в NET. И еще можно писать графические команды сразу после begin основной программы, то есть использовать графику в несобитийних приложениях.

* MouseEvents.pas. Для графических приложений можно использовать простые события мыши и клавиатуры, реализованы как глобальные процедурные переменные.

* ABC.pas. Библиотека векторных графических объектов ABCObjects используется нами для раннего обучения школьников основам объектно-ориентированного программирования. Однако, ее вполне можно использовать для написания несложных графических учебно-игровых программ.

классы

* AllFromObject.pas. Все классы - наследники Object, все типы - классы. В каждой переменной можно узнать тип, вызвав метод GetType. Операция typeof для типа возвращает System.Type.

* WriteRecord.pas. Переопределив метод ToString в классе или записи, мы получаем возможность выводить их значение в процедуре writeln

* ClassConstructor.pas. Для статических методов и полей используется ключевое слово class. Статические конструкторы используются для нетривиальной инициализации статических полей.

* PersonInternal.pas. Новый синтаксис конструкторов использует ключевое слово new и наиболее приемлемый. По этой причине все конструкторы, определенные в старом стиле, должны иметь имя Create. Описание методов может проводиться непосредственно внутри классов и записей (как в C ++, C # и Java)

* Records.pas. Методы и конструкторы в записях можно использовать так же, как и в классах. От записей нельзя наследовать и записи нельзя наследовать.

* Boxing.pas. При присвоении размерного типа объекта типа Object происходит упаковка. Для распаковки следует использовать явное приведение типа.

* GarbageCollection.pas. Деструкторы отсутствуют. Автоматическая сборка мусора для возвращения памяти, распределенной объектной переменной, требует, чтобы на эту память никто более не ссылался, прямо или косвенно. Поэтому для освобождения памяти обычно достаточно присвоить объектной переменной nil.

* OperatorOverloading.pas. Как и в C ++ и C #, в PascalABC.NET можно перегружать знаки операций для записей и классов.

* Interf.pas. Интерфейсы семантически совпадают с интерфейсами в C # и Java. Сложная реализация интерфейсов Delphi на основе COM отвергнута.

* Stack.pas. Обобщенные классы (generics) позволяют создавать классы, параметризованные одним или несколькими типами.

* Where.pas. Можно задавать ограничения на типы параметров обобщенных классов. Ограничения бывают трех сортов: наличие у типа-параметра конструктора по умолчанию, наследования его от конкретного класса или реализация интерфейса.

Стандартная библиотека .NET

* DateTime.pas. Данный пример иллюстрирует применение класса DateTime из стандартной библиотеки .NET.

* LinkedList.pas. Данный пример иллюстрирует использование контейнерных классов из стандартной библиотеки .NET.

* WinFormWithButton.pas. Данный пример иллюстрирует создание оконного программы.

Что такое .NET

Платформа Microsoft .NET - это комплекс программ, устанавливается поверх операционной системы и обеспечивает выполнение программ, написанных специально для .NET. .NET-программы компактные, пользуются единым набором типов данных и библиотек. Компания Microsoft активно развивает платформу .NET, выпуская новые версии с расширенными возможностями. На момент начала 2015 г. последней версией является .NET 4.5.

В результате компиляции .NET-программы генерируется не машинный код, а так называемый байт-код, содержащий команды виртуальной машины (в .NET он называется IL-кодом от англ. Intermediate Language - промежуточный язык). Команды байт-кода не зависят от процессора и операционной системы. При запуске программа, которая содержит IL-код, подается на вход виртуальной машины, и производит выполнения программы. Часть виртуальной машины, которая называется JIT-компилятором (Just In Time - непосредственно в данный момент), сразу после запуска .NET-программы переводит ее промежуточный код в машинный (проводя при этом его оптимизацию), после чего запускает программу на выполнение. Если быть точными, то промежуточный код переводится в машинный частями по мере выполнения программы.

Таким образом двойной компиляции сложнее обычного, но имеет ряд преимуществ. Во-первых, JIT-компилятор может определить тип процессора, установленного на данном компьютере, поэтому генерирует максимально эффективный машинный код. Тесты показывают, что за счет этого некоторые программы выполняются даже быстрее обычных. Во-вторых, IL-код - гораздо более высокоуровневый, чем машинный, и содержит ряд объектно-ориентированных команд. В их числе - команда newobj вызова конструктора объекта, команда callvirt вызова виртуального метода объекта и команда throw генерации исключения.

Программа или библиотека для .NET называется сборкой и имеет традиционное расширение - exe или dll. Поскольку в сборниках содержится IL-код, они значительно компактнее обычных программ и библиотек. Так, приложение с главным окном, меню и элементами управления занимает на диске всего несколько десятков килобайт.

Наиболее чистым .NET-языком является C #: он создавался специально для платформы .NET и включает практически все ее возможности. .NET-языки легко взаимодействуют друг с другом не только за счет высокоуровневого промежуточного кода, но и за счет общей системы типов (CTS - Common Type System - общая система типов). Все стандартные типы (срочные, символьные, числовые и логический) имеют одинаковое представление в памяти у всех .NET-языках. Это позволяет, например, создать библиотеку dll на C #, поместить в нее описание класса, а затем воспользоваться этой библиотекой по программе на PascalABC.NET, сконструировав объект данного класса. Можно также разработать библиотеку на PascalABC.NET, а затем подключить ее к проекту в Visual Basic.NET. Отметим, что традиционные библиотеки dll не позволяют хранить классы, доступные извне, и имеют ряд других ограничений.

Важнейшими средствами, предоставленными платформой .NET, есть единственный способ обработки ошибок - генерация и перехват исключений, - а также автоматическое управление освобождением динамической памяти, называемое составлением мусора. Последнее, в частности, означает, что отсутствует необходимость в деструкции классов.

Есть программы, которые могут восстанавливать текст программы по IL-кода (например, программа ILSpy).

Кроме JIT-компилятора, важной частью платформы .NET есть набор стандартных библиотек (FCL - Foundation Class Library - общая библиотека классов). Среди них - библиотеки работы с графикой, сетью, базами данных, XML, контейнерами, потоками, содержащих тысячи классов. Каждый .NET-язык может пользоваться всеми возможностями этих библиотек.

Есть открытая кроссплатформенная реализация среды Microsoft.NET - среда Mono, что позволяет в частности разрабатывать и запускать .NET-приложения под Linux.

Коротко отметим преимущества и недостатки платформы .NET.

Преимущества платформы .NET

* Платформа .NET поддерживает множество .NET-языков. В их числе C #, Visual Basic.NET, F #, управляемый C ++, Delphi Prism, Oberon, Zonnon, Iron Python, Iron Ruby, PascalABC.NET.

* Любой .NET-язык содержит самые современные языковые возможности: классы, свойства, полиморфизм, исключения, перегрузки операций, легкое создание библиотек.

* .NET-языки легко сочетаются друг с другом, похожи друг на друга по синтаксическим конструкциям и системе типов.

* Есть большая библиотека стандартных классов FCL.

* .NET-приложения компактные.

* Платформа .NET активно развивается компанией Microsoft, добавляются как новые языковые возможности, так и новые библиотеки.

* Компилятор .NET-языки создать значительно проще, чем компилятор обычного языка.

Недостатки платформы .NET

* Запуск .NET-приложения выполняется в несколько раз медленнее запуска обычного применения, поскольку требует загрузки в оперативную память компонентов виртуальной машины и внешних библиотек.

* .NET-код в некоторых ситуациях работает медленнее, чем обычно (но, в большинстве задач это отставание незначительно, а в некоторых - приложения .NET могут опережать обычные программы).

* Сборщик мусора начинает работу в момент исчерпания динамической памяти, его работа занимает несколько миллисекунд. Для приложений реального времени это недопустимо.

* Запуск .NET-приложения обязательно требует установки на компьютере платформы .NET. Без нее приложение работать не будет (Отметим, что в Windows Vista и в Windows 7 платформа .NET встроенная).

Отметим, что достоинства платформы .NET многократно перекрывают ее недостатки.

преимущества PascalABC.NET
Современный язык программирования Object Pascal

Язык PascalABC.NET включает в себя практически весь стандартный язык Паскаль, а также большинство языковых расширений языка Delphi. Однако, этих средств недостаточно для современного программирования. Именно поэтому PascalABC.NET расширен рядом конструкций, а его стандартный модуль - рядом подпрограмм, типов и классов, позволяет создавать легко читаются приложения средней сложности.

Кроме этого, речь PascalABC.NET использует большинство средств, предоставляемых платформой .NET: единая система типов, классы, интерфейсы, исключения, делегаты, перегрузки операций, обобщенные типы (generics), методы расширения, лямбда-выражения.

Стандартный модуль PABCSystem, автоматически подключается к любой программе, содержит огромное количество стандартных типов и подпрограмм, позволяющие писать ясные и компактные программы.

В распоряжении PascalABC.NET находятся все средства .NET-библиотек классов, постоянно расширяются самыми современными возможностями. Это позволяет легко писать на PascalABC.NET приложения для работы с сетью, Web, XML-документами, использовать регулярные выражения и многое другое.

Язык PascalABC.NET позволяет программировать в классическом процедурном стиле, в объектно-ориентированном стиле и содержит множество элементов для программирования в функциональном стиле. Выбор стиля или комбинации этих стилей - дело вкуса программиста, а при использовании в обучении - методический подход преподавателя.

Сочетание богатых и современных языковых средств, возможностей выбора различных траекторий обучения позволяет рекомендовать PascalABC.NET с одной стороны как язык для обучения программированию (от школьников до студентов младших и средних курсов), с другой - как язык для создания проектов и библиотек средней сложности.
Простая и мощная среда разработки

Интегрированная среда разработки PascalABC.NET ориентирована на создание проектов малой и средней сложности. Она довольно легкомысленно и в то же время обеспечивает разработчика всеми необходимыми средствами, такими как встроенный отладчик, средства Intellisense (подсказка по точке, подсказка по параметрам, подсказка по имени), переход к определению и реализации подпрограммы, шаблоны кода, автоформатирование кода.

В среду PascalABC.NET встроенный также дизайнер форм, позволяет создавать полноценные оконные приложения в стиле RAD (Rapid Application Development - быстрое создание приложений).

В отличие от многих профессиональных сред, среда разработки PascalABC.NET не имеет громоздкого интерфейса и не создает множество дополнительных вспомогательных файлов на диске при компиляции программы. Для небольших программ это позволяет соблюсти принцип Одна программа - один файл на диске.

В среде PascalABC.NET большое внимание уделено связи запущенной программы с оболочкой: консольная программа, запущенная из-под оболочки, осуществляет ввода-вывода в специальное окно, встроенное в оболочку. Можно также запустить несколько программ одновременно - все они будут контролироваться оболочкой.

Интегрированная среда PascalABC.NET позволяет переключать в настройках русский и английский язык, при этом локализованы не только элементы интерфейса, но и сообщения об ошибках.

Кроме этого, внутренние представления PascalABC.NET позволяют создавать компиляторы других языков программирования и встраивать их в среду разработки с помощью специальных плагинов.

Специализированные модули для обучения

Платформа Microsoft.NET обеспечивает PascalABC.NET стандартной библиотекой, состоящей из огромного количества Классс для решения практически любых задач: от алгоритмических к прикладным. Именно поэтому в PascalABC.NET отсутствует необходимость в разработке широкого круга собственных модулей.

Собственные модули, которые есть в PascalABC.NET, ориентированные именно на начальное обучение программированию.

Для обучения программированию школьников реализованы модули классических школьных исполнителей Робот и Чертежник, содержащие около двухсот автоматически проверяются задач на основные конструкции языка программирования.

Кроме этого, среда PascalABC.NET содержит модуль электронного задачника Programming Taskbook (автор Абрамян М.Э.), что позволяет осуществлять автоматическую постановку и проверку задач. Есть также модули для преподавателя, позволяющие создавать задачи для исполнителей Робот, Чертежник и электронного задачника.

Модуль растровой графики GraphABC и модуль векторной графики объектов ABCObjects могут быть использованы для создания простейших графических. а также интерактивных анимационных программ, управляемых событиями.

Следует также отметить студенческие модули: модуль Collections упрощенных коллекций, модуль Arrays для простых операций с динамическими массивами и модуль Forms для ручного создания простых приложений с оконным пользовательским интерфейсом.
Различия языка PascalABC.NET от Delphi

добавлено

1. Операции + = - = для событий .NET и для процедурных переменных.

2. Операции + = - = * = для целых и + = - = * = / = для вещественных.

3. Операция + = для строк.

4. Подпрограммы с переменным числом параметров.

5. Операция new для вызова конструктора (ident = new type_name (params)).

6. Операция new для создания динамического массива.

7. Операция typeof.

8. Тип sequence of T.

9. Использование uses для подключения пространств имен .NET (реализовано в Delphi Prism).

10. Вид доступа internal (наряду с public, private, protected).

11. Инициализация переменных: var a: integer: = 1;

12. Инициализация переменных: var a = 1;

13. Объявление локальных переменных в блоке.

14. Объявление параметра цикла в заголовке цикла: for var i = 1 to 10 do, foreach var x in a do.

15. Оператор lock, обеспечивающий синхронизацию потоков.

16. Методы в записях.

17. инициализатор полей в классах и записях.

18. Обобщенные классы (generics).

19. Реализован типизированные файлы (в отличие от Delphi Prism, они убраны).

20. Упрощенный синтаксис модулей.

21. Описание методов внутри интерфейса класса или записи.

22. Реализация записи интерфейса.

23. Методы расширения.

24. Лямбда-выражения.

изменено

1. Только сокращена вычисления логических выражений.

2. Другой синтаксис foreach.

3. Интерфейсы interface в стиле .NET.

4. Другой синтаксис перегрузки операций.

5. Статические методы классов вместо классовых методов. Отсутствие типа TClass.

6. Деструкторы оставлены только для совместимости и не выполняют никаких действий.

7. Тип object - синоним System.Object.

8. Тип exception - синоним System.Exception.

9. Индексация string с 1, директива переключения на индексацию с 0.

10. Процедура write выводит любые типы.

11. Структурная эквивалентность типов для процедурных переменных, динамических массивов, типизированных указателей и множеств (в Delphi Object Pascal - именная эквивалентность типов за исключением открытых массивов).

12. Множество на базе произвольных типов (set of string).

13. Запрет использования указателей на управляемую память.

14. Процедурные переменные (делегаты) вместо procedure of object.

15. С бестиповым файлами file можно работать с помощью процедур read, write.

16. Массивы массивов отличаются по типу от двумерных массивов (в частности, записи a [i] [j] и a [i, j] неэквивалентный).

17. Перегрузка выполняется без ключевого слова overload.

18. Все конструкторы имеют имя Create.

19. Автоматическое управление памятью с помощью сборщика мусора (за исключением указателей на неуправляемую память).

отсутствует

1. Ключевые слова и директивы packed threadvar inline asm exports library unsafe resourcestring dispinterface in out absolute dynamic local platform requires abstract export message resident assembler safecall automated far near stdcall cdecl published stored contains implements varargs default deprecated package register dispid pascal writeonly и связанные с ними возможности.

2. Приведение типов для переменных: Char (b) = 'd'.

3. Возможность присвоить адрес подпрограммы указателю pointer.

4. Записи с вариантами.

5. Сроки PChar.

6. Возможность использовать операцию @ для процедурных переменных.

7. Вариантные типы.

8. Бестиповые параметры (var a; const b).

9. Открытые массивы (не путать с динамическими!).

10. Методы, связанные с сообщениями (message).

11. Классовые свойства.

12. Вложенные определения классов.

13. Константы-поля классов.