среда, 29 декабря 2010 г.

Python, Ruby. Официальная™ точка зрения Iorlas'а.

К данному посту побудил тред на лоре:
http://www.linux.org.ru/forum/development/5735572

Так много текста написал и не хочется чтобы он пропадал.

Сейчас вокруг Пайтона сложились 2 основных стереотипа:
1) Самый тормозной язык на свете
2) Джанго - хороший веб-фреймворк



Мнение о производительности пайтона сложилось из таких проектов как Gajim, Rhytmbox, Banshi(или какие там ещё есть поделки). Опыт данных поделий показывает, что пайтон(как и любой высокоуровневый язык) плохо подходит для написания ресурсоёмкой и требовательной к производительности логики(писать приложение на сложной высокопроизводительной сетевой библиотеке - да, писать сложную высокопроизводительную сетевую библиотеку - нет(намёк на твистед, который написан на Си как модуль для пайтона, но используется для приложений на пайтоне)).
Однако, стоит заметить, что даже лёгкую логику, используя Си, можно написать так, что оно будет работать очень медленно(transmission).
Вывод: на пайтоне нужно уметь писать, а не слепо использовать технологию.

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

Какое истинное лицо Python?
В первую очередь, это язык для создания скриптов, десктопных приложений, микро веб-приложений, больших (веб)приложений, требовательных к производительности.
Скрипты - понятно, очень удобно, большая стандартная библиотека, куча возможностей, простой и понятный синтаксис.
Десктопные приложения. Поскольку написание приложений используя GTK, Qt etc на пайтоне - очень простое дело, есть куча биндингов к либам, возможность простого написания логики на Си и использования её на более высоком уровне на питоне, питон является очень хорошим языком для такой цели.
Микро веб-приложения это приложения, в которых нет нужды в большой логике, где нужно чтобы всё работало искаропки или просто не требовало таскать за собой кучу файлов для небольшого приложения. Самый популярный пример - WebPy. Много кто его использует, есть даже люди, которые используют его для сложной логики, что является бредом и фанатизмом. Идеальный пример микро веб-приложения - веб-гуй для rtorrent(увы, никому нет дела, но решение было бы хорошим, лучше чем на пехапе).
Большие (веб)приложения. За счёт того, что узкие места можно написать на Си, а управлять ими на Пайтоне, можно использовать данный язык для крупных приложений, используя высокоуровневый язык для высокого уровня проекта. Это позволило родиться таким веб-фреймворкам как Werkzeug, Pylons, Pyramid etc. Они достаточно просты, динамичны, имеют простую внутреннюю логику, позволяют делать что хочется с любой частью веб-приложения. К таким фреймворкам относятся и Twisted, и Tornado.

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

Я сам использую и руби, и пайтон, и си. У меня есть опыт в использовании и джанго, и рельс, и пайлонс, и пирамид, и твистед, и даже немного PHP с симвонией, зендом, друпалом. Я хорошо взвесил все за и против, хорошо исследовал враждующие технологии и сделал выводы(они описаны выше). Я не защищаю инструменты, я просто говорю какие выводы сделал я, я просто говорю что они совпадают со мнениями опытных программистов, я просто делюсь точкой зрения. Хочешь - прими её, хочешь - нет.
Забавно будет посмотреть на тех, кто сможет назвать меня троллем или фанатиком, поскольку я не использую то, что мне же хуже, а значит я выбираю как можно более подходящие инструменты для своих задач.

2 комментария:

  1. > За счёт того, что узкие места можно написать на Си, а управлять ими на Пайтоне

    Ни разу не сталкивался с тем, чтобы пайтон стал узким местом в веб-проекте. В 90% случаев - это бд. В остальных - вебсервер, всякие мудрствования с тредами.

    > Twisted, и Tornado

    Асинхронный стиль - это жесть. Gevent позволяет добиться асинхронности (операций ввода-вывода использующих стандартный socket) в "обычных" фреймворках.

    ОтветитьУдалить
  2. Так что, заядлому джангисту обязательно стоит посмотреть в сторону RoR?

    ОтветитьУдалить