PascalABC.NET
| Семантика: | |
|---|---|
| Класс языка: |
мультипарадигменный: структурное, объектно-ориентированное, обобщённое, процедурное программирование, функциональное программирование |
| Тип исполнения: | |
| Появился в: |
2002 |
| Автор: |
С. С. Михалкович, И. В. Бондарев, А. В. Ткачук, С. О. Иванов |
| Выпуск: |
2.2, сборка 790 (10.09.2014) |
| Система типов: | |
| Основные реализации: |
PascalABC.NET |
| Испытал влияние: | |
| Лицензия: | |
| Сайт: |
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм. Кроме того, консольный компилятор PascalABC.NET функционирует на Linux и MacOS под Mono.
Содержание
- 1 История развития
- 2 Особенности языка
- 3 Стандартные модули
- 4 Примеры программ
- 4.1 Пример 1. Использование методов расширения для программирования в функциональном стиле
- 4.2 Пример 2. 100!
- 4.3 Пример 3. Вывод всех чисел Фибоначчи, меньших 1000
- 4.4 Пример 4. Частотный словарь слов в файле
- 4.5 Пример 4а. Частотный словарь слов в файле. Решение в функциональном стиле
- 4.6 Пример 5. Параллельное умножение матриц с использованием директив OpenMP
- 5 Лицензия
- 6 Примечания
- 7 Ссылки
- 8 Литература
История развития[править | править вики-текст]
В 2003 году на факультете математики, механики и компьютерных наук ЮФУ была создана учебная среда программирования Pascal ABC. Система представляла собой интегрированную оболочку со встроенным интерпретатором языка программирования Паскаль, близкого к языку Delphi. Несмотря на неполную реализацию языка, она стала удачной заменой устаревшей системе Turbo Pascal в первоначальном обучении программированию. Как учебную систему её использовали во многих регионах СНГ. В каталоге Soft@Mail.ru программа Pascal ABC в 2006 году признавалась программой недели[1].
| Внешний вид программы. | |
В 2005—2006 годах система была полностью переработана: изменена её архитектура — на полноценный компилятор языка, близкого к Delphi, с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET. В июне 2009 года появилась первая стабильная версия PascalABC.NET 1.2.
В сентябре 2009 г. появилась веб-среда разработки[2] WDE, не требующая установки PascalABC.NET на локальный компьютер и позволяющая запускать программы на PascalABC.NET непосредственно из окна браузера. Ключевой особенностью WDE является то, что программа запускается на сервере, а на клиентский компьютер в интерактивном режиме передаются лишь данные ввода-вывода. Для зарегистрированных пользователей доступен личный файловый архив программ с возможностью навигации, а также с возможностью предоставлять другим пользователям доступ к опубликованным программам на чтение в стиле Google Docs. В августе 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 с дизайнером форм.
15 мая 2013 г. вышла версия 2.1 с английской локализацией интерфейса и сообщений об ошибках.
15 февраля 2014 г. вышла версия PascalABC.NET 2.2. Многократно ускорено обращение к символам строки на запись
Особенности языка[править | править вики-текст]
Расширения языка Паскаль[править | править вики-текст]
- Операторы
+= -= *= /= - Внутриблочные описания переменных
- Описание переменных в заголовке цикла
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) программным обеспечением, распространяемым под собственной проприетарной лицензией.
Примечания[править | править вики-текст]
Ссылки[править | править вики-текст]
- Сайт проекта «Система программирования PascalABC.NET»
- Описание языка PascalABC.NET
- Электронный задачник по программированию Programming Taskbook
- RVGames.de (рус.) — Цифровая книга «Занимательные уроки с паскалем, или PascalABC.NET для начинающих»
- статья PascalABC.NET в Прогопедии — энциклопедии языков программирования (рус.)
Литература[править | править вики-текст]
- Михалкович С.С. Учебная система программирования 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.
- Абрамян М.Э., Белякова Ю.В., Михалкович С.С. Использование веб-среды PascalABC.NET для дистанционного обучения программированию // Журнал «Дистанционное и виртуальное обучение». — 2012. — Т. 3. — С. 14—24.
- Рубанцев Валерий Занимательные уроки с паскалем, или PascalABC.NET для начинающих. — Я + R, 2012. — 698 с.
| IDE (сравнение) | |
|---|---|
| Универсальные |
Anjuta • Visual Studio • NetBeans • Eclipse • KDevelop • Xcode • Geany • MonoDevelop • Aptana Studio • Open Watcom • Komodo • Kylix |
| Си/C++ | |
| Бейсик |
PowerBASIC • Turbo Basic • Visual Basic • QBasic • QuickBASIC • PureBasic |
| Java |
WebLogic • BlueJ • DrJava • Greenfoot • JCreator • JDeveloper • IntelliJ IDEA • JBuilder • JGRASP |
| Паскаль |
Delphi • Lazarus • MSE • PascalABC.NET • MIDletPascal • PocketStudio • Morfik • Turbo Pascal • QuickPascal • Visible Pascal |
| PHP |
Aptana Studio with PHP plugin • Delphi for PHP (RadPHP) • Eclipse PDT • Zend Studio • NuSphere PhpED • PHP Expert Editor • phpStorm • Dreamweaver |
| Python |
Boa Constructor • Eclipse+PyDev • Eric • IDLE • Komodo • PyCharm • PyScripter • SPE • Wing IDE |
| ActionScript | |
| Ruby | |