Forwarded from compilers (Artyom)
ДАТА НАЧАЛА ЛАНГДЖЕМА
12 июля будут опубликованы условия мероприятия.
Приз: 5000 рублей (~$65).
Кратко напомню о мероприятии: участникам даётся определенный период времени, в течении которого они должны будут сделать язык программирования, который соответствует условиям. На выбор может быть несколько идей, выбираете ту, которая нравится больше всего и делаете яп
12 июля будут опубликованы условия мероприятия.
Приз: 5000 рублей (~$65).
Кратко напомню о мероприятии: участникам даётся определенный период времени, в течении которого они должны будут сделать язык программирования, который соответствует условиям. На выбор может быть несколько идей, выбираете ту, которая нравится больше всего и делаете яп
❤6❤🔥2🔥1👾1
k1ngmang
нейронка смогла меня заменить
я все-таки заставил это работать. Теперь у меня есть игрушка с зависимыми типами, у которой парсер навайбкожен до такой степени, что читать его сложнее, чем все остальное в проекте. Зато все кроме парсера и красивого вывода писалось руками!
🔥9❤2👍2
Forwarded from compilers (Artyom)
Поздравляю вас с началом лангджема.
Тема, условия и инструкция по сдаче проекта находится в репозитории: https://github.com/langdev-jam/plic
Кратко напоминаю об условиях: вы пишите свой язык программирования (компилятор/интерпретатор) на тематику, которая определена в репозитории. Следуя инструкции выкладываете свой проект и забираете приз
Приз: 5000 RUB
Дата окончания: 20 июля
Тема, условия и инструкция по сдаче проекта находится в репозитории: https://github.com/langdev-jam/plic
Кратко напоминаю об условиях: вы пишите свой язык программирования (компилятор/интерпретатор) на тематику, которая определена в репозитории. Следуя инструкции выкладываете свой проект и забираете приз
Приз: 5000 RUB
Дата окончания: 20 июля
❤4❤🔥2🔥2
Forwarded from compilers (Вячеслав)
Когда-то мы планировали открыть дискорд сервер для нашего сообщества, так вот, наступило время это сделать!
Будем рады видеть вас здесь: https://discord.gg/ANUc56vnKd
Будем рады видеть вас здесь: https://discord.gg/ANUc56vnKd
❤7🔥4❤🔥1
Мимокод не хотят чинить. Какую вайбкоделку можете посоветовать (хочу клод, но по цене дипсика)?
❤🔥5🔥3❤2
Forwarded from compilers (Artyom)
Пришло время подводить итоги langjam (plic). Первое место забирает язык программирования Dola. Просьба победителя связаться с @k1ngmang, чтобы забрать свой приз.
Ну а вот какие языки попали в первую пятерку:
1) dola
2) graft
3) ftorlisp
4) ygvm
5) py++
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
plic/dola at main · langdev-jam/plic
programming language implementation competition. Contribute to langdev-jam/plic development by creating an account on GitHub.
❤8🔥3🎉2🤝1🦄1
Forwarded from compilers (Artyom)
Please open Telegram to view this post
VIEW IN TELEGRAM
20❤8❤🔥1💋1
Forwarded from compilers (Artyom)
Оказывается, обучение нейросети - это тоже компиляция, только случайная и без гарантий. В статье рассказывают, как специальный компилятор Tracr переводит программу на языке RASP в файл с весами трансформера, и зачем это нужно: https://habr.com/ru/companies/selectel/articles/1066052/
❤4🔥2❤🔥1
Forwarded from compilers (Artyom)
Haskell для мира FPGA
Clash - функциональный язык описания аппаратуры. Он берёт синтаксис и семантику из Haskell, а его главная идея - создание цифровых схем привычными для программиста методами, а затем компилировать их в синтезируемые VHDL, Verilog или SystemVerilog. Clash унаследовал от Haskell строгую типизацию. Это позволяет на этапе компиляции отлавливать ошибки, которые в классических HDL вылезут только на симуляции или в железе. Вот как на языке выглядит функция КИХ-фильтра:
Clash - функциональный язык описания аппаратуры. Он берёт синтаксис и семантику из Haskell, а его главная идея - создание цифровых схем привычными для программиста методами, а затем компилировать их в синтезируемые VHDL, Verilog или SystemVerilog. Clash унаследовал от Haskell строгую типизацию. Это позволяет на этапе компиляции отлавливать ошибки, которые в классических HDL вылезут только на симуляции или в железе. Вот как на языке выглядит функция КИХ-фильтра:
fir coeffs x = dotp coeffs (window x)
where
dotp as bs = sum (zipWith (*) as bs)
Clash
Clash Language Homepage
A modern functional hardware description language
❤7❤🔥1🔥1
Forwarded from compilers (Artyom)
Как скопировать дерево, но не точь-в-точь
Инженеры PVS‑Studio рассказывают про трансляцию ast через protobuf, паттерны преобразований и 263 типа узлов, которые пришлось обходить. В статье про выбор между итератором и посетителем, эмуляцию двойной диспетчеризации и почему нормализация - боль
Инженеры PVS‑Studio рассказывают про трансляцию ast через protobuf, паттерны преобразований и 263 типа узлов, которые пришлось обходить. В статье про выбор между итератором и посетителем, эмуляцию двойной диспетчеризации и почему нормализация - боль
❤4❤🔥1🔥1
Forwarded from compilers (Artyom)
Знаете, почему -O2 может молча выбросить вашу проверку на переполнение?
Потому что переполнение знакового целого - это UB. А раз UB быть не может, то и условие, которое срабатывает только при нём, всегда ложно. Ветка мёртвая => можно удалять. Одна и та же программа: -O0 возвращает -1, -O2 возвращает -2147483648.
Разбор реального бага GCC, проверок после разыменования и санитайзеров в статье.
Потому что переполнение знакового целого - это UB. А раз UB быть не может, то и условие, которое срабатывает только при нём, всегда ложно. Ветка мёртвая => можно удалять. Одна и та же программа: -O0 возвращает -1, -O2 возвращает -2147483648.
Разбор реального бага GCC, проверок после разыменования и санитайзеров в статье.
❤7❤🔥1🔥1
Forwarded from compilers (Artyom)
Neva - dataflow-язык, где программа это не список инструкций, а граф узлов, обменивающихся сообщениями через порты.
Всё выполняется параллельно, если не сказано иное (да, тут параллелизм по умолчанию). На мой взгляд довольно свежая идея, которую интересно пощупать. Сам язык компилируется в go, позиционируется как LLM-friendly, и имеет ряд фичей как для рядового пользователя (например визуальный редактор), так и для человека, решившего углубится в исходный код компилятора.
Пишите, что думаете и присылайте другие необычные языки с интересными концептами в комментарии
репозиторий neva: github.com/nevalang/neva
import { fmt }
def Main(start any) (stop any) {
println fmt.Println<string>
---
:start -> 'Hello, World!' -> println -> :stop
}Всё выполняется параллельно, если не сказано иное (да, тут параллелизм по умолчанию). На мой взгляд довольно свежая идея, которую интересно пощупать. Сам язык компилируется в go, позиционируется как LLM-friendly, и имеет ряд фичей как для рядового пользователя (например визуальный редактор), так и для человека, решившего углубится в исходный код компилятора.
Пишите, что думаете и присылайте другие необычные языки с интересными концептами в комментарии
репозиторий neva: github.com/nevalang/neva
❤4🔥3❤🔥1