Re[21]: Что не сделать на C#, что сделать на C++?
От: Gaperton http://gaperton.livejournal.com
Дата: 12.07.11 11:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>>>"можно сделать" и "реализуемо" — это одно и то же, синонимы.


FR>>"В теории практика от теории ничем ни отличается"


L>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.


Показываю отличие на практике.

Можно-ли сделать виртуальную машину x86 в браузерном JavaScript? Можно ли в ней загрузить Linux? Безусловно. Тьюринг-полнота, и все такое. Да вот оно, пожалуйста:

http://bellard.org/jslinux/

Следует-ли из этого, что на браузерном JavaScript можно реализовать продукт класса vmware? Неужели? Реализуй.
Re[18]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 12.07.11 11:25
Оценка:
Здравствуйте, Gaperton, Вы писали:


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.


Тут ты не совсем прав, эти маньяки кроме генераторов уже написали jit бэкэнд для X86 https://bitbucket.org/pypy/pypy/src/3bf39b9f938f/pypy/jit/backend/x86/
В общем сейчас PyPy вполне можно раскрутить и избавится от промежуточной трансляции в си.
Re[21]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 12.07.11 11:36
Оценка:
Здравствуйте, Lloyd, Вы писали:


FR>>"В теории практика от теории ничем ни отличается"


L>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.


Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью
написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это
скорее похоже на си, а не на питон.

Я думаю на C# получится тоже самое.
Re[22]: Что не сделать на C#, что сделать на C++?
От: Lloyd Россия  
Дата: 12.07.11 12:00
Оценка:
Здравствуйте, Gaperton, Вы писали:

G>Можно-ли сделать виртуальную машину x86 в браузерном JavaScript? Можно ли в ней загрузить Linux? Безусловно. Тьюринг-полнота, и все такое. Да вот оно, пожалуйста:


G>http://bellard.org/jslinux/


Умница, гапертон, прогрессируешь.

G>Следует-ли из этого, что на браузерном JavaScript можно реализовать продукт класса vmware?


Вот ты уже начал за уши подтягивать и браузер и vmware.
Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?

G>Неужели? Реализуй.


Из того, что я (или кто-то другой) это не могу этого реализовать не следует ровным счетом ничего, т.к. причинами этого будет вовсе не принцыпиальная невозможность сделать это, а банальное отсутствие у меня нужной квалификации, времени, ресурсов и так далее.
Re[22]: Что не сделать на C#, что сделать на C++?
От: Lloyd Россия  
Дата: 12.07.11 12:02
Оценка:
Здравствуйте, FR, Вы писали:

L>>Ну покажите отличия на практике, раз они есть. А то все теоритезируете и теоритезируете.


FR>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью

FR>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это
FR>скорее похоже на си, а не на питон.

И по каким причинам?

FR>Я думаю на C# получится тоже самое.


На C# и этого не получится, ибо никому оно не надо.
Re[23]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 12.07.11 12:14
Оценка:
Здравствуйте, Lloyd, Вы писали:

FR>>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью

FR>>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это
FR>>скорее похоже на си, а не на питон.

L>И по каким причинам?


По тем что в рантайме есть жесткие ограничения.
А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.

FR>>Я думаю на C# получится тоже самое.


L>На C# и этого не получится, ибо никому оно не надо.


Так твои оппоненты это же говорят.
Re[23]: Что не сделать на C#, что сделать на C++?
От: VoidEx  
Дата: 12.07.11 12:28
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Вот ты уже начал за уши подтягивать и браузер и vmware.

L>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?

А потом докажем, что между Землёй и Марсом не летает чайник Рассела.
Re[24]: Что не сделать на C#, что сделать на C++?
От: VoidEx  
Дата: 12.07.11 12:28
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, Lloyd, Вы писали:


L>>Вот ты уже начал за уши подтягивать и браузер и vmware.

L>>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?

VE>А потом докажем, что между Землёй и Марсом не летает чайник Рассела.


Ведь казалось бы, чего б ему там не летать?
Re[24]: Что не сделать на C#, что сделать на C++?
От: Lloyd Россия  
Дата: 12.07.11 15:50
Оценка:
Здравствуйте, FR, Вы писали:

FR>>>Тык берем тот же PyPy смотрим и видим реализацию разновидности 10 правила Гринспуна, чтобы все полностью

FR>>>написать включая и рантайм на питоне пришлось использовать настолько ограниченную версию RPython, что это
FR>>>скорее похоже на си, а не на питон.

L>>И по каким причинам?


FR>По тем что в рантайме есть жесткие ограничения.


Какие ограничения?

FR>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.


Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что

FR>>>Я думаю на C# получится тоже самое.


L>>На C# и этого не получится, ибо никому оно не надо.


FR>Так твои оппоненты это же говорят.


Нет, мои оппоненты говорят, что это невозможно.
Re[25]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 12.07.11 15:58
Оценка:
Здравствуйте, Lloyd, Вы писали:

FR>>По тем что в рантайме есть жесткие ограничения.


L>Какие ограничения?


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

FR>>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.


L>Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что


Опечатался должно было быть "компилироваться".
Re[26]: Что не сделать на C#, что сделать на C++?
От: Lloyd Россия  
Дата: 12.07.11 16:36
Оценка:
Здравствуйте, FR, Вы писали:

FR>>>По тем что в рантайме есть жесткие ограничения.


L>>Какие ограничения?


FR>Рантайм, ну или существенная его часть, должен работать без поддержки виртуальной машины.


Почему?

FR>>>А вызваны они тем что рантайму необходимо копироваться напрямую в машинный а не в байт код.


L>>Это я не распарсил. Что значит "рантайму необходимо копироваться"? И что


FR>Опечатался должно было быть "компилироваться".


Почему?
Re[24]: Что не сделать на C#, что сделать на C++?
От: Lloyd Россия  
Дата: 12.07.11 16:43
Оценка:
Здравствуйте, VoidEx, Вы писали:

L>>Может мы перестанем доказывать что-либо основываясь на неверной аналогии, а вернемся к первоначальному посту, который вызвал вопросы, и просто напишем причины, по которым на шарпе нельзя написать рантайм?


VE>А потом докажем, что между Землёй и Марсом не летает чайник Рассела.


Я-то как раз и не утверждаю, что реализация возможна, я не знаю. Если бы я достовено знал, то не спрашивал бы.

А вот мои оппоненты утверждают, что препятствия (чайник, ага) — таки существуют, но по каким-то причинам затрудняются их назвать.
Re[27]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 12.07.11 16:58
Оценка:
Здравствуйте, Lloyd, Вы писали:

FR>>Рантайм, ну или существенная его часть, должен работать без поддержки виртуальной машины.


L>Почему?


Во первых проблема старта, виртуальная машина не может работать без рантайма, следовательно начальный
загрузчик просто не может этой машиной пользоваться.
Во вторых массовые ВМ типа явовской или нетовской просто неэфективны для типичных рантаймовских задач.
Нужно прямое выделение памяти, реинтерпретация памяти и тому подобное.

FR>>Опечатался должно было быть "компилироваться".


L>Почему?


Проблема старта, слой взаимодействия с OS написанной обычно на си.
Re[28]: Что не сделать на C#, что сделать на C++?
От: hardcase Пират http://nemerle.org
Дата: 12.07.11 20:49
Оценка:
Здравствуйте, FR, Вы писали:

L>>Почему?


FR>Проблема старта, слой взаимодействия с OS написанной обычно на си.


Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).
/* иЗвиНите зА неРовнЫй поЧерК */
Re[29]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 13.07.11 00:58
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).


Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
Другое дело например штучка из MONO которая позволяет собирать полностью независимые автономные приложения, в теории да на этом можно сделать, на
практике это слишком дорого, на порядки вырастет объем рантайма и он будет существенно тормознее.
Re[30]: Что не сделать на C#, что сделать на C++?
От: Константин Б. Россия  
Дата: 13.07.11 04:04
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, hardcase, Вы писали:


H>>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).


FR>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.


Такой инструмент нельзя написать на шарпе?
Re[30]: Что не сделать на C#, что сделать на C++?
От: Константин Б. Россия  
Дата: 13.07.11 04:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, hardcase, Вы писали:


H>>Про NGEN слышал? Так вот такой слой (а также сборщик мусора, менеджер памяти, JIT компилятор и прочее всякое) принципиально реализуем с помощью некоторого инструмента похожего на NGEN. Более того, это уже было несколько раз сделано (в разной степени тяжести).


FR>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.


Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.
Re[31]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 13.07.11 04:36
Оценка:
Здравствуйте, Константин Б., Вы писали:

FR>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.


КБ>Такой инструмент нельзя написать на шарпе?


Можно и он даже уже написан для Singularity http://en.wikipedia.org/wiki/Bartok_(compiler) но результат точно
такой же как и я выше описывал для PyPy это отдельный ограниченный язык со своим рантаймом и отдельным GC и
компиляцией в нативный код.
Re[31]: Что не сделать на C#, что сделать на C++?
От: FR  
Дата: 13.07.11 04:40
Оценка:
Здравствуйте, Константин Б., Вы писали:

FR>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.


КБ>Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.


Можно но совершенно непрактично, это будет тянуть за собой цепочку фреймворков.
Можно конечно договорится писать рантайм например только на первом, но в результате для эффективности все-равно придем
к замене этого первого на си или его аналог как выше.
Re[32]: Что не сделать на C#, что сделать на C++?
От: Константин Б. Россия  
Дата: 13.07.11 05:18
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, Константин Б., Вы писали:


FR>>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.


КБ>>Кстати зачем вообще убирать зависимости? Загрузчик/jit-компилятор можно запускать под существующий CLR. А скомпилированный код уже под новой.


FR>Можно но совершенно непрактично, это будет тянуть за собой цепочку фреймворков.

FR>Можно конечно договорится писать рантайм например только на первом, но в результате для эффективности все-равно придем
FR>к замене этого первого на си или его аналог как выше.

А что вы понимаете под "эффективностью" в данном случае и почему она должна пострадать?
А от первого фреймворка легко избавится. Запускаем на нем наш ngen# и компилируем наш загрузчик в натив.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.