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

Админы:
@k1ngmang
@vyacheslavhere
Download Telegram
https://github.com/Monsler/JEPL
JEPL (Json Esoteric Programming Language) is an eponymous programming language which uses json syntax to write a programms.

JEPL (Json Esoteric Programming Language) — одноименный язык программирования, который использует синтаксис json для написания программ.

Автор: @bsd_dev
7
ANTLR (ANother Tool for Language Recognition) — это инструмент для создания парсеров и лексеров, который позволяет анализировать и обрабатывать текстовые файлы согласно определенным грамматикам. Он часто используется для разработки компиляторов, интерпретаторов и других инструментов обработки языков программирования.
Создатель: Теренс Парр 

Наш чат
12
Design and Realization of Concepts for WCET Compiler Optimization

Целью данной диссертации является разработка и реализация концепций оптимизации компилятора WCET
10
JavaCC - генератор синтаксических анализаторов для создания парсеров из грамматик. Он может генерировать код на Java, C++ и C#.

Наш чат: @lang_dev_ru
8
Компиляторы: принципы, технологии и инструменты

Довольно популярная книга по теории построения компиляторов, также известная как "Книга Дракона".
Скачать книгу

Наш чат
10
📚Build your own Programming Language, 2nd Edition: A programmer’s guide to designing compilers, DSLs and interpreters for solving modern computing problems (2024)
✍️Автор: Clinton L. Jeffery
📃Страниц: 556

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

Скачать книгу
9
Crafting Interpreters
Книга для новичков, в которой максимально простым языком описано создание интерпретатора языка lox. Единственный минус книги - ее лицензия запрещает перевод на другие языки.

Ссылка на книгу

Наш чат
8
Относительно недавно нашел классную библиотеку для работы с байт-кодом jvm, написанную на rust (аналог objectweb asm). Если вы хотели написать компилятор под jvm, но не хотели использоваться для этого языки вроде джавы или котлина, то вот шикарный вариант - удобная библиотека, удобный язык: https://github.com/ChAoSUnItY/Ka-Pi
Я не уверен, что она доделана до конца, но у меня есть дикое желание ее форкнуть и доделать до конца.
Чат: @lang_dev_ru
5
4
Опрос для сбора статистики среди участников канала (чтобы понимать, какие вообще ресурсы сюда можно кидать)
🔥6
compilers
На каких языках вы пишите?
Если ваших языков нет, то пишите в комментах
4
Нашел интересный язык от создателей Jolie. Язык называется Choral.
Можете посмотреть примеры кода на этом языке. Честно говоря, у меня ощущение, что он останется на том же уровне, что и jolie - вроде прикольно, относительно популярно, но на деле - бесполезно. Однако для ознакомления язык прикольный.

Наш чат: @lang_dev_ru
5
Если вы вдруг решите делать функциональный язык программирования, то в качестве бекенда можете взять такой классный инструмент как GRIN.

Узнал я о нем довольно давно, и сам хотел написать простенький язык, чтобы пощупать его поближе. К сожалению, я его так и не написал, но зато нашел прикольную реализацию функционального языка fuse, который написан на скала и использует grin, так что если будет желание - ознакомитесь.
6
Не менее прикольный язык, чем choral - это panda. Язык работает под jvm и имеет полный набор нужного софта, включая ide, которая называется Lily.
Что касается рациональности применения языка - я бы не советовал использовать его в качестве основного. Сам по себе он является интрепритируемым, но имеет набор классных инструментов, которые можно поковырять. Так что если вы любите программировать на чем-то необычном, то можно попробовать этот язык, а при желании даже сделать его форк и попробовать доработать панду, потому что она имеет удобную структуру и красивый код

8 панд из 10

Наш чат: @lang_dev_ru
5
Хотите написать свой язык на Zig. но вам не хватает примеров? Вашему вниманию представляется язык Honey: https://github.com/honey-lang/honey
Простенький, компилируемый язык программирования, код которого очень легко читается, рекомендую к ознакомлению тем, кто хочет вкатиться в lang dev.

9 Ершовых из 10

Наш чат: @lang_dev_ru
5
Возвращаемся к обзорам интересных, но малоизвестных языков. На очереди у нас jule. Язык написан на c++, компилируется в llvm. Все разработчики языка состоят в команде TheAlgorithms, самая популярная организация, включающая в себя репозитории с алгоритмами на разных языках. В отличии от многих других языков - этот имеет серьезные цели и амбиции, и планируется использоваться для реальных задач. В целом язык бодрый, я его тестировал ещё давно, однако перспектив особых не наблюдал. В целом не вижу проблем лично вам писать на этом языке, сделан он хорошо, но есть в этом смысл, когда существует например с++? На этот вопрос я вам ответа не дам, думайте сами

8 алгоритмов из 10

Наш чат: @lang_dev_ru
7
Если вы являетесь ценителем истинного фп, то можете попробовать язык Eta.
По сути чего-то принципиально нового язык не приносит, но именно эта имплементация haskell под jvm является одной из наиболее удачных (однако она все еще не лучше frege).
Вот как выглядит код на этом языке:
{-# LANGUAGE ScopedTypeVariables #-}
import Java
import Control.Monad (forM_)

main :: IO ()
main = java $ do
let integers = [1..10] :: [Byte]

(arr :: JByteArray) <- arrayFromList integers
elems <- arr <.> mapM aget [0..9]
io $ print elems

arr <.> forM_ [0..9] (\i ->
aset i (fromIntegral i * 2))
arrList <- arr <.> arrayToList
io $ print arrList

Ставлю ему 6 академиков из 10, потому что вряд-ли кому-то нужен будет haskell на jvm, когда есть scala и сама java.

Наш чат: @lang_dev_ru
4