Python

индекс
250,37

Браузерный интерпретатор Python

image

На сайте people.csail.mit.edu появился интерпретатор языка Python. Также там есть несколько примеров. Отладку программы можно производить пошагово.
Правда, существуют некоторые ограничения: там нет модуля импорта или ввода/вывода файлов. Поэтому понадобится это, в основном, для показательных и учебных целей.
Всё это базируется на версии языка Python 2.5
+34
1 сентября 2010, 16:41
40

комментарии (43)

–11
lega #
интересно как там идет распределение нагрузки, я запустил 3 скрипта: «if -1 in xrange(100000000000): print 'hello' », будет долго думать…
+8
magic4x #
есть все поводы для гордости, умник.
–10
lega #
от зацикливаний есть защита "(stopped after 100 steps to prevent possible infinite loop)", а мой скрипт выше является одним шагом. сервер все ещё молотит код, возможно таким образом сервер можно «нагнуть».
+5
donnerjack13589 #
Ничего он не браузерный, все обрабатывается на сервере
–1
magic4x #
да, скорее это браузерный шелл, зато не надо беспокоиться о том, что комп вздернится от неудачного скрипта.
–1
magic4x #
я это о том если бы интерпритатор был реализован на js, «настоящий» не так легко повесить.
+2
RostislavDzinko #
Да вы что. Это ж реализация интерпретатора python на javascript!
–1
filippoff #
>>f=«hello world»
>>print f
пусто! :) why? :(
+1
Bahusss #
попробуйте нажать на кнопку Forward
+1
filippoff #
спасибо, вот блин лоханулся так лоханулся на пятерочку
+1
iOrange #
очень хорошая онлайн-обучалка + интерактивная консоль для Python — trypython.org
+7
oe24 #
Написали бы в скобках, что он на Silverlight.
+1
iOrange #
Извиняюсь — забыл приписать варнинг. К счастью это единственный ее минус.
+1
agoodis #
Написал 2 + 2 и ожидал получить ответ, но не увидел…
0
oe24 #
Уже подсказывали: нажмите «Forward»!
+2
senyai #
Использую www.sagenb.org/
+1
shai_hulud #
пользуясь случаем спрашиваю. Python комьюнити уже создала нормальных декомпилятор 2.6/2.7?
+1
MikhailEdoshin #
В смысле декомпилятор байткода?
0
shai_hulud #
Да, а еще я не смог найти спецификацию по байткоду. Хотел уж свой написать.
0
MikhailEdoshin #
Сам недавно наткнулся на дискуссию на stackoverflow, с теми же практически ссылками, что и wapoo ниже дал. Специально я этим не занимался, конечно (в моем проекте мне даже на руку, что канонического декомпилятора нет :) ) Видимо, никому сильно не надо — а то можно было бы собственно C файлы разобрать, там, во всяком случае, все полностью.

А вам зачем декомпилятор, если не секрет?
–2
shai_hulud #
>А вам зачем декомпилятор, если не секрет?
как некультурно спрашивать у человека зачем ему декомпилятор.

Разбирать проекты, которые не хотят делиться исходными кодами. Анализировать софт на предмет шпионской деятельности. Воровать @ Убивать.

Неужели нет спецификации. Как вообще можно делать альтернативные реализации питона без спеков.
–1
synthesis #
Казалось бы, какое отношение байткоды CPython имеют к альтернативным реализациям?

docs.python.org/library/dis.html: Bytecode is an implementation detail of the CPython interpreter!

Процесс, если интересно, можно посмотреть в файле compile.c
–1
shai_hulud #
ну не спецификация, но уже что-то. Спасибо.

IronPython к примеру может использовать pyc файлы. Альтернативная реализация.
0
MikhailEdoshin #
Да я исключительно из технических соображений интересуюсь, зачем :) Конечная цель — дело ваше, как говорится, кто на что учился :) Но я вот пока еще ни разу не видел проекта в виде байткода, без исходника. Нешто такие бывают? (Хотя вот у меня такой отчасти будет… :) Нешто еще другие такие бывают?)

Есть спецификация языка, а байткод да, не стандартизован отдельно, но есть ведь полные сорцы на C — если надо, можно оттуда всю информацию извлечь.
+1
MikhailEdoshin #
И, кстати, на stackoverflow почему-то не упоминали dis из стандартной библиотеки — он что, совсем не работает?
+1
MikhailEdoshin #
А, теперь понял проблему.
+2
wapoo #
Если вы про декомпиляцию байткода, то могу предложить онлайновый сервис и вот это. В первом заявляется поддержка 2.0 — 2.6, во втором 2.5 — 2.6. Также есть коммерческий проект, но расценки там очень завышены.
+1
shai_hulud #
первый валится на сложных файлах (не понимает некоторые опкоды), второй аналогично, но уже на других. Я когда говорил «нормальных», я не ерничал. Действительно нету полностью совместимого с 2.6 декомпилятора. А уж про 2.7 говорить нечего.

Еще хочу заметить что опенсурс проекты встали, но не по причине завершения разработки.
0
magic4x #
по табличке Global variables создается ощущение что каждое имя связано со своим объектом, т.е.:
a=2; b=a; c=b;
отрисует для a, b, c по двойке, хотя в целях обучения стоило бы отрисовать одну — к вопросу о изменяемых и неизменяемых типах объектов.
+1
vpbar #
круто. Прикрутить справку по языку, перевести на русский и можно в школе использовать.
+3
Glyuck #
www.skulpt.org/ — интерпретатор питона, написаный на JS.
Естественно, нету целого ряда питонячьих библиотек, но всё крайне занятный проект
–1
Guria #
Эх! Ожидал здесь увидеть сборку Питона на NaCl с доступом к DOM. Кстати никто не в курсе по поводу прогресса в эту сторону?
0
AntiGravitY #
+3
synthesis #
Автор использует дырявый, неподдерживаемый и нерекомендуемый модуль rexec. Например:

socket_class = object.__subclasses__()[XXX]  # Число вырезано из соображения безопасности
socket = socket_class()
socket.connect(('google.com', 80))
socket.send('GET / HTTP/1.0\r\n\r\n')
print socket.recv(4096)

Что-то не нашел как связаться с автором. Если кто может, то напишите ему, пожалуйста, пока не начали через него спам рассылать или еще чего похуже.
+1
KL7 #
Забавно. До этого видел только shell.appspot.com
+1
VolCh #
shell.appspot.com/ — Python 2.5 в окружении Google App Engine
+1
VolCh #
упс, об одном подумали :)
+1
MikhailEdoshin #
В принципе, Python'овскую консоль писать одно удовольствие, в стандартной библиотеке есть готовый модуль code, к которому достаточно прикрутить ввод-вывод.
–1
angry_elf #
Непонятно, зачем это надо. Лучше бы к браузерам доделали языки, что б можно было писать script type=«text/my-best-language», как предусмотрено стандартом…
0
kAIST #
И что? Браузерам таскать с собой интерпретаторы всех известных языков программирования?
0
angry_elf #
Javascript с собой таскают и ничо.

У меня вот ща в системе стоят языки:
$ eix -I dev-lang/|grep dev-lang
[I] dev-lang/erlang
[U] dev-lang/nasm
[I] dev-lang/perl
[U] dev-lang/php
[U] dev-lang/python
[U] dev-lang/ruby
[I] dev-lang/spidermonkey
[I] dev-lang/swig
[I] dev-lang/tcl
[I] dev-lang/tk
[I] dev-lang/yasm

Никаких проблем не вижу, честно. Причем если JS только в последние годы стал более-менее быстрым, то все вышеперечисленные были быстрыми годы, если не десятилетия.

А уж если вспомнить, что большинство примеров со скриптами на w3c содержат text/tcl, так и вообще становится странным, почему js-то стал стандартом?

Плагины и прочие браузер предлагает поставить. Почему не предлагать доставить дополнительный язык? Не вижу проблемы, ни разу.
0
kAIST #
С linux проблем то возможно будет меньше, но…
1. Кроме самих языков, нужны еще и либы для взаимодействия с браузерами. Их нужно поддерживать в актуальном состоянии. Представьте себе, что где то нашли уязвимость, а разработчики либы не торопятся ее закрывать.
2. Есть же еще и другие OS. Написана одна страничка с использованием tcl, но вот на symbian работать не будет, так как нет порта этого языка под эту os. Вспомните дебаты по поводу флеша на iOS.
3. Все же, десятки плагинов для браузера не есть хорошо. Не зря, все в вебе пытаются стандартизировать. Представьте что к этому всему еще добавится десяток разновидностей языков разметки…
0
angry_elf #
1. А если вспомнить еще десяток-другой либ типа ssl/tls, png, jpg, gif, xslt, разные xml-парсеры, то лишие языки программирования значительной проблемы не создадут. С обновлением проблемы не вижу, пакетные менеджеры неплохо с этим справляются. А если делать реализации языков в виде плагинов, то они могут быть кросс-браузерными (по аналогии с nsplugin).
2. Как правило, с портированием языков на другие платформы проблем возникает мало. Проблемы флеша — в радиусе кривизны разработчиков виртуальной машины оного, а не в языке.
3. А десятки либ — хорошо? А то что каждый жаваскрипт-фреймворк реализует (соответственно, вынуждает качать) по своему определенный кусок функционала, который вполне мог бы быть вынесен в stdlib языков, хорошо? Какая б была экономия — подгружать только код, без стандартной библиотеки. Сейчас средняя страница в интернете — 90% жаваскрипта (повторяющегося на 90% сайтов) и 10% уникального html-кода. Сэкономить можно было бы порядочно.

Но это все теоретизирования, к сожалению.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.