Создаём свою легкую реализацию LISP'а на Python

Всем привет! Сегодня мы с вами сделаем реализацию LISP'а. Конечно же не полного. Возможно, когда то я доведу этот лисп до ума и напишу новую статью... Но не обещаю.

https://habr.com/ru/articles/926106/

#lisp #python #python3 #interpreter #интерпретаторы #как_создать #туториал #diy

Создаём свою легкую реализацию LISP'а на Python

Всем привет! Сегодня мы с вами сделаем реализацию LISP'а. Конечно же не полного. Возможно, когда то я доведу этот лисп до ума и напишу новую статью... Но не обещаю. История LISP'а вкратце. Перед тем...

Хабр

Как я написал LISP на Python со своей сборкой мусора

В одном комментарие говорили то что "LISP" не говорили 50 лет. Теперь уже нет. Но вообще, в этом рассказе я расскажу как сделал Лисп с обработкой ошибок и сборкой мусора.

https://habr.com/ru/articles/923644/

#lisp #python3 #python #интерпретаторы

Как я написал LISP на Python со своей сборкой мусора

В одном комментарие говорили то что "LISP" не говорили 50 лет. Теперь уже нет. Но вообще, в этом рассказе я расскажу как сделал Лисп с обработкой ошибок и сборкой мусора. Его возможности. Он имеет...

Хабр

[Перевод] Производительность интерпретатора Python 3.14 с оптимизацией хвостовых вызовов

Примерно месяц назад проект CPython смерджил новую стратегию реализации интерпретатора байт-кода. Первоначальные результаты были очень впечатляющими , продемонстрировав среднее повышение производительности на 10-15% в широком спектре бенчмарков на различных платформах.

https://habr.com/ru/companies/ruvds/articles/891562/

#cpython #gcc #clang #интерпретаторы #байткод #бенчмарки #ruvds_переводы

Производительность интерпретатора Python 3.14 с оптимизацией хвостовых вызовов

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

Хабр

Ответ на статью о «Наиболее быстром интерпретаторе»

Недавно была опубликована статья под заголовком "Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода" . Несколько тезисов из статьи вызвали у меня сомнения в их справедливости. Об этом я попробовал написать ряд комментариев тире вопросов к указанной статье. Но основной лейтмотив всех ответов сводился к тому - "а ты напиши свою статью". Подход не столько инженерно-научный, сколько детсадовский. Мне бы хватило и содержательных ответов в формате комментариев, но как говорится - уговорили :). Итак, что же утверждается автором статьи про наиболее быстрый интерпретатор:

https://habr.com/ru/articles/857342/

#интерпретаторы #jitкомпиляция #виртуальная_машина #оптимизация #процессор #x86

Ответ на статью о «Наиболее быстром интерпретаторе»

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

Хабр

[Перевод] Compiler Explorer — уникальный проект для исследования компилируемого кода

Этот пост посвящён замечательному инструменту, полезному для каждого, кто интересуется компиляторами или архитектурой компьютеров. Это Compiler Explorer , который я в дальнейшем будут называть CE. CE — потрясающий инструмент. Если вы с ним не знакомы, то прервите чтение и перейдите на веб-сайт CE, где вы увидите примерно такой экран: Предупреждение: вы забираетесь в «кроличью нору», на которую можете потратить несколько часов своего времени. В основе CE лежит очень простая идея. Достаточно ввести исходный код в левую панель, и сайт мгновенно покажет вам на правой панели скомпилированный результат (обычно на языке ассемблера). CE поддерживает 69 языков, более двух тысяч компиляторов и широкий спектр архитектур, включая x86, arm, risc-v, avr, mips, vax, tensa, 68k, PowerPC, SPARC и даже древний 6502. То есть теперь для просмотра результата работы компилятора достаточно открыть godbolt.org и скопировать туда блок кода. Это само по себе удивительно, но у CE есть гораздо больше возможностей. Это инструмент, который должны знать все интересующиеся компиляторами и архитектурами компьютеров. В статье мы сможем лишь поверхностно рассмотреть функции CE. Вам стоит самим перейти на сайт CE и попробовать всё самостоятельно.

https://habr.com/ru/companies/ruvds/articles/815675/

#ruvds_переводы #компиляторы #язык_ассемблера #интерпретаторы #llvm #llvm_ir #анализ_кода

Compiler Explorer — уникальный проект для исследования компилируемого кода

Этот пост посвящён замечательному инструменту, полезному для каждого, кто интересуется компиляторами или архитектурой компьютеров. Это Compiler Explorer , который я в дальнейшем будут называть CE. CE...

Хабр

[Перевод] Безымянный язык программирования без присваивания имён

Придумывать имена сложно. Давайте посмотрим, как далеко мы можем зайти без них. Что это? Это язык программирования, основанный на трёх парадигмах: Бесточечном программировании Стековом программировании Массиво-ориентированном программировании Основная «фишка» языка — избегание любых наименований. Оставаясь верным этой максиме, сам язык тоже не имеет названия. «Язык программирования без имён» (namingless programming language) — это его определение. Так как в мире есть только один такой язык, название ему не нужно . Для чего это нужно? В основном ради развлечения. Это язык для хобби-программирования. Ну, разумеется, его можно использовать и как инструмент для обучения бесточечному (комбинаторному), стековому или массиво-ориентированному программированию. Или применять его в качестве пытки, я не буду вас судить. Как выглядит код на таком языке? Вот так: i_^_b_H_i_cpp^_)_V_b_v_J_^_E_H_leafL_==^_)_V_H_Z_Z_^_)_V_H_I_^_E_1^_2^_#_G_Z_Z_^_E_1^_2^_#_H_$_L_-^_G_m_G_&_&_ Чёрт возьми! Ага. Простите.

https://habr.com/ru/articles/795861/

#интерпретаторы #создание_языка_программирования #именование #эзотерические_языки

Безымянный язык программирования без присваивания имён

Давать имена сложно. Давайте посмотрим, как далеко мы можем зайти без них. Что это? Это язык программирования, основанный на трёх парадигмах: Бесточечном программировании Стековом программировании...

Хабр

О мат-нотациях и Машинах Тьюринга

Всем Хабр! Совсем недавно открыл для себя некоторые прелести Латеха и начал активно в нем работать. По ходу дела возникали разные интересные мысли, которыми здесь и поделюсь. В статье пойдет речь о моих небольших дополнениях к мат-нотациям, которых мне не хватало, а также о том, как построить Машину Тьюринга с помощью оных. Сразу оговорюсь. Да, я, конечно, знаю о том, что есть Вольфрам. Да, он содержит большую часть того, о чем пойдет речь, и еще тонну всякого-разного, чего мне не постичь за всю мою жизнь. Поэтому из первого своего прототипа этой статьи я возьму лишь самое интересное и попытаюсь рассказать так, чтобы не звучало как изобретение велосипеда. Прошу не судить строго, ибо я профан. Я лишь делюсь тем, как было бы удобно мне, возможно, кому-то тоже окажется полезным. В том числе я пишу статью, не столько, чтобы что-то рассказать, сколько чтобы быть разумно критикуемым в комментах (вместо пустых дизов). Построить МТ

https://habr.com/ru/articles/790246/

#МТ #машина_тьюринга #Машина_Беббиджа #компиляторы #интерпретаторы #нотации #полнота_по_тьюрингу #тьюрингполнота

О мат-нотациях и Машинах Тьюринга

Преамбула Всем Хабр! Совсем недавно открыл для себя некоторые прелести Латеха и начал активно в нем работать. По ходу дела возникали разные интересные мысли, которыми здесь и поделюсь. В статье...

Хабр

[Перевод] Сколько строк на C нужно, чтобы выполнить a + b в Python?

В своей предыдущей статье я исследовал структуру PyObject и её роль в качестве заголовка для всех объектов среды исполнения CPython. Эта структура играет важнейшую роль в обеспечении наследования и полиморфизма в системе объектов CPython. Но это лишь вершина айсберга. В этой статье мы опустимся на один уровень ниже и посмотрим, что же происходит внутри среды исполнения Python для выполнения простого действия a + b . Иными словами, мы узнаем о подробностях реализации типов, операторов и динамической диспетчеризации в CPython. Стоит заметить, что хотя мы будем изучать реализацию динамической диспетчеризации для конкретного оператора, те же принципы применимы ко всем операторам, поддерживаемым CPython. То есть, по сути, обладая этими знаниями, вы сами можете реализовать собственный оператор или собственный новый тип.

https://habr.com/ru/articles/780386/

#cpython #интерпретаторы #виртуальные_машины

Сколько строк на C нужно, чтобы выполнить a + b в Python?

В своей предыдущей статье  я исследовал структуру PyObject  и её роль в качестве заголовка для всех объектов среды исполнения CPython. Эта структура играет важнейшую роль в обеспечении...

Хабр

Как я за месяц написал интерпретируемый язык программирования на Python

Привет, Хабр! В этой статье я хотел бы поделиться опытом создания своего языка программирования. Предыстория Мне 14. Обучаясь на втором году Яндекс Лицея, нужно было написать несколько проектов. Первым из них стал проект на PyQT5. Я долго думал над идеей и вспомнил, что летом я хотел создать свой язык, но у меня этого не получилось (Тогда я не понимал как работает парсер и абстрактное синтаксическое дерево, поэтому забросил). И вот, мне пришла идея - сделать свой язык программирования и написать для него IDLE (т.к. тема проекта все таки QT). Ещё полгода назад я изучал асинхронность и многопоточность, поэтому именно одну из этих идей я хотел воплотить в своём языке. В данной статье я хотел рассказать устройство интерпретируемых языков и как их создать.

https://habr.com/ru/articles/776438/

#языки_программирования #интерпретаторы #как_написать_свой_язык

Как я за месяц написал интерпретируемый язык программирования на Python

Привет, Хабр! В этой статье я хотел бы поделиться опытом создания своего языка программирования. Предыстория Мне 14. Обучаясь на втором году Яндекс Лицея, нужно было написать несколько проектов....

Хабр