От WordPress к Python и Django: как я дошёл до жизни такой

Задумал я как-то сделать удобную CMS для того, чтобы в короткие сроки можно было делать простые сайты со статьями. Решил я слепить сайты на базе WordPress, благо плагинов для него тонны. Особенно эта идея разгорелась после того, как увидал премиум-темы, создатели которых сулили превращение движка и в крутые риэлторские сайты, и в веб-газеты, и даже в интернет-магазины. Но после того, как я попробовал пару подобных тем в действии, я понял, что на самом деле это привязывание колёс от Формулы 1 к детскому велосипеду на скотч.

Тогда я решил попробовать другое решение для простых людей, такое, чтобы и под создание контентых сайтов было заточено, и популярным было. Естественно, глаз упал на Drupal — якобы мега-супер CMS, от которой у всех одни восторги. Оказалось — да, гибкость есть. Правда, обеспечивается она отнюдь не гениальной архитектурой (гениальностью там вообще не пахнет, взять хотя бы то, что для апгрейда движка нужно полностью вырубать сайт), а несколькими велосипедами плагинами из серии «MVC для самых маленьких». Как водится, для пользования оными нужно было изучить чуть меньше, чем книжку чепухи. Поняв это, я решил не становиться специалистом по игре на поделках для тех, кому хочется чего-то эдакого, но он при слове «программирование» дрожит, и решил поискать решение, в котором не надо будет изучать недоязыки недопрограммирования.

Так как последние несколько лет я ваял свои нетленки на PHP, то и рассудил соответственно: надо брать — да и использовать любой PHP-вебфреймворк, благо, их уже наделали целую кучу. Открыл один мануал, другой и понял, что нет никакой разницы между тем, изучаешь ли ты фреймворк для знакомого тебе языка, или совершенно нового.

В итоге я буквально за час, в кофейне, осилил азы Пайтона по офигительной бесплатной вебкниге «A Byte of Python» и быстренько перешёл к «Django Book», которая, впрочем, оказалась гораздо хуже родной документации (после 4-6 глав я открыл последнюю, стал читать и параллельно реализовывать задуманный проект).

Почему Python и Django?

  • во-первых, Python — не PHP. PHP и всё, что с ним связано, уже почти де-факто стали синонимом слова «посредственный» (не хочу раскрывать тут эту тему, если сильно волнует этот вопрос — пинайте, объясню свой взгляд)
  • Python не является веб-языком. Он давно и активно используется в совершенно разных отраслях, от лингвистики до игроделания. Например, часть движка и плагины известного видеоплеера XBMC, который стоит в железке у меня под телевизором, реализованы именно на Пайтоне. Кстати, о лингвистике: ребята, работающие с поисковыми технологиями, в общем доступе есть интересные языковые библиотеки. Есть и хорошая книга, знакомящая с разными аспектами программирования лингвистики на Пайтоне (включая бредогенерацию).
  • язык появился давным-давно по сравнению с другими, используемыми в вебе. Соответственно, и шишки уже набиты, и наработок просто масса.
  • о веб-фреймворках: говорят, Django несовершенен. Говорят, он уступает RoR. Что я буду делать, если уткнусь в потолок Джанго? Сменю этот фреймворк на другой, благо на Пайтоне их написано несколько, например, на Pylons, который склеивает лучшие реализации MVC, SQL абстракций и шаблонных движков. Что будет делать программист на языке, ставшем известным только благодаря веб-фреймворку? Не знаю
  • наконец, основной и решающий фактор: Пайтон — это не питон! И никакого отношения к питонам он не имеет. Язык был назван в честь моих любимых Monthy Python Flying Circus

17 комментариев к “От WordPress к Python и Django: как я дошёл до жизни такой”

  1. спасибо! А вы читали вот этот цикл статей на хабре http://habrahabr.ru/blogs/artificial_intelligence/80081/, по-моему очень интересные.

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

    Показать пример ужасного кодинга на пайтоне? :) Когда даже правильная, «встроенная» разметка не помогает? :)))

    Хочу сказать, что у ПХП и Python достаточно своих граблей. Если знаешь о них, то код получается шустрый и правильный. Если руки из… то питон не поможет.

    По скорости — да, питон «делает» много языков, но потом всё равно упираешься в базу данных. Нам, ради скорости, пришлось перейти на Erlang :) питон выполняет лишь декоративную функцию, в общем — там и пхп справился бы.

    Моё мнение о языках программирования: пишите правильный код, и никто не спросит вас, на каком языке написан ваш сайт :)

  3. Влад: переведу коротко суть твоего коммента — «мастер и пуками сбацает Моцарта, а профан и на Страдивари не сумеет». Но для большинства более качественный инструмент поможет, нежели наоборот. Об этом я и говорю.

    Два — есть средний уровень профессионализма толпы, которая играет роль, когда ты полагаешься на чужие библиотеки. Я в Python ещё новичок для конкретных примеров, но вот в Perl и PHP могу привести пример. Есть такая штука на PHP — Snoopy, библиотека какого-то идиотика, в которой реализованы HTTP + типичные HTML-действия (клики, работа с формами и т. п.). На самом деле создатель никогда не слыхал про спецификации обоих стандартов, например, про то, что в HTML-тегах пробелов может быть где угодно и сколько угодно, а может и не быть вовсе ( ). Так что библиотечка давала ошибки на каждом шагу. Я, есесно, писал сам всё это, ибо Snoopy была «лучшей» библиотекой на PHP. В Perl есть WWW::Mechanize, в котором, естественно, все спецификации соблюдаются, и абстракция выглядит совершенно по-человечески — открыть, выбрать, перейти,

  4. Python конечно хорош, особенно в плане своей объектности, модульности и работы с UTF-8.. вот бы еще синтаксис не такой упёртый на пробелы :)

    А про Руби и Рельсы зря вы так, полно и куча еще других фреймворков и не только для веб, чего стоит например возможность создавать в Titanium для Android и iPhone мобильные приложения, так что в целом Руби так же спокойно можно применять для всего и не только веба.

    По ПХП кто его только не ругал, только ленивый наверное. Но в целом ряд задач он решает очень хорошо и удачно. По фреймворкам например мне нравится простота CodeIgniter’a немного расширив его (благо специально куча возможностей для этого) и ваять сайты можно без проблем и даже крупные CMS создавать на базе оного, на данный момент чем мы и занимаемся.

  5. Эмм… Я вот ни разу не понимаю предъяв к пробелам. Ты пишешь в столбик до сих пор в других языках?

    Руби можно применять, но этот язык только встаёт на ноги, пусть обобьют все шишки и налепят под него мульон библиотек — тогда буду писать свои 5 строк на нём.

    Про PHP выше я всё уже сказал, что хотел. Можно-то можно. Это ясно. Но тошно. Я уж не хочу повторять эту избитую истину — что даже осилить единый подход к именованию ф-ций не смогли, я без мануалов вообще не писал ничего на PHP из-за этого, не запоминалось.

    А про то, что на Пайтоне и Руби приложения на мобильных платформах — кто-то так делает? А то я начитался про байндинги Пайтона к Cocoa и GT, типа — круто, но вот найти живых и здравствующих приложений — не нашёл.

  6. 2samlowry: суть моего комментария в том, что не надо сравнивать худшее от PHP лучшим от Python. Посмотрите на библиотеку CakePHP, например. Пример отличного кода.

  7. Ты забыл ещё один фактор, который точно имеет значение. Пайтон любят в Google, например, без знания Python нет особого смысла получать аккаунт в Google Apps.

  8. Тормоз, я заведомо опустил этот фактор, как сомнительный. Что это даёт, вообще говоря? Единственные плюсы, которые я знаю — это бешеную трастовость проектов в Гугле. Но у меня адалт-тематика, а это запрещено там термсами.

    Тот же Джанго там приделывается с бубном.

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

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

  10. Столбиком увы на ЯП я писать не умею, в строчку еще на лиспе кое-как было в институтах, но теперь я хочу писать как я хочу писать, гибко и удобно иногда в строку как в Перле или в Руби не ограничивая себя блоком из пробелов или табов :)

    Против питона ничего не имею, я просто не люблю сам язык за его синтакис, который решил делать всё по другому, в отличии от Руби который взял лучшее из Си, Перла и Явы, даже шаблоны местами (ЕРБ) из ПХП и пошёл быстро шагать к развитию….

    А мобильные платформы как пример где можно использовать казалось бы такие языки, никто же не ограничивает писать на C# или Object C сразу, зачем, если эта задача решается быстрее, проще и понятнее.

    Про библиотеки, вот тут почему-то пока Перла никому с его CPAN не переплюнуть, Github очень не кисло растёт для Ruby…

    А ПХП при его изьянах которые сам терпеть не могу, я вижу его преимущества и главное спрос на рынке большой, понятно, что это роняет цены, но всё же, не одним же языком едины, тут главное правильно приложить голову :)

  11. НУ я так понял, что несмотря на то, что у вас особая любовь к другим движкам, WordPress вы используете. Хотя да, было бы интересно посмотреть на новую CMS :)

  12. Прогресс таков:

    — нашёл очень много мелких косяков в Джанге (я переносил существующий сайт на неё, поэтому надо было решать кое-какие задачи так и именно так и вот тут я сполна вкусил говнеца)
    — увидал, что многие вещи, которые в этих наших интернетах уже де-факто, отданы на радость реализации нам, пользователям фреймворка. Нахера, спрашивается, фреймворк нужен? Фреймворк нужен только для реализации простейших контентных сайтов.
    — Пушкин порвал мою мотивацию, я в какой-то момент понял, что у меня нет программистской усидчивости, заленился, и просто отдал всё сложное программирование фрилансерам. См. сл. пункт.
    — возникло стойкое ощущение того, что на Пайтон+джангу русских фрилансеров мало. Не, очень много свитчеров с PHP и людей-оркестров (которые заявляют, что работают с 10 фреймворками), но специфика Джанги такова, что чуть что — нужно знать глубинные фишки и делать всякие хаки, а вот этого как раз почти ни у кого нет.
    — в итоге понял, что язык и фреймворк — похуй. Главное — их распространённость.
    — ах, да — ещё посмотрел классную лекцию http://vimeo.com/10922497 , где чел ахуенно доказывает, что эволюционное (типа «неправильное») развитие проекта (когда на него наслаиваются фичи и латаются дырки) — это нормально. И что щас настолько дёшева аппаратная часть, что легче решать проблемы ею, не заморачиваясь до отрыва мозга над мелкими проблемами.
    — ах, да 2. Прочитал поучитальную статью о том, как всё сделано у Пленти оф Фиш: http://www.insight-it.ru/highload/ . Это как-то порвало шаблон у меня.
    — ах, да 3. Пробую клауд-хостинги (как резиновое решение для любых проектов).

  13. Ясно.

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

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх