PascalABC.NET — це мова програмування Pascal нового покоління, що включає класичний Pascal, більшість можливостей мови Delphi, а також ряд власних розширень. Він реалізований на платформі Microsoft.NET і містить всі сучасні мовні засоби: класи, перевантаження операцій, інтерфейси, обробку винятків, узагальнені класи та підпрограми, збірку сміття, лямбда-вирази, засоби паралельного програмування.
PascalABC.NET — це також проста і потужна інтегроване середовище розробки, що підтримує технологію IntelliSense, що містить засоби автоформатування, вбудований відладчик і вбудований дизайнер форм. Крім того, консольний компілятор PascalABC.NET функціонує на Linux і MacOS під Mono.
Історія розвитку У 2003 році на факультеті математики, механіки та комп'ютерних наук ПФУ було створене навчальне середовище програмування Pascal ABC. Система є інтегрованою оболонкою з вбудованим інтерпретатором мови програмування Pascal, близької до мови Delphi. Попри неповну реалізацію мови, вона стала вдалою заміною застарілій системі Turbo Pascal в первісному навчанні програмування. Як навчальну систему її використовували в багатьох регіонах СНД.
У каталозі [email protected] програма Pascal ABC в 2006 році визнана програмою тижня.
У 2005—2006 роках система була повністю перероблена: змінена її архітектура — на повноцінний компілятор мови, близької до Delphi, з розширеннями, пов'язаними з платформою .NET. Нова система отримала назву PascalABC.NET.
У червні 2009 з'явилася перша стабільна версія PascalABC.NET 1.2.
У вересні 2009 з'явилося вебсередовище розробки WDE, що не вимагає установки PascalABC.NET на локальний комп'ютер і дозволяє запускати програми на PascalABC.NET безпосередньо з вікна браузера. Ключовою особливістю WDE є те, що програма запускається на сервері, а на клієнтський комп'ютер в інтерактивному режимі передаються лише дані вводу-виводу.
У серпні 2010 у WDE з'явилася можливість створювати прості графічні додатки. Вебсередовище розробки було закрите в жовтні 2017 року.
У серпні 2011 здійснено перехід на .NET 4.0 у версії 1.8.
У січні 2012 вебсередовище розробки WDE також була переведена на .NET 4.0 .
З травня 2012 у вебсередовище розробки додана підтримка компіляторів C# , VB.NET, IronPython і F#, у зв'язку з чим вона була перейменована в ProgrammingABC.NET WDE.
У лютому 2013 вийшла версія PascalABC.NET 2.0 з дизайнером форм.
15 травня 2013 вийшла версія 2.1 з англійської локалізацією інтерфейсу і повідомлень про помилки.
15 лютого 2014 вийшла версія PascalABC.NET 2.2. Багаторазово прискорено звернення до символів рядка на запис.
28 серпня 2015 вийшла версія PascalABC.NET 3.0. PascalABC.NET став вільним і поширюється під ліцензією LGPLv3.
12 лютого 2016 вийшла версія PascalABC.NET 3.1. З'явилися кортежі і зрізи, значно оновлена стандартна бібліотека.
29 серпня 2016 вийшла версія PascalABC.NET 3.2. З'явилися оператори yield і yield sequence, оновлена стандартна бібліотека.
30 серпня 2017 вийшла версія PascalABC.NET 3.3. З'явилися стандартні модулі GraphWPF і Graph3D, оновлена стандартна бібліотека.
Особливості мови
Розширення мови Паскаль Оператори += -= *= /= Внутрішньоблокова декларація змінних Декларація змінних в заголовку циклу for Ініціалізація змінної при присвоєнні: VAR N: integer: = 10; Автовизначення типу змінної при ініціалізації: VAR X: = 1; Цикл foreach Підпрограми зі змінним числом параметрів Множини set на базі довільних типів Set Of Integer Методи в записах Можливість визначати методи як всередині, так і поза інтерфейсу класу або записи Поряд зі стандартним, спрощений синтаксис модулів Операція new для виклику конструктора класу Ініціалізатор полів класів та записів Перевантаження операторів Статичні конструктори Підтримка директив OpenMP
Особливості мови, пов'язані з платформою .NET Всі типи — класи Стандартний тип BigInteger Двовимірні динамічні масиви Інтерфейси .NET Підключення просторів імен .NET в розділі uses Узагальнені класи, інтерфейси, підпрограми та процедурні змінні Автоматична збірка сміття для об'єктів Атрибути Методи розширення Лямбда-функції(Анонімна функція) Автоклас Безіменні класи Підтримка некерованого коду через external
Стандартні модулі Оскільки в PascalABC.NET можна користуватися всіма бібліотеками платформи .NET, то стандартні модулі нечисленні і орієнтовані на навчання: Модуль растрової графіки GraphABC Модуль векторної графіки ABCObjects Модуль FormsABC для створення простих віконних додатків без дизайнера форм Модуль 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. Виведення всіх чисел Фібоначчі, менших 1000 begin SeqWhile(1,1,(x,y)->x+y,x->x<1000).Print end.
Приклад 4. Частотний словник слів у файлі begin var d := new Dictionary<string,integer>; foreach var s in ReadLines('words.txt') do foreach var word in s.ToWords do d[word] := d.Get(word) + 1; d.Print(NewLine); end.
Приклад 4а. Частотний словник слів у файлі. Рішення у функціональному стилі begin ReadLines('words.txt').SelectMany(s->s.ToWords()).GroupBy(v->v).ToDictionary(x->x.Key,x->x.Count()).Print(NewLine); end.
Приклад 5. Паралельне множення матриць з використанням директив 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.
Ліцензія PascalABC.NET є безкоштовним (freeware) програмним забезпеченням, поширюваним під власною пропрієтарною ліцензією.
Див. також Object Pascal C#
Посилання Сайт проекта «Система программирования PascalABC.NET» Описание языка PascalABC.NET Электронный задачник по программированию Programming Taskbook Форум PascalABC.NET Стаття PascalABC.NET в Прогопедії — енциклопедії мов програмування
Примітки