Здравствуйте, Kingofastellarwar, Вы писали:
K>код запускался бы сразу без JIT компиляции и тормозов с ней связанной и можно было бы делать реальную оптимизацию кода компилятором выжимать максимум.
Чем позже делается компиляция -- тем больше возможностей для оптимизации. Не зря в GCC LTO придумали.
Здравствуйте, Философ, Вы писали:
K>>ну только не смешите меня песнями про оптимизацию под платформу, это беда жит, а не его достоинство.
Ф>Я так думаю, что именно для этого она и задумывалась — типа компиляция для того проца, который сейчас установлен. Однако, практика показала, что решения без JIT быстрее, а там, где нужна оптимизация под проц, она делается руками.
Если брать ту же Java, проблема её производительности, я думаю, совсем не из-за байткода. Вон тот же LLVM с правильно выбранным языком генерирует вполне нормальный код (ну, пока отстаёт местами от GCC, но сколько лет LLVM, а сколько GCC?). Проблема в том, что JVM задаёт очень фиксированную модель выполнения, на которую прикладные задачи накладываются не оптимально. Добавь сюда ещё проверки в рантайме и жор памяти для поддержки всей этой системы и получишь тормоза.
Здравствуйте, Kingofastellarwar, Вы писали:
K>рассмотрим на примере только дотнета, я его лучше всего знаю, а проблемы у его собратьев такие же.
K>изначальная идея "компилируем раз — запускаем везде" давала надежду, но не только по маркитенговым, но и техническим причинам оказалось, что K>приемлемом уровне это сделать сложно, в итоге все жавы и дотнеты оказались очень даже одно платформенными.
K>а самым реально мультплатфоменнным оказался в итоге Си с С++ом
Ты хочешь сказать что можно раз скомпилировать код на C\C++ и запускать везде? Что-то я сомневаюсь что у тебя так выйдет.
Для начала сформулируй определение. С этим самые большие проблемы сегодня.
Например кроссплатформенность в виде "компилируем раз — запускаем везде" не работает нигде. Даже java, изначально заточенная под такой сценарий, так работать не будет.
Второй вариант — "программа под любую платформу собирается из одного набора исходников". Такое похоже на правду, НО есть платформенно-зависимый код, есть UI, который чаще всего надо проектировать под каждую платформу отдельно.
Третий вариант — "программные библиотеки, без UI и платформенно-зависимых вещей собиратся для любой платформы из одного набора исходников".
Так в этом случае кроссплатформенными являются и Java, и .NET, и C++.
Причем .NET опережает всех ибо работает на Windows, Linux(Mono), MacOS(Mono), iOS (MonoTouch), Adndroid (MonoDroid), WP7, Web (Silverlight, компиляция в js), XBox, embedded (.NET MicroFramework)
K>>а самым реально мультплатфоменнным оказался в итоге Си с С++ом
G>Ты хочешь сказать что можно раз скомпилировать код на C\C++ и запускать везде? Что-то я сомневаюсь что у тебя так выйдет.
Ну с LLVM вполне реально, пока скорее в теории, на практике только недостаток библиотек не дает.
Здравствуйте, Uzumaki Naruto, Вы писали:
K>>>>рассмотрим на примере только дотнета, я его лучше всего знаю, а проблемы у его собратьев такие же. UN>>>Рассмотрим на примере java... все работает прекрасно на всех платформах... C>>Кроме iPhone. UN>http://iphoneroot.com/RU/tutorial-install-java-on-the-iphone/
Это не нормальная Java.
UN>>>Рассмотрим правильное кроссплатформеное программирование под С/C++ — все прекрасно компилируется под любые платформы — от PC до мобильных... C>>Кроме WinPhone. UN>Си-код компилируется в llvm байткод с помощью clang (это полноценный С/С++ компилятор, совместимый по ключам с gcc).
И причём тут WinPhone?
Взломанные телефоны не считаются. Мы же говорим об установке нашего софта у пользователя, а не у себя.
C>>Кроме WinPhone.
UN>Си-код компилируется в llvm байткод с помощью clang (это полноценный С/С++ компилятор, совместимый по ключам с gcc).
Эммм, и что нам делать с llvm кодом на winphone? )
Здравствуйте, gandjustas, Вы писали:
G>Ты хочешь сказать что можно раз скомпилировать код на C\C++ и запускать везде? Что-то я сомневаюсь что у тебя так выйдет.
Ну в данный момент нет. Но если допустим на каждой платформе будет стоять исполнитель llvm кода, то и C++ может стать похожим на Яву. ))) Хотя не факт что оно нужно.
G>Например кроссплатформенность в виде "компилируем раз — запускаем везде" не работает нигде. Даже java, изначально заточенная под такой сценарий, так работать не будет.
Да вроде работает. ))) Хотя и тормознуто и с кривым интерфейсом.
G>Второй вариант — "программа под любую платформу собирается из одного набора исходников". Такое похоже на правду, НО есть платформенно-зависимый код, есть UI, который чаще всего надо проектировать под каждую платформу отдельно.
Не надо, если выбрать правильные библиотеки. У нас вот кроссплатформенный продукт и "платформенных ifdef'ов" там на весь проект пара штук.
G>Третий вариант — "программные библиотеки, без UI и платформенно-зависимых вещей собиратся для любой платформы из одного набора исходников".
G>Так в этом случае кроссплатформенными являются и Java, и .NET, и C++.
G>Причем .NET опережает всех ибо работает на Windows, Linux(Mono), MacOS(Mono), iOS (MonoTouch), Adndroid (MonoDroid), WP7, Web (Silverlight, компиляция в js), XBox, embedded (.NET MicroFramework)
G>>Например кроссплатформенность в виде "компилируем раз — запускаем везде" не работает нигде. Даже java, изначально заточенная под такой сценарий, так работать не будет. _>Да вроде работает. ))) Хотя и тормознуто и с кривым интерфейсом.
Ага, запусти на мобилке то что написано для десктопа.
G>>Второй вариант — "программа под любую платформу собирается из одного набора исходников". Такое похоже на правду, НО есть платформенно-зависимый код, есть UI, который чаще всего надо проектировать под каждую платформу отдельно. _>Не надо, если выбрать правильные библиотеки. У нас вот кроссплатформенный продукт и "платформенных ifdef'ов" там на весь проект пара штук.
Это будет третий вариант
G>>Третий вариант — "программные библиотеки, без UI и платформенно-зависимых вещей собиратся для любой платформы из одного набора исходников". G>>Так в этом случае кроссплатформенными являются и Java, и .NET, и C++. G>>Причем .NET опережает всех ибо работает на Windows, Linux(Mono), MacOS(Mono), iOS (MonoTouch), Adndroid (MonoDroid), WP7, Web (Silverlight, компиляция в js), XBox, embedded (.NET MicroFramework) _>Ага, только оно такое не нужно никому. )))
А потому что кроссплатформенность нафиг никому не упала.
Это тупо флаг, которым размахивают вендоры. Реальная польза от кроссплатформенности для конечного пользователя нулевая, если не отрицательная.
Здравствуйте, Kingofastellarwar, Вы писали:
K>прекрасно это как? я лично не видел ни одного приложения на жаве, которое прекрасно работало хотя б под линухом, вендой и макосью.
Странно, а я видел. И не одно, и не два. Наоборот трудно вспомнить те, что не могут работать под ними всеми.
Здравствуйте, Kingofastellarwar, Вы писали:
K>рассмотрим на примере только дотнета, я его лучше всего знаю, а проблемы у его собратьев такие же.
K>изначальная идея "компилируем раз — запускаем везде" давала надежду, но не только по маркитенговым, но и техническим причинам оказалось, что K>приемлемом уровне это сделать сложно, в итоге все жавы и дотнеты оказались очень даже одно платформенными.
Мухи — отдельно, котлеты — отдельно. Дотнет писан МС-ом, и реальная мультиплатформенность им не нужна. Жаба очень даже мультиплатформенна, и проектов на ней, где это пригождается очень и очень много. В основном это энтерпрайз, но все-таки.
Новости очень смешные. Зря вы не смотрите. Как будто за наркоманами подсматриваешь. Только тетка с погодой в завязке.
There is no such thing as a winnable war.
Здравствуйте, Eugeny__, Вы писали:
E__>Мухи — отдельно, котлеты — отдельно. Дотнет писан МС-ом, и реальная мультиплатформенность им не нужна. Жаба очень даже мультиплатформенна, и проектов на ней, где это пригождается очень и очень много. В основном это энтерпрайз, но все-таки.
а зачем энтерпрайзу мультиплатформенность?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
M>>Брось и не начинай. Это уже было пройдено по кругу минимум два раза.
S>Покажи мне как из исходников, требующих дотнет, соберется приложение под линух+моно. Например вот тебе хоть ВороньяБД
Покажи мне, как из "кроссплатформенного" Qt соберется даже простейшее приложение под Windows или МакОС, если следовать, например, туториалу. Ну или приложение типа такого, такого или такого.
Здравствуйте, Sheridan, Вы писали:
S>В принципе отчасти ты прав. В силу своей кроссплатформенности моно несколько более жив, чем дотнет. Но до тогоже ц++ далеко обоим.
Твои попытки потролить .NET ничтожны.
Если нам не помогут, то мы тоже никого не пощадим.