PascalABC.NET

PascalABC.NET - система програмування. Мова системи - це реалізація Object Pascal для платформи Microsoft.NET, який містить всі основні елементи сучасних мов програмування: модулі, класи, перевантаження операторів, інтерфейси, виключення, узагальнені класи, збірку сміття, а також деякі засоби паралельного програмування. [1]

Основне призначення системи програмування PascalABC.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], а також визнавалася найпопулярнішою програмою в категорії програмування в 2005 [4] та 2007 [5].

Система Pascal ABC з вересня 2007 не розвивається і не підтримується, проте її сторінка [2] продовжує функціонувати і з цієї сторінки можна завантажити Pascal ABC версії 3.0.1.


PascalABC.NET

Images.png Зовнішні зображення
Image-silk.png Зовнішній вигляд програми.

2.1. Історія розвитку

В 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 з Болгарії та інших країн.

У вересні 2009 р. з'явилася веб-середа розробки [6], що дозволяє запускати програми на PascalABC.NET безпосередньо з вікна браузера. Для зареєстрованих користувачів доступний особистий файловий архів програм з можливістю навігації. У серпні 2010 р. в WDE з'явилася можливість створювати прості графічні додатки [7].

У серпні 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 з дизайнером форм.


2.2. Особливості мови

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

2.3. Стандартні модулі

Оскільки в PascalABC.NET можна користуватися всіма бібліотеками платформи. NET, то стандартні модулі орієнтовані виключно на навчання:

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

2.4. Приклади програм

2.4.1. Приклад 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  . 

3. Ліцензія

Pascal ABC і PascalABC.NET всіх версій є безкоштовним (freeware) програмним забезпеченням.

Примітки