LINUX.ORG.RU

PascalABC.NET стал свободным ПО

 , ,


2

2

PascalABC.NET — диалект языка Pascal для платформ .NET и Mono, а также компилятор и среда разработки для него. Разрабатывается в Южном Федеральном Университете и используется для обучения программированию. Среда разработки работает только под Windows, но компилятор работает и в GNU/Linux под Mono.

Долгое время проект имел проприетарную лицензию (распространялся при этом бесплатно), но 28 августа 2015 года (одновременно с выпуском версии 3.0) переведён на GNU LGPL.

Особенности (с официального сайта):

  • Ряд расширений языка Pascal, в числе которых оператор foreach, внутриблочные описания переменных, автоопределение типа при описании, встроенные множества произвольных типов, упрощенный синтаксис модулей, методы в записях, операция new для создания объектов, определение тел методов внутри классов, безымянные классы, автоклассы, целые произвольной длины.
  • Самые современные средства языков программирования: обобщенные классы и подпрограммы, интерфейсы, перегрузка операций, λ-выражения, исключения, сборка мусора, n-мерные динамические массивы.
  • Генерация эффективного кода для платформы .NET.
  • Высокая совместимость с Delphi.
  • Высокая скорость выполнения программ.
  • Возможность доступа к огромному количеству .NET-библиотек от контейнерных классов до средств работы с сетью.
  • Среда разработки с встроенным отладчиком, обеспечивающая подсказки по коду, переход к определению и реализации подпрограммы, шаблоны кода, автоформатирование кода.
  • Встроенный в среду разработки дизайнер форм для быстрого создания оконных приложений.
  • Простая и эффективная растровая графическая библиотека.
  • Средства параллельного программирования в виде директив OpenMP.
  • Встроенный электронный задачник Programming Taskbook.
  • Модули исполнителей Робот и Чертежник, используемых в школьной информатике.
  • Механизм проверяемых заданий, обеспечивающий автоматическую постановку и проверку заданий.
  • Наличие Web-среды разработки WDE, позволяющей запустить программу прямо из окна браузера.
  • Возможность опубликовать в интернете ссылку на файл, сохраненный в Web-среде разработки.
  • Возможность запуска консольного компилятора под Mono в современных версиях Linux.
  • Использование многолетнего опыта обучения программированию при создании языка и среды.

Репозиторий на GitHub

>>> Подробности

★★★★

Проверено: fallout4all ()
Последнее исправление: fallout4all (всего исправлений: 10)
Ответ на: комментарий от vurdalak

Я вот ни один язык не могу назвать легче других, в том числе паскаль

Паскаль легче Ады :)

slackwarrior ★★★★★
()

ммм, захотелось написать что-нибудь на Pascal

Aincrad
()
Ответ на: комментарий от mbivanyuk

Главное научить правильно составлять алгоритмы, а язык изучить не так уж и трудно. Было бы замечательно если бы уделяли больше усилий для обучения погромистов форматированию кода, правилам структурного программирования и правильному использованию ООП.

rezedent12 ☆☆☆
()
Ответ на: комментарий от Xenius

FreePascal? Да, неплохой по функциональности язык, но... Монстр. К сожалению, нормально не умеющий Package. Как следствие, загнать классы (а также его rtl) в .so-файл (ну, или в dll на оффтопике) пока малореально. Следствие - огромный размер бинарников, особенно если их надо сделать несколько с близкой функциональностью. Так что невольно возникает желание смотреть в сторону версии 1.0.10, которая была куда меньше, но была куда легче, да и с библиотеками проблем было меньше. Другое дело, что функциональность и средства разработки там оставляют желать лучшего... PABC.NET плох его несовместимостью (исходя из измышлизмов автора, может, даже и логичных, но есть стандарт де-факто) с возможностями FreePascal и Delphi (те же типизированные константы: обычно пишут const i:integer=10; а в PABC.NET - const i:integer:=10), так что адаптировать имеющийся код - та ещё задача. К тому же, ifdefы там хоть и есть, но не на высоком уровне. Что же до сравнения паскаля с си... Кому как. Си - язык для внимательных. Тому, кто подпадает под стереотип «рассеянного учёного» из американских фильмов, лучше к С не подходить, будь он без плюсов, с плюсами или даже с решёткой. И нестрогая типизация - всего лишь цветочки. Как и возможность ставить присваивание вместо сравнения в условный оператор. Ну и до кучи - инкременты внутри выражения (13 или 14?). Ну да, отсутствие модульной структуры позволяет сделать из программы «спагетти» и неправильной последовательностью include превратить рабочий код неизвестно во что, не говоря о скорости компиляции программ (для паскалиста, не сталкивавшегося с C++, компиляция серьёзного проекта в течение получаса - это такая шутка). Но главное - повсеместное использование макросов. Да, макросы - очень мощное средство, позволяющее практически превратить один язык программирования в другой. Но использовать их для констант или мелких процедур - это как забивать гвозди микроскопом. Чуть что не так - и всплывёт это совершенно в неожиданном месте.

FoodChemist
()
Ответ на: комментарий от Virtuos86

P.S.Удивительно, какой срачик развернулся из паскалетреда.

У меня «Показано 0 сообщений из 50», а всё потому что достаточно заигнорить несколько срачегенерирующих школотрона и ЛОР становится на порядок чище... ;)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

У меня похожая картина в хаскеле-тредах, там школоты, объективно говоря, немного, так что не факт, что дело в в них.

Virtuos86 ★★★★★
()
Ответ на: комментарий от buddhist

ещё есть консольный компилятор в Oxford Oberon-2 compiler и соответствующий курс по написанию компиляторов — на ocaml, правда компилирует в какую-то стековую VM, а не в натив.

вот если бы его до LLVM бекенда допилить, было бы весьма годно. например, в духе Literate Programming Emacs org-mode babel — вытащить куски модулей оберон-системы во внешние утилиты (кодогенератор от LLVM, нормальный системный линкер/llc/mc из llvm) вместо компилятора и линкера модулем.

компилятор модулем ещё куда ни шло, а вот в линкере — закат солнца вручную. хотя в Red/Rebol линкер на нём самом написан, и более-менее нормальный а не ужас-ужас.

по блекбоксу есть например интерпретатор оберона на Go — см. гитхаб. там они вытаскивают из .odc из блекбокс-модулей в Graphml AST и строят свой велосипед (стековую машину для интерпретации типа оксфордского, только на GoLang).

в общем-то биндинги LLVM-Go есть, так что можно допилить вот эту поделку до LLVM кодогенератора не очень сложно.

внезапно, история из 90-х: проект Кронос и публикации — про перенацеливаемый компилятор с поддержкой SSA и Mithril.

первый было бы не сложно допилить до LLVM (если бы где-то вдруг появились его исходники), а Mithril — это такое переосмысление Lilith / Кронос на Modula-2 и Ceres/Mithril на Oberon-2.

там фактически свой типа unix + emacs пишут, только модульный и компонентный.

озвучена идея: модульные асинхронные расширяемые системы (проект МАРС) многоязыковые (Modula-2/Oberon-2/Си через транслятор). туда логично напрашивается далее какой-то лисп, те же ocaml, GoLang.

то есть, чтобы модули для оберон-системы писать не на обероне. типа как #lang XXX в ракетке.

ещё компилятор Oberon07 более-менее норм консольный. самодостаточный. ну или через си транслятор. ещё какой-то ProjectOberon2015 где-то был.

anonymous
()
Ответ на: комментарий от be_nt_all

ну технически даже блекбокс по сравнению с 7.7 неплохо выглядит. а в 2CGPL была возможность описать язык на нём самом, как метаязык: то есть, задаём объект ТаблицаSQL на котором пишем справочник, документы, регистры и т.п.

хотя в модульном блекбоксе было всё то же более расширяемо. и например, командеры с интеракторами и автогенерация форм по исходнику, экспортированным переменным модуля — чумовая фишка.

технически, имхо странно что нет аналога 7.7 на блекбоксе. и если публикации почитать, то таки есть — статья, например вот эта

А вот дальше основная сложность — организационные проблемы.

вот это да. было какое-то ооо «метатехнологии» но и оно на другие языки переквалифицировалось.

более-менее грамотно устроено у того же «инфопредприятия» (они предлагают 70% партнёрской/дилерской скидки, а не 50% как у одинэсников, или свои поделки через их сеть продавать).

в общем, настоящих буйных оберонщиков мало, увы ... :(( хотя технически это вполне возможно

anonymous
()
Ответ на: комментарий от anonymous

у оксфордского компилятора ссылка + курсы есть лольный текстовый редактор, Ewoks вместо Emacs :)))

вот как-то так нужно правильный емакс писать, на обероне :)) см. статейки про Mithril с проекта Кронос

88-90 год, Карл! SSA форма! перенацеливаемый конпелятор, Карл!

... ну и где оно (раз два) всё... :(((

anonymous
()
Ответ на: комментарий от buddhist

ещё есть консольный Ronin (рядом с каким-то самопальным Go компилятором).

оно на .NET.

по слухам, пытаются прикрутить к GPCP LLVM/GCC бекенд.

а так, есть Oberon07 компилятор, и OPLC/Ofront/XDEV+... / XDS + ... через Си трансляцию.

anonymous
()
Ответ на: комментарий от Xenius

Mono идёт на всяких BSD например?

Mono на FreeBSD идёт абсолютно точно. Собирал как-то на ней OpenSim, который на Mono писан.

А задачник - это что?

hobbit ★★★★★
()
Ответ на: комментарий от hobbit

А задачник - это что?

Не знаю, кажется в сабже есть такое приложение с задачами на программирование. Посмотри на официальном сайте.

Xenius ★★★★★
()
Ответ на: комментарий от anonymous

в общем, настоящих буйных оберонщиков мало, увы ... :(( хотя технически это вполне возможно

Не знаю, насколько я буйный, и насколько оберонщик, но против последнего ничего не имею… ЧёрныйЯщик неплохая платформа для создания платформы… По нынешним временам — лёгкая-лёгкая. Лицензия у него BSD, то есть конечный результат может быть лицензирован довольно производно, от двойной: строгая GPL (а то и AGPL если web-морда появится) + коммерческая проприетарная, до полупроприетарной в духе украинской DebetPlus, с относительной свободой выпуска производных продуктов-конфигураций. Когда крутился в околобухгалтерских делах, меня от начала работы над этим остановило отсутствие linux-версии, сейчас BBCB уже худо-бедно как графическое RAD поверх GTK идёт… Попробовать, что-ли вернуться к этой идее…

be_nt_all ★★
()
Ответ на: комментарий от be_nt_all

от двойной: строгая GPL (а то и AGPL если web-морда появится) + коммерческая проприетарная

ну или как вариант (по своему, зверский), оставить в качестве свободной что-то вроде CC-BY-SA-NC… Оставив возможность свободного коммерческого использования активным контрибьютерам…

be_nt_all ★★
()
Ответ на: комментарий от Vudod

Зачем обучать программированию на древнем и никому не нужном Паскале, если есть для этого более подходящие языки - Питон, например? В американских вузах он давно используется в качестве первого языка программирования.

Den_Zurin
()

Вспомнилось...

Есть такая порода людей, которая считает, что каждый, кто на что-то претендует, просто обязан хлебнуть говна. Например, «настоящий мужчина» обязан сходить в армию или отсидеть в тюрьме, ведь что тюрьма, что армия - школа жизни; «настоящий программист» обязан писать на крестах, ПХП или тому подобном, ведь сами они на нём писали, а кто не хапнул этого говна, тот и не программист вовсе. С одной стороны понять их можно - механизм примерно такой же как у дедовщины в уже упомянутой армии или прописки на малолетке («меня опускали, теперь я буду опускать» - ну просто обучение и сделование паттерну, через пиздюли навязанному авторитетом, детская психика так устроена), с другой - сами они со временем так нихуя и не понимают, и любые попытки объяснить им, что все эти боль и унижения, через которые они прошли, в общем-то лишние, встречают у них агрессию и отрицание.

Den_Zurin
()
Ответ на: комментарий от Den_Zurin

fix

Зачем обучать программированию на древнем и никому не нужном Паскале, если есть для этого более подходящие языки - Scheme, например? В американских вузах он давно используется в качестве первого языка программирования.

ados ★★★★★
()
Ответ на: комментарий от Den_Zurin

Зачем обучать программированию на древнем и никому не нужном Паскале, если есть для этого более подходящие языки - Питон, например?

Динамика конечно может немного облегчить обучение программированию, и в варианте Питона (не ПыхПых, однако) там даже не так много подводных камней, но концепции статической типизации это то, с чем как минимум стоит познакомиться.

be_nt_all ★★
()
Ответ на: fix от ados

Ничего не имею против Scheme, хороший и полезный язык. Можно и в качестве первого языка использовать, как сделали авторы SICP.

Den_Zurin
()
Ответ на: комментарий от be_nt_all

Ознакомиться можно, если, конечно, это не параша типа крестов, а нормальный язык типа Haskell, Scala, ну или хотя бы Java/C#. Начинать же обучение с такого языка - глупо.

Den_Zurin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.