Комментарии 52
В смысле, раз у вас не три строчки кода и понадобился язык поудобнее JavaScript – то перед запихиванием кода на страницу надо как минимум прогнать его через линтер или чем там принято проверять питоновский код. Заодно можно и транспиляцию выполнить – возможно, оптимизировав. И на сайте уже будет самый что ни на есть JavaScript.
Хотя сам факт существования такой либы – это нереально круто.
Все знают, что в браузерах работает только JavaScript.
Земля пухом VBScript-у.
А на самом деле Python в вебе куда приятнее был бы чем JavaScript
А их скомпилировать нельзя?
emscripten.org
Демо:
pbrfrat.com/post/imgui_in_browser.html
А вот эта — питон в webassembly:
hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser
Ну и вообще:
stackoverflow.com/questions/44761748/compiling-python-to-webassembly
давайте разберемся
Давайте:
import html
Вот это вот, например — зачем?
JavaScript по умолчанию дает доступ к объектам вроде document и window, необходимым в любом JS-проекте. Соответственно, Brython тоже должен иметь возможность работать с ними.
Для решения этой проблемы создатели Brython могли бы просто дать разработчикам возможность обращаться к этим объектам из кода на Python, но это привело бы к крикам дебаггеров о undefined variable и снижению производительности.
Таким образом, чтобы использовать эти API, мы должны импортировать их точно так же, как импортируем любой другой модуль на Python:
html
дальше в коде не используется.Рекомендую вам почитать про уже достаточно зрелый WebAssember (WASM). Его сделали как раз, чтобы не делать вот такие, не очень оптимизированные и медленные инструменты.
Не знаю конкретно за питон, но для c/c++/c# они уже есть и неплохо работают. Я например уже использовал Blazor (c#), разворачивающий в браузере Mono VM на которой исполняются dll, ки. С питоном такое по идее сложнее сделать, т.к питон требует наличие операционной системы, но думаю это только вопрос времени
Например, он сейчас отлично работает с C/C++ или Rust.
Хотя там весьма спорные моменты в плане того, на сколько это оптимизирует конечный код.
Как пример, можно посмотреть на takahirox.github.io/WebAssembly-benchmark, где C заметно выигрывает на вычислениях целых чисел, но в остальных местах где-то спокойно уступает родному JS
Моё мнение по теме — очень надеюсь, что WA станет стандартом и JS умрет и мы его будем вспоминать как страшный сон.
Не вижу смысла от wa и спикер на конференции на работе не смог меня убедить а дом, что он нужен. Он работает медленнее чем js, особенно, когда js кэшируется и запускается не первый раз (о чем сказал и сам спикер), а писать код на условном c++ из-за незнания JavaScript — проблема компетенции разработчика.
JavaScript так-то в принципе самый ли понятный и логичный яп в котором все структурировано и есть все необходимые инструменты для дебага
Странно, что не упомянули RustPython, который является обычной питоновской ВМ, которую можно легко скомпилировать в васм из-за природы языка раст. Пощупать онлайн можно по адресу https://rustpython.github.io/demo/.
Честно говоря, я думал, что отладка в Brython будет ужасной.
… но ошибки, брошенные Brython были в основном точными и довольно понятными.
Честно говоря, я думал, что отладка — это пошаговое выполнение кода с возможностью заглянуть внутрь рабочих переменных.
Для тех, кто не попал в эпоху, когда нтерактивные отладчики просто не существовали — именно так. Для всех остальных — это таки просто поиск ошибки. В частности, в вебе приходилось отлаживать alert-ами, а косяки в dom-модели искать, закрашивая все в округе разными бэкгнаундами :)
Уже больше 10 лет есть возможность на вебе использовать интерактивные отладчики — Отладка Javascript. Оператор debugger
появился в спецификации ECMAScript 5.1 (июнь 2011). Поэтому мне удивительно читать, что в 2020-м году отладка в web-приложениях идёт через сообщения об ошибках.
Если nodejs — то да. Хотя в этом редко есть потребность.
Не буду, а отлаживаю. Когда нужно, разумеется.
И без разницы, что на серверной стороне — node, PHP, python, C# или Java. Бэк так же хорошо отлаживается через отладчик, как и фронт. А с учётом абсолютной несвязанности по коду фронта и бэка (только по данным) каждую часть можно смотреть под дебаггером сколь угодно долго, даже если вторая часть отвалилась по timeout'у.
Возможно, тут кто-то называет отладкой обычное логирование, ну так это разные вещи.
Конечно
Это Ruby в браузере. И оно даже работало у меня в продакшене. Но лучше не надо.
Вообще это известная тема когда какой-то язык переводят в JS чтобы работать в браузере, будь то полная трансляция в JS или же с рантайм-движком, но что-то особо не слышно громких проектов которые бы это действительно полноценно использовали.
А так вообще были реализации полноценных виртуальных машин на JS, в которой можно запустить Linux, в которой можно запустить нужный язык или открыть браузер… нувыпонели. Но по продакшену всё же вопросы.
толку питона в браузере "без батареек", лучше тогда уж lua: https://fengari.io/
-"интерпретация интерпретируемого языка в js?)"
Сброс длины змейки и счета при нажатии стрелки противоположной направлению движения (вверх-вниз или вправо-влево) — это баг или фича?
Надоел JavaScript — используй браузерный Python