что лучше django или php
Какой стек лучший Python(Django) или PHP(Laravel)?
Какой стек лучший Python(Django) или PHP(Laravel)? Я хочу услышать мнение людей? Плюсы и недостатки у обоих? Возможно даже если не Larevel или Django, есть ещё Flask, Yii и т.д. Как то я пытался изучить Django после питона, но у них документация показалось для меня очень большой все сразу не прочитаешь и не поймешь. Как к людям начинают осенить Django, после каких действий они начинают комфортно писать код на джанге? PHP тоже пытался учить после питона, но мне некоторые вещи показались не очень логичными в плане синтаксиса. Меня учили в книгах питона вот так. а в php все наоборот. И начинается обдумывание и головные мозгодробительство. Почему так сделано, я же читал в питоне нужно так делать, а почему в PHP все наоброт, и т.п. такие вопросы. Возможно я что-то пропускаю в PHP. Но я не обсираю этот язык. Ни в коим случае! Я просто хочу стать веб разработчиком и любить свою работу. Пока что я знаю HTML, CSS и малеха Python. А! Ещё забыл, статические генераторы сайтов, такие как Hugo. Но в этих стат.генераторах писать код очень топорно и ограничено. Фиг чё толкового напишешь.
Конечно, PHP! Глобальный, надёжный!
Он быстрый! И ООПный. И там даже типы есть. Но нету утф-8.
В общем это продукт для англичан и американцев. А там зарплаты выше. Значит надо брать ПХП
Какой стек лучший Python(Django) или PHP(Laravel)?
На чем писать проект сегодня? На PHP(Zend, Symfony) или Python(Django)?
Сейчас очень много пишу на php.
Параллельно изучаю python.
Мне кажется для каждых целей свой инструмент.
Если нужно быстро нафигачить сайтик с 3мя динамическими страницами то и php сойдет.
Что то сложнее где нужна архитектура, тут у меня всегда встает сложный выбор между ZF и Django, но учитывая то что ZF уже год как совсем не шевелится, а до сих пор обещают новую версию, я больше склоняюсь к django. Симфони vs Django, мне кажется что симфони значительно проигрывает по произоводительности.
На php сейчас набирает популярность молодой фреймворк со странным названием Yii, использую его частенько очень простой достаточно быстный, многое заимствованно у рельсов.
С PHP проще найти разработчиков, да и дешевле они. Других преимуществ нет 🙂
С Python вы получите решение со значительно лучшими характеристиками (безопасность, производительность, гибкость и т.д.), и главное — получите его значительно быстрее.
Если вы расчитываете на рост и развитие своего проекта то однозначно PHP.
Потому что если для PHP вы можете потом найти (само собой, за дорого) пару-тройку действительно опытных разработчиков у которых за плечами 5-10 лет реальной веб-разработки.
То насчет опытных разработчиков Python — вы много можете назвать действительно опытных? Т.е. не тех, кто позавчера прочел «Самоучитель Python для Чайников», а тех, у кого с десяток реальных проектов за плечами?
Может полтора таких супер-питониста найдется на всю Москву, но только эти супер-опытные питонисты сидят на таких теплых местах, что поверьте, у вас никаких денег не хватит их к себе переманить.
Кстати, в этом плане я бы не рекомендовал использовать всякие «красивости» типа Java и «модности» типа Ruby.
Так что, пожалуйста, все-таки аргументируйте свою позицию. Или агрументация у вас, как у холиварщика, видимо очень страдает?
Как не странно, толковых пайтонщиков, а точнее, толковых программистов вообще, и при этом отдающих предпочтение пайтону, мне попадалось гораздо больше. Зато при этом, бестолковых php-шников пруд пруди.
Опытных и талантливых разработчиков вообще говоря не очень много. И к языку программирования это имеет весьма косвенное отношение.
Да, и причем тут Java?
Про бестолковых php-шников которых «пруд пруди» я с вами согласен. Только с небольшим уточнением — бестолковых программистов на прочих (да, именно так, безотносительно языка) любых языках вообще-то тоже «пруд пруди». Бестолковые php-шники это частный случай бестолкового программиста, они просто на виду из-за массовости php.
Суть моего высказывания, если вы обратите внимание, заключается совсем не в том, что якобы программисты на одном языке обладают большими скилами и большей толковостью чем на других, а в том, средняя концентрация толковых программистов на одну тысячу программистов не сильно отличается.
Поэтому, если рассматривать с точки зрения именно управления проектом (обратите внимание, я не говорю ничего о php-как-технологии vs python-как-технологии) то PHP как более массовый имеет большой плюс.
Т.е. еще раз, если вы не поняли, «расшифрую» суть моего высказывания: Если например, считать, что на каждую тысячу программистов найдется десяток действительно толковых, причем, достаточно толковых, которых можно сделать ведущим программистом либо архитектором проекта, то выбирать следует именно более массовый язык, поскольку если например на рынке труда 10 тысяч php-шников и 1 тысяча питонистов, то мы имеем выбор из
100 толковых php-шников и 10 толковых питонистов. А теперь, угадайте, при чем тут пример с Java, и почему толкового java-программиста приходится искать по несколько месяцев.
> Вы-то сами многих многих видели питонистов, которых можно было бы привлечь в проект в качестве системного архитектора/видущего разработчика.
Видущего, да. На самом деле знаю толковых питонистов гораздо больше, чем пхп-кодеров. От того, что вы подчеркиваете некоторые вещи в тексте, они не становятся объективной реальностью, это только ваш опыт.
Также хотелось бы заметить, что системный архитектор, который знает только пхп — это с высокой вероятностью леденящий душу адовый ужас из преисподней, не рекомендую такого системного архитектора.
Маленькое уточнение «мультиязычный»!=«одинаково уверенно применяющий оба». А под «основным языком» я подразумеваю язык, на котором было в последнее время реализовано больше проектов.
Я вот, например, знаю русский, английский и немецкий, но это не значит что я их одинаково уверенно применяю, и не значит, что у меня одинаково количества опыта применения всех трех языков. Но, опять-таки из того, что русскоязычный скил у меня сильнее прокачан, я не смог бы быть тимлидом в англоязычной или немецкой комманде (другое дело, сколько у меня дополнительных сил уйдет для «адаптации» — это отдельный вопрос).
>который одинаково уверенно применяет питон и пхп, и при этом считает своим основным языком пхп.
Кстати, возможно вполне (плюс-минус). На работе пхп, для души питон или руби. Или даже на работе и то, и то, в зависимости от проекта/заказчика. Деньги, как говорится, не пахнут, а заказчики консервативны часто и тем более не склоны работающий проект переписывать с нуля.
В каких случаях стоит использовать Django (а в каких не стоит)
Давайте поможем разработчикам разобраться, подходит ли фреймворк Django для их следующего проекта. Вполне вероятно — подходит.
Не стоит хвататься за определенный язык программирования или фреймворк лишь потому, что вы пользовались им в вашем предыдущем проекте, или просто потому что он вам хорошо знаком. Так дела не делаются.
Прежде чем приступать к новому проекту, следует оценить, какой язык или фреймворк лучше всего подойдет вам для достижения желаемого результата. Что для вас наиболее важно? Безопасность, скорость разработки, масштабируемость, универсальность, поддержка?
Лучше принять информированное решение перед тем как приступать к работе, чем потом раскаиваться в поспешном (или, хуже того, навешивать на проект костыли в процессе реализации – из-за того, что заранее не озаботились его поддержкой).
Я много лет работал с разными технологиями, имел дело как с мобильной, так и с веб-разработкой, и считаю, что Django предлагает такой полноценный набор возможностей, каких нет ни в одном другом веб-фреймворке.
Понимаю, это громкое заявление. Позвольте мне его обосновать.
«На Django основано множество сайтов, используемых самым активным образом, в частности, Instagram и Pinterest. Даже Facebook использует Django для многих своих утилит. Django зародился в издательской среде, поэтому неудивительно, что данный фреймворк используется на таких сайтах как The Washington Post и Smithsonian Magazine.” — Амит Ашвини, Вице-президент по маркетингу @ Zibtek
Общий взгляд: когда использовать Django
Если хотя бы несколько из нижеприведенных тезизов – про вас (и в списке нет тезисов, с которыми вы категорически не согласны), то, вполне вероятно, Django хорошо подойдет для вашего проекта.
Если вы – веб-разработчик, и уже знаете, как веб устроен, то работа с Django пойдет для вас сравнительно гладко. Необходимо понимать, как структурируется Django, и некоторые другие вещи, конечно, тоже – и считайте, что вы готовы.
Сайты, работающие на фреймворке Django
Вы еще сомневаетесь, стоит ли тратить свое драгоценное время, чтобы напрактиковаться с Django? Для начала давайте обсудим, по каким причинам Django может НЕ ПОДОЙТИ для вашего проекта:
Когда не стоит использовать Django
Причины использовать Django
Фреймворк Django написан на Python:
Знаю, вам это известно.
Поэтому воспользуюсь случаем и подчеркну некоторые ключевые достоинства Django, которые он унаследовал от Python. Буду краток.
Python – один из самых популярных и быстрорастущих языков программирования в мире.
Изучить Python действительно очень просто. Обычно современные разработчики учат первым именно этот язык.
Вышесказанное совершенно не означает, что этот язык – только для начинающих. Python используется и в ультрасовременных технологиях. Python активно применяется в технологическом стеке многих компаний-гигантов, в том числе, Google.
Язык Python отлично подходит для разработки инструментов веб-скрапинга.
Он хорошо взаимодействует с другими языками.
Разработка на Python не означает, что вы будете вынуждены все и вся писать только на Python.
Вы вполне сможете пользоваться библиотеками для многих других языков, в том числе, C/C++/Java.
Python портируемый, его удобно читать.
Python даже может работать на JVM. Познакомьтесь с Jython.
Python широко используется в таких востребованных технологиях как Большие Данные и Машинное обучение.
Вы получаете доступ к огромной библиотеке PyPI.
У Django “Все включено”
“Все включено” означает, что Django «из коробки» оснащен большинством библиотек и инструментов, нужных в распространенных практических ситуациях. Перечислю: Django ORM, промежуточное ПО, аутентификация, HTTP-библиотеки, многосайтовая поддержка, i18n, Django Admin, движок-шаблонизатор, т.д. – и это еще не «все». Ни один другой известный мне фреймворк не предоставляет столь широкой поддержки сразу.
Некоторые считают такое обстоятельство “минусом”, а другие – «плюсом». Каждая сторона права по-своему, и я в некоторой степени согласен с обеими.
Это минус, поскольку в такой ситуации фреймворк превращается в монолит.
Я считаю, что, если вам требуются эти возможности, приводящие к формированию монолита, то вам так или иначе придется воспользоваться какой-то другой библиотекой (или написать ее самостоятельно).
Почему бы в таком случае не воспользоваться инструментом, в котором все это уже есть, проверено в боях, функционирует на крупнейших сайтах, активно разрабатывается и обеспечено поддержкой сообщества?
Если вам не требуется большинства возможностей, предлагаемых в Django, то лучше остановиться на каком-нибудь микрофреймворке.
Не изобретать велосипед – вы помните? Потратьте ваше время на то, что действительно важно, а Django пусть сделает все остальное.
Django Admin
Хотя, я и упомянул этот элемент в предыдущем разделе, он заслуживает более пристального внимания. Во многих фреймворках, в частности, Laravel, Yii, т.д., предпринимались попытки упростить работу с админкой. Мне доводилось разрабатывать множество проектов в разных фреймворках, но ни один из них и близко не сравнится с Django по удобству работы с панелью администратора.
Некоторые считают, что Django Admin недостаточно гибок, и для подстройки любой его части под свои нужды требуется приложить массу усилий. На первых порах работы с Django я склонен был с этим соглашаться, но со временем, разобравшись во фреймворке, разубедился в этом. Да, там присутствует своя кривая обучения, но ни секунды, что вы ей уделите, не будет потрачено зря.
На самом деле, Django Admin очень хорошо структурирован. В некоторых моих проектах я использовал админку Django «как есть», а в других полностью заменял ее собственными шаблонами, которые разрабатывал с нуля. В любом случае, на это потребовалось не больше времени, чем на разработку с любым другим известным мне фреймворком.
Основной плюс? Вы получаете «из коробки» права доступа и аутентификацию. На разработку всего этого с нуля у вас ушли бы недели (или, как минимум, несколько дней).
Принцип DRY (Не Повторяйся)
Мне известно множество фреймворков, сторонники которых утверждают, что те действительно соответствуют принципу “DRY”. Я работал с многими такими фреймворками, но ни в одном из них принцип «DRY» не реализован как следует.
К сожалению, в большинстве фреймворков принципу “DRY” просто не уделяют достаточного внимания. На мой взгляд, если вы пишете приложение, которое собираетесь регулярно обновлять (а это можно сказать о большинстве современных приложений), то вы должны следовать принципу DRY во избежание проблем.
Так, в Laravel приходится писать валидацию для каждой процедуры отдельно. Такова же ситуация и с большинством других фреймворков. Чтобы ваш код соответствовал принципу DRY, нужно потрудиться. Сложно это отслеживать, особенно если вы работаете в команде.
В свою очередь, фреймворк Django спроектирован таким образом, что нарушить принцип DRY там обычно выходит только нарочно.
Так быть не должно, верно? Рассмотрим пример.
Вот как в Django устроена валидация и миграция базы данных
Создаем класс Model с требуемыми полями. Указываем все необходимые нам дополнительные валидации и ограничения.
Миграции генерируются единственной CLI-командой: `python manage.py makemigrations`.
Изменения вносятся в базу данных единственной CLI-командой: `python manage.py migrate`.
Валидации и ограничения автоматически проверяются при каждой CRUD-операции — идет ли речь о Django Admin или о Django REST Framework. Писать валидации заново вам не придется.
Тот же самый класс модели используется для генерации представлений Django Admin CRUD. Не требуется дописывать никаких собственных HTML/CSS.
Сравните эти условия с любым другим фреймворком – и, думаю, вам бы нигде не удалось сделать ничего подобного всего в несколько следующих строк кода:
Здесь речь не только о том, чтобы “не повторяться”. Такой подход уберегает вас от багов в перспективе. Все мы оказывались в ситуациях, когда довелось изменить что-то в одном месте, а в другом месте заменить забыли – и это выяснилось лишь после того, как у множества пользователей начались проблемы.
В Django, возвращаясь к вышеприведенному коду, если вам когда-нибудь придется заменить `max_length` поля на что-нибудь другое – просто сделайте это здесь. Изменение автоматически применится к валидации всех маршрутов и к базе данных.
Объектно-реляционное отображение в Django
Django предоставляет полнофункциональный механизм ORM «из коробки».
Я работал со множеством инструментов ORM в разных технологиях, в том числе, в Eloquent, greenDAO, Yii AR, т.д. Во всех из них простейшие запросы обрабатываются довольно хорошо, но рано или поздно мне приходилось писать те или иные запросы с нуля, поскольку механизм ORM не справлялся с конкретным практическим случаем.
С Django ORM в такие ситуации я пока не попадал. Он сработан настолько хорошо, что вы просто можете забыть, что работаете с запросами к базе данных. Именно таким и должно быть объектно-реляционное отображение. Ниже приведены некоторые примеры Django ORM:
Стремительная разработка
Этим любят похвастаться создатели практически любого веб-фреймворка, и, пожалуй, все они действительно правы – смотря какой смысл мы вкладываем в слово «стремительная».
Правда, с Django некоторые вещи делаются уморительно быстро. Вы уже видели, как легко мы смогли определить UI админки, таблицу базы данных и выполнить валидацию.
Это была всего лишь верхушка айсберга.
В принципе, стремительная разработка – это не фича как таковая, а лишь органичное следствие присутствующих в Django DRY, ORM, шаблонизатора и философии «все включено».
Безопасность фреймворка Django
Давайте признаем, иногда разработчики ленятся. Я – так точно. Время от времени я прокрастинирую, откладывая решение критически важных задач. Тут-то и могут возникнуть различные уязвимости.
Мне особенно нравится, что Django не идет на послабления по поводу безопасности, чтобы ускорить темп разработки. Функции безопасности активируются по умолчанию, поэтому совершенно не важно, ленивы вы или нет.
Опенсорс, отличная документация, огромное сообщество и пр.
Поскольку Django – опенсорсный и безумно популярный фреймворк, вокруг него сформировалось отзывчивое сообщество. Думаю, вы в курсе, каковы достоинства свободного ПО – так вот, все они присущи и Django.
Официальной документации Django более чем достаточно любому разработчику. Если застрянете – найти решение не составит труда.
У вас уже могло сложиться впечатление, что в Django создано множество собственных библиотек, поэтому, возможно, удивитесь, что специальной библиотеки для тестирования здесь не сделано. Нет, не подумайте, что фреймворк Django не поддерживает тестирование – поддерживает, еще как. Просто, следуя принципу «Не повторяйся» было бы бессмысленно разрабатывать библиотеку для тестирования, когда отличная библиотека такого рода уже есть в самом Python. Django отлично с ней взаимодействует. Кроме того, он очень хорошо сочетается и со сторонними библиотеками, например, pytest.
Современное состояние Django и другие популярные фреймворки
Итак, я по максимуму постарался осветить те проблемы, с которыми сталкивался при работе с другими фреймворками и сравнить эти фреймворки с Django. Поработав с Yii, CodeIgniter, WordPress, CS-Cart, Laravel, т.д., я пришел к выводу, что Django гораздо лучше любого из них.
Однако, это только мое мнение.
Если вам нравится статистика, то вот ежегодное исследование Stack Overflow, где Django фигурирует в числе самых излюбленных и востребованных фреймворков:
Кроме вышеупомянутого опыта работы с PHP, я также рапзрабатывал приложения под Android на Java, клиентские приложения на React.js. Во всех этих случаях я потратил изрядное количество времени на рефакторинг базы кода, подыскивая наилучшую архитектуру, через пару месяцев увязая в проблемах с масштабируемостью и вновь принимаясь за рефакторинг.
Недавно я переписал с Laravel на Django одно приложение, которое было у меня в продакшене более года. Мне удалось развернуть новую базу кода менее чем за 10 дней, написав для этого минимальное количество кода (говорю же: сложность уменьшается!) В обратном направлении подобная операция определенно заняла бы более месяца.
Если вы попытаетесь напрямую сравнивать другие фреймворки с Django, это вам ничего не даст.
Контроль производительности может показать, что фреймворк на Java быстрее Django. Вы можете хорошо разбираться в PHP, так что, возможно, разработка приложения на Django пойдет у вас быстрее, чем на знакомом вам PHP-фреймворке. В случае с совсем простым приложением настройка Django может показаться вам слегка утомительной – конечно, гораздо проще написать файл со скриптами. Результаты опросов могут разниться в зависимости от того, среди какой аудитории они проводились.
Однако, здесь мы рассуждаем не только о фреймворках, относящихся к другим технологиям. Даже если вы знакомы c Python, возможно, микрофреймворк Flask покажется вам более удобным и желательным. Придется задуматься, на котором из них остановиться.
Мой совет – просто не сравнивайте их.
Вывод
На мой взгляд, в Django удалось идеально сбалансировать производительность, архитектуру, уровень сложности при разработке, безопасность и масштабируемость.
Если вы начинаете писать проект с нуля – настоятельно рекомендую попробовать сделать его с Django.
Какой стек лучший Python(Django) или PHP(Laravel)?
Какой стек лучший Python(Django) или PHP(Laravel)? Я хочу услышать мнение людей? Плюсы и недостатки у обоих? Возможно даже если не Larevel или Django, есть ещё Flask, Yii и т.д. Как то я пытался изучить Django после питона, но у них документация показалось для меня очень большой все сразу не прочитаешь и не поймешь. Как к людям начинают осенить Django, после каких действий они начинают комфортно писать код на джанге? PHP тоже пытался учить после питона, но мне некоторые вещи показались не очень логичными в плане синтаксиса. Меня учили в книгах питона вот так. а в php все наоборот. И начинается обдумывание и головные мозгодробительство. Почему так сделано, я же читал в питоне нужно так делать, а почему в PHP все наоброт, и т.п. такие вопросы. Возможно я что-то пропускаю в PHP. Но я не обсираю этот язык. Ни в коим случае! Я просто хочу стать веб разработчиком и любить свою работу. Пока что я знаю HTML, CSS и малеха Python. А! Ещё забыл, статические генераторы сайтов, такие как Hugo. Но в этих стат.генераторах писать код очень топорно и ограничено. Фиг чё толкового напишешь.
А почему Django на смертном? Какие-то есть тенденции? Типа всё на Vue, на бекенд на Go? 😀
А потом после вас адекватных кракозябры вылазят в неожиданных местах.
Эвристика говно, даже идеальная кдеешная эвристика не всегда справляется. А всего-то надо было, весь текст кодировать в utf-8. Но благо юникодный комитет собрал сопли наконец и майкрософт встал на путь исправления, ещё лет 20 и такой проблемы не будет.
Django vs PHP
By Priya Pedamkar
Differences Between Django vs PHP
With the advent of technology, there are many technologies, frameworks that have come into the market. Django vs PHP is a result of this advancement. Web technology has moved ahead and has many new frameworks and languages. Django is a framework, whereas PHP is a development language. Django assists in building and maintaining web applications. On the other hand, PHP allows developers to create dynamic content that will help interaction with databases. Though both Django vs PHP is related to web applications, there are significant differences between Django vs PHP. Let us have a look at these differences.
Head to Head Comparison Between Django and PHP (Infographics)
Below are the top 4 comparisons between Django and PHP Performance:
Web development, programming languages, Software testing & others
Key Differences Between Django and PHP
Below are the lists of points, describe the key difference between Django and PHP:
Django is a framework, and PHP is a development language. Django provides ways for smooth development with its templates, URL mapping, models, generic views, file uploading facilities, generic views, etc. It ensures that this framework provides speedy development. On the other hand, PHP is a development language that uses this framework and ensures quality development. It has various operator types, loop types, arrays, strings, GET and POST methods, functions, etc. PHP enables that proper development is done using these facilities.
Django and PHP Comparison Table
Following is the comparison table between Django and PHP Performance.
The Basis of Comparison between Django vs PHP | Django | PHP |
Basic Difference and History | Django is a Python web framework that helps in the speedy development and systematic designing. The coding part involved is also less in this framework. Django was first started by Adrian and Simon Willison in 2003. It was released in 2005. It is open-source software. | PHP is a development language that was developed by Rasmus Lerdorf in 1994. It stands for Hypertext Preprocessor. It is a scripting language which can be embedded in HTML, and it is used to manage dynamic content, databases, session tracking, etc. It can be integrated with a number of popular databases like MySQL, Oracle, Microsoft SQL Server, etc. |
Environment Setup | Django is a Python framework, and hence Python needs to be installed on the system, Installing Python: Django requires Python 2.6.5 version or a higher one. Once this is done, you can go ahead to install Django. Installation of Django is easy, and Python, being platform-independent it has one package that works everywhere. Django can be downloaded from http://www.djangoproject.com/download You will get a tar file that you can extract and install. cd Django-x.xx sudo python setup.py install Once the installation is complete you can check it by running the below command: Django-admin.py –version. It also supports various databases like MySQL, Oracle, etc. | PHP includes three vital components which need to be installed on your system. These should be: Web Server: PHP will work with all web software Database: It supports all famous databases PHP Parser: A parser needs to be installed in order to generate HTML output for Web browsers. PHP Parser Installation– Before installing PHP Parser, check if this link is updated http://127.0.0.1/info.php If this link runs successfully, then PHP and Web server and installed successfully. |
Syntax and Project Creation | Django can be run easily using the cmd prompt on both Windows and Linux. You can navigate to the place where a project has to be created. $ Django-admin startproject myproject This command will help you create a project name myproject at the respective location. The structure will be as follows: myproject/ manage.py myproject/ __init__.py settings.py urls.py wsgi.py This structure can be defined as: manage.py This file acts as a project local Django-admin for interacting purposes via command prompt. The myproject subfolder is the actual Python package. It contains below: $errors[]=’File size must be excately 2 MB’;
|