Про языки программирования

Тема в разделе "WASM.HEAP", создана пользователем EvilsInterrupt, 23 окт 2008.

  1. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    SadKo
    В MSIL'е тоже есть Reflection. И классы для создания .NET'овских сборок. Что есть в .NET и нет в Java? - C++ со способностью производить Managed+Unmanaged продукты (вроде бы) :)

    Booster
    В MSIL'е это называется метаданными, т. е. данные описывающие данные :)

    Конечно! К примеру можно взять и написать на любимом асме встраиваемую виртуальную машину размером в 4Kb или еще того гляди меньше :)
     
  2. bohdant

    bohdant New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2008
    Сообщения:
    22
    SadKo
    Я не знаток Java, но на сколько я понял в ActiveOberone нечто подобное есть.
    Oberone -100% компилируемый язык, без всяких промежуточных кодов. (кстати для справки Java - гебрид Оберона и Си :)) )
     
  3. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    АП.
    Скомпилил я тут код на с++ в конфигурации "release" (/Ox /Ob2 /Oi /GL ...), и несколько удивился...

    исходный код
    Код (Text):
    1. __declspec(dllexport) void __cdecl OnRenderHook(FPlayerSceneNode *PlayerSceneNode,FRenderInterface *RenderInterface) {
    2.     FRenderTarget *RenderTarget = (FRenderTarget *)(PlayerSceneNode->Viewport+0xDC); //[[arg1]+4]+0xDC
    3.     FCanvasUtil CanvasUtil(RenderTarget,RenderInterface);
    4.     FColor Color;   Color.c=0xFFFF0000;
    5.     CanvasUtil.DrawLine(100,200,300,400,Color,0);
    6.     CanvasUtil.~FCanvasUtil();
    7.     return; }
    дизасм:
    Код (Text):
    1. .text:10001000 void __cdecl OnRenderHook(struct FPlayerSceneNode *, class FRenderInterface *) proc near
    2. .text:10001000                                         ; CODE XREF: .text:10001085p
    3. .text:10001000
    4. .text:10001000 var_11C         = dword ptr -11Ch
    5. .text:10001000 var_118         = dword ptr -118h
    6. .text:10001000 var_114         = dword ptr -114h
    7. .text:10001000 var_110         = dword ptr -110h
    8. .text:10001000 var_104         = byte ptr -104h
    9. .text:10001000 arg_0           = dword ptr  4
    10. .text:10001000 arg_4           = dword ptr  8
    11. .text:10001000
    12. .text:10001000                 mov     ecx, [esp+arg_0]
    13. .text:10001004                 mov     edx, [ecx+4]
    14. .text:10001007                 mov     eax, [esp+arg_4]
    15. .text:1000100B                 sub     esp, 104h
    16. .text:10001011                 push    eax
    17. .text:10001012                 add     edx, 0DCh
    18. .text:10001018                 push    edx
    19. .text:10001019                 lea     ecx, [esp+10Ch+var_104]
    20. .text:1000101D                 call    FCanvasUtil::FCanvasUtil(FRenderTarget *,FRenderInterface *)
    21. .text:10001022                 fld     ds:flt_1000C2B0
    22. .text:10001028                 push    0
    23. .text:1000102A                 mov     eax, 0FFFF0000h
    24. .text:1000102F                 push    eax
    25. .text:10001030                 sub     esp, 10h
    26. .text:10001033                 fstp    [esp+11Ch+var_110]
    27. .text:10001037                 lea     ecx, [esp+11Ch+var_104]
    28. .text:1000103B                 fld     ds:flt_1000C2AC
    29. .text:10001041                 fstp    [esp+11Ch+var_114]
    30. .text:10001045                 fld     ds:flt_1000C2A8
    31. .text:1000104B                 fstp    [esp+11Ch+var_118]
    32. .text:1000104F                 fld     ds:flt_1000C2A4
    33. .text:10001055                 fstp    [esp+11Ch+var_11C]
    34. .text:10001058                 call    FCanvasUtil::DrawLine(float,float,float,float,FColor,int)
    35. .text:1000105D                 lea     ecx, [esp+104h+var_104]
    36. .text:10001060                 call    FCanvasUtil::~FCanvasUtil(void)
    37. .text:10001065                 lea     ecx, [esp+104h+var_104]
    38. .text:10001068                 call    FCanvasUtil::~FCanvasUtil(void)
    39. .text:1000106D                 add     esp, 104h
    40. .text:10001073                 retn
    в частности "порадовала" работа со стеком %)
    если что, float==dword
     
  4. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Stiver
    Нативный код тоже в некоторой степени адаптируется под текущие условия, только роль JIT и HotSpot выполняет сам процессор (кеширование, предсказание переходов). Вопрос только в балансе между гибкостью адаптации и её стоимостью. Мне кажется, что с этой точки зрения MSIL слишком абстрагирован (насчёт Java bytecode не знаю).
    Возможно, более эффективным был бы многоуровневый IL.

    CyberManiac
    GCC даёт такую возможность (__builtin_expect и т.п.).
     
  5. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    CyberManiac
    Вообще-то для прикладного ПО кроссплатформенность -- вещь очень важная, нужная и полезная. А вот скорость выполнения там в подавляющем большинстве случаев особой роли не играет, и поэтому некоторое превосходство "нормальных EXE" над программами на промежуточных языках роли не играет.

    Его не всегда можно указать.

    Осей и аппаратных платформ -- десятки, если уж на то пошло. Даже на ПК из "вменяемых" сходу могу назвать Винду, Линух, Солярис, МакОС, ФриБЗДу; к ним можно приплюсовать ещё всякие ОСРВ, работающие на платформе х86, например, QNX. А ПК -- это не единственная платформа.
     
  6. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    SII
    Прикладуха в 99% случаев запускается под одной-очень-известной-операционной-системой. Если другая-менее-известная-операционная-система имела хотя бы 10% десктопов, можно было бы говорить о важности. А так сам факт существования на десктопе чего-то, кроме Windows - в пределах статистической ошибки.

    МакОСь де-факто в состоянии издыхания, к тому же ныне это не более, чем перелицованная Хря в комплекте с иТюнесом (жизнеспособность которого ввиду появления кучи плееров без заморочек и выхода Nokia 5800 тоже сомнительна). И мне как-то с трудом представляется причина, по которой можно поставить ту же Хрю вместо обычного Линуха (ну кроме истерических визгов "я ненавижу опен-сорс!").

    Что-то мне подсказывает, что ОС реального времени покупают совсем не для того, чтобы запускать на них OpenOffice или даже Oracle, а для крайне специфических применений, где кроссплатформенность - пофигу.

    Де-факто Wintel повсюду, Wintel - везде, в каждой помойке и в кажой ...
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    про армы не забываем. десктопы доживают свое.

    не совсем. оборудование современнее/дешевле установить - это одно и оно меняется (а зачем бы еще ось была нужна?) при достаточно долгом выпуске девайсов, а вот всю атс (например) переписывать (некая бд там есть тоже) - совсем другое. В qnx (например) упор сделан на легкое написание драйверов и удаленные возможности - своего рода суперкроссплатформенность.
     
  8. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _basmp_
    Это про перемабилы-недокомпьютеры? Под них по определению ничего серьёзного не делается и делаться не будет никогда. А во всякое встраиваемое и так компилируют в нативный код.

    Это чистой воды фантастика. Даже ноутбук в качестве единственного компьютера неудобен а кое-где - вообще непригоден. А всё, что мельче, может претендовать разве что на роль MP3-плеера и карманной игрушки а-ля "Денди". То, что с ЖПС, ещё и для навигации сгодится. Но ни одно существо в здравом уме с графикой, к примеру, на этом работать не станет.

    Да в любой программе та часть, которая не связана с ОС и железом, является переносимой. А которые связаны - всё равно придётся переписывать. В любой "кроссплатформенной" программе сложнее "хеллы ворлда" вся эта "кроссплатформенность" сидит на высоченной куче IFDEFов.
     
  9. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    CyberManiac
    Бред сказали. "Прикладуха" -- это далеко не только Ворд с Экселом и даже не только 1С-Бухгалтерия. И запускается она не только на десктопах, но и на ПК-серверах, и на мобильных устройствах, и на мэйнфреймах...

    Снова бред.

    А мне что-то подсказывает, что ОСРВ покупают для запуска прикладных программ, пускай и достаточно специфичных. И далеко не всегда к этому ПО выдвигается требование сверхнадёжности, а само применение является крайне специфическим. Задачи разные бывают.

    Снова бред. Если Вы не видали ничего другого, это говорит лишь о широте Вашего кругозора, а не о состоянии дел в мире.
     
  10. _proteus

    _proteus Member

    Публикаций:
    0
    Регистрация:
    25 мар 2008
    Сообщения:
    192
    Адрес:
    Казань
    А что тогда? Просветите, плиз.
    +1 скорее винда есть перелицованная макОСь.
     
  11. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    какой аргументированный спор...
     
  12. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    CyberManiac
    Мда? По распространенности и вовлеченности производителей итд они уже переплевывают х86 (камень размером с ноготь имеет все что надо на борту, включая флоат дсп блок и граф ускоритель, идет на 900Мгц и выделяет порядка ватта - запас по развитию - в х86 на таких частотах уже кулер с кулак стоял). Появляются мультиядерные варианты и по частотам догоняют. Да что там. С пня-про х86 - только обертка для чегото 'перемабильного'. АМД еще раньше на это пошли. А 64-е уклонения от канонов х86? Вперед к мобилам?

    все верно. на предриятиях - от шкафов, до солидных тумбочек + куча проводков - ящичков. Это только пульт. На местах - от МК и до тумбочки. Даже дома один комп - не хорошо. Писать, таки лучше на ноте. А вот с железом ковыряться - что нить попрепарируемее (не обязательно десктоп). Офисный десктоп - попытка найти универсальную середину когда кампы стоили только чуть менее бомбардировщика. Счас, когда комп стоит от 0 нет необходимости эту универсальность искать и ограничиваться 1м универсально-неудобным компом.

    всякую графику, имхо, лучше мучить через терминальный планшет на батарейках с разрешением/тачскрином под легкой распределенкой, а расчетно-отрисовывающе-хранительная часть, при этом, будет вирелесс на сервере-тумбочке в кладовке. Имхо наилучший вариант для креатива. Перемещаемся в творческую атмосферу и фоткаем/пишем - творим А куда вы со своим десктопом?

    ради интереса гляньте как устроены qnx драйвера. Фактически они состоят из нескольких частей. Одни берут значения из именованого канала и пишут (или наоборот) их в номерной порт/память и больше ничего. Эта часть ессно непереносима, но там всего 3 строчки. Другие - работают только с каналами (уровень скрывающий каналпривязаность под посих апи есть тоже). Они реализуют все алгосы работы с железными интерфейсами/протоколами, которые уже кроссплатформенны вполне. Те работа по портированию, в основном, заключается в замене одной-двух машкоманд в модуле низшего уровня, ну и номера порта.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    _proteus
    Например, СУБД -- тоже прикладное ПО. IBM DB/2 отнюдь не только на ПК работает, но ещё и как минимум на мэйнфреймах IBMовских. Oracle на разных платформах работает, про MySQL вообще промолчим. Или, например, игрушки. Они не только на ПК встречаются, но ещё, например, на консолях, КПК, смартфонах и т.д. и т.п.

    Нынешняя МакОС, если не ошибаюсь, базируется на переработанном ядре ФриБЗДы. В любом случае ни она к Винде, ни Винда к ней отношения не имеет. Речь, есно, собственно об оси, а не о том, что видит пользователь на экране.

    _basmp_
    Не всегда, не всегда... При некоторых задачах чем больше экран -- тем лучше. Ну а валяться на диване с 30-дюймовым планшетом несколько затруднительно :)
     
  14. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    SII
    ок. Будем валяться на кровати с 30-дюймовым моником, мышкой, клавой, проводами и системником в качестве подушки и упсом на пузе. (хе. прям щас валяюсь в кровати с 17'' нотом и ниче)
    Кроме того для планшета замутить актуальную подставку из модных щас неструганых досок - как два пальца об сидюк. О, еще +. Если планшет потеряется/испортится/пропьется/конфискуется, то вся ваша работа - дома в специально защищенной тундочке.
     
  15. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    _basmp_
    Ну да. В мабилах, роутерах и прочих тостерах. Если вернуться к исходному посылу - нахрена в эти тостеры встраивать JIT-компиляторы (собсно, в тостеры и не встраивают, производители тостеров отличаются умом и сообразительностью, встраивают - в перемабилы и недокомпьютеры), если можно компильнуть единожды в нативный код, и оно будет по-любому быстрее и менее прожорливо до ресурсов.

    Нет, скорее "назад, в пещеры". История с введением 32-разрядной адресации повторяется на новом уровне. Интел уже и сам, наверное, не рад тянуть эту бадягу, но зверушка Франкенштейна держит за яйца своего создателя железной хваткой.

    Писать что? Сцайты в Блокноте - ну может быть. Длинные тексты - крайне неудобно, ноутбучные клавиатурки для этого не предназначены. Вот ежели перезнтации всякие по-быстрому показывать или с одной съёмной квартиры на другую переезжать часто приходится - тут ноутбуки рулят.

    И чем это он неудобный? Тем, что вместо амбразуры - нормальный дисплей с нормальными углами обзора и цветопередачей (для справки - хороший монитор стоит не дешевле среднего ноутбука), вместо долбокнопок, которые рукавом можно нажать - нормальная полноразмерная клавиатура, сделанная с учётом человеческой физиологии, а вместо тачпада (воистину мерзость, трекболы куда удобнее, если бы ещё грязью не зарастали) - нормальная мыша о шести кнопках для всех случаев жизни?

    Планшеты Wacom - как-то в основном проводные. Я, по крайней мере, беспроводных не встречал. "Фоткать с ноутбуком" - это слишком сурово для меня. Фоткать, конечно, можно по-разному, но меня абсолютно не прельщает идея тащить на себе 2 кило железа, которое в поле мало того, что никому не нужно, так ещё и мешать будет. А вот обрбатывать всё это почему-то удобнее на большом мониторе с правильной цветопередачей. Что на ноутбуках встречается крайне редко.

    А я вот "Матрицу" собрался пересмотреть, раздобыл на днях HDTV-рип со всеми понтами. Разрешение такое, что на 17" ну никак не влазит без масштабирования. Вот ведь незадача - придётся на метровом телевизоре смотреть.
     
  16. inviZ

    inviZ Сергей

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    92
    Адрес:
    Хабаровск
    GoldFinch
    o_O. А это не исходники ли Unreal Engine случаем? Знакомые имена классов...
     
  17. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    нет, просто эта прога юзает апи la2, почти Unreal Engine :)
     
  18. Clear_Energy

    Clear_Energy Алексей

    Публикаций:
    0
    Регистрация:
    3 ноя 2008
    Сообщения:
    375
    Самый труЪ язык - VHDL :)
     
  19. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clear_Energy
    А чё не индонезийский? VHDL - не язык программирования. Поэтому не в тему.
     
  20. Clear_Energy

    Clear_Energy Алексей

    Публикаций:
    0
    Регистрация:
    3 ноя 2008
    Сообщения:
    375
    Тогда... Эээ... Эсперанто++ или Иврит# наверное :)
    Нихера никто юмора не понимает...