Вот

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, почему нет?

Date: 2009-08-27 11:19 am (UTC)
From: [identity profile] nivanych.livejournal.com
Дело в том, что runtime
очень часто Тьюринг-полный ;-)
Соответственно, понятие "универсальный язык",
как правило, будет определять Тьюринг-полноту.
(забудем, что x86-ассемблер не-Тьюринг-полный).

Если говорить точнее, то надо
определять, что же такое runtime.

Date: 2009-08-27 11:21 am (UTC)
From: [identity profile] metaclass.livejournal.com
"x86-ассемблер не-Тьюринг-полный"
Это как?

Date: 2009-08-27 11:24 am (UTC)
From: [identity profile] nivanych.livejournal.com
Так.
Он сможет эмулировать машину Тьюринга,
да и бестиповую лямбду тоже.
Конечный он.

Date: 2009-08-28 01:06 am (UTC)
From: [identity profile] clayrat.livejournal.com
Грубо говоря, этот "рантайм" есть некая виртуальная машина.

Говоря еще грубее, практически любая программа является виртуальной машиной к какому-то языку.

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 Jun. 23rd, 2025 02:19 pm
Powered by Dreamwidth Studios