LINUX.ORG.RU

Blaise - новый компилятор языка Pascal

 , ,


1

6

Грэм Гелденхейс (Graeme Geldenhuys), разработчик графического пользовательского интерфейса fpGUI, системы сборки PasBuild, системы тестирования FPTest и отладчика opdebugger представил Blaise - компилятор для диалекта языка программирования Object Pascal.

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

Основные черты нового диалекта:

  • Для всех динамически создаваемых объектов - строк, интерфейсов, экземпляров классов используется единая система автоматического управления основанная на подсчете ссылок.

  • Удален тип object, вместо него предлагается использовать record, для которого доступно определение методов.

  • Удалены устаревшие операторы ввода/вывода assign, reset, rewrite, blockread и типы file и text.

  • Предложен единственный строковый тип, заменяющий ShortString, AnsiString, WideString, OpenString и UnicodeString.

  • Удален оператор with, часто приводящий к трудно обнаруживаемым ошибкам.

  • Добавлено определение переменных в месте использования.

Для генерации машинного кода в компиляторе используется QBE (c9x.me), генератор на основе LLVM находится состоянии разработки.

В планах проекта создание LSP-сервера, поддержка языка в Visual Studio Code, а также создание инструмента для миграции с Delphi и Free Pascal.

>>> Blaise Pascal Compiler

★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от kaldeon

А какой современный язык имеет синтаксис лучше Паскаля?

Bash-евский, разумеется. А без сарказма, синтаксис любого мало мальски развитого языка будет ипанутым, поскольку либо придётся вводить множество служебных слов, либо наскальную клинопись из (<.>@[^]&{*}$.->), либо смешивать. Ибо возможности компьютерной клавиатуры физически ограниченны.

Ну, ещё можно забить на всё и начать всё писать на Common Lisp-е и ассемблерах в дополнение и расширение.

mister_VA ★★
()
Последнее исправление: mister_VA (всего исправлений: 1)
Ответ на: комментарий от kaldeon

А какой современный язык имеет синтаксис лучше Паскаля? Чтобы знать что с чем сравниваем.

Банальная сишка выглядит лучше паскаля. Есть, что дорабатывать, но именно ее надо брать за основу.

а попытка закрыть нишу близкого к индустрии Паскаля

Нет никакой индустрии паскаля. Она мертва.

Ведь сам по себе возраст — не приговор.

Возраст не приговор только в случае распространенности. А если ее нет - это музейный экспонат в лучшем случае. В худшем - копролит. Языки строятся вокруг каких-либо концепций, позволяющих писать эффективнее с меньшим числом ошибок. Построение нового языка (или реализации старого) бессмысленно, потому что не решает никаких проблем старых концепций.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)
Ответ на: комментарий от kaldeon

А какой современный язык имеет синтаксис лучше Паскаля? Чтобы знать что с чем сравниваем.

Go или Swift/Kotlin (если пропустить Java/C# ).

Тут у каждого свой любимый язык есть и у каждого свои аргументы будут. Паскаль нравился в прошлом своей структурированностью, простым и понятным синтаксисом. Этого хотелось бы ожидать и от его «сменщиков».

Мое имхо данный проект будет «15-ым стандартом» из мема.

Что я бы хотел увидеть, так это помесь Оберона со Swift-ом. Хотя в свете существования LLM это уже мало смысла имеет - скоро главное умение будет это четко уметь выразить свои мысли на человеческим языке. А в далёком будущем, можно будет просто моргнуть одним глазом в случае желание сделать приложение с кнопкой «сделать хорошо» :)

necromant ★★★
()

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

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

т.е. теперь можно «определять переменные в месте их использования»?
перефразирую - не обязательно определять в начале?

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

А если with вложенные друг в друга?

а что бы выстрелть в ногу из палки? (которая, по идее не должна стрелять)

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

ну да, комментарии это «да» - когда ковыряешься вручную!

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

т.е. теперь можно «определять переменные в месте их использования»? перефразирую - не обязательно определять в начале?

Да, как в Си.

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

А какой современный язык имеет синтаксис лучше Паскаля?

Ada. Тем более что компилятор gnat давно есть и отлично работает.

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

Оберона со Swift-ом

Так голанг же и есть этот самый паскалеоберон с ужом.

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

Один Оберон

Оберон, кстати, клевый: странно что его не видно не слышно

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

разработчики v8, наверное, тоже неосиляторы

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

Другое дело, что класть XML в основу сборочной системы – из этого слишком хорошо торчат уши людей, укушенных Visual Studio

Да ладно, может, людей покусаных индейскими муравьями? Apache Ant, 2000 год, не? Или в maven XML простыни «как-то свободнее и увлекательнее»?

В вижуалстудии не было раньше XML. XML пришел с модой на него и системой сборки MSBuild, как замена Nmake.

Я больше скажу, XMLные простыни в экосистеме жабы с ant, maven и ivy оттуда же родом — из хайпа 2000-2010х на «человекодружелюбных-то форматах» и «декларативном-то подходе», дружелюбность которых кончается ровно тогда, когда их начинают генерить машины.

Но на экосистему жабы тут и в 2026 году не злопыхают, т.к. она же «свабодная», да? ))) CEO и основатель Оракла не даст соврать, он Гослинга поэтому уволил? Санки с их обещаниями сдохли 16 лет назад, алё.

Меж тем XMLные простыни maven не лучше msbuild простыней. Это сорта XML-простыней. Оба хуже. Даже если XML простыни заметены под коврик убогой императивной скриптухимодный язычог типа groovy в gradle и юзеры в отрицалове, что поначалу там юзали те же ant и ivy. Под ковриком. А в долгоживущих проектах на жабе и подавно XML никуда не девался, с groovy или без.

Ну вот щас кое-где местами перебор с простынями JSON(покусали вебмакаки), YAML(покусали википедики) и toml(это буквально формат «убогих вендовых ini-файлов» на стероидах и он уже, те же яйца только Лёнины, в системе инициализации «мейнстримных-то дистрибутивов») — это все сорта простыней. Сдуваем щоки.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Да ладно, может, людей покусаных индейскими муравьями?

благо, не авторы sendmail покусали

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

Удален оператор with часто приводящий к трудно обнаруживаемым ошибкам

А это вообще жирнота.

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

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

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

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

на экосистему жабы тут и в 2026 году не злопыхают, т.к. она же «свабодная», да?

Регулярно говорят, что «Java — конвертер XML-конфигов в стектрейсы» :)

И что она интересна только корпорациям — тоже.

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

Банальная сишка выглядит лучше паскаля.

Только потому что мы привыкли к ней. Использование символов во все поля — дурной пример. Некоторые ещё можно оправдать (любой вид скобок, & — и, | — или), но !, ~, % ^, ?: — вот это уже натягивание совы на глобус. Языки, которые встают на путь Си, продолжают традицию загадочных конструкций.

Я уже не говорю про тип слева.

Нет никакой индустрии паскаля. Она мертва.

«Не рой другому могилу». Паскаль — это, конечно, не Раст, но другого языка, созданного специально для обучения, просто нет. Поэтому даже если сегодня Паскаль упал в популярности, это ещё не приговор. Даже наоборот: ничего похожего Паскалю не видно на горизонте.

А если ее нет - это музейный экспонат в лучшем случае.

В музей полезно ходить, а некоторые там даже работают.

В принципе, Паскаль-то и не претендует на какой-либо теоретический прорыв. У автора основное желание — сгладить углы на современных системах.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от intruder

То, что with позволяет наплодить тяжёлых ошибок, я знаю. Это плата за его мощь. Здесь напрашивается прямая аналогия с указателями. Тоже мощное средство и тоже позволяет накосячить так, что мама не горюй. Но вроде бы никто из того же c++ указатели из-за этого не выпиливает. Обёртки над ними делают – да.

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

Только потому что мы привыкли к ней.

Потому что на ней банально удобно писать, если сравнивать с языками-ровестниками. Чтение типов по спирали я бы действительно заменил на более адекватное, ну и еще кое-что по мелочи. Но остальное вполне себе норм.

другого языка, созданного специально для обучения, просто нет

Учебные языки не нужны.

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

Учебные языки не нужны.

Кроме того, что на них удобнее преподавать, есть несколько чисто практических аргументов:

  1. Языки, созданные для индустрии, не годятся для обучения. Они щекочат нервы профессионалов (короче, выразительнее, корректнее), которые не обязательно нужны в педагогических целях, не на начальном этапе.

  2. Когда вокруг и без того множество языков и мини-языков, ещё одна категория, охватывающая реальные потребности, будет незаметна.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)
Ответ на: комментарий от kaldeon

Языки, созданные для индустрии, не годятся для обучения.

Чушь полнешая, основанная на убеждениях столярова.

Когда вокруг и без того множество языков и мини-языков

Еще раз: количество учебных часов ограничено. Паскалефанбои предлагают учить мертвый язык, который затем никак не применить на практике, и потерять на него кучу времени, вместо того, чтобы сначала учить базовым принципам алгоритмики и программирования на питоне, а потом усложнять, добавляя сишку.

Я уже сто раз описывал, как нужно правильно учить программированию, и каждый раз выискиваются люди, повторяющие один и тот же бред про учебные языки, паскаль, побочные эффекты и прочее говно.

liksys ★★★★
()

Мне не надо, но пусть будет.

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

Delphi или FreePascal это не языки для обучения. Просто их подмножество удобнее использовать для начального обучения.

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

Я уже сто раз описывал, как нужно правильно учить программированию, и каждый раз выискиваются люди, повторяющие один и тот же бред про учебные языки, паскаль, побочные эффекты и прочее говно.

Для начала научи кого-нибудь, чему-нибудь… теоретик. :)

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

Вот, пожалуйста. Очередной заблуждающийся фанбой столярова собственной персоной ^^^.

Все одинаковые - как под копирку.

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

Чушь полнешая, основанная на убеждениях столярова… . Я уже сто раз описывал, как нужно правильно

Я лично не читал Столярова и не намереваюсь. Предпочитаю учебные материалы Вирта.

Еще раз: количество учебных часов ограничено.

Начинайте со школы.

Но да, у нас в айти принцип «хочешь жить — умей вертеться». Времени не хватает вообще ни на что.

потерять на [мертвый язык] кучу времени

Достаточно до первого калькулятора, пока не окрепнут мускулы.

А Паскаль мёртвый не больше, чем псевдокод.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 4)
Ответ на: комментарий от sabacs

Угадал-угадал. Ты десантировался в один из тредов про столярова и сразу начал на меня нападать. Не надо думать, что твоя личность чем-то отличается от личностей десятка других его последователей.

Кстати, по какому-то недоразумению, я всё еще вижу твои посты. Пора это исправить. Отправляйся в игнор к остальным кадаврам.

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

Начинайте со школы.

Тогда тем более нужно брать что-то простое, типа питона, чтобы школьник втянулся. На нем можно писать сложные вещи. А когда потребуется оптимизация - придется учить сишку.

А Паскаль мёртвый не больше, чем псевдокод.

Больше, больше.

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

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

Еще раз: вот здесь достаточно подробно написано, как правильно учить программированию. Всё, что ты мне пытаешься возразить, уже обсуждено и опровергнуто мной в том же треде. Прочитай. Если будет что нового сказать - возвращайся.

liksys ★★★★
()
Последнее исправление: liksys (всего исправлений: 1)

обалдеть, я думал язык более, чем мертв

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

Тогда тем более нужно брать что-то простое, типа питона, чтобы школьник втянулся.

Вопрос аудитории. Если школьник ещё не определился с профессией, то ему Паскаль (ровно как и переход на Си), очевидно, не нужен. Как и чему таких учить — вопрос банальный и чисто практический. Преподавателю даже самому не обязательно хорошо знать программирование. Меня же интересует, прежде всего, исключительно заинтересованный и вовлечённый ученик. Меня волнует проявление уважения к его интересу, а не к социалистическим программам всеобщего благосостояния.

И в этом контексте «простота» Питона даёт обратный огонь.

Показав print(“hello world”), нам потом придётся объяснить почему print(“hello”) print(“world”) не работает. Действительно, почему? В Питоне разве не «человеческий» язык? Показывая свободный синтаксис, мы создаём неверное впечатление, будто структура синтаксиса не строгая. Если мы чуть-чуть сделаем её более явной, это уже даст нам простой инструмент: потому что инструкции должны быть разделены, причём не абстрактно в голове у программиста, а конкретно через осязаемую точку с запятой.

Аналогично с типами и компиляцией. Они направляют разум в правильном направлении с самого начала и при этом не мешают технике поэтапного совершенствования. Тогда как их отсутствие создаёт диссонанс: зачем мне изучать типы, если без них всё работает?

«Простота» Питона подходит только тем, кто уже готов к ней, ровно как и awk ‘!a[$0]++’ (дедупликация строк с сохранением порядка). Простота в обоих случая работает, когда все скрытые условности уже сидят в голове, но не лезут под руку в рабочем процессе. В обучении этот эффект не нужен: рабочего процесса ещё нет, нам нужно показать базовые принципы работы компьютера и вычислений, потому что именно в этот момент у ученика формируются концептуальные образы.

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

Полностью согласен с тем, что Питон практичнее.

Всё, что ты мне пытаешься возразить, уже обсуждено и опровергнуто мной в том же треде. Прочитай. Если будет что нового сказать - возвращайся.

Пока ещё не прочёл, но как-нибудь попозже прочту. За готовность к вопросам отдельное спасибо.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 5)
Ответ на: комментарий от kaldeon

Показав print(“hello world”), нам потом придётся объяснить почему print(“hello”) print(“world”) не работает.

Тебе в любом случае придется объяснять базовые синтаксические конструкции любого языка.

Тогда как их отсутствие создаёт диссонанс: зачем мне изучать типы, если без них всё работает?

В питоне сильная типизация, поэтому всё будет отлично. Человек не сможет сложить строку с числом.

нам нужно показать базовые принципы работы компьютера и вычислений.

Именно так. Поэтому пляшем от алгоритмов, учим писать на питоне, потом усложняем, углубляясь в архитектуру компьютера.

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

Читать какого-нибудь западного автора. Например Прату и Танненбаума. Там, увы, моего подхода нет, но и шизофрении столярова там тоже нет, что уже делает этот курс лучше.

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

ни то ни то не является цельным курсом для начинающего программиста, вероятно, больше как углубления в сторону.

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

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

Тебе в любом случае придется объяснять базовые синтаксические конструкции любого языка.

Разумеется. Разница в том, какой образ создают оба языка:

  • Питон: хочешь написать программу — напиши её на английском языке. Не работает? Ну да, ведь есть строгий синтаксис, только после исправления ошибки его всё равно не видно, программа вновь стала прозой на английском языке.

  • Паскаль: синтаксис осязаем и базовые правила нужно освоить сразу. Возникла ошибка? Не проблема, ты уже понимаешь как работает синтаксис и, скорее всего, понимаешь почему исправление сработало.

В питоне сильная типизация, поэтому всё будет отлично. Человек не сможет сложить строку с числом.

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

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

а аналога курсу Столярова я не встречал

Он сам по себе не нужен.

liksys ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.