Страница 1 из 1

обероня - планирование

Добавлено: 07.10.18 17:06
БудДен
#обероня #blackboxcomponentbuilder #оберон #оберонкп #яръ

Для своего время ББЦБ был, конечно же, прекрасен. Но он не взлетел. У него осталось живое русскоязычное сообщество, с «комплексом старой технологии». Мы собираемся сделать следующее:
  • Развить язык до более современного.
  • Развить среду до более современной.
  • Всё тотально русифицировать.
Планирование тут довольно сложно, ему и посвящена эта тема. Нужно как можно дольше пройти по пути с сообществом ББЦБ и пользоваться его ресурсами, пока возможно. Честный обмен энергиями подразумевает, что надо не только брать, но и отдавать. Наши изменения в язык сломают его и здесь наши пути с большинством пользователей ББЦБ разойдутся. Хотя мы планируем канторизацию ББЦБ в «новый компонентный паскаль», как его можно назвать, есть и религия - мы не питаем иллюзий.

Для некоторых мечущихся, типа Лиса, я могу сказать, что сборка мусора и генерация машкода в ББЦБ уже есть. Не навороченно, но необходимый минимум есть и работает вроде более-менее надёжно. Так что рекомендуется оставить метания то в 1Скрипт, то в tcc, и
заняться.

Re: прогрессивный компонентный паскаль

Добавлено: 08.10.18 14:49
БудДен
Перечень некоторых из необходимых изменений. Для каждого вводим аббревиатуру и в скобках - параметры. м - означает, что это может быть реализовано как Модуль, п - как Патч. я - меняет Язык. о - может быть приемлемо и интересно для Общественности Оберона. р - интересует только Россию.

Эргономика:
э.спф(по): список последних файлов
э.днспк(по): действия над словом под курсором, не нужно выделять слово мышью
э.птк(по): понимание текущего контекста (слово TypeOf в исходнике модуля Kernel может означать Kernel.TypeOf, но среда этого не понимает)

ЦЧВП (,РЕПЛ):
ц.псм(мя): прямая сумма модулей, т.е. автоматически создаваемый модуль, который импортирует всё, что экспортировано из нескольких модулей и экспортирует всё это. При этом, экспорты модулей не должны пересекаться. Может быть, можно снять букву я.
ц.тв(пя): тип вариант, способный конструироваться из значения любого типа. Патч компилятора требуется для реализации конструктора. Нужен, чтобы можно было напечатать результат вычисленного выражения.
ц.цчвп(м): реализация собственно ЦЧВП. ЦЧВП был бы полезен о, но он зависит от двух я, поэтому шансов нет. Эрзац-ЦЧВП уже есть в ББ, поэтому обосновать нужность изменения языка ради непринципиального улучшения интерактивной разработки вряд ли получится.

Re: новый компонентный паскаль - планирование

Добавлено: 12.10.18 22:51
БудДен
Какой-то тугой этот ББЦБ. Как кокосовый орех. Вроде идеи классные, но везде надо "немного" допилить. Когда начинаешь вникать в это "немного", через две недели обнаруживаешь, что ничего ещё не сделано и местами непонятно как делать. То ли дело в недостатке временных ресурсов, то ли ещё в чём-то. ББЦБ на самом деле жёстко навязывает свои подходы. Сообщество сделало довольно много костылей. Код можно считать, что обфусцирован. Среда - полуфабрикат. Т.е. вроде как всё есть и в то же время ничего нет. Странное ощущение.

В общем, доделываем конвертер исходников, позволяющий хранить документы в репозитории и хотя бы сравнивать их (о слиянии, похоже, речь уже не пойдёт). И на паузу. Во всяком случае, таковые мысли на этот вечер. У меня и так есть два дела кроме ББЦБ (и не считая данного форума, который теперь, конечно же, тоже замрёт).

Re: новый компонентный паскаль - планирование

Добавлено: 15.10.18 14:28
БудДен
Вроде кризис пока больше моральный, и вроде его удалось преодолеть. По форматам пока решено так:
- расширение .cp - для хранения исходных текстов в формате utf-8.
- расширение .tdc - для хранения любых документов в тексте, по содержимому равном .odc

Формат .odc отключим, как только перегоним всю текущую сборку в .tdc. После этого формат tdc будет развиваться,
и мы будем хранить линейку конвертеров между odc и любой версией tdc. Наверное, нужно будет даже их для начала называть .tdc0001, тдц0002 и т.п.

REPL делать будем так. Сейчас есть три формата команд: простая команда без кавычек, команда с аргументами в кавычках, команда со своим парсером (ха, Вирт придумал symbol-readmacro, до которых лисп-сообщество так и не доросло, хотя я их тоже придумал, применял и пытался пропагандировать). Заведём две префиксные буквы для этих случаев. Добавим возможность выполнять модуль, как тут: https://forum.oberoncore.ru/viewtopic.p ... is#p101137

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

Документацию к функциям компилятора будем писать так: сделаем форк компилятора - никто не мешает иметь более одного компилятора в ББЦБ. Далее по-русски прямо в исходном тексте. Технология Docu слишком тяжеловесна. Плюс руководство / глоссарий / навигатор в формате html (придётся придумать, как его загружать в документ, чтобы удобно ходить по ссылкам). Функции и константы будем переименовывать в более говорящие. Этим нужно будет заняться сразу после перевода исходников в текстовый вид.

Процесс сборки вроде тоже наклёвывается. Всё, дальше некогда.

Re: новый компонентный паскаль - планирование

Добавлено: 23.10.18 16:56
БудДен
Обнаружился эрзац-репл в сборке obertone, соответственно, приоритет снижается.
Но в любом случае нужны варианты или хотя бы возможность создать эрзац - консы - как-то так.

Или уж хотя бы инициализация массива записей с фигурными скобками как в Си.

Вот тут обсуждалось переменное число параметров:
https://forum.oberoncore.ru/viewtopic.p ... g&start=20
Функция NEW принимает произвольное число параметров, её можно взять за образец.

Как же сделать литерал структуры? Да ещё и с квазицитатой?

Код: Выделить всё

MODULE Юй;
TYPE Щ = RECORD
  имя: ARRAY (38) OF CHAR;
  число: LONGINT; END;
TYPE ЩЩ = RECORD
  Щ1 : Щ;
  Щ2 : POINTER TO Щ; END;
VAR ч : ЩЩ;
BEGIN
(* И тут возникает море вопросов *)
ч := {{"Бульк",25},{"Бульк",25}};
END Юй.