compilers
217 subscribers
17 photos
43 links
Все про компиляторы и языки программирования
Наши чаты:
@procompilers - общий чат по разработке языков.
@code_crafting_ru - чат, где можно вести блог своего языка программирвоания

Админы:
@k1ngmang
@vyacheslavhere
Download Telegram
Статья о том, как написать не самый красивый, но быстрый лексер: https://xnacly.me/posts/2025/fast-lexer-strategies

чат: @procompilers
💘7
Суперкомпилятор Java. Я уже упоминал труды hirrolot'a с его довольно интересным проектом mazeppa, но в данной статье был выбран реальный язык, который используется в реальных проектах и нуждается в оптимизации.

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

Чат: @procompilers
5
Недавно прошел 7-дневный хакатон по разработке языка программирования. За это время нужно было написать яп и игру на нем. На дискорд-сервеое хакатона можно найти вкладку с проектами, и посмотреть, что у людей получилось сделать за этот промежуток времени: https://langjamgamejam.com/

Чат: @procompilers
7
LANGJAM

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

Каждый из вас может написать свой язык программирования, соответствующий теме, которая будет определена во время начала конкурса. Можно выиграть от 2000 до 5000 рублей. Места будут определятся судьями во время прямой трансляции. Это отличная возможность испытать себя в разработке компиляторов / интерпретаторов.

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

Кто хочет принять участие в качестве судьи конкурса, уже можете писать: @k1ngmang, @vyacheslavhere
8
compilers pinned a photo
👨‍💻 LANGJAM

Некоторое время назад мы объявили о мероприятии, где участникам предлагается написать свой язык программирования, соответствующий выбранной теме, которая будет определена во время начала конкурса.

В прошлом посте мы обещали опубликовать ресурсы для тех, кто ни разу не писал свой язык программирования, но очень хотел бы поучаствовать. Так вот, мы возвращаемся со списком ресурсов!

🌟Ресурсы:
1. Книга: Crafting interpreters. Bob Nystrom. Книга отлично подходит для новичков, с понятным объяснением сложных тем. В книге представлена имплементация интерпретатор языка программирования Lox на Java, и виртуальный машины для Lox на C. Книга бесплатно на английском языке доступна онлайн на официальном сайте
2. Книга: Thorsten Ball. Writing interpreter in Go. Книга простым языком объясняет имплементацию интерпретатора для простого языка программирования Monkey на Go. Книга на английском бесплатно доступна тут
3. Книга: Thorsten Ball. Writing compiler in Go. Книга простым языком объясняет имплементацию компилятора для простого языка программирования на Go.
4. Книга: Бенджамин Пирс. Типы в языках программирования. Книга предоставляет информацию по множеству типовых систем и их имплементаций. Книга бесплатно доступна тут
5. Книга: Никлаус Вирт. Построение компиляторов. В этой маленькой книге изложен виртовский подход к разработке компиляторов, в котором отбрасываются любые усложнения вроде оптимизаций или сложностей кодогенерации, и читатель идет к работающему языку самым коротким путем. Теории тут нет, все пояснения делаются на пальцах, формируя интуитивное понимание проблем.
6. Видеокурс от ANNIMON по написанию интерпретируемого языка программирования на Java. В курсе подробно разобрано большинство тем, необходимых для имплементации языка программирования. https://www.youtube.com/playlist?list=PL81SFGIHr5IJFsoWX0qTeQ9_-MFBE552C
7. Видеокурс по написанию базы для языка программирования на TypeScript: https://www.youtube.com/playlist?list=PL_2VhOvlMk4UHGqYCLWc6GO8FaPl8fQTh
8. Видеокурс по написанию простого языка программирования на Python: https://www.youtube.com/playlist?list=PLZQftyCk7_SdoVexSmwy_tBgs7P0b97yD
9. Видеокурс по написанию языка программирования под llvm на Python: https://www.youtube.com/playlist?list=PLCJHRjnsxJFoK8e-RaNZUa7R4BaPqczHX
10. Видеокурс по книге Crafting Interpreters с имплементацией представленного языка на Rust: https://www.youtube.com/playlist?list=PLj_VrUwyDuXS4K3n7X4U4qmkjpuA8rJ76
11. Статья: Имплементация вывода типов на Rust:
часть 1) https://habr.com/ru/articles/748978/
часть 2) https://habr.com/ru/articles/753180/



Также, было бы плохо, не оставить ссылку на целую библиотеку ресурсов по теме разработки языков программирования: https://github.com/true-grue/Compiler-Development/tree/master
Please open Telegram to view this post
VIEW IN TELEGRAM
10
ДАТА НАЧАЛА ЛАНГДЖЕМА
12 июля будут опубликованы условия мероприятия.
Приз: 5000 рублей (~$65).

Кратко напомню о мероприятии: участникам даётся определенный период времени, в течении которого они должны будут сделать язык программирования, который соответствует условиям. На выбор может быть несколько идей, выбираете ту, которая нравится больше всего и делаете яп
13
Поздравляю вас с началом лангджема.
Тема, условия и инструкция по сдаче проекта находится в репозитории: https://github.com/langdev-jam/plic

Кратко напоминаю об условиях: вы пишите свой язык программирования (компилятор/интерпретатор) на тематику, которая определена в репозитории. Следуя инструкции выкладываете свой проект и забираете приз
Приз: 5000 RUB
Дата окончания: 20 июля
10
compilers pinned «Поздравляю вас с началом лангджема. Тема, условия и инструкция по сдаче проекта находится в репозитории: https://github.com/langdev-jam/plic Кратко напоминаю об условиях: вы пишите свой язык программирования (компилятор/интерпретатор) на тематику, которая…»
😀Напоминаю про дедлайн.
20 июля 10:00 - это последнее время, когда можно сделать пулл реквест. Рассматриваться будут только те языки, которые успели к этому времени
Please open Telegram to view this post
VIEW IN TELEGRAM
9
👨‍💻🐨 До конца приёма работ на langjam осталось 3 часа. 10:00 — это последнее время, когда можно сделать пулл реквест.
Please open Telegram to view this post
VIEW IN TELEGRAM
8
🤩ИТОГИ
Пришло время подводить итоги langjam (plic). Первое место забирает язык программирования Dola. Просьба победителя связаться с @k1ngmang, чтобы забрать свой приз.
Ну а вот какие языки попали в первую пятерку:
1) dola
2) graft
3) ftorlisp
4) ygvm
5) py++
Please open Telegram to view this post
VIEW IN TELEGRAM
12
🗑 Сборка мусора в Python

Если вам было бы интересно узнать об устройстве сборки мусора в Python,
то этот цикл статей точно для вас! В статьях подробно описываются внутренние алгоритмы сборщика мусора Python понятным языком и с примерами. Рекомендуем к прочтению!

https://habr.com/ru/articles/940642/
https://habr.com/ru/articles/951250/
https://habr.com/ru/articles/986784/
https://habr.com/ru/articles/992026/


#Статья #Материал
Please open Telegram to view this post
VIEW IN TELEGRAM
8
🔈Aya-Prover

Интерактивная система, предназначенная для формализации теорий и написания программ с зависимыми типами. Система имеет блог, который содержит не только документацию языка, но и публикации авторов, которые проливают свет на внутреннее устройство проекта: https://www.aya-prover.org/pubs/. Если вам интересны Coq, Agda и подобные, то рекомендую ознакомиться и с Aya.
Please open Telegram to view this post
VIEW IN TELEGRAM
5
😭Сегодня в нашем дискорде смотрели язык V (vlang.io). Помимо того, что компилятор допускает утечку при обычном hello world, так еще и проблемы из review 2023 года не были решены. Забавно, что автор изначально задумывал минималистичный язык, а по итогу мы имеем borrow checker, arena allocator, autofree, manual memory management, а также built-in orm и параллельный сборщик мусора! Интересно, что нужно добавить в V, чтоб он перестал быть минималистичным?
Please open Telegram to view this post
VIEW IN TELEGRAM
9
Нашёл отличный доклад по теме JIT-компиляции в Cpython. В докладе затрагиваются подробности имплементации JIT такие как уникальный механизм copy and patch компиляции и micro codes interpreter.

Что же нам предвещает добавление JIT в коробочную версию cpython? Мы получим бесплатное ускорение всех наших программ и возрадуемся или всё не так просто? Давайте попробуем разобраться вместе.


https://youtu.be/BiVEhI7wYS4?si=1dQFOg1UseCg66Jk
7
Оказывается, обучение нейросети - это тоже компиляция, только случайная и без гарантий. В статье рассказывают, как специальный компилятор Tracr переводит программу на языке RASP в файл с весами трансформера, и зачем это нужно: https://habr.com/ru/companies/selectel/articles/1066052/
3