От: | Mamut | http://dmitriid.com | |
Дата: | 29.11.10 13:21 | ||
Оценка: |
Прошу запомнить выделенное. Ибо про это Павел благополучно забудет, борясь с ветряными мельницами.10.11.10
Объем кода серьезной программы на С++ по сравнению с объемом кода на асме незначительно (на проценты, от силы десятки процентов) больше, а объем данных и ресурсов от языка не зависит: массив в 100 Кб займет 100 Кб, опиши его хоть на С, хоть на Паскале, хоть на асме. Bmp в ресурсах тоже.
…
Но на старых процессорах интерпретатор [JavaScript'a] работал и ему хватало 16-32 Мб (больше просто не было), а теперь ему и быстродействия почему-то не хватает, надо за счет памяти увеличивать, хотя он теперь вроде как уже и не интерпретатор.
…
А компилятор с Фортрана в 70-е годы работал на 256 Килобайтах. А ТурбоПаскаль с ООП в 80-е годы на 1 Мбайте. Во сколько раз JS сложнее ТурбоПаскаля ?
Что я, файлы на С/С++ размером в 100 Кб не видел, что ли ? И компилировал их ТурбоС на 1 Мб ОП в DOS со вполне приличной скоростью. А TурбоПаскаль так просто летал.
ТурбоПаскаль 1987 года тихо и спокойно переварил бы файл на 177.27 Кб при 640 Кб ОП и не почесался бы.
Компиляция обычных статических языков, как я уже не раз тут замечал, вполне может идти на нескольких Мб. Доказательство простое — она шла, и с весьма приличной скоростью при памяти в Мбайты и частоте в десятки-сотню MHz и без многоядерности.
M>Фигня, что этот скрипт не только компилируется, но и выполняется?
А что тут такого ? Интерпретаторы этим всю свою историю занимались, на то они и интерпретаторы. Даже какой-нибудь GW-Basic на 64 Кб это умел. Чистый интерпретатор берет строчку исходного текста, строит машинные команды, исполняет. Полукомпилятор хранит еще и кэш этих кусков машинных команд, чтобы повторно не интерпретировать. Из 5 Мбайт исходников на каком угодно языке (хоть на асме) этих машинных команд можно создать не более 1-2 Мбайт. В чем проблема-то ?
M>Пустой фотошоп спокойно отжирает 130 метров памяти. Компилятор С++ — гуано, однозначно.
Слушай, не смеши. При чем тут компилятор ?
PD>>Не к компиляции, а к работе. Если в JS объявлен массив на 100 Мб — я первый потребую под него место. Но пока его нет, нечего память транжирить.
M>Ну пока его нет, его и не транжирят. Вернее, транжирят столько, соклько нужно для JIT'а и runtime-оптимизаций.
А сколько нужно под код на js размером в 50-100 Кб при том, что там нет больших массивов ? Я так полагаю, что 1 Мб должно хватить. Для ТурбоПаскаля хватало же.
c ТурбоПаскалем ты знаком, нет ? … А компилировал прямо-таки с жуткой скоростью.
Понимаешь, все эти аргументы бледнеют перед одним простым фактом — компиляторы, которые работают в 1-2 Мб, сделать можно. Я не знаю, что они там в v8 сделали, и, честно говоря, мне это не слишком интересно.
Ну идет в рантайме компиляция вместе с выполнением. Ну в худшем случае это значит, что нужна память для компилятора и рабочей программы. Это еще TP умел на 1 Мб, и без всякой интерпретации. Да, не было там многого, но многое и было. На 1 Мб.
Да пусть хоть html вместе с js и css и чем там еще хоть 5 Мб на страницу. Компиляция 5 Мб в BC 3.1 на стареньком компе шла со свистом лет 10 назад.
TP приведен не для доказательства ущербности js (точнее, интерпретатора с него), а для сравнения потребностей для обработки исходной программы и исполнения результирующей программы в том и в другом случае. Если на протяжении десятилетй как-то ухитрялись укладывать задачу компиляции в Мб