RSS

Комментарии

Да, есть умные заказчики, которые понимают, что если проект на малоизвестном фреймворке написан, то потом сложнее будет найти разработчика для его поддержки. А yii-специалистов сейчас куда не плюнь. Так что имхо вполне логично они поступают.
Ваши заказчики лучше вас знаю какой фреймворк им использовать? Сочувствую.
Активно использую Yii2, но в основном потому что из-за его популярности его часто требуют заказчики. Да, фреймворк вполне удобен, но на мой взгляд в нем много я бы сказал «шероховатых углов». Я очень удивлен, почему именно этот фреймворк набрал такую популярность, а не например CakePHP, который настолько прост, логичен, что я бы его активно рекомендовал всем новичкам. В кейке, например нет необходимости вообще создавать файл модели, модель генерируется автоматом, нет необходимости вызывать рендер вьюшки, он опять же подцепляется автоматом, а какая там офигенная ORM! Странно, что у нас он мало распространен.
Я сторонник symfony2, но по долгу службы приходится сейчас писать на yii2.
На мой взгляд, yii2 необоснованно усложнен, по сравнению с symfony2. Но об этом я напишу позже, когда смогу более объективно оценить плюсы и минусы обоих фреймворков, а так же когда у меня будет примерно равный опыт работы с обоими фреймворками.
Отвечу почему именно отдаю преимущество Yii? Мне нравится этот фреймворк своей гибкостью, удобством и скоростью работы.

Да, есть более простой CodeIgniter. Очень быстрый и удобный инструмент, особенно для начинающих (огромное количество документации, в том числе и на русском языке). Но наш опыт показал очень интересную закономерность — решение многих задач на CodeIgniter занимает в 2 раза больше времени, чем решение тех же задач на Yii. Не было ни одной задачи, которая была бы решена быстрее на CodeIgniter.

Да, есть более известный Zend Framework. Имеет множество различных модулей (практически на все случаи жизни), хорошо продуманную архитектуру. Но он ощутимо медленнее, больше, «тяжелее» чем Yii. Страдает также некоторой «многословностью» — длинные названия классов, например. То есть даже визуально код выглядит «тяжело».

К тому же, в Yii можно использовать модули из ZendFramework.

Вывод второй: Yii — очень быстрый, современный и гибкий фреймворк. Имеет множество плюсов:

высокая скорость разработки;
высокая скорость работы;
поддержка модулей, компонентов и виджетов;
интеграция с javascript фреймворком jQuery;
удобная работа с базой данных: возможно использование как Data Access Objects, так и Active Record;
удобная и гибкая система кеширования и ивалидирования кеша, поддержка memcached/xCache «из коробки»;
удобный встроенный генератор кода Gii;

Шаблонизаторы… У многих новичков возникает резонный вопрос: а почему вы не используется Smarty/Twig/Dwoo/… (нужное подчеркнуть)? По поводу этого вопроса сломано много копий, на просторах Сети приводится множество аргументов «за» и «против». Мы решили пользоваться native PHP.

Вывод третий. В данный момент мы полностью отказались от использования шаблонизаторов.
В ходе своей профессиональной деятельности многократно приходилось сталкиваться с различными проектами на самых различных фреймворках, в том числе и на «велосипедных cms» (это когда каждый разработчик пишет свою собственную структуру проекта и имеет свой подход к написанию кода и используемым библиотекам).

Каждый программист видит код по-своему и, как результат, брожение в голове вызывает брожение в коде. Это было бы хорошо, если бы программист всю жизнь вел бы свой проект. Но получается так, что проект доделывается «хоть как-то уже наконец» и клиент с этим проектом уходит в «свободное плавание». Часто бывает, что проект переходит к другому программисту, у которого совершенно другое видение того, как должен выглядеть код. Он начинает вносить свои правки. После 3-4 таких программистов код превращается в сплошную непонятную кашу.
Отличная и очень полезная статья, все доходчиво и по полочкам, большое спасибо автору
Тестирование необходимо и обязательно нужно проводить при разработке любого ПО. Отличная и очень полезная статья, все доходчиво и по полочкам, большое спасибо автору
Отличная и очень полезная статья, все доходчиво и по полочкам, большое спасибо автору
Рефакторинг и тестирование часто недооценивают, что в дальнейшем очень сильно бьёт по бизнесу и проекту в целом
SaaS становится все популярнее. Отличная и очень полезная статья, все доходчиво и по полочкам, большое спасибо автору
Отличная и очень полезная статья, все доходчиво и по полочкам, большое спасибо автору
Конечно фронтенд разработчиков назвать полноценными программистами сложно, так как все таки они работают в основном так или иначе с дизайном, хотя в последнее время появилось и много фронтенд фреймворков и подходов где верно, кодить нужно уметь
В свое время несколько лет учил ASP, к сожалению в дальнейшем не пригодилось, а вот PHP нужен до сих пор
Теория… История… Практику давайте :D
Очень полезная статья. Было интересно почитать. Жду продолжения
Было интересно почитать. Жду продолжения
Вообще-то понятно, что SQL качественно, но узкоспециально отличается от C++.
Только когда я переходил с паскаля на делфи (не на object pascal, а именно на delphi, потому что не так уж много смысла выковыривать op из ide\vcl. Среда здесь — неотъемлемая часть технологии.) и с C++ на C# (которая, собсно, неотделима от .NET) — весьма ощутимо абстрагировался от технических деталей реализации.

Не говоря уже о том, что при переходе с паскаля на делфи неймоверно проще стало создавать интерфейс.

Да простит меня автор заметки, но я бы четвёртым поколением поставил язык плюс среду разработки\выполнения (vcl, mfc, .NET, etc), а базы данных с языками управления — пятым.

И в этом отношении голый php разных версий и php с фреймворками отличаются друг от друга и сочетают в себе и признаки третьего, и признаки четвёртого поколения.
«База данных (в широком смысле этого слова) становится ядром, вокруг которого строится приложение.»
Я для себя как-то давно определил, что веб-программирование — по сути создание удобного интерфейса к базе данных.
Для начала определимся, что понимается под «высоким уровнем»? Традиционно языки программирования разделяются на поколения. Сам термин поколения языка достаточно редко используется в русской технической литературе, да и сам язык не всегда можно четко и категорично отнести к тому или иному поколению. Поэтому давайте разберемся, сначала с ним, а потом перейдем собственно к PHP.

Поколение языка к его возрасту имеет косвенное отношение. Словом «поколение» выражается лишь общие тендении и абстрактность языковых терминов. Даже в наши дни до сих пор создаются языки «младших» поколений, для решения каких либо конкретных задач, если для этого есть предпосылки.

Языком первого поколения является машинный код. Он и сейчас используется, в него в конечном итоге транслируют все другие языки программировния. Молодежь может быть не в курсе, но еще лет 30-40 тому назад на нем писали живые люди. Кроме шуток. Не хакеры, а прикладные программисты. Прямо так байтик по байтику составляли прикладные программы, например расчет зарплаты сотрудникам завода.

Наиболее известный представитель второго поколения — Ассемблер (ASM). С помощью него повысилась скорость написания программ и совместимость при переносе на родственное оборудование. Ассемблер не просто привел в соответствие машинным кодам какие-то мнемонические команды, а позволил абстрагироваться от многих технических деталей, позволив больше сосредоточится на решении прикладной задачи. Собственно этот последний тезис является главным признаком индукции при переходе от одного поколения языка к другому.

Третье поколение языков позволило практически полностю абстрагироваться от «железа». Их уже столько много, что перечислить затруднительно. Одни из пионеров — Фортран, Паскаль, Бейсик. Языки третьего поколения до сих пор самые используемые и кажется, что покрывают все необходимые потребности современного программирования. Однако прогресс не стоит на месте. Теория программирования сделала следующий шаг и породила четвертое поколение языков (4GL).

Не каждый язык имеет ярлык конкретного поколения и свое четкое место на шкале. Примером такого является Си. Хотя Си появился, когда эра третьего поколения была уже в разгаре, но родился он с явними признаками языка второго поколения. Это нисколько не аттавизм и не деградация. Он именно таким и задумывался – язык для написания операционных систем. Взяв все необходимые новшества и синтаксические удобства языков третьего поколения, он позволяет писать программы, практически оптимизировануми также, как на Ассемблере. Можно сказать, что он находится на отметке 2 ½ поколения.

Не меннее интересна картина с С++. Синтаксически это тот же Си с дополнительными прибамбасами. Но из-за них С++ перестал быть языком. Сам по себе он не представляет бОлшей ценности, чем Си. Интересным он становится тогда, в нем создана та или иная объектная иерархия, переопределены операторы и т.п. Когда мы получаем новую концепцию работы с данными. Практически это новый язык с Си синтаксисом, который может соответствовать любому поколению. То есть по сути С++ не язык, а инструмент для создания языков. К сожалению большинство програмистов звезд с неба не хватают. Какая бы не была навороченная иерархия объектов, созданная в С++, она будет соответствовать банальному третьему поколению языков. ООП находится в полном перпендикуляре к линии повышения абстракций.

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

Здесь следовало бы привести примеры языков четвертого поколения. Перед этим необходимо сделать оговорку, что упомянутые далее языки могут обладать в той или иной мере свойствами четвертого поколения. Синтаксически это может быть не выражено явно. 4GL — это новая концепция, а не новый синтаксис. Синтаксически язык может быть похож на язык третьего поколения, но подход при работе с ним будет другим.

Формально к языкам четвертого поколения можно отнести SQL. Это наиболее известный представитель, но посколько он используется в очень узкой специфической задаче, то наглядно не демонстрирует все аспекты 4GL. Одну из ранних попыток предпринял Informix. Вместе со своей базой данных и набором стандартных библиотек для других популярных языков третьего поколения, они предлагают свой собственный язык Informix-4GL. В качестве синтаксической модели они взяли SQL и дополнив другими языковыми конструкциями сделали из него полноценную среду разработки, в котором SQL команды явлются не чем-то инородным, заключенным в кавычки, а нативной частью языка. В этом смысле к языкам четвертого поколения можно отнести семейство dBase, FoxBase, Clipper и им подобные.

Внимательный читатель может заметить из нескольких перечисленных примеров, что здесь говорится даже больше не о языке, а о среде разработки. Это будет правильное замечание, поскольку современые прикладные задачи требуют баз данных, не просто как нечто, где можно сохранить кое-какие конфигурационные данные. База данных (в широком смысле этого слова) становится ядром, вокруг которого строится приложение. Поэтому не удивительно, что она уже не хочет довольствоваться правами сторонней библиотеки (бедного родственника). Из-за естественных ограничений мы получаем ситуацию, когда не к языку привязывается база данных, а вокруг какой-то конкретной реализации базы возводится язык. Универсальные решения мне пока не известны.