Для моих мозгов сложные синтаксисы — это вообще беда. Потому, что на какомто этапе обдумывания будущего решения, часто случается так, что я понимаю, что не очень осознаю суть задачи и начинаю “ввязываться в бой с наличными силами”. То есть экспериментровать, писать в режиме “что вижу, то пою”. Питон позволяет такой подход (в разумных пределах) т.к. всегда можно без ущерба для психики, вернуться, пересмотреть/отрефакторить/выделить важное и выкинуть ненужное.
По правде говоря — меня раздражают почти все синтаксисы, кроме питонического. Во всех остальных языках, которые я щупал, визуальная сложность написанного кода растет по экспоненте от сложности задачи. В результате, программист, и так пригруженный сложностью задачи, оказывается под завалами собственного кода. А если мысль пошла извилистым, ну да, может не очень правильным путем — последующее распутывание превращается в редкое извращение, на которое скорее всего забьешь.
Выбор средств
Вообщето, задача компиляции python в js изначально выглядит не особенно сложной. Между этими языками много общего. Однако, если в голову приходит мысль насчет компиляции одного языка высокого уровня в другой язык высокого уровня — стоит как минимум проверить гугл, а как максимум — расслабится и перестать заниматься мечтательством. Несмотря на это, поверхностный осмотр гугла предоставил на выбор целых три варианта:
pyjamas
Выглядит привлекательно. Сначала. Пока не распакуешь и не осознаешь. Может быть, он неплох для создания десктопов, я не пробовал. Мне, для создания удаленных псевдодесктопных приложений, вполне годится Mozilla XUL. А для написания средних и малых web решений pyjamas вообще непригоден. Да, он способен превратить каждый браузер в отдельный сервер приложений. Наверно, если изгольнуться — туда можно вставить коннектор работы с БД, или SASL авторизацию. Однако, если перефразировать Петра Первого: “Клиентская станция перед лицом начальствующим должна иметь вид лихой и придурковатый дабы разумением своим не смущать сервер” (кажется, до меня ктото уже так перефразировал). Стремление сего фреймворка накрыть одной компиляцией все аспекты, включая генерацию html и css, слабо коррелируют современными моделями веб приложений.
Skulpt
Вот это то, что я называю “pythonic way”. Это мощная идея. Это будет “окно в браузер” для python. Он станет мостиком, который наконец заставит Mozilla, а потом и остальных, включить поддержку python в стандартный пакет. Но. Это все же еще не python:
>>>print type(object)
error:trying to str() undefined (should be at least null)
Но и не javascript (mootools загружен страницей)
>>>a = Fx.Morph()
завис .....
В общем вывод следующий: отслеживать, возможно поучаствовать, при наличии времени, но пока сыроват.
pycow
В одном из мануалов амбициозного пакета “PyGoWave”, который собирается стать провайдером Wave для всея питонщиков, было показано, как легко и красиво, некий pycow превращает python в javascript. Пакет содержит два простых и однозначных метода — translate_string и translate_file. Работает так, как заявлено, весит немного. Использует прозрачную модель объявления классов и базируется на стандартном модуле ast из python2.6. Использует кроссбраузерную библиотеку mootools. То что надо для web проектов, не претендующих на мировое господство.
Comments