Модераторы: Се ля ви

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Принцип компилятора, и алгоритм его работы 
:(
    Опции темы
nerezus
Дата 10.9.2006, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

На каждый
 А как же eval()?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Void
Дата 10.9.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



smile
Давать цитату из двух слов на две страницы назад без указания автора…

Для менее терпеливых:
Цитата
Или не на каждый язык программирования можно разработать компилятор?

На каждый. Если язык можно отинтерпретировать, то его можно и откомпилировать. Даже на мой любимый brainfuck компилятор можно сделать, но нафиг?

В исполняемый файл попросту зашивается компилятор со всеми потрохами. При этом код, не использующий eval, компилируется в нормальный машинный код. Так делают некоторые компиляторы Лиспа.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
maggot
Дата 18.1.2007, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 15.1.2007

Репутация: нет
Всего: нет



Цитата(nerezus @ 10.9.2006,  13:44)
Цитата

На каждый
 А как же eval()?

А что мешает делать таблицу идиентификаторов?
Или под eval() имеется ввиду не получение переменной по имени, а выполнение любого кода?
PM MAIL   Вверх
Void
Дата 18.1.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



Цитата(maggot @  19.1.2007,  01:01 Найти цитируемый пост)
выполнение любого кода



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nerezus
Дата 18.1.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

При этом код, не использующий eval, компилируется в нормальный машинный код.

Но если результаты этого кода будут использованы в последующих рассчетах?

например:

Код

// a неопределена
// s вводится с клавы. Например в нее ввели a
eval(eval(s) + "= 1")
print с




Я вот не догнал, как скомпилить print с, если самого c еще нету?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Void
Дата 18.1.2007, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



Цитата(nerezus @  19.1.2007,  01:21 Найти цитируемый пост)
Я вот не догнал, как скомпилить print с, если самого c еще нету? 

Никак. Опять динамика, т.е. вшитый транслятор языка. Всё-таки даже в самых «отъявленных» динамических языках такой код составляет лишь небольшую долю.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nerezus
Дата 19.1.2007, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

Всё-таки даже в самых «отъявленных» динамических языках такой код составляет лишь небольшую долю. 
 Если честно, то такого кода нет(кроме как у новичков) =)
Однако это делать можно.

Однако если это будет динамикой, то при чем тогда компилер в натив?
Ведь использование утилит, сшивающих скрипт и среду выполнения - это ведь не компиляция?

P.S. Если это все-таки компиляция, то мы создали компилятор PHP  smile 


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Void
Дата 19.1.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 9
Всего: 173



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


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

• изменяющиеся языки и методологии программирования;


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.