[Python, JavaScript, Компиляторы] Ещё один способ использования python в браузере (и не только)

Автор Сообщение
news_bot ®

Стаж: 6 лет 3 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
02-Янв-2021 23:30

ПредысторияВесной 2020 года я впервые попробовал себя в разработке сайтов бэкенд я писал на питоне а на фронте пришлось использовать js и он вызвал у меня отторжение(тут надо уточнить, что я не считаю js ужасным языком, просто он мне не понравился). Не долго думая я начал писать транслятор с питона в явускрипт(а если бы погуглил то нашел бы это и это). об этом трансляторе и пойдет речь.Отличия от других трансляторовВ процессе разработки я читал о явескрипт и не много о других языках (ruby, lua, php) и заметил что в них много общего, например наличие условных конструкций, функций, переменных и тд. И тогда я подумал почему бы не добавить возможность трансляции не только в js но и другие языки. Языки добавляются с помощью функций обработчиков например обработчик математичиских операций для js выгладит так:
def bin_op(left, right, op):
    return f"({left}{op}{right})"
а для lisp он будет выглядеть так:
def bin_op(left, right, op):
    return f"({op} {left} {right})"
А так же также отличительной чертой является возможность добавления макросов например целочисленное деление в js:
signs = {"//": lambda l, r: f"Math.floor({l}/{r})"}
Кому это нужноОдним из вариантов использования проекта является написание скриптов в играх, так как питон довольно тяжелый для встроенного языка то можно использовать трансляцию в lua.Так же можно использовать его как линтер для python с исправлением ошибок в именах функций.Ну и для поддержки проектов с языками вызывающими у вас отторжение(как у меня js или pascal) ну или просто устаревшие языки. ВажноВ некоторых местах статьи можно подумать, что считаю некоторые языки какими-то не такими. Я рассматриваю языки как две части: его синтаксис(тут python для меня почти идеал) и как платформу. Все говорят, что язык это инструмент и нужно уметь пользоваться разными, то есть молотком отвертку не заменишь. Так вот молоток и отвертка - это платформы, а их ручка это синтаксис. Лучше всего это видно на примере java. Java(jvm) - это распространённая, быстрая платформа, а синтаксис и языки для нее разные: Kotlin, Java, Clojure и многие другие. Что поддерживаетсяНа момент написания статьи добавлен только один язык js, так же я пробовал транслировать в go, но только на уровне hello world и делал код робота катающегося по линии на ардуино(c++).А так же пока не сделана документация.Поддерживаются блоки if...elif...else, while, for(C подобный и for each), возможность писать с аннотациями типов. Так же поддерживаются макросы. В общем пока можно писать программы уровня олимпиадного программирования.Планы на будущееВ первую очередь расширить набор языков, добавить поддержку всего синтаксиса python. Ну и конечно же написать документацию. Еще хотелось бы сделать реализацию стандартных функций питона на питоне что бы транслировать их и использовать вместе с целевым языком.И еще хотелось бы web интерфейс как на этой картинке:
P.S.Это вторая попытка написания статьи.Поддержите проект звездочкой на гитхаб Присоединяйтесь к телеграм каналу
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_python, #_javascript, #_kompiljatory (Компиляторы), #_transljator (транслятор), #_python, #_python, #_javascript, #_kompiljatory (
Компиляторы
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 15-Май 23:53
Часовой пояс: UTC + 5