Search
Write a publication
Pull to refresh

Comments 17

Круто. Спасибо за проделанную работу.
Только один вопрос. Почему не питон 3? Почему именно 2?
Причины исторические. Проект начинался давно и тогда был сделан выбор в пользу питона 2. И до совсем недавнего времени с питоном 2 все было нормально. К сожалению, в силу обстоятельств непреодолимой силы, примерно в ноябре прошлого года пришлось начать портирование проекта на питон 3. Модули уже портированы (использован синтаксис 3.5.2, но думаю и для 3.6 работать будет). Портирование IDE в процессе, и там конца края не видно.
UFO landed and left these words here
Кодирование было начато в 2010.
Надо понимать, что это проект, который был выполнен в свободное от работы и других дел время одним разработчиком. Случались и длительные перерывы — например, в 2016 с мая по декабрь было сделано крайне мало из-за занятости с другими проектами.
Но в целом, все равно — разработка идет медленно.

На PyCharm планов нет.
Хотелось бы узнать: что за форс-мажор заставил переписывать на Python 3?
Я использую питон на работе, а там питон 2 объявили persona non grata.

А вы не пробовали реализовать библиотеки для обработки дерева кода на чистом Питоне? Интересно, насколько большая будет разница производительности.


И еще вопрос (или идея): есть такое IDE — Spyder, популярно в задачах численного анализа, активно развивается, написано на основе PyQt, остальное чистый Питон, причем и 2 и 3 ветки.


Может быть, имеет смысл сделать на основе вашего проекта плагин к Spyder, тогда будет проще развивать и поддерживать? Да и путь в университеты будет короче ;)


К сожалению, никак не доберусь сам попробовать Codimension. Спасибо за детальное описание, выгладит весьма впечатляюще!

> А вы не пробовали реализовать библиотеки для обработки дерева кода на чистом Питоне?
Нет, не пробовал. Я достаточно комфортно себя чувствую с C/C++ и процесс работы над модулями был интересен. Я смотрю на разработку этих модулей с точки зрения конечного результата. В данном случае работает примерно такая логика: приемлемый результат достигнут, значит можно переходить к следующей задаче в длинном списке. Моя конечная цель совсем не модули, они лишь средство. Идея инвестировать время в достижение уже достигнутого результата другим способом у меня особого энтузиазма не вызывает. Разумеется, нет никаких препятствий, если кто-то захочет проделать эту работу и узнать разницу в производительности.

Косвенно разницу можно оценить с использованием модуля из стандартной поставки питона, который называется pyclbr. Он вытаскивает информацию о классах, функциях и т.п. из питон файлов, то есть примерно то, что делает мой python parser модуль. Только он не все умеет вытаскивать. Далеко не все. И несмотря на то, что моя реализация предоставляет гораздо больше информации, я обгоняю стандартный модуль примерно в 7 раз. Подробности сравнения можно посмотреть здесь: http://codimension.org/documentation/cdmpyparser.html

> Может быть, имеет смысл сделать на основе вашего проекта плагин к Spyder, тогда будет проще развивать и поддерживать?
Может быть. А может быть и нет. Это неизвестно, пока не попробуешь.
Вообще говоря, способ оформления проекта — плагин (для какого редактора/IDE, если вариантов много?), набор утилит, новая IDE — не слишком простой и ясный выбор. Со сторонними проектами всегда есть масса неясностей, вот лишь некоторые из них:
— достаточен ли интерфейс плагинов для того, что я хочу сделать?
— а не поменяют ли разработчики интерфейс по ходу дела так, что мне придется все переделывать или так, что у меня принципиально все перестанет работать?
— если интерфейс недостаточен, то примут ли они мои доработки или отвергнут их и я останусь с проблемой делать все заново для чего-то другого?
— если у них баги, которые не дают возможности работать моей части, то как быстро они их исправляют? Ну или примут ли они мои изменения?
— не закроют ли они проект через два года?
— не поменяют ли они лицензию?
и т.п.
Вы наверняка опытный разработчик и наверняка имеете опыт участия в сторонних open source проектах. Мой опыт показывает, что люди ведут себя очень по-разному.

Когда я начинал разработку, я провел анализ имеющихся проектов. Spyder в тот момент был совсем не таким, как сейчас (если вообще был, не помню уже). Выиграл тогда eric 4. У него оказался совершенно недостаточный интерфейс плагинов. Да и во многих случаях играет роль такой фактор, как конкретная реализация UI. Иногда она такая, что желание делать плагин отпадает. Так или иначе, выбор был сделан в пользу своей IDE и пока что меня выбор для open source устраивает. А в виде коммерческого проекта можно сделать все что угодно.

> Да и путь в университеты будет короче
Не понял, что вы имеете в виду. Поясните пожалуйста.

Спасибо за развернутый ответ. Если вы не против, я отвечу несколькими комментариями, чтобы было проще воспринимать.


Позиция по использованию Си понятна, просто я больше привык к иной последовательности — сначала делаем на чистом Питоне, а потом узкие места конвертируем в Си или Cython для производительности. Поэтому спросил о производительности.


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


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


Если интересно, я некоторое время назад рассказывал про ast на митапе, видео и ссылка на презентацию есть вот здесь: https://habrahabr.ru/company/wargaming/blog/256425/

Теперь о Spyder: эта IDE достаточно активно развивается, за проектом стоит достаточно серьезное сообщество (за последние 5 лет там 2 раза менялся основной разработчик, и это проходило в целом незаметно для пользователей).


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


Более того, Spyder — это часть по умолчанию для крупных дистрибутивов Питона, в первую очередь Anaconda, и поэтому, например в сообществе data science это достаточно популярная программа.


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


Не совсем понял, что вы имели в виду:


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

На мой взгляд, как раз со стороны коммерческой разработки, сделать можно то, за что будут платить пользователи. А это бывает узнать или угадать ой как сложно.

И пояснение про университеты:


В комментариях к вашей предыдущей статье, здесь https://habrahabr.ru/post/320184/#comment_10029832 вы писали


Мне тоже приходила мысль о том, что в учебном процессе инструмент мог бы быть полезен. У меня,
однако, нет хороших знакомых в университетской среде. И я плохо себе представляю вариант зайти
куда-нибудь и предложить использовать Codimension.

Я хотел сказать, что если ваша разработка появится, как часть популярного в университетах решения, того же Spyder, то профессора будут пользоваться им как для исследований, так и для обучения ;)


Но это скорее информация к размышлению. Когда ближе разберусь (у меня почему-то Codimension с первого раза на RedHat Linux не установился, но это скорее в каких-то локальных настройках косяк), может появятся еще предложения.

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

Codimension на RedHat практически не тестировался. В travis есть поддержка RedHat и этот вариант был туда добавлен. Дома я использую ubuntu, а на работе с windows машины Codimension запускается с centos (транковой версии, не через установленные пакеты). Поэтому на RedHat возможны проблемы. Если есть что-то конкретное, пожалуйста, сообщите. Можно либо на github баг заправить, либо на электронную почту мне написать: sergey.satskiy@gmail.com. Не могу обещать, что все будет исправлено, но может быть с чем-то смогу помочь.

Насчет чистого Питона — не уверен: если будет стабильное решение на основе компилируемого расширения хотя бы для Линукс, то можно пользоваться. Скорее надо писать в популярные ресурсы и выступать на конференциях, привлекать контрибьюторов и пр.


Могу кстати в группу по Питону на LinkedIn забросить ссылку.


Не уверен, что буду снова пытаться на RedHat поставить, у меня и на ubuntu машинка есть.


Кстати, по поводу Spyder — могу еще порекомендовать его код посмотреть, просто как пример большого приложения, с поддержкой нескольких версий Qt, плагинов и многого другого.

> Могу кстати в группу по Питону на LinkedIn забросить ссылку.
Сейчас для меня это не актуально. Следующий запланированный шаг в направлении распространении информации это перевод статей на английский и публикация либо на ycombinator, либо на reddit.

> могу еще порекомендовать его код посмотреть, просто как пример большого приложения, с поддержкой нескольких версий Qt, плагинов и многого другого.
Спасибо. Я время от времени смотрю код не только у них, но и еще у нескольких проектов IDE. Для spyder я делал и мелкую правку (что-то бросилось в глаза, уже не помню) несколько лет назад.
Такая оболочка ещё более снизит порог вхождения в Python для новичков. Это здорово. И вообще, всегда полезно увидеть свой код «в новом ракурсе», это снижает число ошибок. Спасибо за статью.
Снимаю шляпу, очень серьезная работа проделана.
Интересно, а в нашем Ruby-мире никто не озадачивался подобным?
Радует, что кто-то пытается развивать программирование в сторону визуального способа.
Sign up to leave a comment.

Articles