Re[52]: Вопрос к Vlad2: Nemerle & R#
От: VladD2 Российская Империя www.nemerle.org
Дата: 02.04.06 17:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Давай лучше футбольных хулиганов запретим. Хоть аналогия будет по прямее.

>> МН — это багодром. Далее см. выделенное жирным выше.
C>Ага, а GC — это костыль для тех, кто не умеет с памятью работать

Ты сам с собой что ли разговр ведешь?
Причем тут костыли, ЖЦ?

C>Я изначально говорил про большие языковые возможности ParrotVM. MH — это

C>одна из таких возможностей, которых нет в CLI.

Проделай простешое размышление. Ответь на вопрос. Если МС имевший код компилятора С++ поддерживающего МС делвая виртуальную машину для Явы и Дотнет не решил включать эту возможность, значи все же это было архитектурное решение, а не недостаток знаний или умений?

На сегодня есть ряд решений заменяющих МН и они вводятся в язык без именения виртуальной машины. Так что встраивание МН в ВМ не очень разумное решение.

Кстати, Эфил и С++ таки поддерживают МН не смотря на его отсуствие в ВМ дотнета.

C>Прекрасно знаю, еще со времен Java — просто переменные кладутся не в

C>стек а в поля служебного объекта.

И зачем тогда поддержка в рантайме? Ты не понимашь того что чем проще рантайм, тем проще его перенос?

Лучше потратить время на оптимизации устраняющие котокоживущие локальные объекты заменя их где можно стэковыми переменными.

C>А вот где continuation'ы? Настоящие, а не в виде сгенерированых конечных

C>автоматов?

continuation-ы — это алгоритмические сущьности. Их можно реализоывать разными путями. В том числе и на конечных автоаматах. Так что прежде чем продолжать обсуждение "настоящих" continuation-ов потрудись объяснить чем плохи решения на базе переписывания кода с использованием те хе КА.

>> Продолжения вообще алгоритмическая сущьность. Что тут будет поддерживать

>> VM? Сохранение полного своего состояния что ли?
C>"Легкие" потоки, например.

Легкие потоки уже есть в чистом виде. Эмулировать их на базе continuation-ов смысла нет.

C> Чтобы можно было нормально представлять

C>веб-навигацию, например (см. http://www.seaside.st).

Это можно сделть даже на базе итераторов, которые являются одним из вариантов реализации continuation-ов (хотя и ограниченым). Вот, напиример, очень похожая задача решенная с использованием итераторов Михаликом http://blogs.gotdotnet.ru/personal/mihailik/PermaLink.aspx?guid=cb5f993a-2371-4365-80cf-0605461a49c4

C>Ну и такую деталь, что методы являются частным случаем мультиметодов я

C>уж вообще говорить не буду.

Спорный вопрос. Эдак и глобальные функции можно считать частным случаем методов.

Мултиметоды могжно реализовать в языках вообще к ООП отношения не имеющим. Так что это именно алгоритмическая фича. К тому же заменяемая другими решениями.

>> Те же мультиметоды не ясно как связывать с вновь загруженными типами.

C>В ParrotVM — совершенно ясно, так как код динамический.

Дык а смысл тогда что-то было делать?

C> В .NET —

C>действительно ничего нормального не получится (о чем я говорил уже раза
C>три).

Сделать то можно все что угодно. Вопрос только в скоросте полученного решения и в востребованности возможности. То что востребованость нулевая и так видно. А вот с производительностью... Почти уверен, что она будет низкой.

>> C>Нет их.

>> Да? Ну, ты, былин, эксперт. Жаль что ты мне раньше не сказал. А то я уже
>> 4 года их использую.
C>Еще раз говорю — это _рефлексивные_ вызовы, а не динамические.

Сеньезно? И делегаты? Ну, ты действительно эксперт. К тому же поведуй мне разницу между "рефлективными" и "динамическими" вызовами.

C> Динамику

C>можно эмулировать с помощью словарей делегатов и рефлексии, но в CLI ее нет.

Кого "её"?

C>Опять же _тебе_ они нафиг не упали, а вот мне они очень даже нужны.


Воспользуешся классом, если что. В нормальном языке разнины ты не заметишь.

>> Если что их не трудо

>> будет оформить в виде класса. Если конечно компилятор полноценный.
C>Оформите quadchar (32-битный символ) в виде класса на C#, пожалуйста.

Зачем? Проще и разумнее строку. Только опять же смысла нет. С поддержкой юникода и так все ОК.

C>Чтобы с ним работать было не хуже чем с обычным char'ом, JIT его понимал

C>и использовал оптимизации типа SSE2/AltiVec и т.п.

Оптимизации — это проблемы джита. А символы всегда хоаняться в базовых типах. char в дотнете это просто UInt16. Нет проблем использовать вместо него хоть UInt64. Бросто как всегда на фиг не упало. Для возни с юникодом есть соотвествющий API.

>> C>Не надо говорить слова "поддержка ООП", пожалуйста. Это абсолютно

>> C>бессмысленная фраза.
>> Дык, не говори. Это же твои слова.
C>Где я это сказал? Вроде я ничего такого в последнее время не пил...

Ну, ты эта... следи за тем, что говоришь. А говорил ты это выше по теме. Ты же начал обсуждение поддржки ООП ВМ-мами.

>> C>Ну да, а все С-программы тоже совместимы. Я ведь могу экспортировать и

>> C>импортировать Сшные функции!
>> Попробуй импортировать в Borland C++ 3.1 функцию из библиотеки созданной
>> GCC, к примеру.
C>В BC3.1 не получится. А вот в Watcom — элементарно.

Неполучится? А что так? А вот между Моно и Дотнетам полная бинарная совместимось. Забавно правда?

Выходит, что у С++ хреново даже в совместимости между собственными компиляторам. О чем тогда говорить на междязыковом и межплатформном уровне?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.