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

Админы:
@k1ngmang
@vyacheslavhere
Download Telegram
Опрос для сбора статистики среди участников канала (чтобы понимать, какие вообще ресурсы сюда можно кидать)
🔥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
Монадный парсер-комбинатор под jvm, или же реализация библиотеки parsec из haskell: https://github.com/jon-hanson/parsecj
В readme файле подробно расписано, как он работает. Из минусов: хоть и репозиторий обновлялся 10 месяцев назад, его исходники лежат без изменений уже 8 лет, и вряд-ли будут обновляться. Из плюсов: лицензия позволяет вам самим дорабатывать код и публиковать его у себя при соблюдении некоторых условий.

Наш чат: @lang_dev_ru
5
EPE - Extreme Programming Event.

В чем суть ивента?
Среди подписчиков канала или на просторах интернета выбирается язык программирования / платформа. В течении определенного времени участник должен будет написать какую-либо программу на этом языке. Даже если вы написали свой ассемблер - мы можем устроить конкурс на нем, и люди будут писать программы на вашем языке.

Призы
В зависимости от сложности платформы и ограничений, которые будут введены администраторами призовой фонд может варьироваться в диапазоне от 500р до 3500р.
Если вы заинтересованы, и хотите, чтобы ваш язык (или платформа) стал языком первого сезона EPE отправляйте заявки администрации: @k1ngmang
10
Поздравляю вас с открытием первого сезона EPE. Начать хотелось бы с чего-то не очень трудного, чтобы участники вообще могли понять суть мероприятия. Для этого был выбран язык Dragon. Он очень похож на привычные всем вам языки, однако его синтаксис довольно интересный

Hello World на Dragon:
show "Hello World"

Победитель первого сезона получит 600р.

Ещё раз напоминаю правила: Вы пишите программу на выбранном сезонном языке и отправляйте ее. Лучшая программа определяется 3 людьми, чье мнение не должно быть предвзятым. Отправка ваших трудов осуществляется следующим образом: вы сообщаете в личные сообщения @artyom_java название своей команды. Затем вы должны сделать fork репозитория на github, соответствующий сезону, в котором участвуете и добавить туда папку с названием команды, которую вы сообщили. После этого делайте pull request и ждите результатов. Если возникнут трудности, пишите @artyom_java.
Итоги через месяц.

Ресурсы:

Как отправить свой код на EPE

Документация языка Dragon

Ссылка на установщик языка Dragon
7
Forwarded from .
!!! Данный список основан на уже существующем списке, где можно найти ещё больше тематической литературы с комментариями автора: https://github.com/true-grue/Compiler-Development


📄 Литература для новичков:
Robert Nystrom: Crafting Interpreters (2020)

Никлаус Вирт: Построение компиляторов (2010)
📄 Литература для продвинутых:
Альфред В. Ахо, Рави Сетхи и Джеффри Д. Ульман: Компиляторы: принципы, технологии и инструменты

Steven Muchnick: Advanced Compiler Design and Implementation (1997)
📂 Статьи:
Реализация простейшего компилятора на python

Реализация простого интерпретатора forth

Рекурсивный спуск в компиляторах

🖥 Суперкомпиляторы:
Климов А.В., Романенко С.А: Суперкомпиляция: основные принципы и базовые понятия

👮‍♀ Видео:
1.Интерпретатор на Python'е

2.Интерпретатор на TypeScript

3.Интерпретатор на Rust

4.Интерпретатор на С

5.Компилятор в llvm на Python'е
__
Please open Telegram to view this post
VIEW IN TELEGRAM
8
Напоминаю, что у нас есть чат: @procompilers
7
Недавно в чате была предложена идея создания дискорд сервера, чтобы помимо чата можно было пообщаться вживую, отсортировать ветки, а также много чего еще, что дает дискорд. Нужно узнать ваше мнение: создавать или данного чата хватает?
7
Делаем (пост выше) ?
Final Results
76%
да
24%
нет
7
По просьбам нескольких кандидатов конкурс будет продлен до 23 марта. Для новых подписчиков, которые хотят получить 600р за сравнительно легкую работу, могут ознакомиться с постом: https://t.me/langdev/44.
Напоминаю еще раз про репозиторий, который нужно форкнуть и сделать работу (это все написано в том посте, даже предоставлена видео-инструкция): https://github.com/Extreme-Programming-Event/1-season
5
Продолжаем оценивать малоизвестные языки программирования, на очереди janet. Данный яп наверное самый популярный из тех, что упоминались ранее. Очень хороший инструмент для изучения работы компиляторов на реальном примере. Архитектура проекта напоминает lua, никакой сортировки по пакетам, основная часть находится в core/... Однако тут все же присутствует хоть какое-то вменяемое разделение, а потому и читать его в разы удобнее. В отличии от clojure тут довольно понятный naming и типичный code style. Рекомендую к ознакомлению
7