байт код

Проектирование и разработка идеального средства программирования.

Модератор: Модераторы

байт код

Сообщение mirk » 11.10.2007 20:28:36

Насколько я помню, еще в довольно древние времена Н.Вирт в паскаль ввел такое понятие как байт-код :)

Потом эта "фича" появилась у явы
Сейчас мы наблюдаем подобное у .NET
Также последний перл тоже начал уметь компилировать в байт-код, пхп имеет что-то подобное (только с якобы шифрованием)

Я так понимаю у каждого компилятора (или интерпритатора) свое понятие о байт-коде. Собственно хотелось узнать какие особености, недостасти и плюсы у каждого. Ведь для современного языка и байт-код думаю пригодится :)
mirk
постоялец
 
Сообщения: 317
Зарегистрирован: 24.09.2007 10:03:39

Сообщение alexs » 11.10.2007 20:39:06

фактически это ещё один тип поддерживаемого процессора. Причём интерпретаторов P-кода может быть множество (тот же Net, J и т.д.)
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Сообщение ev » 11.10.2007 20:43:18

кстати, есть компилятор оберона в байт-код ява-машины :)
ev
долгожитель
 
Сообщения: 1763
Зарегистрирован: 27.04.2005 23:19:06
Откуда: Москва

Сообщение trifon » 11.10.2007 21:16:49

Ocaml имеет просто интерпретатор, интерпретатор байткода, компилятор.
Разница как в скорости так и в размере бинарника весьма существенная. Интерпретатор текста самый медленный и бинарника естественно не имеет, байткод имеет раза в полтора меньший размер файла чем у скомпилированного кода, однако запускается через байткод-интерпретатор и существенно медленней.
Мне кажется о байткоде лучше на википедии читать, на подобные вопросы там всегда есть страничка на русском
trifon
постоялец
 
Сообщения: 135
Зарегистрирован: 24.12.2006 12:08:35

Сообщение trifon » 12.10.2007 15:52:43

Напоминает микроядро - в самом байткоде реализуется алгоритм в чистом виде, вся платформо-зависимая часть выносится в интерпретатор или виртуальную машину, называйте кому как больше нравится
trifon
постоялец
 
Сообщения: 135
Зарегистрирован: 24.12.2006 12:08:35

Сообщение e-moe » 19.10.2007 15:00:08

Кто-то тут о скорости говорил... По-моему в .NET с эти не плохо придумали: при запуске в первый раз байт код компилируется в нативный код именно для текущего процессора на котором он запущен + все оптимизации. При следующем запуске будет уже использоваться заранее скомпилированный и сохраненный нативный код.
e-moe
новенький
 
Сообщения: 31
Зарегистрирован: 27.09.2007 17:00:39

Re: байт код

Сообщение stanilar » 27.04.2015 23:30:07

IMHO

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

В настоящее время байт-код - это способ не дать программистам свободно переносить свои решения с одной платформы на другую. Если верить ohloh'у количество С - кода бьет рекорды.


e-moe писал(а):при запуске в первый раз байт код компилируется в нативный код


Это повод упрекнуть Microsoft в растранжировании энергоресурсов стран. Сразу скомпилировать в нативный не так сложно, даже для нескольких платформ windows.
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: байт код

Сообщение pda » 28.04.2015 18:56:12

stanilar писал(а):Сразу скомпилировать в нативный не так сложно, даже для нескольких платформ windows.

Зато следующая версия aot-компилятора может выйти более оптимизирующей и старая программа внезапно станет работать быстрее. :)
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: байт код

Сообщение *Rik* » 28.04.2015 19:15:12

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

Как раз наоборот, Java не только жива, но и способствовала появлению C# и в настоящее время эти технологии очень востребованы.
stanilar писал(а):В настоящее время байт-код - это способ не дать программистам свободно переносить свои решения с одной платформы на другую. Если верить ohloh'у количество С - кода бьет рекорды.
Нет другого более легкого способа заставить прикладное приложение работать на разных платформах без перекомпиляции вообще, кроме как компиляции в байт-код какого-либо виртуального процессора.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: байт код

Сообщение скалогрыз » 28.04.2015 20:44:08

mirk писал(а):Я так понимаю у каждого компилятора (или интерпритатора) свое понятие о байт-коде. Собственно хотелось узнать какие особености, недостасти и плюсы у каждого. Ведь для современного языка и байт-код думаю пригодится
Ориентируйся на лидера в экономическом плане. Т.е. выбор между Гуглом (с его переносом java-код в dalvick) и Майкросов с его CLI.

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

Ну а технические параметры не так уж важны.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: байт код

Сообщение *Rik* » 28.04.2015 22:08:47

mirk писал(а):Насколько я помню, еще в довольно древние времена Н.Вирт в паскаль ввел такое понятие как байт-код :)

Да, всё верно, само понятие бай код исходит из того, что им кодируются инструкции вымышленного RISC процессора, количество простых команд которого ограничено и 1 команда умещается в 1 байт (т.о. всего команд не более 255), отсюда и название. Атрибуты самой команды могут быть довольно длинные и указывать на регистры или области памяти, но сама команда всегда не более 1 байта.
mirk писал(а):Я так понимаю у каждого компилятора (или интерпритатора) свое понятие о байт-коде.
Никаких правил нет, если есть желание можете придумать и реализовавть любой набор инструкций, какой хотите.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: байт код

Сообщение stanilar » 28.04.2015 22:42:07

*Rik* писал(а):Как раз наоборот, Java не только жива, но и способствовала появлению C# и в настоящее время эти технологии очень востребованы.


Именно сейчас они и стали очень востребованы. Что говорит о том, что байт код имеет очень опосредованное отношение к понятию "разные платформы".

Кстати, ни С#, ни JAVA еще не отменили Си, частью которого и является паскаль. В этом связи можно провести очень интересное наблюдение - FPC может компилировать под разные платформы, а вот C# и Dalvik не очень (Я еще не видел полноценных продуктов C# на Androide, и продуктов под Dalwik на винде).
stanilar
постоялец
 
Сообщения: 289
Зарегистрирован: 09.03.2010 19:09:02

Re: байт код

Сообщение скалогрыз » 28.04.2015 23:50:34

stanilar писал(а):Кстати, ни С#, ни JAVA еще не отменили Си, частью которого и является паскаль
классная фраза для начала срача C vs Pascal :mrgreen: :mrgreen: :mrgreen:
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: байт код

Сообщение pda » 29.04.2015 00:54:13

stanilar писал(а):Сразу скомпилировать в нативный не так сложно, даже для нескольких платформ windows.

Вот это вы зря кстати так. Приличная часть софта написана на C++, у которого очень медленная скорость компиляции. Крупные проекты вынуждены держать фермы компиляции (для сборки дистрибутивов или windows) и даже там ряд тяжёлых пакетов, вроде libreoffice может часами собираться.

Но время не единственный фактор. Для кросс сборки потребуется иметь тулчейны для всех платформ, причём в принудительном порядке и это всё равно не гарантирует работы программы на платформе, отличной от платформы разработчика, где он тестировал. Так стоит ли оно... Apple в период перехода с PowerPC на x86_64 кнутом заставляла свои универсальные файлы делать. В Linux, когда предложили идею fatelf (несколько платформ, склеенных в одном имполняемом файле) тоже было без энтузиазма воспринято...
Аватара пользователя
pda
постоялец
 
Сообщения: 303
Зарегистрирован: 27.05.2005 19:59:53

Re: байт код

Сообщение скалогрыз » 29.04.2015 01:17:00

pda писал(а):Apple в период перехода с PowerPC на x86_64 кнутом заставляла свои универсальные файлы делать.

Не совсем так, с PowerPC переходили на i386 либо x86_64 (по вкусу и желанию).

Кнутом универсальные файлы не заставляли делать. Наоборот, давали возможность стряпать универсальные бинарики. (что кстати, странно, учитывая, что OSX использует Бандлы. Могли бы и на уровне bundl-а разрулить два разных исполняемых фалов).
Можно сделать бинарик, поддерживающий все 4 архитектуры, PPC, PPC64, i386, x86_64.

В то время стали появлятся програмки, с требованием OSX 10.4 Intel-only.

Ну а дальше, OSX как и винды, позволяет запускать 32-битные приложения без проблем на 64-битной ОСи или процессоре. Кстати сам OSX поставлялся сразу 32/64 и подстраивался под установленное железо... Что в случае с маками, не так уж и сложно.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

След.

Вернуться в Компилятор / язык программирования

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru