Информация об изменениях

Сообщение Re: Кастомные прекомпиляторы от 23.11.2018 11:51

Изменено 23.11.2018 11:53 swame

Re: Кастомные прекомпиляторы
Здравствуйте, Khimik, Вы писали:

K>Интересно, не пробует ли кто-то из авторов ЯП делать кастомные прекомпиляторы, которые может написать программист-юзер?

K>Я имею в виду следующее (на примере Delphi). Предположим, я пишу библиотеку или exe-файл, которому на вход подаётся Delphi-юнит (паскалевский код), и моя программа его немного модифицирует. Среда разработки показывает в двух вкладках два кода: исходный юнит и юнит, модифицированный моим прекомпилятором. При запуске программы компилируется второй код, и естественно отладчик имеет дело с ним.
K>Вот пример. Есть простой приём оптимизации циклов – размножение. Пусть у меня есть код:

K>
K>qfor6 i:= 0 to count-1 do
K>  values[i] := values[i]* values[i];
K>


K>Мой прекомпилятор видит qfor6 и преобразует этот код таким образом:


Осталось сравнить оба варианта на реальном измерении скорости. ПОдозреваю, что первый будет работать быстрее, потому что будет оптимизирован встроенным оптимизатором.
Re: Кастомные прекомпиляторы
Здравствуйте, Khimik, Вы писали:

K>Интересно, не пробует ли кто-то из авторов ЯП делать кастомные прекомпиляторы, которые может написать программист-юзер?

K>Я имею в виду следующее (на примере Delphi). Предположим, я пишу библиотеку или exe-файл, которому на вход подаётся Delphi-юнит (паскалевский код), и моя программа его немного модифицирует. Среда разработки показывает в двух вкладках два кода: исходный юнит и юнит, модифицированный моим прекомпилятором. При запуске программы компилируется второй код, и естественно отладчик имеет дело с ним.
K>Вот пример. Есть простой приём оптимизации циклов – размножение. Пусть у меня есть код:

K>
K>qfor6 i:= 0 to count-1 do
K>  values[i] := values[i]* values[i];
K>


K>Мой прекомпилятор видит qfor6 и преобразует этот код таким образом:


Осталось сравнить оба варианта на реальном измерении скорости. ПОдозреваю, что вариант с обычным for работать быстрее, потому что будет оптимизирован встроенным оптимизатором.