Цитата:
А что, в С выход за границы массива или кривой указатель совершенно безопасны ?
Я сказал выше, что при использовании ассемблера безопасность Java исчезает. С этой т.з. java становится небезопасной, и ее смысл как безопасного языка исчезает.
Цитата:
В подавляющем большинстве случаев с JNI работать нет необходимости. Но когда нужна серьёзная оптимизация, то уж хоть с JNI, хоть с ассемблером работать - гемороя всегда будет больше чем в чистой Java. Хотя просто написать стандартный вызов JNI функции занимает лишь одну строчку в тексте, так что я не знаю, чем уж вам так сильно не угодил JNI.
Чем мне не угодил - тем, что вместо arr[i] или mov eax, [ebx + ecx * 4] будет записан вызов функции, которая внутри проверит тип объекта, рассчитает смещение элемента и вернет значение. Может еще какие проверки выполнит, вроде выхода за границу массива. Это во много раз медленней одной команды assemler'а, не так ли?
Цитата:
Вы живёте в мире, где вам позволяют считать себя важным. Но в мире enterprise development, особенно в отношении начинающих кодеров, особых сантиментов ни кто не испытывает, сказали надо написать, значит будут кодеры кодить.
И даже без учёта реальной ситуации в разработке, ваш подход по сути выражается - если мне лень, то ни какой совместимости у вас не будет. Но ведь не всем на свете всё лень. Есть люди, которые готовы ради достижения цели потратить лишний часик-другой на написание ещё и Java варианта в дополнение к ассемблерному.
Все бы вам кого-нибудь поунижать. А все куда проще - я не видел ни одной программы с этим Java-ассемблером, а java-программы мне сыпятся часто и совершенно разные. Вывод: в реальности этот "ассемблер" используют мало, если из тысяч файлов мне и моим знакомым не попадался этот ассемблер. Уверен, 99% программистов java вообще не знают о его существовании.
А поддерживать два варианта кода ради кроссплатформенности - ничем не лучше, чем написать два варианта кода на asm/C++.
Цитата:
Для того, что бы не тратить время на "постоянные обращения", давно придуман способ - надо просто данные правильно организовать. То есть немного подумав вы и сами вполне сможете переделать структуру данных так, что бы минимизировать "постоянные обращения".
Как я и сказал выше. Есть массив. Надо читать разные его элементы. Как? Вариант первый - каждый раз вызывать JNI для доступа к элементам. Вариант второй - скопировать массив в неконтролируемую память, после чего обращаться напрямую, но удвоить тем самым расход. Грязные хаки с прямым обращением внутри управляемой памяти не рассматриваю, т.к. они имеют свойство отваливаться при выходе новых версий виртуалки.
Цитата:
Ну да, как и ожидалось - доказательств нет и не будет. Хотя вам самому бы стало яснее, что реально ваш С может, а чего нет.
Mr. Trololo? Я вам сказал, как получить доказательства. Это не трудно. Я эти доказательства уже получал, если и вы хотите - вперёд, я сказал, как это сделать. Не вижу смысла повторять свои действия для тех, кто в упор не желает видеть, что существуют вещи кроме джавы. Очевидно, доказательства вам и не нужны, даже если вам показать сотню графиков сравнения скоростей, где java будет в 2 раза медленней, вы все равно заявите что-то вроде "Ложь и провокация! Java не может тормозить!".
"Хотя вам самому бы стало яснее, что реально ваша Java может, а чего нет."
Цитата:
Ну почему, я потратил время, мой вариант пройдёт его тест. А вот вы только письма пишете, ни каких тестов ваши варианты не проходят.
А почему же до сих пор не прошел? (И просили 3 теста, если что).
Мои варианты не проходят тестов. Я и не говорю, что я супер-гений с супер-языком, решающим все задачи. Я почитал код Zealint'а, который он выкладывал (на C + Asm), убедился, что этот человек понимает, о чем говорит. Сам я системщик и реверсер, но по имеющемуся у меня опыту могу с уверенностью сказать, что java медленней. Какие вы хотите от меня тесты пройти? Тест на то, что Java медленная? Да запросто, сейчас сделаю перемножение матриц тройным циклом и залью.
А если тест на то, что C/Asm быстры - этот тест уже пройден и исходники доступны.
Цитата:
Ну как бы раньше вообще Java не было. И встречались мнения, что мол ну зачем какие-то новые языки городить, давно всё создано, берём фортран для математики, ассемблер для низкого уровня, ну и вот С для всяких глупостей ещё придумали. Но со временем ситуация резко изменилась. Задумайтесь, почему бы это произошло.
Ну да, все идиоты, а я Д'Артаньян. Я Мессия, несу свет, но меня эти глупцы не понимают.
Поясняю, что произошло и почему. Появилась Java. Потому что писать программы на неуправляемых языках относительно сложно. А для Java достаточно нанять китайцев и индусов (не образно, а реальных китайцев и индусов), которые за гроши напишут любой код. Да, он не будет отличаться быстродействием и логичностью. Да, программы будут весить мегабайты. Но это не важно: когда программа собирается как конструктор (а китайцы пишут на Java именно так), процесс разработки удешевляется в десятки раз. Это попросту выгодно, а что выгодно, то и становится бизнес-мейнстримом.
А теперь вам на "задуматься". Почему те же Intel и MS до сих пор делают свои компиляторы C++? Если другие языки
действительно не нужны, думаете, всё бизнес-сообщество бы этого не поняло? А если это поняли только вы, то, может быть, вы просто ошибаетесь в силу непонимания множества сфер применения компьютерной техники?
Хотя конечно, я уже совершенно не сомневаюсь, что ваш ответ на это будет как обычно в стиле "просто все идиоты, а я самый умный", или "вам только кажется, что Си поддерживают, а на деле вот уже завтра его бросят".