Re[54]: Вопрос к Vlad2: Nemerle & R#
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.03.06 11:23
Оценка:
Здравствуйте, eao197, Вы писали:

>> Да, лучше перестраховаться и объявить Nemerle и его создателей врагами

>> народа, дизертирами и вредителями колхозных колосков.

E>Можешь показать цитаты, хотя бы близкие по смыслу к этому?


Прийдется показать всю твою переписку на этом форуме за исключением тех мест где ты хвалил Руби или защищал С++.

>> ЗЫ. Мне, кстати, тоже интересно, доколе народ будет заниматься охотой на

>> ведьм? Я так понимаю, что удовольствие получается уже от самого процесса
>>

E>А вот я применительно к отладке макросов во время компиляции другого не понимаю.


Хм. Осмысленный ответ на замечание ИТ.

E> Почему этого нельзя сделать путем установки точки прерывания в IDE на месте обращения к макросу в моем коде?


Опиши, пожалуйста, сценарий того как будет отрабатвать этота точка останова. Причем как можно подоробнее.

E>Ну а если чуть-чуть подумать. Преставим, что в IDE на строке своего исходника я устанавливаю точку прерывания. Запускаю компиляцию, IDE подгружает внутри себя процесс компилятора и передает ему дополнительную информацию: имя файла и номер строки с точкой прерывания. Когда компилятор доходит до этого места в процессе компиляции, он сообщает IDE об этом и позволяет IDE войти в режим отладки.


Для этого не нужно изменять комилятор. Достаточно просто создать еще один отладочный макрос который будет взводить некий флаг:
macro BreakMyCacro()
{
    Debug._dbgFlag = true;
}

module Debug
{
  intrnal bool _dbgFlag;
}

Далее в макросе написать нечто вроде:
macro MyCacro()
{
    if (Debug._dbgFlag)
    {
        _dbgFlag = false;
    }
    ...

и поставить точку останова внутрь if-а. Далее остается вписать вызов BreakMyCacro() в нужном месте объектного кода (перед не верно работающим вызовом MyCacro).

E>Компонентная, в конце-концов .NET среда или так просто, погулять вышла?


Ты тут придерашся по мелочам к Немерлу в то время как к Руби вообще нормальной ИДЕ нет. Поддержки IDE вообще очень нехватает. И уж если говорить о первоочередных фичах, то сначало нужно кмплит-ворд сделать. А такие изысканные извращения как точки отсанова времени компиляции точно можно пережит.

E> Компилятор может быть таким компонентом, который IDE подгружает в себя. IDE получает от компилятора интерфейс для управления компиляцией.


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

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

E> IDE передает компилятору свой callback интерфейс. IDE дергает метод компилятора для начала компиляции с перечислением точек прерываний. Когда компилятор добирается до одной из них, он дергает callback интерфейс IDE и говорит, где и как нужно начать отладку.


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

E>Получается нормальная IDE для полноценного использования и отладки средств метапрограммирования Nemerle.


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

Кстати, из кул-фич IDE в области макросов мне бы очень хотелось бы видеть следующее:
1. При наведении курсора мыши на имя макроса (внутри выражения), чтобы о IDE показывала большой хинт с раскрытым кодом макроса. И чтобы каждый вложенный макрос был подсвечен и при наведении мышки на него чтобы можно было увидить как раскроется он.
2. При отладке чтобы можно было нажать некую пимпочку (например, выбрать пункт контекстного меню когда курсор установлен на макросе) и чтобы в редакторе появился раскрытый код макроса. При этом должно быть возможно поставить точку останова на одной из строк сгенерированной макросом.

Вот это действительно силно упростило бы разработку макросов.


E>Или такое все же принципиально невозможно?


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

E>

E>AFAIK, IDE для Smalltalk-а давно так работают. Чуть ли не с рождения.

Ага. Только вот меня от Смолтоковских IDE тошнит. Все что я видил ужасно неудобно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.