schegloff ([info]schegloff) wrote,
@ 2006-10-24 17:17:00


34 replies, 8 authors
Entry tags:СГО, полезняшки

СГО - почему Python? (1)
Только что закончил изучение исходника некогда популярной утилитки clique.py и решил написать наконец о языке Python. Сначала об утилитке: некоторое время назад ее создатель, Nikita Borisov, предоставил ЖЖ-юзерам сервис (сейчас не работающий) LJ Clique Finder по поиску так называемых клик (групп ЖЖ-юзеров со 100% связностью - все являются взаимными друзьями друг друга). Так вот, оказалось, что исходный текст программки лежит в Сети в паре мест, и после небольшой доработки (перехода с серверной на клиентскую сторону) отлично обсчитывает списки френдов на локальной машине. Разобраться в чужой программе с непонятным (особо подчеркну! первый раз вижу операции над множествами!) алгоритмом оказалось довольно просто. А все потому, что написана она на понятном языке!

Здесь может возникнуть резонный вопрос: ну, нравится Щеглову python, и что с того? Зачем вообще СГО какой-то локальный (расположенный на машине пользователя) язык программирования? Разве не проще писать нужные сервисы так, как сейчас принято, - на PHP & MySQL, и размещать на Web-сервере у какого-нибудь хостера?

Да, проще. Только попробуйте-ка воспользоваться сейчас этим самым клик-файндером. Ссылка-то есть, "а включаешь - не работает" (с). Система с web-серверным ПО оказывается неустойчивой и легко разрушается под неблагоприятным воздействием внешней среды. То ли дело ситуация, когда у каждого участника СГО на всех его машинах (дом+работа как минимум) есть все необходимые для ориентации в СГО-пространстве программы! Вот к такому идеалу я и пытаюсь стремиться.

Ну хорошо, скажут мне друзья-программисты. Пусть программы. Давай мы напишем все необходимое на привычных крутых средствах разработки (C++/.NET, например). Сделаем проект, разрисуем сетевой график, распределим работу между несколькими программистами... и через три-восемь месяцев получим некий клиентский софт, который делает то, что хотелось три-восемь месяцев назад. Хорошо? Нет, плохо: слишком много времени проходит от возникновения идеи до ее реализации. Добавить в такой софт новую функцию - это уже вопрос новой версии, выпуск которой ого-го какая проблема. Фактически, мы опять возвращаемся к модели серверного софта, только в его роли теперь выступает команда разработчиков.

Оптимальной для СГО представляется ситуация, когда разобраться в используемых в нем программах сможет наибольшее количество участников (в идеале все 100%, но я сомневаюсь, что 100% и Excel-то используют). А для этого, как ни крути, такие программы должны быть написаны на максимально понятном языке. На каком именно? Ну, вы уже поняли :)

Буду признателен за аргументированные возражения, и вдвойне - за аргументированную поддержку.


P.S. Надеюсь, рекомендации [info]mithgol в связи с последними событиями все прочитали. На всякий случай, даю "сухой остаток": 1) Перед удалением LJ-дневника полезно скачать его копию. Программа ljArchive позволяет это сделать (включая подзамочные записи и комментарии). Однако знайте, что она старая и глючная, поэтому приходится проявить терпение, заново начиная закачку после обрыва связи. Рано или поздно составится полный архив. - насчет глючности все верно, мои жалкие 270 записей она закачать не может, что и заставляет учить python в поте лица, 2) относительно того, куда переползать из ЖЖ, также запомните слово: WordPress не стоит денег, и устанавливается за полчаса на любом платном хостинге, где есть PHP и MySQL. Поскольку такой хостинг сейчас можно достать рублей за тридцать или с?рок в месяц, перспективы наши лучезарны. Будущее - за сетью независимых блогов, объединенных протоколами, а не за альтернативными LJ серверами и сервисами. Правда, будущее это достаточно отдаленное, и ближайшую пару лет я надеюсь провести в ЖЖ.


Python is nice
[info]krotty
2006-10-24 06:42 pm UTC (link)
А Ruby еще приятнее в этом отношении (по крайней мере для меня)

(Reply to this) (Thread)

Re: Python is nice
[info]vitus_wagner
2006-10-24 07:31 pm UTC (link)
У Ruby есть еще то преимущество что он становится модным среди хостеров.

(Reply to this) (Parent)

питон
[info]bifurcate
2006-10-24 06:53 pm UTC (link)
"Система с web-серверным ПО оказывается неустойчивой и легко разрушается под неблагоприятным воздействием внешней среды. "

локальная система устойчивей (мм, хотя здесь не все так прозрачно, возможно вопрос терминологии), зато серверная версия доступна практически из любого места, даже когда с собой нет личного компьютера. + через сеть проще делать маркетинг, и в дальнейшем производить общие расчеты и т.д. + всегда можно сделать зеркала на разных серваках, укрепляя тем самым необходимую устойчивость.


"Разве не проще писать нужные сервисы так, как сейчас принято, - на PHP & MySQL, и размещать на Web-сервере у какого-нибудь хостера?"

я, конечно, не питонист, и даже не программист, но для сети есть django, который, как я понимаю, позволет очень быстро и с интересом писать веб-приложения (по сравнению с тем же PHP). хотя вы наверняка знаете.


с интересом наблюдаю за развитием, но пока со стороны, сам кручусь примерно в том же векторе, правда вот с этим ребятами: web/ruby/rails.


копии дневника переодически скачиваю, и чужих тоже, -- как же без этого.


так держать! думаю еще будут пересечения в сети :)







(Reply to this) (Thread)

Re: питон
[info]vitus_wagner
2006-10-24 07:30 pm UTC (link)

зато серверная версия доступна практически из любого места,


Когда человек обзаводится ноутбуком или продвинутым наладонником вроде Sharp Zaurus или Nokia 770, проблемы работы с чужого компьютера его обычно перестают волновать. А в данном случае вообще можно обойтись сидюком с необходимым программным обеспечением. Я примерно раз в три года для каких-нибудь друзей собираю такой сидюк со свободным ПО для Windows. На последней версии (от января 2004) Python был.

А вот проблему устойчивости нужно рассмотреть в нескольких аспектах

1. Устойчивость против естественных проблем - ну там разорилась хостинговая компания, ну потерял интерес к задаче хозяин конкретного сервиса.

2. Устойчивость против более-менее организованного противодействия со стороны СУ-2 и СУ-3.

Надо сказать, что еще во времена Реформации был сформулирован принцип "рукописи не горят", имеющий в виду что уничтожить нечто, растиражированное в тысячах экземпляров и поддающееся дальнейшему тиражированию почти нереально.

Кроме того, я уже неоднократно замечал что компания (особенно в условиях российской практики правоприменения) намного более уязвима, чем частное лицо.
Чтобы докопаться до диска домашнего компьютера нужно предъявить ордер. Докопаться до хостинговой компании - проще. Может позвонить куратор из компетентных органов и мягко намекнуть что-де есть мнение. А компания скорее всего не станет становиться в позу и отстаивать правоту своего клиента - у компании всегда есть налоговые нарушения, нарушения правил противопожарной безопасности и т.д., и можно без суда и следствия очень легко устроить компании веселую жизнь.


я, конечно, не питонист, и даже не программист, но для сети есть django,

Проблема в том, поддерживается ли данная штуковина хостерами. Насколько я понимаю, в ближайшие годы найти хостинг с Ruby on Rails будет сильно проще, чем с более-менее up to date Python-ом, да ещё с установленными всякими модулями.

(Reply to this) (Parent) (Thread)

Re: питон
[info]bifurcate
2006-10-24 07:43 pm UTC (link)
справедливые замечания!

тогда думаю нужно совмещать: т.е. иметь и веб и локальные версии. в любом случае, если я разрабатываю что-то для веба, на локальной машине у меня это тоже будет. но это не годится для всех, только разработчики смогут разобраться. по этому нужно либо уходить в одну из версий (локальную/сетевую), либо делать две -- а здесь да, вопрос времени стоит очень остро.

тем более сейчас несколько социо-кластеров пишут свои СГО ;)


да, rails сейчас как тренд, даже в России, хостеры начали появляться.

(Reply to this) (Parent) (Thread)

Re: питон
[info]vitus_wagner
2006-10-24 08:37 pm UTC (link)
Возможно, стоит подумать насчет фреймворка который позволяет легко подменять GUI-интерфейс на Web и наоборот. Чтобы код был общий, менялся только интерфейсный плагин.

(Reply to this) (Parent) (Thread)

Re: питон
[info]bifurcate
2006-10-24 08:40 pm UTC (link)
пока вроде ничего подобного нет.

(Reply to this) (Parent) (Thread)

Re: питон
[info]vitus_wagner
2006-10-24 08:45 pm UTC (link)
Есть alterator у Alt Linux. Там, правда, базовый язык Scheme.

(Reply to this) (Parent) (Thread)

Re: питон
[info]bifurcate
2006-10-24 08:47 pm UTC (link)
интересно, спасибо

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

я пока буду морочится в сетевой версии на рельсах.

(Reply to this) (Parent)

Re: питон
[info]krotty
2006-10-24 08:48 pm UTC (link)
В проекте Bitchun мы планируем использовать rails и на сервере и на клиенте, причем сервером может быть клиет твоего друга.

(Reply to this) (Parent) (Thread)

Re: питон
[info]bifurcate
2006-10-24 08:51 pm UTC (link)
да, я вас уже мониторю,

пока читаю про Докторовский whuffie.

очень интересно, спасибо. но мне еще нужно поднять скиллов в программинге.

когда немного разберусь, возможно буду задавать вопросы :)

(Reply to this) (Parent)

Re: питон
[info]schegloff
2006-10-25 02:35 pm UTC (link)
Покопался в Сети и понял, что грядет holy war между python и ruby :)

Сейчас меня волнует один вопрос - насколько код на ruby может быть понятен человеку, который его первый раз в жизни видит? Просто у меня был случай, когда для установки некоего пакета потребовалось залезть в питоновские исходники инсталлятора и кое-что там подправить, впервые столкнувшись с этим языком. Помню, что сначала все заработало, а потом я лихорадочно лазил по Сети, пытаясь понять - неужели в самом деле выход из цикла может обозначаться отступами?!

(Reply to this) (Parent)

В галерею Шапошникова!
[info]vitus_wagner
2006-10-24 07:39 pm UTC (link)
Картина маслом [info]schegloff переоткрывает заново принципы OpenSource.

Теперь по существу вопроса:

Следует учитывать что, по крайней мере на начальном этапе, участники СГО поделятся на две неравные группы - меньшая будет лезть в код и чего-то править, большая - просто пользоваться.

Тем более что лучшие из имеющихся сейчас скриптовых языков приходится "учить в поте лица".

Поэтому инструмент который упрощает установку для второй категории был бы, пожалуй полезен. В этом смысле Python, насколько я знаю, хуже Tcl, который позволяет завернуть приложение вместе со всеми модулями в один exe-файл (что не помешает его в любой момент развернуть обратно, и модифицировать код).

Лет семь назад я бы однозначно посоветовал Perl - тогда он безусловно лидировал и по распространенности на хостингах, и по набору поддерживаемых платформ. Сейчас Perl, Python, Tcl и Ruby более-менее подравнялись.

Так что всё равно с чего начинать. Почему бы и не с Python.

(Reply to this) (Thread)

Re: В галерею Шапошникова!
[info]krotty
2006-10-24 08:00 pm UTC (link)
Ruby runtime завернутый в один exe : http://sourceforge.net/projects/bitchun (320kb with UI)

(Reply to this) (Parent) (Thread)

Re: В галерею Шапошникова!
[info]vitus_wagner
2006-10-24 08:40 pm UTC (link)
А развернуть это дело обратно, быстренько подправить и опять завернуть там можно? tclkit и freewrap для Tcl такую функциональность предоставляют. freewrap вообще обычным unzip-ом разворачивается.

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

(Reply to this) (Parent) (Thread)

Re: В галерею Шапошникова!
[info]krotty
2006-10-24 08:45 pm UTC (link)
Ну почти все так, напильником подрихтовать и будет гладко - сейчас руби файл подключен как exe ресурс, есть куча программ чтобы править ресурсы. Если файл лежит на файловой системе отдельно, то exeшник использует его, а не тот что в ресурсе.

(Reply to this) (Parent) (Thread)

Re: В галерею Шапошникова!
[info]vitus_wagner
2006-10-24 08:47 pm UTC (link)
Ресурсы не во всех операционных системах бывают. Следовательно, решение непереносимое.

(Reply to this) (Parent) (Thread)

Re: В галерею Шапошникова!
[info]krotty
2006-10-24 08:50 pm UTC (link)
Вот переносимое -
http://www.erikveen.dds.nl/rubyscript2exe/index.html

(Reply to this) (Parent)

Совершенно верно, нужны исходники
[info]schegloff
2006-10-25 02:43 pm UTC (link)
Но я пока существенных отличий в скорости между FoxPro и интерпретатором python на своих задачах не обнаружил, а FoxPro пользуюсь уже лет десять. Так что требование *.exe возможно и лишнее - просто ставишь интерпретатор (не такой уж тяжелый, кстати), и вперед. Ruby, насколько я понял, работает точно так же - кликаешь по файлу .rb, и понеслась. А как в этом отношении с Tcl?

(Reply to this) (Parent) (Thread)

Re: Совершенно верно, нужны исходники
[info]vitus_wagner
2006-10-25 03:39 pm UTC (link)
То что современное end-юзерское приложение 99% времени проводит не в счете, а в ожидании ввода-вывода (либо пользовательского, либо сетевого) это медицинский факт. Поэтому требование "одного экзешника" ни в коем случае не следует рассматривать как следствие того что компилированный код быстрее интерпретируемого. Питоновский байткод может и поэффективнее C-шной программы местами оказаться. За счет того, что оперирует крупными логическими операциями, реализация которых в интерпретаторе Python старательно вылизана.

Здесь речь совершенно о другом - простота deployment-а и распространения. Задача такая - скачал пользователь откуда-то один exe-файл, кинул куда ему удобно и запустил. Работает. Пришел к нему в гости другой юзер с дискеткой/флэшкой, ему на флэшку этот exe-файл кинули, у него тоже работает. А пятый человек в этой цепочке захотел программу модифицировать. И должен иметь возможность это сделать, не разыскивая где это там оригинальный исходник лежал.

В варианте с распространением скрипта у каждого из юзеров в цепочке должен быть установлен интерпретатор Python со всеми необходимыми библиотеками. Да ещё и совместимый с соответствующим скриптом. Заметим, что в Debian Linux сейчас поставляется четыре версии интерпретатора Python (каждая с кучей библиотек) - от 2.1 до 2.4. Потому что некоторые приложения написанные на старых версиях, оказываются несовместимыми с более новыми. А другие - уже вовсю используют появившиеся в новых фичи.

(Reply to this) (Parent) (Thread)

Re: Совершенно верно, нужны исходники
[info]schegloff
2006-10-25 04:45 pm UTC (link)
Дайте-ка лучше ссылочку на это Tcl-чудо, собираемые-разбираемые экзешники. Щупать надо (причем именно мне, дилетанту широкого профиля). С питоном мне уже все ясно - отличный инструмент, но это не значит, что не может быть чего получше.

(Reply to this) (Parent) (Thread)

Re: Совершенно верно, нужны исходники
[info]vitus_wagner
2006-10-25 05:29 pm UTC (link)
http://freewrap.sourceforge.net/

(Reply to this) (Parent)

Re: В галерею Шапошникова!
[info]vitus_wagner
2006-10-26 12:10 pm UTC (link)
Только позавчера тут обсуждали преимущестсва и недостатки Ruby. Сегодня приходит начальник и спрашивает "А что ты знаешь про язык Ruby. А то тут есть клиенты которые хотят в него нашу криптографию".

(Reply to this) (Parent)

Всем огромное спасибо!
[info]schegloff
2006-10-25 03:29 am UTC (link)
По крайней мере, основная идея - дублировние серверного и клиентского софта - никаких возражений не вызвала, а совсем наоборот. Предложение [info]vitus_vagner относительно "...подумать насчет фреймворка который позволяет легко подменять GUI-интерфейс на Web и наоборот" представляется весьма перспективным, собственно, это самое я с clique.py и делал.

Итак, предложены три кандидата на роль "рекомендованного языка" - ruby, python, tcl (в порядке "модности"). Perl и PHP я не рассматриваю по причине нечитабельности их кода (смотрел я исходник AVThreader на PHP, смотрел, и решил все с нуля на python переписать), каковую признают даже пишущие на этих языках.

Основное требование к итоговому выбору - равная легкость использования в Web- и Local- приложениях. Не пишу GUI, поскольку "web-режим" на локальной машине (запустил командную строку - получил html-файл) для малых задач выглядит вполне приемлемым, а программирование windows-like интерфейса всегда отбирает 80% времени на сущую фигню вроде рисования форм (не-на-ви-жу!). Теперь осталось выяснить, какой из трех языков лучше всего для этого подходит. Следим за рекламой :)

(Reply to this) (Thread)

Re: Всем огромное спасибо!
[info]gxost
2006-10-25 06:14 am UTC (link)
Поспрашивал у знакомого программера, он советует python как самый "легкоусваяемый". Основная проблема в схеме "хочется что-то поменять - подправил программу" заключается в том, что чужие программы очень тяжело читать. В python-е этого избежали, сделав понятное оформление частью синтаксиса.

(Reply to this) (Parent) (Thread)

У Ruby есть два преимущества...
[info]schegloff
2006-10-25 02:49 pm UTC (link)
1) мода, 2) предельная простота описания классов.

Интересно бы сделать исследование, какой процент российских хостингов поддерживают Python/Django, и какой Ruby-on-Rails. Ну и, само собой, поизучать чужие тексты. У меня пока получилось разобраться только в python'овских, perl просто ужас, php ужас, но терпимый.

(Reply to this) (Parent) (Thread)

Re: У Ruby есть два преимущества...
[info]gxost
2006-10-25 07:27 pm UTC (link)
Самая популярная ссылка "Python против Ruby": http://c2.com/cgi/wiki?PythonVsRuby
Похоже, разница там только в мелких деталях...

Грубая прикидка по хостингам: запросы "хостинг python" и "хостинг ruby" в гугле дали 342000 и 269000 результатов соответственно.

(Reply to this) (Parent)

F2F
[info]pim
2006-10-25 06:37 am UTC (link)
F2F как развитие P2P.
Весь вопрос в хранилищах контента доступных всегда. В пределе если все будут на ADSL и у каждого дома будет стоять коробка на плате типа EPIA - MII 12000 (одноплатный комп с потреблением 12 Вт) на которой будет типовой блог. то оно и заработает. а маршрутизация через таблицы друзей, т.е. DNS F2F локально кэшируется у друзей.

(Reply to this) (Thread)

Re: F2F
[info]partorg
2006-10-25 08:29 am UTC (link)
И кэширование блогов друзей?

(Reply to this) (Parent) (Thread)

Re: F2F
[info]vitus_wagner
2006-10-25 03:43 pm UTC (link)
Угу. Я об этом еще два года назад писал,

(Reply to this) (Parent)

Re: F2F
[info]schegloff
2006-10-25 02:54 pm UTC (link)
Да, к этому и придем, причем быстрее, чем кажется. Я еще помню времена, когда фраза "нынешнее поколение советских людей будет пользоваться персональными компьютерами" вызывала у собеседников здоровый смех.

Сейчас нужно на базе ЖЖ (и simpy!) наработать основные решения, а уж перенести их в распределенную среду - дело техники.

(Reply to this) (Parent)

Re: F2F
[info]vitus_wagner
2006-10-25 03:46 pm UTC (link)

DNS F2F локально кэшируется у друзей.


Если бы вы знали, какое количество вполне реальных корпоративных доменов заводят себе вторичные DNS-сервера именно таким образом - сисадмин просит своего друга, тоже сисадмина подержать вторичник для его домена, а взамен держит его вторичник.

(Reply to this) (Parent)

Легкий оффтопик, возможно баян
[info]skydigger
2006-10-25 06:40 am UTC (link)
Статья Клэя Ширки "Группа - сама себе злейший враг". Рекомедую почитать.

(Reply to this) (Thread)

Спасибо, уже прочитали
[info]schegloff
2006-10-25 02:51 pm UTC (link)
Я на эту статью наткнулся примерно неделю назад. Идея с sgo_thanks на simpy.com прямиком оттуда.

(Reply to this) (Parent)