ускорение типизации
От: Аноним  
Дата: 12.02.11 12:21
Оценка: -1
1. при компиляции исходника в исходник добавляются подсказки для последующей тиипизаци
например до первой компиляции
def i=1;

после

def i/*//int//*/=1;

2. данные добавленные комментарии по умолчанию не отображаются в vs

3. при повторной типизации вначале выполняется проверка на верность подсказок (граф типизации сильно сокращается за счет подсказок),

4. в случае проблемы с подсказками выполняется полная (обычная) типизация.


+ можно посмотреть как были расставлены типы
+ ускорение типизации
Re: ускорение типизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.11 12:49
Оценка:
Здравствуйте, Аноним, Вы писали:

А>1. при компиляции исходника в исходник добавляются подсказки для последующей тиипизаци

А>например до первой компиляции
А>def i=1;
А>после
А>def i/*//int//*/=1;
А>2. данные добавленные комментарии по умолчанию не отображаются в vs
А>3. при повторной типизации вначале выполняется проверка на верность подсказок (граф типизации сильно сокращается за счет подсказок),

А кто может гарантировать, что последнее изменение не привело к тому, что там вместо int стало, например, long?

А>4. в случае проблемы с подсказками выполняется полная (обычная) типизация.


А>+ можно посмотреть как были расставлены типы

А>+ ускорение типизации

В чисто виде подобный подход работать не будет.

Использовать хинты неварно как-то можно но все это нужно очень серьезно продумывать.
Возможно что-то подобное можно применять для ускорения интеллисенса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: ускорение типизации
От: Аноним  
Дата: 12.02.11 12:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


А>>1. при компиляции исходника в исходник добавляются подсказки для последующей тиипизаци

А>>например до первой компиляции
А>>def i=1;
А>>после
А>>def i/*//int//*/=1;
А>>2. данные добавленные комментарии по умолчанию не отображаются в vs
А>>3. при повторной типизации вначале выполняется проверка на верность подсказок (граф типизации сильно сокращается за счет подсказок),

VD>А кто может гарантировать, что последнее изменение не привело к тому, что там вместо int стало, например, long?


В начале идет типизация с учетов хинтов. В случае возникновения противоречия ограничений хинты сбрасываются и делается типизация без них.

А>>4. в случае проблемы с подсказками выполняется полная (обычная) типизация.


А>>+ можно посмотреть как были расставлены типы

А>>+ ускорение типизации

VD>В чисто виде подобный подход работать не будет.


VD>Использовать хинты неварно как-то можно но все это нужно очень серьезно продумывать.

VD>Возможно что-то подобное можно применять для ускорения интеллисенса.
Re[3]: ускорение типизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.11 13:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В начале идет типизация с учетов хинтов. В случае возникновения противоречия ограничений хинты сбрасываются и делается типизация без них.


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

Вопрос в том можно ли (и как?) использовать старую информацию для ускорения повторной типизации.

В общем случае это сделать невозможно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: ускорение типизации
От: Аноним  
Дата: 12.02.11 13:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


А>>В начале идет типизация с учетов хинтов. В случае возникновения противоречия ограничений хинты сбрасываются и делается типизация без них.


VD>Типизацию с учетом хинтов можно и проводить, так как типы итак известны после посделней типизации.


VD>Вопрос в том можно ли (и как?) использовать старую информацию для ускорения повторной типизации.


VD>В общем случае это сделать невозможно.


Тут разговор немного о другом.

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

так как типизация идет не всего проекта целиком, а по единицам типизации (например функция), то в большенстве случаев нам будет достаточно проверить корректность хинтов.
Re[5]: ускорение типизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.11 13:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>вначале проверяются хинты на корректность. Если все корректно, то ничего не делаем.


Я уже тебе приводил пример. Заени int на long и все останется корректным.

И вообще, корректным и не измененным все может остаться только если ничего и не изменялось.

Вывод типов делается не для одного оператора, а для тела метода в целом. И изменение даже одного элемента может привести к непредсказуемым изменениям типов во всем методе.

А>В случае если код не корректен, то выполняем типизацию без хинтов полностью.


А>так как типизация идет не всего проекта целиком, а по единицам типизации (например функция), то в большенстве случаев нам будет достаточно проверить корректность хинтов.


Это не дает гарантии корректности кода.

Вот если список типов и их членов не менялся, то в принципе можно просто использовать сериализованное состояние полученное во время предыдущей типизации.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: ускорение типизации
От: Аноним  
Дата: 12.02.11 13:44
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


А>>вначале проверяются хинты на корректность. Если все корректно, то ничего не делаем.


VD>Я уже тебе приводил пример. Заени int на long и все останется корректным.


VD>И вообще, корректным и не измененным все может остаться только если ничего и не изменялось.


VD>Вывод типов делается не для одного оператора, а для тела метода в целом. И изменение даже одного элемента может привести к непредсказуемым изменениям типов во всем методе.


значит, Влад, всетаки не понял.
для метода производится проверка типов в соотвествии с подсказками (для метода, а не для выражения или строки).
В случае корректности типизация уже есть.

А>>В случае если код не корректен, то выполняем типизацию без хинтов полностью.


А>>так как типизация идет не всего проекта целиком, а по единицам типизации (например функция), то в большенстве случаев нам будет достаточно проверить корректность хинтов.


VD>Это не дает гарантии корректности кода.



Это дает гарантию корректности кода, так как в немерли не выполняется глобальная типизация. (в случае глобальной типизации это бы не имело смысла)


VD>Вот если список типов и их членов не менялся, то в принципе можно просто использовать сериализованное состояние полученное во время предыдущей типизации.


проверка на корректность типизации и покажет изменялся или нет.
Re[7]: ускорение типизации
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.02.11 15:09
Оценка:
Здравствуйте, Аноним, Вы писали:

А>значит, Влад, всетаки не понял.

А>для метода производится проверка типов в соотвествии с подсказками (для метода, а не для выражения или строки).
А>В случае корректности типизация уже есть.

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

А>Это дает гарантию корректности кода, так как в немерли не выполняется глобальная типизация. (в случае глобальной типизации это бы не имело смысла)


В немерле есть макросы верхнего уровня. Так что любое изменение в аст верхнего уровня может привести к любым последствиям.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: ускорение типизации
От: Аноним  
Дата: 12.02.11 16:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Аноним, Вы писали:


А>>значит, Влад, всетаки не понял.

А>>для метода производится проверка типов в соотвествии с подсказками (для метода, а не для выражения или строки).
А>>В случае корректности типизация уже есть.

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


А>>Это дает гарантию корректности кода, так как в немерли не выполняется глобальная типизация. (в случае глобальной типизации это бы не имело смысла)


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


понял.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.