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

Админы:
@k1ngmang
@vyacheslavhere
Download Telegram
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