Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#226: 2007-07-17 22:30:45 ЛС | профиль | цитата
Вячеслав, спасибо за добрый совет.
Мы же тупые, без тебя - нипочем не догадались бы
За такое мнение о наших умственных способностях - тоже спасибо

[size=-2]------ Добавлено в 22:30
Dilma, вот смотри, какая работа впереди.
Это если мы хотим сделать революционный продукт

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

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

Мне представляется это качественным скачком, достойным называться революционным
И мы де-факто уже пошли по этому пути.
А никсоиды будут эту O-технологию еще лет 20 двигать. Эволюционно. И аргументировать: "без этого вообще ничего бы не было"

Что нам надо сделать перед этим
Да ни в коем случае не начинать собирать эту машину
Мы должны потратить огромное время на постановку задачи.
После этого, создание машины будет просто кодингом.
Это простые задачи можно решать "на лету", как получается.
Чем сложнее задача, тем большее значение приобретает постановка. Потративши полгода на постановку, можно сэкономить лет пять на ремонте шанхаев.
А можно так до конца никогда и не отремонтировать, если "сэкономить" эти полгода.

Предположим, мы допустили вольность, и сказали: "а и так сойдет - не буду возиться из-за какого-то непонятного качества"
А через год переосмыслили чего-то, и это качество нам стало гораздо понятнее.
Чего теперь будут стоить исправления, когда "машина" уже работает, но к чему-то теперь очень нужному не приспособлена совершенно.
Да в десятки раз сложнее все исправить будет.

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


Смешнее всего то, что в силу возраста, мне известно, что мудрость сия НЕ доходит через голову - она доходит через РУКИ, обычно.
И у меня она тоже именно так доходила
Скажем, имею я за плечами (не в одиночку, конечно) четыре успешных и законченных проекта (изделия воспроизводимы без моего участия), и три "закопанных"
И мне известно как делались одни, и как другие.

Ну что я могу еще сказать, когда знаю, что слова почти бесполезны.
Только одно: поверьте, я это не придумал, я это ВИДЕЛ. Не один раз.
И именно ПОЭТОМУ
Dilma писал(а):
- качество кода ухудшать не желает ни на йоту, даже если это приведет к усложнению синтаксиса скрипта

А не потому, что у меня мания такая.
Известно мне, что борьбы за качество будет и без этого "выше крыши".
Очень серьезно бояться следует - как бы не свалиться, а не заниматься легкомыслием.
То, чего мы сегодня легким движением руки "откладываем на потом" - будет "потом" в десятки раз сложнее, чем сегодня.
Здесь тоже: это не думаю я так, это я имел удовольствие ВИДЕТЬ
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#227: 2007-07-18 00:40:34 ЛС | профиль | цитата
С этим всем естественно согласен. Однако посмотрим, что мы имеем сейчас:
1) HiAsm.exe - код написанный на Delphi и компилируемый думаю известно чем....
2) Массовый широко используемый пакет Windows, написанный для Delphi с кое как прикрученным FPC. В первом случае это компиляция... опять думаю понятно чем, а во втором получаемые программы кроме как г..ом ничем больше не назовешь.
3) FTCG - действующая модель близкого к идеалу кода

Складываем 1) 2) 3) и получаем систему, распространять которую без оговорок не возможно. А это значит потенциальная потеря людей. Поэтому выпустив полноценный пакет на базе FTCG пусть даже и с использованием wxWidget мы наконец-таки получим возможность нормально распространять продукт и дальше уже заниматься делами продолжительностью в пол года, а то и больше. Напомню, что FTCG уже есть и готов и шибко сильно модернизировать его уже не нужно. И кроме того нынешний CG тоже необходимо переписывать под свободно распространяемый компилятор, т.е. например GCC(или сам hiAsm в идеале...) - в общем писать заного в любом случае.
карма: 26
0
Ответов: 9906
Рейтинг: 351
#228: 2007-07-24 11:26:03 ЛС | профиль | цитата
Dilma, меня продолжают терзать смутные сомнения...

Вопрос: а ЗАЧЕМ мы стремимся продвинуть "код" как можно дальше В смысле, применяем "оптимизационную" процедуру moving code
В чем проявляется эта "оптимизация"

[size=-2]------ Добавлено в 11:26
Уж прошу прощения за вопрос из серии: "стоп себе думаю, а не дурак ли я?!"
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#229: 2007-07-24 12:04:26 ЛС | профиль | цитата
в исключение лишнего присваивания и повышение наглядности кода.
карма: 26
0
Ответов: 9906
Рейтинг: 351
#230: 2007-07-24 13:31:59 ЛС | профиль | цитата
Тогда по другому, более конкретно: а не должно ли быть целью этих наших действий - проведение неких максимально возможных вычислений в Design-Time
"Дотаскиваем" код до момента "использования", и коль скоро это оказалось константное выражение - вычисляем его и генерируем результат в код
После такого хоть понятно, зачем мы его "тащим" - к моменту "использования" информация максимально полная....

Это я обратил внимание на то, что с конкатенациями строк именно так и происходит сегодня...
карма: 9

0
Ответов: 262
Рейтинг: 6
#231: 2007-07-31 12:57:10 ЛС | профиль | цитата
Даже не знаю где и спросить. А почему после SVN перестает компилироваться проект frm из пакета delphi2? Ошибка Access violationat address # in module 'make_exe.dll' при нажатии на компиляцию.
-Build start...
-Generated code
и все ...
HiAsm последний. HiUpdate 5 мин назад. SVN само собой. Codegen.dll и make_exe.dll собраны.
При чем старый пакет delphi2 с форума работает на ура.
карма: 0

0
Администрация
Ответов: 15294
Рейтинг: 1518
#232: 2007-07-31 13:28:08 ЛС | профиль | цитата
SVN что именно обновлено? И как следствие по каким исходникам собран Codegen.dll?
make_exe.dll - чем и как собран, если на SVN его исходник лежит ввиде make_exe.sha, собираемый пакетом Modules?
карма: 26
0
Ответов: 9906
Рейтинг: 351
#233: 2007-07-31 13:31:29 ЛС | профиль | цитата
Потому-что с багами выложено, видимо
Интерфейс между CodeGen и make_exe
Надо полагать рудименты этого
Galkov писал(а):
  • Мне совершенно понятно стремление не передавать тип PStream из одной dll-ки в другую. И обеими руками - ЗА
    Но я же теми же обеими руками ПРОТИВ делать GetMem в одной dll-ки, а в другой - FreeMem
    Если эти dll-ки не сделаны под одним и тем же - так же как и с PStream, никаких гарантий.
    Ну нельзя разносить конструктор и деструктор по разным кодам.
    У себя-то я пока так сделал (make_exe.dpr ты ведь и не выложил ), без утечек и без "изничтожений" в make_exe
    var ResText:string;
    function buildProcessProc(var params:TBuildProcessRec):integer; cdecl;
    ...
    ResText := lst.Text;
    params.result := PChar(ResText);
    lst.free;
    end;


  • [size=-2]------ Добавлено в 13:31
    "Ответная часть" в make_exe у меня такая
    function buildMakePrj(const params:TBuildMakePrjRec):integer; cdecl;
    var lst:PStrlist;
    begin
    lst := NewStrList;
    lst.text := PChar(params.result);
    lst.SaveToFile(params.prjFilename);
    lst.free;
    Result := CG_SUCCESS;
    end;
    карма: 9

    0
    Ответов: 262
    Рейтинг: 6
    #234: 2007-07-31 13:47:09 ЛС | профиль | цитата
    Dilma, на папке с HiAsm правая кнопка - SVN обновить. на всех папках внутри зеленые галочки. В том числе и на elementsdelphi2 и modules. CodeGen и make_exe cобраны соответствующими файлами make.bat. В папке delphi2make есть make_exe.dpr который и собирается в dll. Может он староват?
    карма: 0

    0
    Ответов: 9906
    Рейтинг: 351
    #235: 2007-07-31 14:10:09 ЛС | профиль | цитата
    Chesh, причем здесь какие-то кнопки, и погода на Марсе

    Ты же САМ компилировал как CodeGen, так и make_exe
    Посмотри коды указанных двух методов и сделай выводы.

    Какие еще могут быть вопросы, непойму...
    карма: 9

    0
    Администрация
    Ответов: 15294
    Рейтинг: 1518
    #236: 2007-07-31 14:11:26 ЛС | профиль | цитата
    да скорей всего. В последних версиях в качестве результата передается текст,а не PStrList
    карма: 26
    0
    Гость
    Ответов: 17029
    Рейтинг: 0
    #237: 2007-09-06 16:02:02 правка | ЛС | профиль | цитата


    Редактировалось 4 раз(а), последний 2021-05-21 06:45:38
    карма: 0

    0
    Администрация
    Ответов: 15294
    Рейтинг: 1518
    #238: 2007-09-06 16:10:49 ЛС | профиль | цитата
    http://hiasm.1gb.ru/xf/topic.php?t=8508
    карма: 26
    0
    238
    Сообщение
    ...
    Прикрепленные файлы
    (файлы не залиты)