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)
Ответ на: комментарий от Wizard_

Типизацию лучше изучать отдельно, с использованием более подходящего инструмента. Например, Си. Там как раз и арифметика указателей будет в тему.

Си ни разу не строго типизированный язык. Изучать типизацию на его примере как раз строго не рекомендуется. Потому что он не различает массив и указатель на него, не различает символы и их коды, логические и числовые типы, указатели и целые.

Арифметика указателей вообще зло и наследие времён, «когда компьютеры были большими». Нет ни в одном современном языке арифметики указателей. Есть срезы и сечения массивов с отключаемою проверкою выхода за пределы диапазона.

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

C? Типизация? Упоролся шоле? Он в плане типизации на уровне JS/PHP, если не хуже.

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

Любой из современных популярных языков программирования калечит детей, если они начинают изучение программизма с него. JS или жабка не хуже пыха с этой задачей справится.

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

Молодец. Но в таком случае, ты редкое исключение. Процент программистов ничтожно мал, как не печально.

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

Арифметика указателей вообще зло и наследие времён, «когда компьютеры были большими»

OMG. Ничего что в системном программировании (для которого создавался си, есличо) без этого никуда?

Другое дело, что в си она вылезает даже там где не нужна.

Нет ни в одном современном языке арифметики указателей

C#, Rust.

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

Умеет для классов(generics).

И специализации? И шаблоны для шаблонов для шаблонов?

Ни один язык не использует шаблоны кода(templates) в таком же виде как в C++, потому что невозможно реализовать нормальную систему сообщения об ошибках в коде с шаблонами.

А как обобщённые алгоритмы без них писать прикажете?

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

Ни один язык не использует шаблоны кода(templates) в таком же виде как в C++, потому что невозможно реализовать нормальную систему сообщения об ошибках в коде с шаблонами.

Чего-чего? :-) Что есть «нормальная система сообщения об ошибках»? И почему её «невозможно реализовать» на шаблонах C++? :-)

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

Умеет для классов(generics).

И специализации?

Если какой-то класс сильно отличается от других, то зачем вообще его оформлять как шаблон? Ради самих шаблонов просто потому что они есть?

И шаблоны для шаблонов для шаблонов?

Это обфускация кода.

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

Если какой-то класс сильно отличается от других, то зачем вообще его оформлять как шаблон?

Иди в гугол, просвещайся. Класс у него отличается.

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

Если это школьник на уроке программирования то бейсик проще, понятнее и популярнее

У Бейсика в этом смысле вообще нет конкурентов, таки да, лучше учить на Бейсике. Было бы, если бы простой и понятный Бейсик не был настолько архаичен, а его современные потомки уже не проще и не понятнее. Так что Паскаль.

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

Иди в гугол, просвещайся. Класс у него отличается.

Ты из тех поцев про которых писал Торвальдс? Много явных специализаций шаблонов написал?

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

Ты из тех поцев про которых писал Торвальдс?

Носишь цитатник Торвальдса за пазухой? Я нет, так что конкретизируй.

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

Учат не языку, учат программированию. Если человек этого не понял, он не программист.

Первый язык, который я изучал был Pascal, никогда его не использовал, после паскаля учил C, а потом C++ и вот эти языки использую постоянно. Так вот обобщая полученный опыт, лучше сразу начинать с C++, потому что именно его будешь использовать для работы. Переучивание способов записи алгоритмов с паскаля на си никак не улучшает понимание, паскаль в данном случае оказался просто бессмысленным звеном в цепочке изучения программирования, которое без всякого ущерба для процесса можно легко исключить.

«Программист на языке N» - это оксюморон.

Однако в вакансиях на сайтах поиска работы указаны вполне конкретные языки, потому как именно они будут использоваться, и скилл именно на этих языках важен для работодателя.

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

скилл именно на этих языках важен для работодателя

А теперь расскажи, сколько раз ты собеседовался, и какой процент вопросов в среднем был по языку.

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

таких учителей начальных классов не хватает нашим школам

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

если это с++, то как правило большая часть вопросов - на знание языка и умение его использовать

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

лучше сразу начинать с C++

Да, а читать надо учиться на книгах Достоевского и Пруста.

Переучивание способов записи алгоритмов с паскаля на си никак не улучшает понимание

Что именно тебе пришлось переучивать, что это заняло ощутимое время? Алгоритмы на паскале и си совершенно одинаковы.

И да, знакомство с разными языками очень помогает пониманию.

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

Достоевского и Пруста

Хотя C++ естественнее сравнить с Сиратори :D

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

Так вот обобщая полученный опыт, лучше сразу начинать с C++, потому что именно его будешь использовать для работы.

Ага, а изучение механики с уравнений Лагранжа, ведь в практических задачах используют именно их.

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

Ты случайно не тот чел с опеннета, что везде пишет про «выпускников технических университетов-пту», по крайней мере очень похож по стилю, тот тоже постоянно распинался про некую мифическую невероятную сложность C++, агитируя писать на Python.

anonymous
()

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

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

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

Вообще-то MIT переходит со Scheme на Python, а не с Java :-)

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

Если какой-то класс сильно отличается от других, то зачем вообще его оформлять как шаблон? Ради самих шаблонов просто потому что они есть?

Нет. У него может сильно отличаться лишь одна функция. В паскале я так полагаю нет специализаций?

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

И проект будет состоять из файлов на разных языках. И конечно же, у нас есть IDE и не одна для поддержки таких проектов. И все с автодополнением и подсветкой кода. Хочу на ваш глобус.

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

И конечно же, у нас есть IDE и не одна для поддержки таких проектов. И все с автодополнением и подсветкой кода. Хочу на ваш глобус.

Добро пожаловать в Emacs :-)

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

И проект будет состоять из файлов на разных языках.

Многие реальные проекты написаны на разных языках. Но в случае Ocaml надобности в другом языке может просто не быть, так как скорость работы и скорость разработки весьма приличные. Максимум --- использование библиотек на Си, ну так они довольно пристойно интегрируются.

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

Добро пожаловать в Emacs :-)

for(QList<QOpenGLTexture*>::iterator i = orphan.begin(); i != orphan.end(); ++i)
(*i)->

Предложит варианты? В этом месте видны все методы QOpenGLTexture (#include <QOpenGLTexture>). На Wayland он уже перешёл? А то няшный Qt Creator пока что под ним глючит :(

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

for(QList<QOpenGLTexture*>::iterator i = orphan.begin(); i != orphan.end(); ++i)
(*i)->

Что-то ты пишешь как-то по-старинке. Вот как надо:

for (auto i = begin(orphan); i != end(orphan); ++i)
  (*i)->

Конечно, не подставит, но код раскрасит. :-) Никакая IDE на сегодняшний день не наделена функцией автодополнения для цепепе, потому как язык с очень уродливой и контекстно-зависимой семантикой :-) Emacs же мы любим за возможность приспособить инструмент под себя.

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

Ocaml

Туда есть биндинги Qt?

скорость работы и скорость разработки весьма приличные.

А вот это самое главное. Код на Ocaml, будет ли он сопоставим по скорости с кодом на плюсах (аналогичной кривизны), откомпилированном

g++ -march=.. -mtune=.. -O3

Памятью управлять можно? Операторы перегружать? Интерфейсы там есть (на плюсах их порой не хватает). Что нибудь вроде частичной специализации шаблона?

Возможно когда нибудь попробую его учить.

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

Так ещё короче :-)

for(auto* t : orphan)
  t->

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

А еще я сам с собой разговариваю :-)

Отлично! :-)

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

Продолжай, продолжай, клоун :-)

Только таблетки не забудь принять, а то опять к кровати привяжут :-)

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

Только таблетки не забудь принять, а то опять к кровати привяжут :-)

Да, и уколы не пропускай :-)

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

Да, и уколы не пропускай :-)

Но ведь тогда тебя не станет :)

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