![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Оставлю ссылку себе, там маньяки опять языки и парадигмы обсуждают:
Клеить к сишной библиотеке ерланг через окамл - это хорошая идея. Со мной есть только одна проблема - меня практически не берет трава (такая вот особенность биохимии) а более тяжелые я как-то так и не собрался попробовать.
Вообще, это все по ссылке
dmzlj насчет "универсальный язык - это язык на котором можно написать его собственный рунтайм". Интуитивно это очень хорошая идея(проверено практикой), но как это описать формально теоретически я что-то пока не понял.
Клеить к сишной библиотеке ерланг через окамл - это хорошая идея. Со мной есть только одна проблема - меня практически не берет трава (такая вот особенность биохимии) а более тяжелые я как-то так и не собрался попробовать.
Вообще, это все по ссылке
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
no subject
Date: 2009-08-27 08:58 am (UTC)Да и на "лиспе" можно написать "лисп", я думаю.
no subject
Date: 2009-08-27 10:40 am (UTC)Для лиспа в SICP есть глава про метациклический интерпретатор, как раз про это.
Object Pascal, ака дельфи, писан на самом себе, как минимум частично.
Дотнет и жаба виртуальные машины написаны явно не на самих себе.
Тут есть непонятный момент. LISP можно написать на самом себе, но все равно внизу будет лежать некий базовый движок написанный на чем-то другом. По идее, его уже после можно будет переписать на сам LISP, чтобы код на лиспе генерил исполняемый машинный код из кода на лиспе. Но в таком случае, рунтаймом будет сочетание "машинный код+интерпретатор лиспа на лиспе".
Я когда обдумывал метациклический интерпретатор моделей для своих предметных областей(т.е. описание объектов в таких терминах, что можно и само это описание сделать в таком же стиле), то все равно получается - должен быть "рунтайм", обрабатывающий/исполняющий эти описания на целевой машине, и даже если сделать описания(модели) в терминах их самих - все равно рунтаймом будет сочетание "метамодель+ее переводчик в выполняемый код целевой машины".
no subject
Date: 2009-08-27 11:07 am (UTC)Я не очень понял эту фразу. Если компилятор лиспа (например, sbcl) генерирует сразу машинный код, то зачем ему какой-то "базовый движок"?
Или имеется в виду, что в образе приложения обычно идет и сам компилятор? Но это ведь исключительно для соответствия стандарту. Если в программе всякие eval (и вообще какое-то динамическое построение кода) не используются, то компилятор можно из образа вынести (что коммерческие компиляторы делать умеют). В таком случае, программа на лиспе, скомпилированная компилятором лиспа ничем не будет отличаться от программы на си, скомпилированной gcc.
no subject
Date: 2009-08-27 11:16 am (UTC)no subject
Date: 2009-08-27 11:36 am (UTC)Или имеется в виду, допустим, откуда взялся "самый первый" sbcl? Полагаю, он был написан на сях :) Но так ведь и компилятор gcc тоже, наверняка, когда-то был acceмблером.
no subject
Date: 2009-08-27 06:18 pm (UTC)no subject
Date: 2009-08-27 01:54 pm (UTC)no subject
Date: 2009-08-27 11:19 am (UTC)очень часто Тьюринг-полный ;-)
Соответственно, понятие "универсальный язык",
как правило, будет определять Тьюринг-полноту.
(забудем, что x86-ассемблер не-Тьюринг-полный).
Если говорить точнее, то надо
определять, что же такое runtime.
no subject
Date: 2009-08-27 11:21 am (UTC)Это как?
no subject
Date: 2009-08-27 11:24 am (UTC)Он сможет эмулировать машину Тьюринга,
да и бестиповую лямбду тоже.
Конечный он.
no subject
Date: 2009-08-28 01:06 am (UTC)Говоря еще грубее, практически любая программа является виртуальной машиной к какому-то языку.