Компляторы

1. Посоветуйте хорошие компляторы модов:) 
2. Что за программы specialsource retroguard mcinjector fernflower, нашол в MCreator
 
332
4
Компиляторы модов??? Таких не знаю.
Можешь на ассемблере попробовать написать, компилировать не придется:woot:
Моды - программы(дополнения к игре), пишутся на каком либо ЯП с использованием API, для майнкрафта это, к примеру, forge. Код (в данном случае мод) на определенном ЯП компилируется в инструкции ассемблера или машиные коды, для модов компилятора не бывает, разве токо мод-компилятор (такого нет!), что делает не знаю что.
[merge_posts_bbcode]Добавлено: 20.06.2016 00:46:19[/merge_posts_bbcode]

Кстати код компилируется еще и в байт код, как в случает с java
 
1,137
5
3
Heitem написал(а):
Компиляторы модов??? Таких не знаю.
Можешь на ассемблере попробовать написать, компилировать не придется:woot:
Моды - программы(дополнения к игре), пишутся на каком либо ЯП с использованием API, для майнкрафта это, к примеру, forge. Код (в данном случае мод) на определенном ЯП компилируется в инструкции ассемблера или машиные коды, для модов компилятора не бывает, разве токо мод-компилятор (такого нет!), что делает не знаю что.
[merge_posts_bbcode]Добавлено: 20.06.2016 00:46:19[/merge_posts_bbcode]

Кстати код компилируется еще и в байт код, как в случает с java
Ничего в ассемблер не компилируется. Никогда.
 
332
4
Компиляция - трансляция программы, составленной на исходном языке высокого уровня в эквивалентную программу на низкоуровневом языке, таком как ассемблер.
Викитык!
[merge_posts_bbcode]Добавлено: 20.06.2016 11:29:19[/merge_posts_bbcode]

Компилировать сразу в машинный код - затрудняет процесс, поэтому компилируется в язык ассемблер, а уже потом ассемблерами транслируется в машинный код!
 
1,137
5
3
Тебе не кажется, что компилировать 2 раза затратнее, чем код->байт-код?
 
332
4
Причем тут байт код, мы говорили о машином и ассемблерном кодах. При том байт код, как бы там не было проигрывает в скорости.
[merge_posts_bbcode]Добавлено: 20.06.2016 20:13:25[/merge_posts_bbcode]

Чем нативный, и java-код не исключение, такие функции как System.arraycopy(нативная) ставят java на место.
 
329
13
398
4
7
Как мне кажется, большинство компиляторов на основе исходного кода строят графы, которые и являются промежуточным представлением. Хотя я могу ошибаться.
По моему так вообще без разницы, выдавать сразу машинный код или ассемблер.

Не вижу причин по которым байт-код будет медленнее "нативного". Считай что для джавы байт-код - это архивированный исходный текст, а джава при запуске компилирует его. https://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
Вообще такое сравнение бессмысленно. Это как теплое с мягким сравнивать. Можно сравнить только конкретные программы, на конкретном компьютере.
 
332
4
TaoGunner написал(а):
wilah написал(а):
Ничего в ассемблер не компилируется. Никогда.

Зацени
Прям в точку!)
[merge_posts_bbcode]Добавлено: 21.06.2016 00:04:16[/merge_posts_bbcode]

Asd73 написал(а):
Как мне кажется, большинство компиляторов на основе исходного кода строят графы, которые и являются промежуточным представлением. Хотя я могу ошибаться.
По моему так вообще без разницы, выдавать сразу машинный код или ассемблер.

Не вижу причин по которым байт-код будет медленнее "нативного". Считай что для джавы байт-код - это архивированный исходный текст, а джава при запуске компилирует его. https://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
Вообще такое сравнение бессмысленно. Это как теплое с мягким сравнивать. Можно сравнить только конкретные программы, на конкретном компьютере.
Как не видишь причин? Все нативные функции быстрее java функций, может быть java где то и выигрывает, но в редких случаях.
Вобщем я хотел сказать что компилятора модов нет)))
 
1,137
5
3
Jit может подстраиваться под пк. Да, он может быть медленнее, но нативные не так уж и часто выигрывают. Больше идёт проигрыш от твоих костылей в коде, нежели от типа твоего кода. Насчёт генерации кода:
Для того чтобы создать ассемблерный файлик для класса потребуется использовать специальный флаг javac. А если захочется запустить этот файлик, то придётся его ещё раз собрать.
 
398
4
7
Heitem написал(а):
Как не видишь причин? Все нативные функции быстрее java функций, может быть java где то и выигрывает, но в редких случаях.
Вобщем я хотел сказать что компилятора модов нет)))
Еще раз объясняю. Код сам по себе не может быть медленным или быстрым. Как может какой-нибудь текст быть быстрым или медленным?
Можно сравнивать скорость выполнения программ.

Если бы байт-код просто интерпретировался, т.е грубо говоря написали большой switch...case, то было бы весьма медленно.
Но в джаве используется "компиляция на лету". То есть в итоге джава компилирует в машинный код. Джава тормозит и жрет память вовсе не из-за того, что в ней байт-код, а из-за всякого ООП, механизма автоматического освобождения памяти и прочего.
Вот, можешь сравнивать: http://benchmarksgame.alioth.debian.org/u64q/java.html Ну да, медленнее, но не в разы. Причем если посмотреть код, то в варианте на Си есть всякие "#pragma omp parallel for" (разворачивание цикла). То есть указали компилятору - пусть код будет больше, но быстрее, а в джаве просто нет средств для этого.
Если сравнивать варианты без таких ухищрений, то быстродействие будет примерно одинаковым.
А если бы не было JIT, то было бы медленнее в десятки раз.

У меня такое впечатление, будто ты не писал ничего на ассемблере (я имею в виду не джавовский байт-код), а пытаешься рассуждать.
 
1,137
5
3
Asd73 написал(а):
Еще раз объясняю. Код сам по себе не может быть медленным или быстрым. Как может какой-нибудь текст быть быстрым или медленным?
Можно сравнивать скорость выполнения программ.

Если бы байт-код просто интерпретировался, т.е грубо говоря написали большой switch...case, то было бы весьма медленно.
Но в джаве используется "компиляция на лету". То есть в итоге джава компилирует в машинный код. Джава тормозит и жрет память вовсе не из-за того, что в ней байт-код, а из-за всякого ООП, механизма автоматического освобождения памяти и прочего.
Вот, можешь сравнивать: http://benchmarksgame.alioth.debian.org/u64q/java.html Ну да, медленнее, но не в разы. Причем если посмотреть код, то в варианте на Си есть всякие "#pragma omp parallel for" (разворачивание цикла). То есть указали компилятору - пусть код будет больше, но быстрее, а в джаве просто нет средств для этого.
Если сравнивать варианты без таких ухищрений, то быстродействие будет примерно одинаковым.
А если бы не было JIT, то было бы медленнее в десятки раз.

У меня такое впечатление, будто ты не писал ничего на ассемблере (я имею в виду не джавовский байт-код), а пытаешься рассуждать.

Пожалей, не ломай его стереотипов о скорости native функций
 
332
4
Ну вообщето я ничего и не писал, просто я начитан всякими статьями о скорости и java...
[merge_posts_bbcode]Добавлено: 21.06.2016 14:30:55[/merge_posts_bbcode]

Вообще не давайте не спорить)) кто вобше помнит о чем темка была?
 
1,137
5
3
Heitem написал(а):
Вообще не давайте не спорить)) кто вобше помнит о чем темка была?
Отлично с темы слетел. если б самоубийцы с петель слетали так, то самоубийств не было
 
332
4
А что? Ох елки, вы тогда используйте ненативную функцию для копирования массивов, я предпочитаю System.arraycopy.Как сказал Asd73, java тормозит, как бы она не уделяла внимания ООП, освобождению памяти, пользователю (не программисту) всё равно - главное чтобы приложение работало без лагов.
Не секрет, что игры редко пишутся на java, с тем, чтобы выйграть в скорости. Да под андройд пишутся, я хз почему, если кто знает напишите, я вот думаю может скорость под андройд не столь важно или чтоб много не писать.
 
1,137
5
3
Не забывай, что само обращение к нативной тратит часть времени
***
В андроиде java code->байт код VM Dalvik. Вроде так
 
1,990
18
105
Не секрет, что игры редко пишутся на java, с тем, чтобы выйграть в скорости


У тебя стереотип головного мозга просто.
Скорость работы игр с текущим уровнем развития технологий зависит от выбранного языка ровно никак.
Сейчас не то время, когда люди считали процессорные инструкции и экономили их как могли.
Да, на копировании мочемассива с тонной элементов ты увидишь разницу в скорости даже с учетом JIT, но на практике почти вся скорость работы приложения зависит от компетентности программиста. Которая, в свою очередь, в данном случае, ещё и зависит от доступных технологий, помогая программисту не выполнять кучу лишней работы (не изобретать колесо).

Просто так сложилось, что раньше уж приходилось экономить почти каждый байт, поэтому java отпадала сама собой, да, тогда твоё заявление было актуально. Это привело к тому, что на C выросла популярная база наработанных технологий и библиотек полезных для геймдева. И ни для кого не секрет, что С++ имеет обратную совместимость с С. А это означает автоматическое перетекание всей наработанной базы к С++, быстренько заполонившему почти всю нишу геймдева.
К Java толком никто и не притрагивался, потому что на разработку базовых технологии и библиотек ушло бы слишком много времени, да и зачем, когда уже всё есть? А ещё есть куча специалистов (прогеров) в области геймдева, которые приноровились писать игры на С++.

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

И вообще, Java - говно. Котлин в массы.
 
332
4
wilah написал(а):
Не забывай, что само обращение к нативной тратит часть времени
***
В андроиде java code->байт код VM Dalvik. Вроде так
Наверное, я просто под андройд не программировал.
 
Сверху