Здравствуйте, FR, Вы писали:
FR>Здравствуйте, Константин Б., Вы писали:
FR>>>Слышал, но чем он может тут помощь не вижу. Нужен инструмент позволяющий компилировать в автономный независимый нативный код, NGEN же зависимости не убирает.
КБ>>Такой инструмент нельзя написать на шарпе?
FR>Можно и он даже уже написан для Singularity http://en.wikipedia.org/wiki/Bartok_(compiler) но результат точно FR>такой же как и я выше описывал для PyPy это отдельный ограниченный язык со своим рантаймом и отдельным GC и FR>компиляцией в нативный код.
"Можно, но результат точно такой же — нельзя". Если можно — то задача решена. Если нельзя — то почему?
Здравствуйте, Константин Б., Вы писали:
КБ>А что вы понимаете под "эффективностью" в данном случае и почему она должна пострадать?
Под эффективностью понимаю быстродействие результирующего кода.
Потому-что это задачи для языка класса си, и если хотим той же эффективности в результате все равно будем
писать на чем-то си подобном (даже если это формально будет компилятор C# или питона), во всяком случае пока не
допилят языки типа ATS, но и там код будет достаточно низкоуровневым и объемным.
Как пример такой код из PyPy:
def _assemble_bootstrap_direct_call(self, arglocs, jmppos, stackdepth):
if IS_X86_64:
return self._assemble_bootstrap_direct_call_64(arglocs, jmppos, stackdepth)
# XXX pushing ebx esi and edi is a bit pointless, since we store
# all regsiters anyway, for the case of guard_not_forced
# XXX this can be improved greatly. Right now it'll behave like
# a normal call
nonfloatlocs, floatlocs = arglocs
self._call_header_with_stack_check()
self.mc.LEA_rb(esp.value, self._get_offset_of_ebp_from_esp(stackdepth))
for i in range(len(nonfloatlocs)):
loc = nonfloatlocs[i]
if isinstance(loc, RegLoc):
assert not loc.is_xmm
self.mc.MOV_rb(loc.value, (2 + i) * WORD)
loc = floatlocs[i]
if isinstance(loc, RegLoc):
assert loc.is_xmm
self.mc.MOVSD_xb(loc.value, (1 + i) * 2 * WORD)
tmp = eax
xmmtmp = xmm0
for i in range(len(nonfloatlocs)):
loc = nonfloatlocs[i]
if loc is not None and not isinstance(loc, RegLoc):
self.mc.MOV_rb(tmp.value, (2 + i) * WORD)
self.mc.MOV(loc, tmp)
loc = floatlocs[i]
if loc is not None and not isinstance(loc, RegLoc):
self.mc.MOVSD_xb(xmmtmp.value, (1 + i) * 2 * WORD)
assert isinstance(loc, StackLoc)
self.mc.MOVSD_bx(loc.value, xmmtmp.value)
endpos = self.mc.get_relative_pos() + 5
self.mc.JMP_l(jmppos - endpos)
assert endpos == self.mc.get_relative_pos()
как-то мало похож на питон
КБ>А от первого фреймворка легко избавится. Запускаем на нем наш ngen# и компилируем наш загрузчик в натив.
ngen разве позволяет делать независимые бинарники которые могут запускаться на голой машине без установленных
фреймворков?
Здравствуйте, FR, Вы писали:
FR>ngen разве позволяет делать независимые бинарники которые могут запускаться на голой машине без установленных FR>фреймворков?
Принципиального ограничения нет. Но вообще-то речь шла о специальной версии ngen (ngen#), которая будет способна это сделать, другое дело что с практической точки зрения это пока никому небыло нужно.
Здравствуйте, hardcase, Вы писали:
H>А что такого в этом коде, что его всенепременно следует писать на Си?
Я такого не утверждал, я говорил лишь все-равно получится также как и на си, высокоуровневость
шарпа или питона останется невостребованной и на практике большого смысла городить для этого
версию языка нет, на си и по трудозатратам получится очень близко и результирующий код будет
более эффективным за счет того что лучшие оптимизирующие компиляторы сишные и переносимость
между платформами будет гораздо выше.
Здравствуйте, FR, Вы писали:
FR>Я такого не утверждал, я говорил лишь все-равно получится также как и на си, высокоуровневость FR>шарпа или питона останется невостребованной и на практике большого смысла городить для этого FR>версию языка нет, на си и по трудозатратам получится очень близко и результирующий код будет FR>более эффективным за счет того что лучшие оптимизирующие компиляторы сишные и переносимость FR>между платформами будет гораздо выше.
На С/С++ трудозатраты будут меньше, так как не надо будет тратить время на глупости, вроде разработки волшебного компилятора "языка, похожего на С#, но с отличающейся семантикой".
Здравствуйте, Gaperton, Вы писали:
G>Если не вдаваться в детали (и в смысл того, что означает "забустрапить" в данном случае) — то, разумеется, никаких. А если вдаваться, то на реализацию JIT-компилятора и сборщика мусора на C# было бы интересно посмотреть. Покажешь, никаких проблем ведь вроде, так?
Библиотеки времени исполнения (англ. runtime) и сборщик мусора написаны на Sing# (специально доработанном для данного проекта диалекте C#) с использованием небезопасного режима (англ. unsafe mode).
Лучше попробуй подумать, что принципиально мешает писать на шарпе GC? Про джит я уже и не заикаюсь. Простой компилятор. Если уж их на Питонах пишут, то на шарпах и подавно можно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, khimiki, Вы писали:
K>Если отвечаешь за свои слова, выложи примерчик: форма, на форме область, в которой отрисовывается треугольник с помощью OpenGL и ещё на форму положи бегуночки, перемещая которые мы вращаем треугольник.
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, adontz, Вы писали:
A>>На C#/.Net не стоит писать обработку мультимедиа (крайне низкий уровень оптимизациив ычислений, разница на порядок).
G>обработку мультимедиа нынче можно писать на GPU, но там и не C++ и не C#
обработку мультимедиа нынче можно модно писать на GPU, но там и не C++ и не C#
модно
Всё сказанное выше — личное мнение, если не указано обратное.
Здравствуйте, VladD2, Вы писали:
FR>>Элита сейчас только немерле признает
VD>Батенька, да вы и здесь немерл умудрились упомянуть? Да вы маньяк, батенька.
M>>ЗЗЫ. Ни против Немерле, ни против людей, его разрабатывающих, лично ничего не имею
VD>Врешь.
На дату сообщения посмотри Тогда еще не быо настолько оторванных от реальности сказочников, хотя тенденция уже прослеживалась. Сейчас же некоторые (не будем показывать пальцем) проходят весь указанный мной список самостоятельно, без подсказок, вне зависиости от темы, в которой они участвуют, и даже не задумываясь, имеет ли то, что они говорят, отношение к топику.
Здравствуйте, Mamut, Вы писали:
M>>>ЗЗЫ. Ни против Немерле, ни против людей, его разрабатывающих, лично ничего не имею
VD>>Врешь.
M>На дату сообщения посмотри
А у тебя дат что-то зависит?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, FR, Вы писали:
VD>>Батенька, да вы и здесь немерл умудрились упомянуть? Да вы маньяк, батенька.
FR>Извини, обещаю взамен рекламу D в форуме немерле
Я не против. Только странный выбор форума. Там над тобой только посмеются. Здесь бы это было более разумно.
Или это твое сообщение означает, что за пределами форума "Nemerle" об оном нельзя говорить, чтобы вас не раздражать?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Я не против. Только странный выбор форума. Там над тобой только посмеются. Здесь бы это было более разумно.
Там как раз по теме, обсуждаете шаблоны и не смотрите на лучшую их реализацию.
VD>Или это твое сообщение означает, что за пределами форума "Nemerle" об оном нельзя говорить, чтобы вас не раздражать?
Я разрешаю.
Если серъезно то здесь я про немерле как язык и не говорил, я говорил про местную элиту
Здравствуйте, FR, Вы писали:
FR>Там как раз по теме, обсуждаете шаблоны и не смотрите на лучшую их реализацию.
Если в таком ключе, то милости просим. Мы только "за", если кто-то интересные идеи предлагает.
В рекламе D тоже нет ничего плохого. Это даже очень хорошо. Язык во многом интересеный. И если на него свалило бы несколько сотен С++-ников я бы был только рад.
Так что лучше вместо неконструктивных упреков в "рекламе" Немерла, занялся бы рекламой D. А то ведь, если не рекламировать, то никто о интересных новых языках и знать то не будет. Или будет знать, что есть, что-то, но на фиг нужно не понять.
VD>>Или это твое сообщение означает, что за пределами форума "Nemerle" об оном нельзя говорить, чтобы вас не раздражать?
FR>Я разрешаю. FR>Если серъезно то здесь я про немерле как язык и не говорил, я говорил про местную элиту
Ну, вот давай будем друг другу относиться по уважительное.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.