PascalABC.NET
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
История развития
В 2005—2006 система была полностью переработана: изменён язык реализации — на C#, и изменена её архитектура — на полноценный компилятор языка Object Pascal с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась стабильная версия 1.2 (1.2.0.325) PascalABC.NET.
Консольный компилятор PascalABC.NET функционирует на Linux и MacOS под Mono, однако среда разработки не является кроссплатформенной.
В 2007—2008 годах был зафиксирован интерес к системе 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.NET»
- Описание языка PascalABC.NET
- Электронный задачник по программированию Programming Taskbook
- RVGames.de (рус.) — Цифровая книга "Занимательные уроки с паскалем, или PascalABC.NET для начинающих"
- статья PascalABC.NET в Прогопедии — энциклопедии языков программирования (рус.)
- PascalABC на сайте Воскресной компьютерной школы
Литература
- Михалкович С.С. Учебная система программирования 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.
- Рубанцев Валерий. Занимательные уроки с паскалем, или PascalABC.NET для начинающих. — Я + R, 2012. — 698 с.