PascalABC.NET: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Строка 76: Строка 76:
* Поддержка неуправляемого кода через '''external'''
* Поддержка неуправляемого кода через '''external'''


=== Стандартные модули ===
== Стандартные модули ==
Поскольку в PascalABC.NET можно пользоваться всеми библиотеками платформы [[.NET Framework|.NET]], то стандартные модули немногочисленны и ориентированы на обучение:
Поскольку в PascalABC.NET можно пользоваться всеми библиотеками платформы [[.NET Framework|.NET]], то стандартные модули немногочисленны и ориентированы на обучение:
* Модуль растровой графики GraphABC
* Модуль растровой графики GraphABC

Версия от 12:58, 8 мая 2014

PascalABC
Семантика императивная
Класс языка мультипарадигменный: структурное, объектно-ориентированное, обобщённое, процедурное программирование, функциональное программирование
Тип исполнения компилятор
Появился в 2002
Автор С. С. Михалкович, А. В. Ткачук, И. В. Бондарев, С. О. Иванов
Расширение файлов .pas
Выпуск 2.2 сборка 751 (14.04.2014)
Система типов статическая
Основные реализации PascalABC.NET
Испытал влияние Паскаль, Delphi, C#
Лицензия freeware
Сайт pascalabc.net
Логотип Викисклада Медиафайлы на Викискладе

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

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

История развития

В 2003 году на факультете математики, механики и компьютерных наук ЮФУ была создана учебная среда программирования Pascal ABC. Система представляла из себя интегрированную оболочку со встроенным интерпретатором языка программирования Паскаль, близкого к языку Delphi. Несмотря на неполную реализацию языка, система стала удачной заменой устаревшей системе Turbo Pascal в первоначальном обучении программированию. Как учебную систему её использовали во многих регионах СНГ. В каталоге Soft@Mail.ru программа Pascal ABC в 2006 году признавалась программой недели[1].

В 20052006 годах система была полностью переработана: изменён язык реализации — на C#, и изменена её архитектура — на полноценный компилятор языка Delphi с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась стабильная версия 1.2 (1.2.0.325) PascalABC.NET.

Внешние изображения
Внешний вид программы.

Консольный компилятор PascalABC.NET функционирует на Linux и MacOS под Mono.

В 20072008 годах был зафиксирован интерес к системе PascalABC.NET из Болгарии [источник не указан 4416 дней] и других стран.

В сентябре 2009 г. появилась веб-среда разработки[2], позволяющая запускать программы на PascalABC.NET непосредственно из окна браузера. Для зарегистрированных пользователей доступен личный файловый архив программ с возможностью навигации. В августе 2010 г. в WDE появилась возможность создавать простые графические приложения[3].

В августе 2011 г. осуществлен переход на .NET 4.0 (версия 1.8). В январе 2012 г. веб-среда разработки WDE также была переведена на .NET 4.0.

С мая 2012 г. в веб-среду разработки добавлена поддержка компиляторов C#, VB.NET, Iron Python и F#, в связи с чем она была переименована в ProgrammingABC.NET WDE.

В феврале 2013 г. вышла версия PascalABC.NET 2.0 с дизайнером форм.

Особенности языка

  • Операторы += -= *= /=
  • Внутриблочные описания переменных
  • Описание переменных в заголовке цикла for
  • Инициализация переменной при присваивании (var n: integer := 10;)
  • Автоопределение типа переменной при инициализации (var x := 1;)
  • Цикл foreach
  • Подпрограммы с переменным числом параметров
  • Множества set на базе произвольных типов (set of integer)
  • Методы в записях
  • Наряду со стандартным, упрощённый синтаксис модулей
  • Структурная эквивалентность типов для динамических массивов, указателей, множеств и процедурных типов
  • Двумерные динамические массивы
  • Все типы — классы
  • Инициализаторы полей классов и записей
  • Операция new для вызова конструктора
  • Возможность определять методы как внутри, так и вне интерфейса класса
  • Перегрузка операций
  • Интерфейсы в стиле .NET
  • Подключение пространств имен .NET в разделе uses
  • Обобщённые классы, интерфейсы, подпрограммы и процедурные переменные
  • Статические конструкторы
  • Автоматическая сборка мусора для объектов
  • Атрибуты
  • Методы расширения
  • Лямбда-функции
  • Поддержка директив OpenMP
  • Поддержка неуправляемого кода через external

Стандартные модули

Поскольку в PascalABC.NET можно пользоваться всеми библиотеками платформы .NET, то стандартные модули немногочисленны и ориентированы на обучение:

  • Модуль растровой графики GraphABC
  • Модуль векторной графики ABCObjects
  • Модуль Arrays для ввода-вывода-заполнения одномерных и двумерных динамических массивов
  • Модуль Collections, содержащий упрощенные классы коллекций
  • Модули исполнителей Робот и Чертёжник (школьная информатика)

Примеры программ

Пример 1. Использование методов расширения для программирования в функциональном стиле

var a: array of integer := (1,3,5,7,9,11,13,15,17,19);

begin
  a.Println;
  // Поменять местами первую и вторую половины массива с четным количеством элементов
  Assert(a.Length mod 2 = 0);
  var n := a.Length div 2;
  a.Skip(n).Concat(a.Take(n)).Println; 
end.

Пример 2. 100!

begin
  var p: BigInteger := 1;
  for var i:=1 to 100 do
    p := p * i;
  write(p);
end.

Пример 3. Параллельное умножение матриц с использованием директив OpenMP

uses Arrays;
 
procedure Mult(a,b,c: array [,] of real; n: integer);
begin
  {$omp parallel for}
  for var i:=0 to n-1 do
    for var j:=0 to n-1 do
    begin  
       var cc := 0.0;
       for var l:=0 to n-1 do
          cc += a[i,l]*b[l,j];
       c[i,j] := cc;   
    end;
end;
 
const n = 1000;
 
begin
  var a := Arrays.CreateRandomRealMatrix(n,n,1,1.1);
  var b := Arrays.CreateRandomRealMatrix(n,n,1,1.1);
  var c := new real[n,n];
  var d := Milliseconds;
  Mult(a,b,c,n);
  writeln((Milliseconds-d)/1000);
end.

Лицензия

Pascal ABC и PascalABC.NET является бесплатным (freeware) программным обеспечением, распространяемым под собственной проприетарной лицензией.

Примечания

Ссылки

Литература

  • Михалкович С.С. Учебная система программирования PascalABC // Научно-методическая конференция «Современные информационные технологии в образовании: Южный Федеральный округ» 13—14 мая 2004 / Крукиер Л.А., Муратова Г.В.. — Ростов-на-Дону: ЮГИНФО РГУ, 2004. — С. 156—158. — 252 с. — 200 экз.
  • Михалкович С.С. Учебная система программирования PascalABC: опыт разработки и использования // Вторая международная научно-практическая конференция «Современные информационные технологии и ИТ-образование»: Сборник трудов. — М., 2006. — С. 394—399.
  • Водолазов Н.Н., Михалкович С.С., Ткачук А.В. Опыт разработки учебного языка программирования для платформы .NET // Научно-методическая конференция «Современные информационные технологии в образовании: Южный Федеральный округ» 26—29 апреля 2007 / Крукиер Л.А., Муратова Г.В.. — Ростов-на-Дону: Изд-во «ЦВВР», 2007. — С. 71—73. — 312 с. — 250 экз. — ISBN 978-5-94153-146-2.
  • Абрамян М.Э., Михалкович С.С. Основы программирования на языке Паскаль: Скалярные типы данных, управляющие операторы, процедуры и функции. — Ростов-на-Дону: ООО «ЦВВР», 2004. — 198 с. — ISBN 5-94153-075-7.
  • Абрамян М.Э. Практикум по программированию на языке Паскаль: Массивы, строки, файлы, рекурсия, указатели. — Ростов-на-Дону: ООО «ЦВВР», 2004. — 187 с. — ISBN 5-94153-001-3.