Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!

<<
[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 169 | 10 | 28

Аноним # OP  14/03/18 Срд 12:54:00  172407069  
image.png (293Кб, 960x720)
ПОЯСНИТЕ ЗА JIT СРОЧНО!
Я посмотрел несколько видео по сравнению компилятора, интерпретатора и jit-компилятора, прочитал на википедии (слишком запутано и много написано), посмотрел схемки на картинаках, и я все равно не могу понять отличие JIT от интерпретатора. Даже на картинке JIT изображен как более подробная схема интерпретатора. В чем отличие?
Аноним # OP  14/03/18 Срд 12:55:01  172407112
image.png (22Кб, 486x432)
бамп
Аноним # OP  14/03/18 Срд 12:55:33  172407135
image.png (16Кб, 700x200)
бамп
Аноним # OP  14/03/18 Срд 12:56:09  172407164
image.png (17Кб, 532x338)
бамп
Аноним # OP  14/03/18 Срд 12:56:44  172407185
Почему JIT быстрее для JS чем интерпретатор?
Аноним # OP  14/03/18 Срд 12:57:20  172407212
Зачем нужен байт код? Почему нельзя передать в JIT исходный код?
Аноним # OP  14/03/18 Срд 12:57:44  172407233
БАМП
Аноним 14/03/18 Срд 12:58:04  172407244
>>172407069 (OP)
JIT-компилятор нужен чтобы оптимизировать быстродействие проги. Интерпретатор по умолчанию медленнее нативного кода, поэтому некоторые куски кода(которые выполняются очень часто к примеру) jit-компилятор компилит в нативный код, и выполняет уже их потом,а не опять интерпретирует байт-код. Это если кратко.
Аноним # OP  14/03/18 Срд 12:58:06  172407245
image.png (30Кб, 672x276)
бамп
Аноним 14/03/18 Срд 12:59:15  172407292
>>172407112
Думаю по этой картинке все понятно,не? Что изменения вносятся сразу в работающий код.
Аноним # OP  14/03/18 Срд 12:59:40  172407306
>>172407244
То есть, отличие в том что одинаковые команды не переводятся дважды? И только за счет этого прирост в скорости? Или есть еще какие то причины?
Аноним 14/03/18 Срд 13:01:17  172407380
>>172407212
Епт. Потому что ПИШЕШЬ ОДИН РАЗ ВЫПОЛНЯЕТСЯ ВЕЗДЕ. Для виртуальной машины ты пишешь один код для любой платформы, который компилится в байт код, а уже виртуальная машина выполняет этот код на любой ОС и платформе. На том же С, тебе нужно прогу переписывать под каждую ОС, а если еще ниже типа ассемблера, то и под каждую платформу.
Аноним 14/03/18 Срд 13:01:39  172407398
>>172407069 (OP)
Интерпретатор не выдает машинного кода, ну вернее среды исполнения типа джавы и дотнета старых. Джит, как видишь это делает.
Аноним 14/03/18 Срд 13:01:49  172407410
>>172407306
Да. В таких случаях исчезает промежуточный слой с байт-кодом и интерпретатором.
Аноним 14/03/18 Срд 13:01:50  172407412
Зачем нужен байт код? На всех схемах это выглядит, как лишний шаг на пути от исходного кода к компилятору.
Аноним 14/03/18 Срд 13:03:11  172407474
>>172407412
>>172407380
Аноним 14/03/18 Срд 13:03:30  172407486
>>172407398
Как это не выдает? Без машинного кода программа не исполняется процессором.
Аноним 14/03/18 Срд 13:05:10  172407555
>>172407486
Процессор исполняет команды среды, а не твоей программы под эту среду. В этом суть интерпретации
Аноним 14/03/18 Срд 13:08:14  172407685
>>172407380
Почему для виртуальной машины нужно писать байт код? Почему бы ей сразу исходный код не обработать? Выполняется везде за счет того что виртуальная машина переводит в код для платформы, а не за счет того что байт код делается для платформы. Байт для виртуальной машины, и исходный код для виртуальной машины, так зачем тогда переводить в промежуточный вариант, когда можно сразу в вм передать?
Аноним # OP  14/03/18 Срд 13:09:38  172407747
>>172407555
Какой среды? Интерпретатор переводит исходный код в машинный. Так же как и компилятор, просто по-командно.
Аноним # OP  14/03/18 Срд 13:11:30  172407837
бамп
Аноним 14/03/18 Срд 13:12:52  172407902
>>172407685
У тебя есть одна прога, ты ее скомилил в байт-код и этот байт-код будет выполняться сразу на любой платформе где есть виртуальная машина. В твоем же случае ты получишь скомпилированный код под одну платформу. И вместо одного файла в итоге, получишь кучу под разные платформы же.
Аноним # OP  14/03/18 Срд 13:14:48  172407999
>>172407902
У меня прога, я ее запустил на ВМ, ВМ переводит этот код в машинный для любой платформы. В чем я ошибся?
Аноним 14/03/18 Срд 13:15:10  172408026
>>172407486
Как пример. Есть православная джавамашина и исламская джавамашина. Ты пишешь один текст проги, но первая во время исполнения каждой команды прославляет Иисуса из Назарета, а вторая Аллаха и пророка его Мохамеда. На деле тоже, вот есть инструкция нарисовать линию красную на экран, вот в машинных инструкция это вообще будет не понятно к каким устройствам обращение и через какие устройства. А вот Оракл пишет джаву для кучи платформ (в данном случае ОС) и все остается на ее совести, на убунту она будет одно делать через интерфейсы убунту, а на винде другое, но команда данная ей будет одинаковая. Рисуй линию.
Аноним # OP  14/03/18 Срд 13:17:22  172408121
>>172408026
Это ты описываешь интерпретатор? И зачем в джаве байткод, опять таки?
Аноним 14/03/18 Срд 13:18:53  172408189
>>172407747
Нет, в байт код. А интерпретатор когда его выполняет, не факт, что непосредственно обращается к устройствам, а не к ОС, команды которой конечно в памяти лежат и ждут вызова.
Аноним # OP  14/03/18 Срд 13:23:16  172408366
БЛЯТЬ ВЫ МЕНЯ ЗАПУТАЛИ ИДИТЕ-КА ВЫ НАХУЙ! ПОХУЙ, БУДУ ПРОСТО УЧИТЬ ЯЗЫК, НАХУЙ ЭТИ ИНТЕРПРЕТАТОРЫ И JIT КОМПИЛЯТОРЫ. ДЬЯВОЛЬЩИНА КАКАЯ ТО
Аноним 14/03/18 Срд 13:24:12  172408395
>>172407244
>поэтому некоторые куски кода(которые выполняются очень часто к примеру) jit-компилятор компилит в нативный код
Тогда почему тогда не весь код перевести в нативный код.
Аноним 14/03/18 Срд 13:25:28  172408443
>>172408121
Потому что джава решит, как его исполнить. Ты когда джаву устанавливаешь, она получает кучу инфы о том, куда встала. Вот она один и тот же байткод исполнит в разных условиях по разному, но исполнит точно. И если косяк, то оракл его устранит.
Аноним # OP  14/03/18 Срд 13:26:57  172408516
>>172408443
Почему джава не может решить как исполнить джава код? Зачем нужно джава код переводить в байт-код?
Аноним 14/03/18 Срд 13:29:05  172408632
>>172408516
Потому что джава заранее не знает, как исполнить инструкции на конкретной машине. Если джава стоит на лине это будет одно поведение, если на винде, то другое. А байт код и там и там будет одинаковый.
Аноним 14/03/18 Срд 13:30:10  172408684
>>172408516
Потому что код исполняет не джава, сукаблять, мудак необучаемый, нарожают дебилов, объясняй им прописные истины
Аноним 14/03/18 Срд 13:30:48  172408714
>>172408632
Фикс. Джавамашина не знает, где будет байткод исполняться
Аноним # OP  14/03/18 Срд 13:31:09  172408728
>>172408684
Так ты сам не можешь объяснить, значит ты сам не в курсе
Аноним 14/03/18 Срд 13:33:09  172408817
>>172408728
Тебе тут уже 10 раз все объяснили, если не хватило мозгов понять, то бери метлу и пиздуй дворы подметать.
Аноним # OP  14/03/18 Срд 13:33:12  172408821
>>172408632
Так в чем отличие исходного кода от байт кода? И исходный код одинаков везде и байт код одинаков везде. Почему напрямую нельзя в ВМ передать джава код, который везде один, а нужно - байткод, который тоже везде один?
Аноним 14/03/18 Срд 13:35:04  172408921
>>172408516
Оп, ща поясню тебе нормально.

Смотри, есть исходные коды.

Раньше как было? Исходники собираются, на выходе получаются наборы инструкций (ассемблерный код, т.е. каждая команда это инструкция процессора).

Все бы хорошо, но эта вся хуета развивается, и в какой то момент оказалось, что по целому ряду причин (в том числе ради кроссплатформенности) удобно компилировать исходные коды не в машинные коды а в некий байт-код.

байт-код это набор команд (похожий на обычный код для процессора) который обрабатывается интерпретатором.


Представь что у тебя задача читать кинжки.
Раньше ты брал книжку и посимвольно ее читал -- в случае если попадалось незнакомое слово в важном месте мог случиться пиздец, а еще есть книги на иных языках например.

Поэтому ты нанимаешь человека, который служит интерпретатором. Берет на себя ряд обязанностей в обработке кода — и тебе уже похуй на каком языке книга написана уже.

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

А этот вот виртуальный процессор интерпретирует байткод в бинарный код (нативный для процессора).

Но если компилятор знает что функция часто используется то ее можно сразу загнать в нативный код — это по ряду пунктов хуево поэтому весь код так собирать нельзя, но это увеличивает быстродействие (ведь интерпритирование идет в реальном времени и тратит ресурсы).


Аноним # OP  14/03/18 Срд 13:35:56  172408962
Смотрите, есть команда "иди нахуй" в джава коде, она переводится в байт код "пшол нахуй", байт код передается в ВМ и там переводится в машинный "1001 1110 1101...." так почему бы сразу "иди нахуй" не передать в ВМ??????????????????????????????????????????????????????????????????????????????????????????
Аноним 14/03/18 Срд 13:36:05  172408972
>>172408821
А, просто машина оптимизирована для обработки байткода и превращения его в вызовы инструкций у ОС, можно конечно и обычный текст программы передать. Если ты об этом.
Аноним 14/03/18 Срд 13:36:14  172408978
>>172408821
Распространять свою прогу ты будешь в исходных кодах прям? Компилятор еще помимо самого генерирование байт-кода, проверяют твой код и зависимости к примеру, и выкидывает тебе ошибки на этапе компилирования, в интерпретируемых языках ты их ловить в рантайме будешь.
Аноним 14/03/18 Срд 13:38:07  172409075
>>172408921
Плюсую этого
Аноним # OP  14/03/18 Срд 13:38:30  172409099
>>172408921
Так ведь у джава машины только один язык джава. У CLI - сисярп. Тогда зачем нужен байткод, если у этих ВМ только один язык для перевода?
Аноним 14/03/18 Срд 13:38:38  172409102
Когда сделают процессоры чтобы исполнять напрямую байт код джава и шарпа а не виртуально.
Аноним 14/03/18 Срд 13:38:57  172409118
>>172408821

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

Что бы отвязать нас от аппаратной базы создали "виртуальный процессор", интерпретатор.

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


Но трансляция это затратно, поэтому частые действия можно собрать в машинные коды — если нужно.
Аноним 14/03/18 Срд 13:39:26  172409142
вообще с твоими знаниями надо не про jit читать а системно изучать всё.
Аноним 14/03/18 Срд 13:39:58  172409169
++
Аноним 14/03/18 Срд 13:40:33  172409201
>>172408962
Потому что разные процессоры, если был бы один проц на все нужды то проблем и не было.
Аноним 14/03/18 Срд 13:40:59  172409223
>>172409099
Ебать ты ограниченный.
Jvm - Scala, kotlin, groovy, Java
Clr - c#, f#, vb
Аноним 14/03/18 Срд 13:41:44  172409264
>>172409099
затем, что джава машина берет на вход байткод. и выполняет его.

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

А если бы у нас были машинные коды то требовалось бы соответствие строгое (нет инструкции в процессоре — гуляй).
Аноним 14/03/18 Срд 13:42:00  172409284
>>172409099
На лине сисярп будет байткод идинахуй интерпретировать в свиснивхуй, а на винде в неужелибесплатно. Из-за разницы в системе на которой работает. А на экране будут на хуй идти.
Аноним 14/03/18 Срд 13:42:27  172409306
>>172409099
Ну ты сказааал...
https://en.wikipedia.org/wiki/List_of_CLI_languages
https://en.wikipedia.org/wiki/List_of_JVM_languages
Аноним # OP  14/03/18 Срд 13:42:44  172409321
>>172409201
Так ведь байт код один для всех платформ, и вообще он для виртуальной машины. Компиляция для конкретной платформы производится из байткода в машинный в виртуальной машине в зависимости от платформы, но байт код то не зависит от платформы.
Аноним 14/03/18 Срд 13:42:53  172409333
>>172409223
Ебать ограниченный кложуру не знает.
Аноним # OP  14/03/18 Срд 13:43:28  172409366
>>172409223
ЭТО ВСЕ ОБЪЯСНЯЕТ. ВСЕМ ПОКА. ВСЕ СВОБОДНЫ
Аноним 14/03/18 Срд 13:43:45  172409381
>>172409321
Внезапно ты ответил на свой вопрос.
Аноним 14/03/18 Срд 13:43:53  172409390
>>172409321
Именно так, в этом его прелесть, что он один для всех.
Аноним 14/03/18 Срд 13:45:12  172409469
>>172408921
Ну насчет удобства понятно.
Неважно на каком языке написана программа, если для нее есть компилятор в байт-код.

А что в плане производительности?
Байт-код как-то проще и быстрее интерпретировать в машинный код?
Аноним 14/03/18 Срд 13:46:03  172409506
>>172409469
Виртуальная машина - это компромисс между удобством и быстродействием.
Аноним # OP  14/03/18 Срд 13:46:32  172409531
>>172409284
Вот именно, интерпретировать будет интерпретатор, а он сразу может делать это из джава кода, зачем ему байт код.
Аноним 14/03/18 Срд 13:47:01  172409564
>>172408962
смотри.
у нас есть исходный код который выполняет печать одной строки "вон из профессии, мудила". Компилируем и смотрим что выйдет.

если это язык Си или похожий, а код собран под х64 то там будут пошагово указаны простые команды работы с процессором (записать в регистр, умножить, пятое десятое) — известное конечное количество команд, список и возможности которого ограничены архитектурой.

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

А сразу передать исходный код не выйдет, потому что это слишком сложная команда для процессора (виртуального или нет не важно).
Аноним 14/03/18 Срд 13:47:46  172409605
>>172409506
Если это компромисс, то что наиболее удобным является?
Аноним 14/03/18 Срд 13:47:51  172409611
>>172409366
ты какой то приебнутый.

выбрал самый малозначащий фактор как решение.
Аноним 14/03/18 Срд 13:49:00  172409667
>>172409531
При создании байт-кода уже применены оптимизации, это некий полу-ассемблер. Соответственно при исполнении перекомпилировать уже не надо.
Аноним # OP  14/03/18 Срд 13:49:32  172409701
>>172409381
Вопрос то тот же, как джава код не зависит от платформы, так и байт код. Тогда зачем байт код? Ответ уже дали. Оказывается у виртуальных машин не только ждава и сисярп, но и другие языки. Вот тут уже понятно почему байт код нужен.
Аноним 14/03/18 Срд 13:49:41  172409709
Я не понял, что оп спрашвиает вообще. Как передать из джавы сразу в вм, о чем он говорит, приведи пример? Программы, которая складывает два числа. Может ясно будет сразу и тебе и то же.
Аноним 14/03/18 Срд 13:50:09  172409732
>>172409531
затратно.

лисп имеет свою спицифику.

в принципе если ты пишешь на ассемблере то там тоже будет интерпритатор а не компилятор.

Тут две крайности: или у тебя ахуенно сложный интерпритатор (и медленный как сука) или придется писать очень просто и примитивно (как на ассемблере).
Аноним 14/03/18 Срд 13:51:19  172409799
>>172409709
Он имеет ввиду просто исходники интерпретировать, а ля питон и просто интерпретируемые языки.
Аноним 14/03/18 Срд 13:51:45  172409827
>>172409366
Это не объясняет - это следствие, няш.
Аноним 14/03/18 Срд 13:51:51  172409834
>>172409799
Ну, очевидно, это будет просто медленнее работать. Этот ответ его не устраивает?
Аноним 14/03/18 Срд 13:52:22  172409851
15208643615760.jpg (494Кб, 1024x730)
>>172409709
Оп спрашивает, почему нельзя написать просто несколько разных интерпретаторов ява-кода под разные платформы?
Без промежуточной стадии в виде байт-кода.
Аноним # OP  14/03/18 Срд 13:52:44  172409876
>>172409732
А что, затраты на перевод из ЯП в байт-код не учитываются в твоей системе расчетов?
Аноним 14/03/18 Срд 13:53:12  172409906
>>172409701
это блядь не правильный ответ, сука.
ты блядь мало того что тупишь, ты упорствуешь в своей тупости.


джава код это просто исходники, текст. Интерпретировать его можно, только сложно, медленно и не эффективно.

вот этот анотонуан умничка.
>>172409667
пилится компилятор из исходных кодов в байт код, который специальным образом формирует код который легко универсально интерпретировать.

Аноним 14/03/18 Срд 13:53:37  172409932
>>172409701

>>172408821

Множество языков, это просто следствие. Все решили идеальный язык изопрести под свои нужды.
Аноним 14/03/18 Срд 13:54:22  172409968
>>172409876

Ну дык из исходных кодов в байт код ты компилируешь ведь. ну будет у тебя компилятор работать не минуту а три, не похуй ли.

а байт-код уже интерпретируется (в реальном времени) и задержки тут фатальны.
Аноним 14/03/18 Срд 13:54:27  172409974
>>172409876
Не учитывается, программа исполняется из БК
Аноним # OP  14/03/18 Срд 13:54:40  172409979
>>172409906
А когда ты переводишь в байт-код это не сложно и медленно?
Аноним 14/03/18 Срд 13:54:44  172409984
>>172409834
!!!!!
Почему интерпретирование байт-кода происходит быстрее, чем интерпретирование обычного кода?
Аноним 14/03/18 Срд 13:54:46  172409988
Короч, питухи. Были архитектурнозависимые дебилы, которые делали make install на каждую программу. В один прекрасный день, они эволюционировали в архитектурно независимых и создали кусок говна под названием Java. Но тут родился вопрос, как сделать себя независимыми? И изобрели они JVM или JIT-компиляцию. Вы пишите один раз свое говно под заданную архитектуру, чтобы все остальное говно писать архитектурно независимо. И так родились программисты, продолжающие делать make install, и обезьяны, которые не в состоянии написать hello world на АРХИТЕКТУРНО НЕЗАВИСИМОМ языке.

Короче, удобоваримое говно компилируется или интерпретируется в менее удобовариамое говно. Java в байт-код. C# в IL код
Затем менее удобоваримое говно скармливается в виртуальную машину, написанную программистами. А те программисты это говно пробрасывают к ресурсам системы под различные архитектуры. Поэтому нельзя сразу говорить иди наху, а надо сначала надо перевести в пойти нахуй, а затем в 0001
Аноним 14/03/18 Срд 13:55:00  172410006
>>172409701
Ну не совсем для этого. Байт-код был всегда, языки появились потом. Суть связки Джава-БК-ДжВМ-нативный код именно в write once run everywhere - одно и то же приложение можно запустить и на x86, и на ARM, и на SPARC.
Компилятор оптимизирует джава-код и генерит байткод, который уже потом на лету пережевывают для конкретной, сильно отличающейся от других, платформы джава-машины.
Аноним 14/03/18 Срд 13:55:26  172410032
>>172409979

в байт код я перевожу посредством компилятора епта. сделал раз и хуй забил.

а байт код будет интерпритироватся каждый раз как ты запустишь программу.
Аноним 14/03/18 Срд 13:56:27  172410089
>>172409979
Сложно и медленно, но ты писать на БК не можешь. Вот когда роботы будут писать проги, они будут в БК ебошить.
Аноним 14/03/18 Срд 13:56:35  172410098
>>172409988
Джава глючное говно, почему его еще используют, для тирпрайза?
Аноним 14/03/18 Срд 13:56:56  172410121
>>172407380
>На том же С, тебе нужно прогу переписывать под каждую ОС
ЛОЛ. Проиграл с дауна не умеющего пользоваться препроцессором. Вся писечка сишечки в том, что можно хуярить кроссплатформенный код, которой компилируется под целевую ОС, а не переписывается.
Аноним 14/03/18 Срд 13:57:23  172410142
>>172409984
потому что байт сука код оптимизирован под интерпретацию.

обычно исходники в байт-код компилируют а не интерпритируют.

компиляция это постфактум процесс -- раз выполнил и на выходе у тебя бинарный или машинный код.

интерпретирование (кажется еще можно говорить трансляция) происходит каждый раз при выполнении программы.
Аноним # OP  14/03/18 Срд 13:57:28  172410153
>>172409974
Из Бургер Кинга?
Аноним 14/03/18 Срд 13:57:54  172410179
>>172410098
Джава заебись, особенно на правильных серверах. А на виндовых серверах офк сисярп нужон.
Аноним 14/03/18 Срд 13:57:54  172410180
>>172410098
Потому что ничего лучше нет, очевидно же
Аноним 14/03/18 Срд 13:58:03  172410185
>>172409984
Потому что он уже сразу оптимизирован в плане памяти, циклов и прочей хуйни, и там не надо для каждой строчки делать кучу оверхэда, как это делает интерпретатор в питоне.
Аноним 14/03/18 Срд 13:58:24  172410208
>>172410153
Биле ну ты и петрос
Аноним 14/03/18 Срд 13:58:30  172410215
>>172410121
иди нахуй отсюда шакал ебанный.
ты не видишь что у нас тут оп — долбаеб?

программиста-дауна не часто увидишь,

поэтому мы тут все на пальцах ему рассказываем, какие нахуй предкомпиляторы.
Аноним 14/03/18 Срд 14:01:24  172410355
вообщем, ОП.
если хочешь кодить то начинай вкатываться нормально.

1. кури что такое компиляторы и трансляторы.
2. кури архитектуру эвм — все вопросы сразу отпадут. конвеер, команды, наборы инструкций и т. д.
3. кури алгоритмику (курс СиАОД в шарагах на первом курсе дают).

Потом можешь начинать вкатываться в собственно программирование.

А то выходит ты особо не понимаешь как работает машина, особенности архитектуры, методологию а уже лезешь в высокоуровневое программирование.
Аноним # OP  14/03/18 Срд 14:01:34  172410359
>>172410006
То есть, я могу написать "Привет Мир!" на джаве, а потом запустить на андроиде на винде и на маке и везде мне покажет "Привет мир?"
Аноним 14/03/18 Срд 14:02:25  172410395
Если я правильно понял оставшийся вопрос - зачем нужен байткод и почему не интерпретировать тупо исходники, благодаря интерпретаторам написанным под каждую платформу. Байткод работает быстрее. На примере вызова функции - интерпретатору нужно разобрать строку, проверить на синтаксические ошибки, потом перевести в код, который сложит параметры на стек и перейдет на нужную функцию. При этом еще можем и словить ошибки в рантайме, ибо нет компилятора который проверял бы все это на этапе компиляции. В байт коде же это будет выглядеть уже готовой парой строк - так-же складываются параметры на стек потока виртуальной машины и дергается функция. Там почти никаких затрат не будет. Перфоманс можно посмотреть здесь - https://benchmarksgame.alioth.debian.org/u64q/python.html. Понятно что не очень наглядно и много нюансов, но суть передана.
Аноним 14/03/18 Срд 14:02:31  172410404
>>172410359
да.
и перекомпилировать не придется.
собрал где хочешь и работает везде где есть ЯМ
Аноним 14/03/18 Срд 14:02:46  172410422
>>172410359
Везде, где установлена JVM.
Аноним # OP  14/03/18 Срд 14:03:01  172410436
>>172410215
Двачую адеквата
Аноним 14/03/18 Срд 14:03:12  172410443
>>172410395
Ну и плюс еще - компилятор оптимизирует такой код заранее
Аноним 14/03/18 Срд 14:03:21  172410452
>>172410355
Это снизу вверх поход. С верху вниз тоже норм, как он и делает. Особенно, когда надо что-то решать сейчас, а не через 5 лет. Плюс прикладные навыки- знания в сфере очень быстро устаревают, поэтому сверху вниз тоже актуально особенно.
Аноним 14/03/18 Срд 14:05:52  172410591
1387731456380.jpg (22Кб, 309x232)
>>172410142
А, ну то есть типа интерпретация сложного кода современного яп, с классами, кучей методов, ссылающихся на методы этого самого яп, в результате чего заебешься этот клубок раскручивать и прочей залупой в машинный код - медленное дело из-за самой структуры языка?

А вот если бы там были простые команды, как в ассемблере, которые еще и не могут ссылаться на другие команды, а напрямую выполняют простые операции, то это все значительно быстрее интерпретируется?

Аноним 14/03/18 Срд 14:06:21  172410613
>>172410395
>https://benchmarksgame.alioth.debian.org/u64q/python.html
джава сила питон могила
Аноним 14/03/18 Срд 14:06:22  172410616
>>172410452
Нет, это не "сверху вниз", а "сверху вниз мудака, который не ищет уже готовые ответы а просит, чтобы ему лично заново написали новые". Обычно, в этом случае легетимно просто посылать нахуй, но тут из-за того, что никто сразу не понял, что за хуйню оп спрашивает, из-за крайней тупизны происходящего, этого не произошло. Чисто случайно.
Аноним 14/03/18 Срд 14:06:37  172410624
Безымянный.png (27Кб, 1895x917)
Почему сейчас неиспользуется такая схема при разработке ЯПа?
Аноним 14/03/18 Срд 14:07:11  172410645
>>172410624
Мда.
Аноним 14/03/18 Срд 14:07:31  172410662
>>172410624
кобол очень даже используется
Аноним 14/03/18 Срд 14:08:02  172410686
>>172410355
>1. кури что такое компиляторы и трансляторы.
>2. кури архитектуру эвм — все вопросы сразу отпадут. конвеер, команды, наборы инструкций и т. д.
>3. кури алгоритмику (курс СиАОД в шарагах на первом курсе дают).
Эта хуйня нахуй не нада, просто учишь язык и пишешь код.
Аноним 14/03/18 Срд 14:09:49  172410791
>>172410591
Я верно все понял?
Аноним 14/03/18 Срд 14:10:35  172410829
>>172410616
Да стандартная история при таком подходе. Ты просто не пробовал. А так да, говном кидаются и на хуй посылают вполне легетимно, но находятся и няши коих полон тред
Аноним 14/03/18 Срд 14:11:00  172410858
>>172410591
Да. Некоторые команды вообще удаляются нахуй из-за ненадобности во время оптимизации во время компиляции
Аноним # OP  14/03/18 Срд 14:12:19  172410918
Ну раз тут собрались те кто шарят, то по быстрому ответьте мне на следующее: если делать сервер на php то его не надо перезапускать, что бы изменения вступили в силу, а на java и c# нужно же? Вроде когда делал на C# там в каких то случаях надо было перезапускать, а в каких то не надо. Вроде в контроллерах MVC не надо было, а моделях надо было, точно не помню. И как с этим в node.js? Он как php или как java?
Аноним 14/03/18 Срд 14:13:49  172410982
>>172410858
Ага, и рекурсии и вложенные циклы разворачивают-наизнанку выворачивают, потому что разработчик не понял, что так эффективнее. Поэтому и говорят что надо писать код, понятный коллегам, перехитрить зрелый компилятор вообще и JVM в частности надо сильно постараться.
Аноним 14/03/18 Срд 14:17:03  172411163
>>172410918
>node.js
Да там тоже нужно перезапускать.
Аноним # OP  14/03/18 Срд 14:17:37  172411193
>>172411163
Хуево. Тогда буду php изучать
Аноним 14/03/18 Срд 14:18:30  172411235
>>172410918
Я пишу на clojure он под jvm. Вот все время перезапускаю сервак, но уже не раз видел статьи в которых пишут, как разрабатывать без этого. Но я пока забил разбираться в этом. На пхп, когда писал, перезапускать апач не нужно было, но это понятно, он там сам юзает dll ку пхпэшную (виндовый сервак был), а она уже файлы хавает для интерпретации в рантайме.
Аноним # OP  14/03/18 Срд 14:20:40  172411326
>>172411235
Почему перешел с пхп?
Аноним 14/03/18 Срд 14:20:40  172411327
>>172407069 (OP)

Jit компилятор создает последовательных кодов самого процессора.
Аноним 14/03/18 Срд 14:22:47  172411431
>>172410918
Все зависит от масштаба изменений. У джавы хот свап есть например.
Аноним # OP  14/03/18 Срд 14:24:48  172411516
>>172411431
А я вспомнил, в .net можно было изменять код в контроллерах поставив отладку на паузу, а потом возобновить работу серва
Аноним 14/03/18 Срд 14:25:36  172411553
14195832623000.jpg (49Кб, 462x634)
А нахуя вообще виртуальная машина джавы тогда байт-код интерпретирует в реал-тайм?
Почему нельзя использовать такую схему:
1. Пишем код на любом удобном высокоуровневом языке, затем компилируем его в байт-код.
2. Затем компилируем сразу в машинные коды этот байт-код под конкретную ОС.

Все. На выходе исполняемый файл, обладающий максимальным быстродействием.
Код же пишется на высокоуровневом языке.

А промежуточная стадия позволяет разработчикам высокоуровневого языка вообще не париться, где конкретно он будет выполняться, достаточно написать только 1 компилятор - в байт-код.

Далее если под ос существует компилятор байт-кода, он может выдавать быстрые исполняемые файлы для программ, причем ему вообще похуй на каком стильном модном языке это было изначально написано.

Это же гениально.
Такая-то унификация.
Аноним 14/03/18 Срд 14:25:51  172411577
>>172410686
вот потом такие как оп и пишут код

как ты блядь напишешь что то толковое если для тебя компьютер черный магический ящик?

как ты станешь хорошим программистом, если не видишь ахуенных решений, которые сделали другие люди до тебя?

быдлокодером стать легко, программистом быть сложно.
Аноним 14/03/18 Срд 14:26:20  172411600
>>172411326
Да много факторов. Ну первый просто подустал от языка, захотелось новых ощущений. Начал выбирать язык, ну вот увидел такой со всякими фичами прикольными из коробки, потом мне лисп нравился в универе, ну и он над jvm поэтому проблем с библиотеками быть не может, бери любую джавовую. И последнее - это сообщество, маленькое, но очень плотное. Никакой токсичности, воды мало по делу много, короче качественное. И последнее платят в среднем синьерам больше, чем за пхп, как за го примерно.
Аноним 14/03/18 Срд 14:28:27  172411707
>>172408516
Байт-код оптимизирован под ВМ, поэтому исполняется быстрее исходного, но все так же остаётся независимым от платформы.
Аноним 14/03/18 Срд 14:28:39  172411714
>>172411193
Не надо php изучать.
мимо изучал php 5 лет
Аноним # OP  14/03/18 Срд 14:30:07  172411792
>>172411714
Почему?
Аноним 14/03/18 Срд 14:31:07  172411839
>>172411792
Уебанский язык, все в нем через жопу
Аноним # OP  14/03/18 Срд 14:31:40  172411860
>>172411839
Зато джаст ин тайм и быстрый
Аноним 14/03/18 Срд 14:32:02  172411876
>>172407069 (OP)
в е
Аноним # OP  14/03/18 Срд 14:32:22  172411891
>>172411876
?
Аноним 14/03/18 Срд 14:32:36  172411906
>>172411860
Ничтожные плюсы на фоне гигантских минусов
Аноним # OP  14/03/18 Срд 14:33:02  172411925
Думаю изучить вордпрес, сделать тему и срубить бабла
Аноним 14/03/18 Срд 14:33:31  172411948
>>172411553
Поясните. Мне кажется я придумал самую гениальную хуйню эвар
Аноним 14/03/18 Срд 14:33:54  172411962
>>172411839
Зато очень востребованный и на нем очень легко найти работу.
Аноним # OP  14/03/18 Срд 14:34:09  172411980
>>172411906
Пользователей не волнуют твои вкусы ЯП. И главное чтоб все быстро и четко
Аноним # OP  14/03/18 Срд 14:36:40  172412113
>>172411948
Звучит правдоподобно. Я в это верю.
Аноним 14/03/18 Срд 14:37:11  172412136
>>172411925
Whatever floats your boat.
Аноним 14/03/18 Срд 14:37:47  172412169
>>172408395
>Тогда почему тогда не весь код перевести в нативный код.
Тогда проще компилировать в нативный нормальный компилятором. Да и не весь код, в очень сложной программе например, не будет использован во время работы.
Аноним 14/03/18 Срд 14:38:49  172412212
>>172411980
Если коротко говорить, нормальный сложный проект будет оче хуево писать на похапе.
Из-за кривожопой структуры языка, которой вообще нет, отсутствия строгой типизации.
(зачатки добавили в последних версиях, но это все равно детский сад)

Блять, даже говорить лень, ПХП - язык-калека.
Аноним 14/03/18 Срд 14:40:47  172412310
>>172411553
>>172411948
молодец ты только что придумал Си или любой другой язык, который сука так и работает.

Пишешь исходный код, компилируешь его в машинные коды, исполняешь.
Аноним 14/03/18 Срд 14:43:37  172412421
>>172412310
Ну ты и долбоеб, не напрямую высокоуровневый код в машинный, а
Высокоуровневый -> байт-код -> машинный.
Аноним 14/03/18 Срд 14:45:11  172412481
>>172411948
Ну так в каждую дистрибуцию войдет код jvm либо .net, понятно, что тогда надо оптимизатор писать и тп. Больше возможностей для изучения реверсного среды откроется, а это не в интересах Оракла или Микрософта. Короче, сейчас все вроде бы по уму.
Аноним 14/03/18 Срд 14:46:25  172412536
>>172411553
Книжку открой, изобретатель-клоун. Интерпретатор использует ресурсы, чтобы понять как выполнить ближайщую инструкцию, и после этого, время от времен, он еще за собой подчищ

ой, заебало писать, че-то на середине ответа
Аноним 14/03/18 Срд 14:47:50  172412596
>>172412212
Не согласен, на нем можно писать, как колека. А вообще хоть в ФП стиле пиши, и будет все збс. Просто на это забивают и пишут по принципу хуякхуяк и в продакшен, но всякие фейсбуки так не получаются.
Аноним # OP  14/03/18 Срд 14:51:12  172412751
>>172412596
Я слышал мнение что наследование в ООП гнилая тема и лучше использовать интерфейсы. Как думаешь?
Аноним 14/03/18 Срд 14:53:37  172412869
>>172411553
Ты только что в жава
Аноним 14/03/18 Срд 14:56:37  172413010
>>172412751
Интерфейсы не заменяют его универсально как-то. Лично я не знаю чего в нем плохого, тем более в современных языках, где допускают только 1 предка. Но если не хочется наследоваться, то используют интерфейсы и dependency injection для расширения класса.
Аноним 14/03/18 Срд 15:00:23  172413228
>>172412751
Кстати из ООП перешел на ФП именно, потому что тут столько по методологии вариантов и у всех своя правда, которую готовы довольно агрессивно отстаивать. А в фп все намного проще.
Аноним 14/03/18 Срд 15:02:21  172413328
>>172413228
В ФП ещё больше срачей по поводу языков и конструкций.
Аноним 14/03/18 Срд 15:05:53  172413536
>>172412421
предлагаю еще транслировать в промежуточный код на идише.
смысла в этом столько же.
Аноним 14/03/18 Срд 15:10:45  172413804
>>172413328
Ну может, но пока не приходилось.
Аноним 14/03/18 Срд 15:11:58  172413881
>>172413328
А кстати, например какой там стандартный холивар о конструкциях?
Аноним 14/03/18 Срд 16:15:58  172417360
>>172412481
Ну это да, файлы дистрибутивов будут большими, но это похуй.
Потом можно кидать саму ебалу jvm в систему, как и щас
Аноним 14/03/18 Срд 16:38:04  172418466
>>172407069 (OP)
Так бля, киньте ссылку на ответ, где пояснили по людски, потому что половину треда прочитал и уже хуево стало.
Аноним # OP  14/03/18 Срд 17:07:27  172419937
>>172418466
По людски тут не написали. Но суть я понял так. Ты хочешь написать программу на несколько платформ. У тебя есть следующие варианты:
1. Пишешь программу с использованием определенных библиотек на определенных ЯП под каждую из платформ и компилируешь для каждой платформы. Долгая разработка, быстрая работа приложения, долгая компиляция программы.
2. Пишешь программу на ЯП для интерпретатора. Программа будет работать на всех платформах где есть интерпретатор этого языка. Быстрая разработка, медленная работа приложения (для каждой команды интерпретатор выполняет перевод в машинный код по очереди, то есть взял команду - перевел - процессор выполнил и потом опять заново, и так для каждой команды, когда в случае с компиляцией ВЕСЬ код переводится в машинный и процессор выполняет весь код программы), компиляция в реальном времени (интерпретатор идет по коду и сразу выполняет его.
3. Пишешь для виртуальной машины которая работает на различных платформах, как и интерпретатор. Программа полностью компилируется в байт-код. Этот байт-код переводится в машинный код виртуальной машиной и выполняется как в интерпретаторе по ходу чтения программы. То есть берется строчка байт-кода и сразу же выполняется. Программа работает везде где есть виртуальная машина, код требуется компилировать в байт код, что медленнее чем в случае с интерпретатором, но быстрее чем в 1 случае, потому что там тебе нужно будет компилировать несколько програм под каждую платформу, а с байт-кодом нужно скомпилировать только один раз. Ну и выполняется программа так же медленно как и во втором случае, так как виртуальная машина поочередно переводит байт код в машинный и передает его в процессор и так далее, то есть по одной команде, каждый раз обращается к процессору.
Вроде так.
Аноним 14/03/18 Срд 17:08:11  172419977
>>172419937
Спасибо, схоронил, потом прочту на свежую голову.
Аноним # OP  14/03/18 Срд 17:11:17  172420126
>>172419977
Только не забудь подписать, что это мысли вкатывальщика с поверхностным пониманием этих вещей.
Аноним # OP  14/03/18 Срд 17:20:50  172420575
>>172419977
И еще я забыл добавить, почему JIT (3 случай) быстрее интерпретатора. Команду байт-кода перевести в машинный код быстрее, чем перевести команду ЯП в машинный код (выигрыш байт-кода в пользу производительности приложения). Но в байт код нужно сначала скомпилировать программу на ЯП, а для интерпретатора не нужно компилировать ничего (выигрыш интерпретатора в пользу экономии времени на компиляцию).
Аноним 14/03/18 Срд 17:22:36  172420645
>>172420575
Ага, спасибо. Как по мне, так лучше делать упрек на быстродействие. Разраб подождет, юзер нет.
Аноним # OP  14/03/18 Срд 17:28:09  172420908
>>172420645
Ну если игры разрабатываешь требовательные к ресурсам, тогда приходится писать под каждую платформу отдельно и компилировать для каждой отдельно соответственно. Тогда юзер будет ждать свою игру годами, прежде чем поиграть в нее без лагов.
Если веб сервис, где все мощности находятся на выделенном мощном сервере, да и сам сервис не такой требовательный как игра, тогда и разработка быстрая и юзер не страдает.
Так что выбор исключительно зависит от области в которой ты работаешь
Аноним 14/03/18 Срд 17:53:36  172422129
15191236223930.jpg (20Кб, 351x351)
Ну с устройством виртуальной машины явы и сисярпа мы разобрались.
Понятно что байт-код интерпретируется существенно быстрее, чем голый год высокоуровневого яп.

Но сука.
ЧТО МЕШАЕТ ВМЕСТО ИНТЕРПРЕТАЦИИ БАЙТ-КОДА КОМПИЛИРОВАТЬ ЕГО В МАШИННЫЕ КОДЫ ПОД КОНКРЕТНУЮ ОС?

Чем это отличается от того, чтобы сразу скомпилить высокоуровневый яп в машинный код под конкретную платформу:
Тем, что разраб любого языка больше не парится насчет того, КАК его язык будет выполняться на разных платформах, а тупо пишет ему 1 единственный компилятор - в байт-код.
Далее разраб оси или вообще хуй знает кто пишет компилятор байт-кода в машинные коды для этой ос, тем самым за 1 присест давая возможность выполнения тонн программ в байт-кодах, написанных вообще хуй знает на чем, на чем угодно блять, на своей ос.

Это же гениально, мать вашу, это просто охуенно!
Аноним 14/03/18 Срд 17:58:44  172422359
>>172407244
>некоторые куски кода(которые выполняются очень часто к примеру) jit-компилятор компилит в нативный код
Нахуя такой гемор, если можно сразу всё скомпилировать в нативный код и получатьпрофит.
Аноним 14/03/18 Срд 18:01:38  172422486
>>172407999
В коде, очевидно же твоя ошибка.
Аноним 14/03/18 Срд 18:06:28  172422689
>>172409118
Потом унифицируют железо и весь этот байт код нахуй никому нинижон станет.
Аноним 14/03/18 Срд 18:07:50  172422748
ШИТЫЙ КОД
И
Т
Ы
Й

К
О
Д
Аноним 14/03/18 Срд 18:09:34  172422822
>>172422748
Че?
Аноним 14/03/18 Срд 18:10:09  172422848
>>172422822
Погугли.
Аноним 14/03/18 Срд 18:11:52  172422932
>>172422848
Делать мне больше нехуй.
Я интернет оплачиваю, чтобы меня тут гуглить заставляли?
Аноним 14/03/18 Срд 18:20:11  172423326
>>172422129
Это LLVM.
Аноним 14/03/18 Срд 18:22:50  172423462
>>172422359
Называется ahead of time compilation (AOT). Может занимать много времени, а юзеру надо поставил-запустил.
Пример с андроидом: в ранних версиях было без аот, потом для избежани тормозов решили делать аот при установке (установка стала дольше). Вроде решили, что так лучше.
Аноним 14/03/18 Срд 18:24:56  172423556
>>172422932
>Мамка интернет оплачивает
поправил
Аноним 14/03/18 Срд 18:25:30  172423580
>>172422129
Добавлю, что архитектура самой ВМ может мешать такому универсальному подходу (например жвм не даёт сохранения информации о типах в генериках, что где-то хорошо, где-то плохо, но уже отличается от. Net подхода)
Аноним 14/03/18 Срд 18:54:58  172424992
>>172407069 (OP)
Сколько у тебя IQ?


Топ тредов
Избранное