http://mash-project.org
https://github.com/RoPi0n/mash-lang
Mash?
Это императивный язык программирования с динамической типизацией, сборкой мусора, ООП и поддержкой многопоточности.
Интересно? Тогда под кат!
Насколько завершен проект?
На данный момент язык находится на Pre-Release этапе, его функционала и производительности пока что не достаточно, чтобы решать с его помощью абсолютно любые задачи, но именно к этому я и стремлюсь.
В репозитории выложена сборка под Win64, в которой весь функционал языка отлажен и работает без багов.
По функционалу Mash схож с Python.
Язык спроектирован максимально простым и полнофункциональным.
Полностью поддерживает ООП, интроспекцию, рефлексию, функции высшего порядка, многопоточность, синхронизацию, распараллеливание и синхронизацию кода внутри тела методов.
В качестве среды выполнения языка используется стековая виртуальная машина (ВМ), поддерживающая многопоточность, сборку мусора (Reference Counting).
Реализован транслятор языка (с построением AST, все как по книжкам) в абстрактный код для ВМ и в перспективе в другие языки (но из-за сложности языка — это пока только планы на будущее).
Для удобства в ознакомлении с языком и работе с ним реализована небольшая IDE (FPC + SynEdit).
Встраиваемость
ВМ языка имеет API, функционал языка можно расширять путем написания библиотек для ВМ на любом нативном языке (FPC, Delphi, C/C++, Rust и т.д.), также язык можно встроить в любой ваш проект, при этом получить в свое распоряжение весь функционал Mash'a и его нативных библиотек.
Debug?
У ВМ предусмотрена возможность работы в связке с отладчиком (который пока что очень сырой).
Язык поддерживает трассировку исключений.
Поддержка платформ
Язык полностью написан на Free Pascal, который в свою очередь поддерживает огромный список платформ, под которые может быть собран Mash.
Зависимости от каких-либо библиотек отсутствуют.
Проект уже собирался ранее и тестировался на Windows, Linux и Android.
На что Mash способен уже сейчас?
На данный момент я работаю над реализацией стандартного набора библиотек для работы с файлами, математикой, I/O, многопоточностью, GUI, сетью, базами данных, криптографией и т.д.
В репозитории проекта (и в Pre-Release сборке) можно найти небольшие демо-приложения.
На Mash написана змейка, асинхронный веб сервер/фреймворк (по типу Flask'a), отрисовка графиков в декартовой и полярных системах координат, Аттрактор Лоренца, вращение простых 3D моделек по типу кубика, а так же версия транслятора Mash'a, написанная на Mash'e.
Что дальше?
Над проектом работаю пока один в рамках хобби, так что его будущее все ещё остается не определенным (+вуз, +разные неопределенные сложности и релиз может отложиться на долго).
В данной статье представлен промежуточный результат работы, все ещё далекий от конечной цели.
В разработке, помимо библиотек для ВМ, находится JIT компилятор по типу HotSpot.
Дочитали до конца?
Спасибо за внимание.
ZaMaZaN4iK
Не хватает описания того, зачем собственно он вообще нужен ещё один такой.
RoPi0n Автор
Язык создан в основном в академических целях.
Но вообще, т.к. он встраиваемый, то применение ему найти думаю можно :)
TheShock
Какие у него преимущества перед альтернативами?
RoPi0n Автор
Пока ещё рано говорить о преимуществах не завершенного проекта, перед альтернативами, над которыми трудились тысячи людей, на протяжении десятилетий :)
Пока что можно сказать, что это отечественный аналог Python'а, который можно встроить в какой-нибудь софт.
frkbvfnjh
Если отечественный, значит должен быть на русском как 1С!
barbaris76
Надо сначала на ассемблере написать компилятор С, потом на этом С написать ВМ для Mash-а, вот тогда это будет полное ипортозамещение. Кстати, я не шучу, такое в области каких-нибудь госзаказов вполне прокатить сможет.
funny_falcon
Не помню где, для бутстрапа написали крохотный компилятор C на scheme, и крохотный интерпретатор scheme на C.
prefrontalCortex
Вы, наверное, про Mes, про который недавно писали ребята из Guix: https://guix.gnu.org/blog/2019/guix-reduces-bootstrap-seed-by-50/
MisterN
Ну, а есть вообще какие-то предположения, зачем миру нужен еще один питон? Просто сейчас рано говорить, а потом будет уже поздно
UnknownUser
Предполлагаю, что у всех альтернатив есть фатальный недостаток )))
rezdm
В академической работе вы должны указать практическую или научную новизну.
iig
Юные натуралисты в живом уголке скрестили хомячка с хомячком. Без академических целей, просто позырить.
Fell-x27
Думаю, главное — это навыки, получаемые автором в процессе работы. Да, может язык и не нужен никому. А вот люди, понимающие, как эта кухня работает изнутри — нужны, причем запредельно нужны.
Это сложные вещи, важные навыки и опыт, которыми может похвастать далеко не каждый "я уже 15 лет в разработках".
Так что пускай автор дерзает, вреда от этого никому точно не будет.
perfect_genius
Где они нужны прямо вот запредельно? Где-то нехватка разработчиков компиляторов?
speshuric
Ну так-то почти во всех языковых платформах нехватка разработчиков. А во всех остальных областях нехватка разработчиков, способных понять, о чём думали разработчики платформы.
Нехватка разработчиков в платформах (языках, стандартных библиотеках, среде исполнения), на мой взгляд, в основном из-за того, что среды разработки быстро обрастают грузом наследия и каждая следующая фича пилится сложнее предыдущих. С этой точки зрения, "академические" или "бесполезные" языки как раз и являются единственным местом, где можно проверить подходы, которые лет через Nдцать дойдут до мейнстрима.