Здравствуйте, Lloyd, Вы писали:
L>>>"можно сделать" и "реализуемо" — это одно и то же, синонимы.
FR>>"В теории практика от теории ничем ни отличается"
L>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.
Показываю отличие на практике.
Можно-ли сделать виртуальную машину x86 в браузерном JavaScript? Можно ли в ней загрузить Linux? Безусловно. Тьюринг-полнота, и все такое. Да вот оно, пожалуйста:
G>Забавно получается, когда начинаешь не копипастить из сети все подряд по ключевым словам, как поисковик, а пытаться читать инфу по собственным ссылкам, и вдаваться в детали, правда? Первое открытие — RPython это по большому счету не Python, а другой язык.
Ну RPython строгое подмножество Python, но сами разработчики да признаются что в результате (для кода уровня интерпретатора) получили улучшенный си
This interpreter-level implementation looks much more similar to the C source code. It is still more readable than its C counterpart because it doesn’t contain memory management details and can use Python’s native exception mechanism.
Вообще у них все получилось полностью аналогично OS есть уровень интерпретатора аналог уровня ядра и есть прикладной уровень.
G>Копнув глубже, поймешь, что PyPy это генератор рантаймов в разные бэкэнды, а не сам рантайм. С CLR у этой штуки достаточно мало общего. Для иллюстрации этого достаточно осознать, что CLR — это один из вариантов бэкэнда для PyPy.
FR>>"В теории практика от теории ничем ни отличается"
L>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.
Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью
написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это
скорее похоже на си, а не на питон.
Здравствуйте, Gaperton, Вы писали:
G>Можно-ли сделать виртуальную машину x86 в браузерном JavaScript? Можно ли в ней загрузить Linux? Безусловно. Тьюринг-полнота, и все такое. Да вот оно, пожалуйста:
G>http://bellard.org/jslinux/
Умница, гапертон, прогрессируешь.
G>Следует-ли из этого, что на браузерном JavaScript можно реализовать продукт класса vmware?
Вот ты уже начал за уши подтягивать и браузер и vmware.
Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?
G>Неужели? Реализуй.
Из того, что я (или кто-то другой) это не могу этого реализовать не следует ровным счетом ничего, т.к. причинами этого будет вовсе не принцыпиальная невозможность сделать это, а банальное отсутствие у меня нужной квалификации, времени, ресурсов и так далее.
Здравствуйте, FR, Вы писали:
L>>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.
FR>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью FR>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это FR>скорее похоже на си, а не на питон.
И по каким причинам?
FR>Я думаю на C# получится тоже самое.
На C# и этого не получится, ибо никому оно не надо.
Здравствуйте, Lloyd, Вы писали:
FR>>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью FR>>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это FR>>скорее похоже на си, а не на питон.
L>И по каким причинам?
По тем что в рантайме есть жесткие ограничения.
А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.
FR>>Я думаю на C# получится тоже самое.
L>На C# и этого не получится, ибо никому оно не надо.
Здравствуйте, Lloyd, Вы писали:
L>Вот ты уже начал за уши подтягивать и браузер и vmware. L>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?
А потом докажем, что между Землёй и Марсом не летает чайник Рассела.
Здравствуйте, VoidEx, Вы писали:
VE>Здравствуйте, Lloyd, Вы писали:
L>>Вот ты уже начал за уши подтягивать и браузер и vmware. L>>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?
VE>А потом докажем, что между Землёй и Марсом не летает чайник Рассела.
Здравствуйте, FR, Вы писали:
FR>>>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью FR>>>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это FR>>>скорее похоже на си, а не на питон.
L>>И по каким причинам?
FR>По тем что в рантайме есть жесткие ограничения.
Какие ограничения?
FR>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.
Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что
FR>>>Я думаю на C# получится тоже самое.
L>>На C# и этого не получится, ибо никому оно не надо.
FR>Так твои оппоненты это же говорят.
Здравствуйте, Lloyd, Вы писали:
FR>>По тем что в рантайме есть жесткие ограничения.
L>Какие ограничения?
Рантайм, ну или существенная его часть, должен работать без поддержки виртуальной машины.
FR>>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.
L>Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что
Здравствуйте, FR, Вы писали:
FR>>>По тем что в рантайме есть жесткие ограничения.
L>>Какие ограничения?
FR>Рантайм, ну или существенная его часть, должен работать без поддержки виртуальной машины.
Почему?
FR>>>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.
L>>Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что
FR>Опечатался должно было быть "компилироваться".
Здравствуйте, VoidEx, Вы писали:
L>>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?
VE>А потом докажем, что между Землёй и Марсом не летает чайник Рассела.
Я-то как раз и не утверждаю, что реализация возможна, я не знаю. Если бы я достовено знал, то не спрашивал бы.
А вот мои оппоненты утверждают, что препятствия (чайник, ага) — таки существуют, но по каким-то причинам затрудняются их назвать.
Здравствуйте, Lloyd, Вы писали:
FR>>Рантайм, ну или существенная его часть, должен работать без поддержки виртуальной машины.
L>Почему?
Во первых проблема старта, виртуальная машина не может работать без рантайма, следовательно начальный
загрузчик просто не может этой машиной пользоваться.
Во вторых массовые ВМ типа явовской или нетовской просто неэфективны для типичных рантаймовских задач.
Нужно прямое выделение памяти, реинтерпретация памяти и тому подобное.
FR>>Опечатался должно было быть "компилироваться".
L>Почему?
Проблема старта, слой взаимодействия с OS написанной обычно на си.
Здравствуйте, FR, Вы писали:
L>>Почему?
FR>Проблема старта, слой взаимодействия с OS написанной обычно на си.
Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).
Здравствуйте, hardcase, Вы писали:
H>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).
Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
Другое дело например штучка из MONO которая позволяет собирать полностью независимые автономные приложения, в теории да на этом можно сделать, на
практике это слишком дорого, на порядки вырастет объем рантайма и он будет существенно тормознее.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, hardcase, Вы писали:
H>>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).
FR>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, hardcase, Вы писали:
H>>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).
FR>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.
Здравствуйте, Константин Б., Вы писали:
FR>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
КБ>Такой инструмент нельзя написать на шарпе?
Можно и он даже уже написан для Singularity http://en.wikipedia.org/wiki/Bartok_(compiler) но результат точно
такой же как и я выше описывал для PyPy это отдельный ограниченный язык со своим рантаймом и отдельным GC и
компиляцией в нативный код.
Здравствуйте, Константин Б., Вы писали:
FR>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
КБ>Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.
Можно но совершенно непрактично, это будет тянуть за собой цепочку фреймворков.
Можно конечно договорится писать рантайм например только на первом, но в результате для эффективности все-равно придем
к замене этого первого на си или его аналог как выше.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Константин Б., Вы писали:
FR>>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
КБ>>Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.
FR>Можно но совершенно непрактично, это будет тянуть за собой цепочку фреймворков. FR>Можно конечно договорится писать рантайм например только на первом, но в результате для эффективности все-равно придем FR>к замене этого первого на си или его аналог как выше.
А что вы понимаете под "эффективностью" в данном случае и почему она должна пострадать?
А от первого фреймворка легко избавится. Запускаем на нем наш ngen# и компилируем наш загрузчик в натив.