PascalABC.NET

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Miks2012 (обсуждение | вклад) в 20:57, 1 февраля 2014. Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску
PascalABC
Семантика императивная
Класс языка мультипарадигменный: структурное, объектно-ориентированное, обобщённое, процедурное программирование, функциональное программирование
Тип исполнения компилятор
Появился в 2002
Автор С. С. Михалкович, А. В. Ткачук, И. В. Бондарев, С. О. Иванов
Расширение файлов .pas
Выпуск 2.1 сборка 623 (25.09.2013)
Система типов статическая
Основные реализации PascalABC.NET
Испытал влияние Паскаль, Delphi, C#
Лицензия freeware
Сайт http://www.pascalabc.net
Логотип Викисклада Медиафайлы на Викискладе

PascalABC.NET — система программирования. Язык системы близок к языку программирования Delphi, основан на платформе Microsoft.NET и содержит все основные элементы современных языков программирования: модули, классы, перегрузку операторов, интерфейсы, исключения, обобщенные классы, сборку мусора, а также некоторые средства параллельного программирования.[1]

Предыстория. Pascal ABC

Система создавалась на факультете математики, механики и компьютерных наук ЮФУ как учебная среда программирования (автор — доцент С. С. Михалкович).

Система представляла из себя фактически интерпретатор языка программирования Паскаль с интегрированной оболочкой. Язык, в основном, соответствовал входному языку Object Pascal. Некоторые возможности, например, записи с вариантами, опускались «как бесполезные». Система Pascal ABC разрабатывалась в среде Delphi для операционных систем, использующих Win32 API.

Несмотря на неполную реализацию языка, система стала удачной заменой уже давно устаревшей системе Turbo Pascal в первоначальном обучении программированию. Уже с версии 2 Pascal ABC стал надёжной средой программирования для начинающих, имеющей практически полную реализацию Object Pascal. Система широко использовалась на мехмате ЮФУ как для обучения студентов, так и в работе Детской компьютерной школы мехмата ЮФУ[2]. Её использование также отмечалось в ряде средних школ Ростова-на-Дону. Благодаря созданию сайта системы Pascal ABC её использование существенно расширилось, система стала известна за пределами Ростова-на-Дону, как учебную систему её использовали во многих регионах СНГ. В каталоге Soft@Mail.ru программа Pascal ABC в 2006 году признавалась программой недели[3].

Система Pascal ABC с сентября 2007 года не развивается и не поддерживается, однако её страница[2] продолжает функционировать и с этой страницы можно загрузить Pascal ABC версии 3.0.1.

PascalABC.NET

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

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

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

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

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

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

В августе 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, содержащий упрощенные классы коллекций
  • Модуль MPI - обертка над MPI-функциями
  • Модули исполнителей Робот и Чертёжник (школьная информатика)

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

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

uses Arrays;

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

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

Пример 2. 100!

uses System.Numerics;

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.