Я вот думаю, что современный подход к нейронным сетям (в которых сеть заставляют моделировать объект, а не просто "распознавать") и суперкомпиляторы (в которых делается модель программы, замещающая исходную программу в тот момент, когда результаты их исполнения оказываются эквивалентными) -- это один и тот же подход примата моделирования над
(
Read more... )
Comments 32
Компилятор - это построение модели объекта. Объект - программа.
А интерпретатор - часть модели, и интерпретируемая программа - часть модели. Объект же - из предметной области.
Reply
А у тебя какое-то нестандартное понимание модели. Интерпретатор у тебя -- часть модели чего?! Текста программы?! А кто тогда запускает модель в работу (исполняет ее)? И этот тип рассуждения еще нужно как-то помечать специально, чтобы не путать с традиционным рассуждением о моделировании в суперкомпиляции, чтобы людей не запутывать.
Reply
Интерпретатор - часть модели предметной области. Инфраструктура модели. Ты же спрашивал - как понимать процесс интерпретации как моделирование. Я тебе и ответил.
При суперкомпиляции есть два процесса моделирования - моделирование предметной области на языке А и моделирование программы на языке А программой на языке Б.
При интерпретации - моделирование есть, но оно идёт в один такт. Кстати, наверняка есть системы, моделирующие далее вполне рабочую модель в интерпретаторе.
Я думаю, что дело идёт к тому, что раработка систем будет включать оба этапа. Специалисты в предметной области будут моделировать в режиме интерпретации и суперпозднего свяывания, но потом результаты будут существенно оптимизироваться суперкомпиляторами, просто чтобы получить супербыстрый код для спецпроцессоров каких-нибудь.
Reply
Компиляция-на-лету, а также инкрементальная компиляция тоже давно известны, и они понятно как обходятся с точками суперпозднего связывания (а именно -- их не трогают ;)
Суперкомпиляция выгодна тогда, когда на вход подается вся программа (ибо как раз основные оптимизации в суперкомпиляции происходят не с участками программы "от вызова до вызова", а именно в изменении всей структуры). Так что твое замешивание всего стека метамоделей непонятно какое отношение имеет к обсуждаемой проблеме.
Reply
В контексте динамической компиляции не трудно сделать и суперкомпилятор для экстремально позднего связывания - просто генерировать специализированный код в момент связывания или чуть позже. Либо применять хинты/эвристики.
Можно и строготипизированные языки адаптировать под экстремально позднее связывание.
Reply
но это немного другая история.
Reply
Reply
... Ненавижу романтику и электронику ...
Reply
Reply
... Morning waits at the end of the world ...
Reply
На Lambda the Ultimate была вчера ссылка на статью про что-то похожее. Правда, саму статью я ещё не прочитал, прочитал только аннотацию. Насколько я понял, идея там такая: у программистов в голове есть интуитивное понятие "алгоритма", который реализует программа. Разные программы могут реализовывать один и тот же алгоритм. ⇒ Алгоритм есть класс эквивалентности программ. И авторы статьи доказывают аргументируют, что ввести такую эквивалентность разумным образом нельзя. Ссылка и обсуждение здесь. (Не путать с проблемой эквивалентности алгоритмов, которая изучена давно и хорошо).
... Жители антиутопии чаще всего счастливы ...
Reply
Leave a comment