Вот

Aug. 27th, 2009 10:52 am
metaclass: (Default)
[personal profile] metaclass
Оставлю ссылку себе, там маньяки опять языки и парадигмы обсуждают:

Клеить к сишной библиотеке ерланг через окамл - это хорошая идея. Со мной есть только одна проблема - меня практически не берет трава (такая вот особенность биохимии) а более тяжелые я как-то так и не собрался попробовать.

Вообще, это все по ссылке [livejournal.com profile] dmzlj насчет "универсальный язык - это язык на котором можно написать его собственный рунтайм". Интуитивно это очень хорошая идея(проверено практикой), но как это описать формально теоретически я что-то пока не понял.

Date: 2009-08-27 08:58 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Пойнт Перцева --- что Си является таким языком. И действительно.

Да и на "лиспе" можно написать "лисп", я думаю.

Date: 2009-08-27 10:40 am (UTC)
From: [identity profile] metaclass.livejournal.com
Я не совсем понимаю, что для Си является "рунтаймом".
Для лиспа в SICP есть глава про метациклический интерпретатор, как раз про это.

Object Pascal, ака дельфи, писан на самом себе, как минимум частично.
Дотнет и жаба виртуальные машины написаны явно не на самих себе.

Тут есть непонятный момент. LISP можно написать на самом себе, но все равно внизу будет лежать некий базовый движок написанный на чем-то другом. По идее, его уже после можно будет переписать на сам LISP, чтобы код на лиспе генерил исполняемый машинный код из кода на лиспе. Но в таком случае, рунтаймом будет сочетание "машинный код+интерпретатор лиспа на лиспе".
Я когда обдумывал метациклический интерпретатор моделей для своих предметных областей(т.е. описание объектов в таких терминах, что можно и само это описание сделать в таком же стиле), то все равно получается - должен быть "рунтайм", обрабатывающий/исполняющий эти описания на целевой машине, и даже если сделать описания(модели) в терминах их самих - все равно рунтаймом будет сочетание "метамодель+ее переводчик в выполняемый код целевой машины".

Date: 2009-08-27 11:07 am (UTC)
From: [identity profile] swizard.livejournal.com
> Тут есть непонятный момент. LISP можно написать на самом себе, но все равно внизу будет лежать некий базовый движок написанный на чем-то другом.

Я не очень понял эту фразу. Если компилятор лиспа (например, sbcl) генерирует сразу машинный код, то зачем ему какой-то "базовый движок"?

Или имеется в виду, что в образе приложения обычно идет и сам компилятор? Но это ведь исключительно для соответствия стандарту. Если в программе всякие eval (и вообще какое-то динамическое построение кода) не используются, то компилятор можно из образа вынести (что коммерческие компиляторы делать умеют). В таком случае, программа на лиспе, скомпилированная компилятором лиспа ничем не будет отличаться от программы на си, скомпилированной gcc.

Date: 2009-08-27 11:16 am (UTC)
From: [identity profile] metaclass.livejournal.com
Если компилятор написан на самом лиспе то тогда все идеально.

Date: 2009-08-27 11:36 am (UTC)
From: [identity profile] swizard.livejournal.com
Дак он и написан на самом себе, и при компиляции для бутстрапа бинарник его же и нужен.

Или имеется в виду, допустим, откуда взялся "самый первый" sbcl? Полагаю, он был написан на сях :) Но так ведь и компилятор gcc тоже, наверняка, когда-то был acceмблером.

Date: 2009-08-27 06:18 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
Идеально? Тогда я бы хотел узнать как будет написан сборщик мусора на языке, которому самому нужен сборщик мусора. GC - как раз важная часть рантайма.

Date: 2009-08-27 01:54 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
ну, допустим рантаймом Си мы будем считат crt, почему нет?

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 12th, 2025 09:46 am
Powered by Dreamwidth Studios