Ремесло программиста

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Нерусские компиляторы » Помогите зайцам! Зайцем-побегайцем, помогите.


Помогите зайцам! Зайцем-побегайцем, помогите.

Сообщений 1 страница 7 из 7

1

Доделал стандартный вывод  спешу поделиться.
https://s16.postimg.org/sau1h6nqt/2017-04-01_12-53-57.pngкуда залить картинку

2

привет Павиа,

а можно уточнить это делфи, паскаль или что такое?
на чем написано?

3

Тут язык Поп (прототип паскаля). Он на 95% копирует паскаль. Компилятор мой собственный, написан на Delphi. Выходной язык ассемблер, диалекта tasm. Далее exe собирается им.

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

Вычисления только с типами integer, real и boolean, со своими операторами.
String - предусмотрены, но не тестировались.  Остальные типы нужные для работы с памятью char, byte, uint16  и др. Есть указатели.
Для совемстимости с winapi что-бы не нести с собой их типы добавлена поддержка ассемблерных вставок.

4

Весточка с фронта работ. Фронт борьбы за компилятор растянулся сразу на все модули. Основные силы брошены на системную библиотеку.

Кратка о проблемах и целях по их решению.

За год готовность версии 1.0 приблизилась с 95% до 97%.

Что-бы сделать поддержку строк надо их протестировать надо сделать ввод/вывод. Что-бы сделать ввод/вывод надо сделать поддержку строк.
Замкнутый круг получается.
А ввод/вывод это системная библиотека. Которой нет, её надо сделать.
Чтобы сделать ввод/вывод пришлось разбираться с POSIX сигналами. И медитировать над понятиями файл и поток.  А у потоков ещё и два способа управления. Очень долго с этим разбирался нигде нет системного описания. Везде описаны частности которые не понятно как между собой взаимодействуют. В принципе разобрался, и кратко записал.

Теперь у меня системная библиотека состоит на половину из комментариев.

Что бы не ударить в грязь лицом пришлось делать накопитель для быстрого чтения данных.
Но это полбеды.  Помимо прочего предполагалось не стандартный ввод/вывод, а с устранением недочётов существующих подходов. Как минимум пришлось записать идеологию этого дела.  Заодно добавил зачатки модели сигнал-слот. (Это уже другие сигналы, не POSIX, а те что в QT)
Без них не куда.  Оснастка предполагает инверсию управления. Мы заранее не знаем варианты использования. Как пишут обычно программы?
Вначале мы выбираем структуры, а потом алгоритм. Тем самым мы делаем жёсткую систему. Но как быть когда алгоритмы заранее неизвестны? Или когда их немыслимо много? Мы не можем оптимизировать по числу объектов не можем уменьшить число свойств или методов. Идея в том чтобы вывернуть систему наизнанку. Обычный подход для любой оснастки.
Мы изменяем направления связей-функций. наружу. Тем самым отдаём принятие решения из оснастки во  внешнюю систему, прикладной программе.
Всё бы ничего, но одна малость. Изначально предполагалось, что функции в качестве параметров принимают переменные и именованные постоянные.
Так что надо доделать поддержку передачу постоянных, идущих прямо по тексту.
Сейчас не работает код
emit(@func,@data, @result)
работает только вариант
aFunc=@func; aData=@data; aResult=@result;
emit(aFunc,aData, aResult);
Хочу это устранит.

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

После этого можно будет сказать о готовности компилятора к практическому применению. Хотя тут есть ещё ряд условий.

Отредактировано Павиа (2017-04-28 09:01:56)

5

Павиа написал(а):

2,5 года. За год готовность версии 1.0 повысилась с 95% до 97%

Проанализируем данные, предоставленные Павиа, при помощи программы LibreOffice Calc:

http://s9.uploads.ru/t/JHvbD.gif

Ясно видно, что пик проекта пройден полгода назад, а в целом у проекта нет будущего.

Это всё потому, что не надо врать о процентах, выписывая их с потолка.

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

http://sa.uploads.ru/t/hukzx.gif

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

Отредактировано Лис (2017-04-29 09:17:23)

6

Этим "зайцам" не хватает волка, который бы позволил создавать программы с графическим интерфейсом. :playful:

7

Вот так вот думаешь за неделю сделаешь. Но попал в кризис. Судя по всему спустя 1.5 года я конец-то преодолел кризис со строками.  Хотя отладка ещё продолжается, но уже виден свет в конце туннеля.


Вы здесь » Ремесло программиста » Нерусские компиляторы » Помогите зайцам! Зайцем-побегайцем, помогите.