Как стать автором
Обновить

Комментарии 52

Это с какой же скоростью оно работает? И сколько гигабайт памяти жрёт?
Ваш вопрос про гигабайты имеет под собой основание?
А Вы считаете, что нет? У Вас браузер кушает как птичка?
Птичка, но не синичка. Обычно в состоянии индюшки, но может и до страуса располнеть.
Э… А может, лучше всё-таки так не делать? Не зря люди через боль сваливают с JavaScript на TypeScript.

В смысле, раз у вас не три строчки кода и понадобился язык поудобнее JavaScript – то перед запихиванием кода на страницу надо как минимум прогнать его через линтер или чем там принято проверять питоновский код. Заодно можно и транспиляцию выполнить – возможно, оптимизировав. И на сайте уже будет самый что ни на есть JavaScript.

Хотя сам факт существования такой либы – это нереально круто.
НЛО прилетело и опубликовало эту надпись здесь
Все знают, что в браузерах работает только JavaScript.

Земля пухом VBScript-у.

А на самом деле Python в вебе куда приятнее был бы чем JavaScript

И всем пришлось бы держать по два браузера: на одном работали бы сайты, написанные под Python 2.x, а на втором — под Python 3.

"text/python" и "text/python3"?

Второй python уже как пол года deprecated
А зачем это всё? Это для тех, кто очень хочет в веб разработку, но знает только синтаксис пайтона? ))
Например, чтобы использовать модули, уже написанные на Python.
То есть тормозов браузера мало? Мало скайпа, электронов и прочего, надо еще слой абстракции… пока он медленней всего в 1.7 раза, но мы поднапряжемся и напишем на питоне интерпретатор и засунем его в js.

А их скомпилировать нельзя?

Чем, например?
Вот эта штука C в WebAssembly компилирует:
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
Особенно интересно, когда модули захотят из C++ что-то собрать, в WASM это засунуть?
НЛО прилетело и опубликовало эту надпись здесь
давайте разберемся

Давайте:


import html

Вот это вот, например — зачем?

JavaScript по умолчанию дает доступ к объектам вроде document и window, необходимым в любом JS-проекте. Соответственно, Brython тоже должен иметь возможность работать с ними.
Для решения этой проблемы создатели Brython могли бы просто дать разработчикам возможность обращаться к этим объектам из кода на Python, но это привело бы к крикам дебаггеров о undefined variable и снижению производительности.
Таким образом, чтобы использовать эти API, мы должны импортировать их точно так же, как импортируем любой другой модуль на Python:
Я думаю, justhabrauser намекает на то, что импортируемый объект html дальше в коде не используется.

Вы совершенно правы — именно на это он и намекает
(несмотря на отсутствие медали "программист Python" в профиле).
Даже на внезапно выскочившие ctx и canvas в game() недонамекнул.
Постеснялся, видимо.

Рекомендую вам почитать про уже достаточно зрелый WebAssember (WASM). Его сделали как раз, чтобы не делать вот такие, не очень оптимизированные и медленные инструменты.

И что, существует транслятор из Python в WASM?

Не знаю конкретно за питон, но для c/c++/c# они уже есть и неплохо работают. Я например уже использовал Blazor (c#), разворачивающий в браузере Mono VM на которой исполняются dll, ки. С питоном такое по идее сложнее сделать, т.к питон требует наличие операционной системы, но думаю это только вопрос времени

На данный момент WASM хорошо работает только с языками без встроенного GC.
Например, он сейчас отлично работает с C/C++ или Rust.
Хотя там весьма спорные моменты в плане того, на сколько это оптимизирует конечный код.
Как пример, можно посмотреть на takahirox.github.io/WebAssembly-benchmark, где C заметно выигрывает на вычислениях целых чисел, но в остальных местах где-то спокойно уступает родному JS
Я засунул тебе в скриптовый язык скриптовый язык, чтобы ты писал скрипты, пока пишешь скрипты.

Моё мнение по теме — очень надеюсь, что WA станет стандартом и JS умрет и мы его будем вспоминать как страшный сон.
А что такое WA? Я не смог пересилить гугл и найти это. =)
Web Assembly
НЛО прилетело и опубликовало эту надпись здесь

Не вижу смысла от wa и спикер на конференции на работе не смог меня убедить а дом, что он нужен. Он работает медленнее чем js, особенно, когда js кэшируется и запускается не первый раз (о чем сказал и сам спикер), а писать код на условном c++ из-за незнания JavaScript — проблема компетенции разработчика.
JavaScript так-то в принципе самый ли понятный и логичный яп в котором все структурировано и есть все необходимые инструменты для дебага

Нуок, перепишите на чистом JS какую-нибудь крупную сишную библиотеку вроде FFTW.

Странно, что не упомянули RustPython, который является обычной питоновской ВМ, которую можно легко скомпилировать в васм из-за природы языка раст. Пощупать онлайн можно по адресу https://rustpython.github.io/demo/.

При большом упорстве — CPython собирается аналогичным образом. Недавно встраивал в Golang приложение возможность сериализовать python объекты с помощью shared-library.


Любите же вы делать троллейбус…

Честно говоря, я думал, что отладка в Brython будет ужасной.
… но ошибки, брошенные Brython были в основном точными и довольно понятными.

Честно говоря, я думал, что отладка — это пошаговое выполнение кода с возможностью заглянуть внутрь рабочих переменных.

Для тех, кто не попал в эпоху, когда нтерактивные отладчики просто не существовали — именно так. Для всех остальных — это таки просто поиск ошибки. В частности, в вебе приходилось отлаживать alert-ами, а косяки в dom-модели искать, закрашивая все в округе разными бэкгнаундами :)

Уже больше 10 лет есть возможность на вебе использовать интерактивные отладчики — Отладка Javascript. Оператор debugger появился в спецификации ECMAScript 5.1 (июнь 2011). Поэтому мне удивительно читать, что в 2020-м году отладка в web-приложениях идёт через сообщения об ошибках.

На серверной стороне тоже будете пошагово отлаживать?

Если nodejs — то да. Хотя в этом редко есть потребность.

Не буду, а отлаживаю. Когда нужно, разумеется.


И без разницы, что на серверной стороне — node, PHP, python, C# или Java. Бэк так же хорошо отлаживается через отладчик, как и фронт. А с учётом абсолютной несвязанности по коду фронта и бэка (только по данным) каждую часть можно смотреть под дебаггером сколь угодно долго, даже если вторая часть отвалилась по timeout'у.


Возможно, тут кто-то называет отладкой обычное логирование, ну так это разные вещи.

НЛО прилетело и опубликовало эту надпись здесь

Конечно

Когда-то я писал нечто на вот этом — opalrb.com
Это Ruby в браузере. И оно даже работало у меня в продакшене. Но лучше не надо.

Вообще это известная тема когда какой-то язык переводят в JS чтобы работать в браузере, будь то полная трансляция в JS или же с рантайм-движком, но что-то особо не слышно громких проектов которые бы это действительно полноценно использовали.

А так вообще были реализации полноценных виртуальных машин на JS, в которой можно запустить Linux, в которой можно запустить нужный язык или открыть браузер… нувыпонели. Но по продакшену всё же вопросы.
Если вам дико не хватает питон-style во фронте
попробуйте coffee script
Не пробуйте, он давно уже мертв
Coffee script это же ruby style.
Собственно на рельсах он особенно и прижился

толку питона в браузере "без батареек", лучше тогда уж lua: https://fengari.io/

а внутрь питона жаву насувать, а к жаве библиотечки на докере на С и потом уж можно лендос «HELLO WORLD» запилить.

-"интерпретация интерпретируемого языка в js?)"

а зачем? кто это говно будет поддерживать?

Сброс длины змейки и счета при нажатии стрелки противоположной направлению движения (вверх-вниз или вправо-влево) — это баг или фича?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий