Недавно была опубликована статья под заголовком "Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода". Несколько тезисов из статьи вызвали у меня сомнения в их справедливости. Об этом я попробовал написать ряд комментариев тире вопросов к указанной статье. Но основной лейтмотив всех ответов сводился к тому - "а ты напиши свою статью". Подход не столько инженерно-научный, сколько детсадовский. Мне бы хватило и содержательных ответов в формате комментариев, но как говорится - уговорили.
Рубрика «интерпретаторы»
Ответ на статью о «Наиболее быстром интерпретаторе»
2024-11-09 в 20:41, admin, рубрики: jit-компиляция, x86, виртуальная машина, интерпретаторы, оптимизация, процессорБезымянный язык программирования без присваивания имён
2024-02-26 в 7:22, admin, рубрики: именование, интерпретаторы, создание языка программирования, эзотерические языкиДавать имена сложно. Давайте посмотрим, как далеко мы можем зайти без них.
Что это?
Это язык программирования, основанный на трёх парадигмах:
Сколько строк на C нужно, чтобы выполнить a + b в Python?
2023-12-13 в 15:57, admin, рубрики: cpython, виртуальные машины, интерпретаторыВ своей предыдущей статье я исследовал структуру PyObject
и её роль в качестве заголовка для всех объектов среды исполнения CPython. Эта структура играет важнейшую роль в обеспечении наследования и полиморфизма в системе объектов CPython. Но это лишь вершина айсберга.
В этой статье мы опустимся на один уровень ниже и посмотрим, что же происходит внутри среды исполнения Python для выполнения простого действия a + b
. Иными словами, мы узнаем о подробностях реализации типов, операторов и динамической диспетчеризации в CPython.
Иголка в стоге сессий, или Байт-код регулярных выражений
2018-12-13 в 13:01, admin, рубрики: C, c++, байт-код, Блог компании Badoo, виртуальная машина, интерпретаторы, Компиляторы, Программирование, Регулярные выражения
17 млрд событий, 60 млн пользовательских сессий и огромное количество виртуальных свиданий происходят в Badoo ежедневно. Каждое событие аккуратно сохраняется в реляционные базы данных для последующего анализа на SQL и не только.
Современные распределённые транзакционные базы данных с десятками терабайт данных — настоящее чудо инженерной мысли. Но SQL как воплощение реляционной алгебры в большинстве стандартных реализаций пока не позволяет формулировать сложные запросы в терминах упорядоченных последовательностей кортежей.
В последней статье из серии, посвящённой виртуальным машинам, я расскажу про альтернативный подход к поиску интересных сессий — движок регулярных выражений («Поросячий Матчер»), определённых для последовательностей событий.
Виртуальная машина, байт-код и компилятор прилагаются бесплатно!
Полёт свиньи, или Оптимизация интерпретаторов байт-кода
2018-11-07 в 15:01, admin, рубрики: C, c++, байт-код, Блог компании Badoo, виртуальная машина, интерпретаторы, Компиляторы, Программирование
"No matter how hard you try, you can't make a racehorse out of a pig. You can, however, make a faster pig" (комментарий в исходном коде Емакса)
Всем известен тот факт, что свиньи не летают. Не менее популярно мнение о том, что интерпретаторы байт-кодов как техника исполнения языков высокого уровня не поддаются ускорению без применения трудоёмкой динамической компиляции.
Во второй части серии статей об интерпретаторах байт-кодов я на примере небольшой стековой виртуальной машины ПВМ («Поросячья Виртуальная Машина») постараюсь показать, что не всё потеряно для трудолюбивых поросят с амбициями и что в рамках (в основном) стандартного C вполне возможно ускорить работу таких интерпретаторов по меньшей мере в полтора раза.
Интерпретаторы байт-кодов своими руками
2018-10-04 в 13:01, admin, рубрики: C, c++, Блог компании Badoo, виртуализация, виртуальная машина, интерпретаторы, Компиляторы, ПрограммированиеВиртуальные машины языков программирования в последние десятилетия получили весьма широкое распространение. С презентации Java Virtual Machine во второй половине 90-х прошло уже достаточно много времени, и можно с уверенностью сказать, что интерпретаторы байт-кодов — не будущее, а настоящее.
Но данная техника, на мой взгляд, практически универсальна, и понимание основных принципов разработки интерпретаторов пригодится не только создателю очередного претендента на звание "Язык года" по версии TIOBE, но вообще любому программисту.
Словом, если вам интересно узнать, как складывают числа наши любимые языки программирования, о чём до сих пор спорят разработчики виртуальных машин и как безболезненно сопоставлять строки и регулярные выражения, прошу под кат.
Редактор TECO: EMACS, я твой отец
2018-03-19 в 5:42, admin, рубрики: emacs, teco, интерпретаторы, КодоБред, ненормальное программирование, старожилы помнят, текстовые редакторыВпервые про TECO я прочитал в пародийной статье Real Programmers Don't Use Pascal, написанной незадолго до моего рождения. Там было написано, что настоящие программисты не используют новомодные редакторы EMACS и VI:
Нет, Настоящий Программист хочет редактор вида «Просил? Так получай!» — сложный, загадочный, мощный, не прощающий ошибок, опасный. TECO, если быть точным.
ОригиналNo, the Real Programmer wants a `you asked for it, you got it' text editor — complicated, cryptic, powerful, unforgiving, dangerous. TECO, to be precise.
Это меня заинтриговало. Что за зверь такой, можно ли его пощупать? Википедия рассказала, что TECO — это Text Editor & COrrector, создан он в 1962-м году в DEC и использовался на компьютерах семейства PDP, а позже на системах OpenVMS. Оказалось, что существует порт на Си, который поддерживается энтузиастами в актуальном состоянии и собирается под современными операционными системами. Вот я и решил почувствовать себя настоящим программистом хотя бы немножко.
Трамплин вызова магических функций в PHP 7
2016-09-27 в 9:42, admin, рубрики: php, Блог компании Mail.Ru Group, интерпретаторы, Компиляторы, срыв покровов
В этой статье мы подробно рассмотрим оптимизацию в виртуальной машинe в PHP 7 (виртуальной машине Zend). Сначала коснёмся теории трамплинов вызовов функций, а затем узнаем, как они работают в PHP 7. Если вы хотите полностью во всём разобраться, то лучше иметь хорошее представление о работе виртуальной машины Zend. Для начала можете почитать, как устроена ВМ в PHP 5, а здесь мы поговорим о ВМ PHP 7. Хотя она и была переработана, но действует практически так же, как и в PHP 7. Поэтому если вы разберётесь в ВМ PHP 5, то разобраться с ВМ PHP 7 не составит никакого труда.
Читать полностью »
Обзор расширения OPCache для PHP
2016-09-15 в 11:37, admin, рубрики: opcache, php, Блог компании Mail.Ru Group, интерпретаторы, Компиляторы, Разработка веб-сайтов, срыв покровов
PHP — это скриптовый язык, который по умолчанию компилирует те файлы, которые вам нужно запустить. Во время компилирования он извлекает опкоды, исполняет их, а затем немедленно уничтожает. PHP был так разработан: когда он переходит к выполнению запроса R, то «забывает» всё, что было выполнено в ходе запроса R-1.
Очень маловероятно, что на production-серверах PHP-код изменится между выполнением нескольких запросов. Так что можно считать, что при компилированиях всегда считывается один и тот же исходный код, а значит и опкод будет точно таким же. И если извлекать его для каждого скрипта, то получается бесполезная трата времени и ресурсов.
Читать полностью »