Задумал я как-то сделать удобную 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
Очень интересно почитать о лингвистике в питоне. Не подскажите название книги?
«Natural Language Processing with Python», ищется в ebdb.ru
спасибо! А вы читали вот этот цикл статей на хабре http://habrahabr.ru/blogs/artificial_intelligence/80081/, по-моему очень интересные.
Кроме последней причины, я не вижу убедительности в остальных :)
(я пишу на обоих языках и на пайтоне и на пхп)
Показать пример ужасного кодинга на пайтоне? :) Когда даже правильная, «встроенная» разметка не помогает? :)))
Хочу сказать, что у ПХП и Python достаточно своих граблей. Если знаешь о них, то код получается шустрый и правильный. Если руки из… то питон не поможет.
По скорости — да, питон «делает» много языков, но потом всё равно упираешься в базу данных. Нам, ради скорости, пришлось перейти на Erlang :) питон выполняет лишь декоративную функцию, в общем — там и пхп справился бы.
Моё мнение о языках программирования: пишите правильный код, и никто не спросит вас, на каком языке написан ваш сайт :)
Влад: переведу коротко суть твоего коммента — «мастер и пуками сбацает Моцарта, а профан и на Страдивари не сумеет». Но для большинства более качественный инструмент поможет, нежели наоборот. Об этом я и говорю.
Два — есть средний уровень профессионализма толпы, которая играет роль, когда ты полагаешься на чужие библиотеки. Я в Python ещё новичок для конкретных примеров, но вот в Perl и PHP могу привести пример. Есть такая штука на PHP — Snoopy, библиотека какого-то идиотика, в которой реализованы HTTP + типичные HTML-действия (клики, работа с формами и т. п.). На самом деле создатель никогда не слыхал про спецификации обоих стандартов, например, про то, что в HTML-тегах пробелов может быть где угодно и сколько угодно, а может и не быть вовсе ( ). Так что библиотечка давала ошибки на каждом шагу. Я, есесно, писал сам всё это, ибо Snoopy была «лучшей» библиотекой на PHP. В Perl есть WWW::Mechanize, в котором, естественно, все спецификации соблюдаются, и абстракция выглядит совершенно по-человечески — открыть, выбрать, перейти,
Python конечно хорош, особенно в плане своей объектности, модульности и работы с UTF-8.. вот бы еще синтаксис не такой упёртый на пробелы :)
А про Руби и Рельсы зря вы так, полно и куча еще других фреймворков и не только для веб, чего стоит например возможность создавать в Titanium для Android и iPhone мобильные приложения, так что в целом Руби так же спокойно можно применять для всего и не только веба.
По ПХП кто его только не ругал, только ленивый наверное. Но в целом ряд задач он решает очень хорошо и удачно. По фреймворкам например мне нравится простота CodeIgniter’a немного расширив его (благо специально куча возможностей для этого) и ваять сайты можно без проблем и даже крупные CMS создавать на базе оного, на данный момент чем мы и занимаемся.
Эмм… Я вот ни разу не понимаю предъяв к пробелам. Ты пишешь в столбик до сих пор в других языках?
Руби можно применять, но этот язык только встаёт на ноги, пусть обобьют все шишки и налепят под него мульон библиотек — тогда буду писать свои 5 строк на нём.
Про PHP выше я всё уже сказал, что хотел. Можно-то можно. Это ясно. Но тошно. Я уж не хочу повторять эту избитую истину — что даже осилить единый подход к именованию ф-ций не смогли, я без мануалов вообще не писал ничего на PHP из-за этого, не запоминалось.
А про то, что на Пайтоне и Руби приложения на мобильных платформах — кто-то так делает? А то я начитался про байндинги Пайтона к Cocoa и GT, типа — круто, но вот найти живых и здравствующих приложений — не нашёл.
2samlowry: суть моего комментария в том, что не надо сравнивать худшее от PHP лучшим от Python. Посмотрите на библиотеку CakePHP, например. Пример отличного кода.
Ты забыл ещё один фактор, который точно имеет значение. Пайтон любят в Google, например, без знания Python нет особого смысла получать аккаунт в Google Apps.
Тормоз, я заведомо опустил этот фактор, как сомнительный. Что это даёт, вообще говоря? Единственные плюсы, которые я знаю — это бешеную трастовость проектов в Гугле. Но у меня адалт-тематика, а это запрещено там термсами.
Тот же Джанго там приделывается с бубном.
Единственное, что этот факт даёт — так это доставляет пайтонистам при чморении всех остальных (кроме жаверов). Обычно это является железным аргументом (хотя на самом деле хрен его знает, как они выбирали язык, вон — javascript их составляющую анализировали некоторые товарищи, говорят, там полный треш, всё на затычках держится).
Ну да, в Google проекты очень неоднородны по качеству, с этим согласен. А факт имеет значение в том смысле, что забвение Пайтону не грозит и популяризация его продолжается.
А, в этом плане да, они сильно подхлестнули популяризацию.
Столбиком увы на ЯП я писать не умею, в строчку еще на лиспе кое-как было в институтах, но теперь я хочу писать как я хочу писать, гибко и удобно иногда в строку как в Перле или в Руби не ограничивая себя блоком из пробелов или табов :)
Против питона ничего не имею, я просто не люблю сам язык за его синтакис, который решил делать всё по другому, в отличии от Руби который взял лучшее из Си, Перла и Явы, даже шаблоны местами (ЕРБ) из ПХП и пошёл быстро шагать к развитию….
А мобильные платформы как пример где можно использовать казалось бы такие языки, никто же не ограничивает писать на C# или Object C сразу, зачем, если эта задача решается быстрее, проще и понятнее.
Про библиотеки, вот тут почему-то пока Перла никому с его CPAN не переплюнуть, Github очень не кисло растёт для Ruby…
А ПХП при его изьянах которые сам терпеть не могу, я вижу его преимущества и главное спрос на рынке большой, понятно, что это роняет цены, но всё же, не одним же языком едины, тут главное правильно приложить голову :)
НУ я так понял, что несмотря на то, что у вас особая любовь к другим движкам, WordPress вы используете. Хотя да, было бы интересно посмотреть на новую CMS :)
Ну что, есть прогресс? Расскажи, что сделал с этих пор.
Прогресс таков:
— нашёл очень много мелких косяков в Джанге (я переносил существующий сайт на неё, поэтому надо было решать кое-какие задачи так и именно так и вот тут я сполна вкусил говнеца)
— увидал, что многие вещи, которые в этих наших интернетах уже де-факто, отданы на радость реализации нам, пользователям фреймворка. Нахера, спрашивается, фреймворк нужен? Фреймворк нужен только для реализации простейших контентных сайтов.
— Пушкин порвал мою мотивацию, я в какой-то момент понял, что у меня нет программистской усидчивости, заленился, и просто отдал всё сложное программирование фрилансерам. См. сл. пункт.
— возникло стойкое ощущение того, что на Пайтон+джангу русских фрилансеров мало. Не, очень много свитчеров с PHP и людей-оркестров (которые заявляют, что работают с 10 фреймворками), но специфика Джанги такова, что чуть что — нужно знать глубинные фишки и делать всякие хаки, а вот этого как раз почти ни у кого нет.
— в итоге понял, что язык и фреймворк — похуй. Главное — их распространённость.
— ах, да — ещё посмотрел классную лекцию http://vimeo.com/10922497 , где чел ахуенно доказывает, что эволюционное (типа «неправильное») развитие проекта (когда на него наслаиваются фичи и латаются дырки) — это нормально. И что щас настолько дёшева аппаратная часть, что легче решать проблемы ею, не заморачиваясь до отрыва мозга над мелкими проблемами.
— ах, да 2. Прочитал поучитальную статью о том, как всё сделано у Пленти оф Фиш: http://www.insight-it.ru/highload/ . Это как-то порвало шаблон у меня.
— ах, да 3. Пробую клауд-хостинги (как резиновое решение для любых проектов).
Ясно.
Делегировать все такие задачи правильно, конечно, и я тоже хотел бы, потому что мой конёк — интерфейсы и проектирование, а в программировании я совсем не так силён.
Но, блин, толковых программистов найти тоже очень не просто. Да и денег сейчас нет.