[Python, JavaScript, Компиляторы] Ещё один способ использования python в браузере (и не только)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
ПредысторияВесной 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
===========
Похожие новости:
- [JavaScript, Программирование, C#, Rust] Вышла версия 1.0 библиотеки для управления секс-игрушками Buttplug
- [Open source, Программирование, Системное программирование, Компиляторы, Rust] Rust 1.49.0: aarch64 и улучшения во фреймворке тестирования (перевод)
- [Python, Машинное обучение, TensorFlow] Хакатоны Осень 2020. Мой опыт
- [Data Mining, Алгоритмы, Математика, Научно-популярное] Звездный год (365 дней 369 минут), Тропический год(+ 348.5 минут) и звездные сутки(1436 минут) в радиоактивном распаде
- [Python, Программирование, Data Mining, Алгоритмы, Машинное обучение] ИИ итоги уходящего 2020-го года в мире машинного обучения
- [Python, Программирование, Машинное обучение] Обеспечить январь настроением
- [PHP, Python, JavaScript, Управление разработкой] Эволюция команды разработки
- [JavaScript, Разработка мобильных приложений, Разработка под Android] Cordova. Quick start
- Нарушена работа поиска пакетов по Python-репозиторию PIP
- [Занимательные задачки, Программирование, Алгоритмы, Компиляторы] Чемпионат по выполнению теста Кнута
Теги для поиска: #_python, #_javascript, #_kompiljatory (Компиляторы), #_transljator (транслятор), #_python, #_python, #_javascript, #_kompiljatory (
Компиляторы
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:16
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
ПредысторияВесной 2020 года я впервые попробовал себя в разработке сайтов бэкенд я писал на питоне а на фронте пришлось использовать js и он вызвал у меня отторжение(тут надо уточнить, что я не считаю js ужасным языком, просто он мне не понравился). Не долго думая я начал писать транслятор с питона в явускрипт(а если бы погуглил то нашел бы это и это). об этом трансляторе и пойдет речь.Отличия от других трансляторовВ процессе разработки я читал о явескрипт и не много о других языках (ruby, lua, php) и заметил что в них много общего, например наличие условных конструкций, функций, переменных и тд. И тогда я подумал почему бы не добавить возможность трансляции не только в js но и другие языки. Языки добавляются с помощью функций обработчиков например обработчик математичиских операций для js выгладит так: def bin_op(left, right, op):
return f"({left}{op}{right})" def bin_op(left, right, op):
return f"({op} {left} {right})" signs = {"//": lambda l, r: f"Math.floor({l}/{r})"}
P.S.Это вторая попытка написания статьи.Поддержите проект звездочкой на гитхаб Присоединяйтесь к телеграм каналу =========== Источник: habr.com =========== Похожие новости:
Компиляторы ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:16
Часовой пояс: UTC + 5