(Untitled)

Nov 11, 2007 07:37

Какая прелесть. ARM тихой сапой добавил явовские байткоды в качестве еще одной ISA. (у них уже и так было две) Поскольку ARM просто везде, можно с уверенностью говорить, что никакой Явовской виртуальной машины вне пределов совсем "взрослых" писюков и рабочих станций уже нет - нелепая архитектура явовской машины канонизорована "в железе"! Фу ( Read more... )

Leave a comment

Comments 95

lnvp November 11 2007, 08:36:58 UTC
"Стандарт портативного кода" изобретал не совет мудрецов города Солнца, а простые труженики индустрии, инженера от сохи, сотрудники фирмы Сан (ха-ха, каламбур). У них в голове засели прогрессивные программистские идеи 70-х - p-код как переносимая реализация Паскаля! Тут другой дедушка постарался, Вирт.

Тем не менее, "байт код" - весьма практичное разделение абстракций, а с AST - сложнее, сильнее завязка на свойства конкретного языка. С типа "байт кодом" (под названием IL) в Майкрософте в .NET компилируют массу всякой всячины (недавняя новость - F#, являющийся скрещенеим OCaml и .NET, решили продуктизовать). С AST ни фига подобного не вышло бы.

Reply

muchandr November 11 2007, 08:49:44 UTC
Куда еще сильнее завязка, чем в Явовской машине? Так кроме стэк-машинки и так еще синтах для резолюции типично явовских классов. Посему не-Яву имплементировать сложно (вроде изебзднулись и сделали Питон, но и все) У AST по-моему меньше завязка - достаточно просто описать формат записи дерева. Другой язык, ну другой AST. Вполне можно себе представить в рамках того же формата.

Reply

lnvp November 11 2007, 09:04:50 UTC
Другой язык, ну другой AST

во-во, тут и начинается интересное: "данная исполнительная система выполняет AST языка А версии 3.1, AST языка Б версии 0.4, AST языка В версии... и вот такие вот их смеси, а других языков не знает в принципе" - и чем это сильно лучше набора интерпретаторов просто исходников (ну хорошо, зазипованных исходников, для компактности)? Разжевать исходник в специфический для данного языка AST - не такой уж большой труд. Вот задизайнить хороший стандарт AST, чтобы был практичный (работал для нескольких языков / версий) и долгоживущий - это труд. Я не слышал, чтобы существовали практичные (не академические, сколько-нибудь индустриальные) реализации на базе AST. Наверно, сильно глупые инженеры, да?

Reply

muchandr November 11 2007, 12:25:54 UTC
Ну знаешь, Java в качестве portable runtime разных языков совершенно не задумывалась. Может, для .Net лучше и байткоды. К сожалению, не имею не малейшего понятия о структуре ихнего IL.

Reply


bacek November 11 2007, 08:59:41 UTC
Есть такое проект Apache Harmony. Независимая реализация java. Так они джавовский байт-код компилируют в регистровую VM.

Reply

muchandr November 11 2007, 12:30:35 UTC
Не понял. На входе у них все равно стандартный байткод?

Reply

bacek November 14 2007, 03:40:55 UTC
ну да. В гуглёвом Андроиде то же самое:

Every Android application runs in its own process, with its own instance of the Dalvik virtual machine. Dalvik has been written so that a device can run multiple VMs efficiently. The Dalvik VM executes files in the Dalvik Executable (.dex) format which is optimized for minimal memory footprint. The VM is register-based, and runs classes compiled by a Java language compiler that have been transformed into the .dex format by the included "dx" tool.

Reply

muchandr November 14 2007, 12:34:13 UTC
Понял. Сначала статическая рекомпиляция в регистровый формат, так? (as opposed to JIT)

Reply


ilya666 November 11 2007, 12:38:20 UTC
и получился бы LISP - вполне себе AST.

Reply

muchandr November 11 2007, 12:47:39 UTC
Согласен. LISP - отличная МАШИННАЯ нотация :)

Reply


(The comment has been removed)

muchandr November 13 2007, 22:05:06 UTC
IBM-овская придурь - штучный товар, тогда как ARM - это считай что весь embedded рынок. Существовал, кстати задолго до Явы, причем ARM-oвкая ISA настолько же элегантна, насколько ISA Явовских байткодов уебишна. Короче, технически правильно было бы сделать наоборот - заменить Явовские байткоды армовскими инструкциями :)

Reply


potan November 11 2007, 17:26:59 UTC
Виртовцы сжимали AST Оберона. На мой взгляд - фигня вышла.
JITу сложные адресации не нужны. Он переводит стековый код в нормальный трехадресный, а потом его компилирует.
Аппаратная Java хороша для систем с маленькой памятью. Каковыми являются все встраиваемые системы :-).

Reply

lnvp November 11 2007, 19:34:25 UTC
По-моему вся возня вокруг Оберона - опереточная история. Поздно, глупо, смешно. Если бы Вирт и его единомышленики - в своё время! пока было не поздно! - просекли, что идеологическая борьба за промышленный язык может идти только по линии Паскаль vs. С, можно было бы прокачать Паскаль (ну типа как делал Борланд, но не в частной лавочке, а на уровне стандартов) и не заниматься придумыванием всё новых и новых "лучших Паскалей" (Модула, Модула-2, Оберон, наконец... - пока Вирт их придумывал и по-академически внедрял, поезд давно уехал).

Reply

muchandr November 13 2007, 21:53:37 UTC
Совершенно согласен. Помню время, когда Turbo Pascal был самым крутым компилятором на PC вообще. Вирт в целом оказался one trick pony - он почему-то считал, что мир спасет все более анальная типизация. Modula-2 это типа Паскаль, в котором для каждого типа есть cвоя разновидность команды print. Псих. Ошибки, сводящиеся к кривому тайпкасту далеко не самые серьезные.

Reply

lnvp November 14 2007, 03:38:14 UTC
Про print в Модуле-2 не помню (всё ж-таки там какой-то оверлоадинг присутствовал хотя бы для встроенных функций), но в ней была приличная - на уровне языка! - система раздельной компиляции, сильный пойнт супротив С. Но называть и продвигать это нужно было как Паскаль 2 :) (в исходном описании Паскаля эта тема, увы, не была раскрыта).

Reply


Leave a comment

Up