Задать вопрос

PHP vs. all. Имеет ли смысл учить (параллельно) что-то еще?

Собственно, я новичок в веб-программировании, выбрал для себя back-end в качестве основной области, имею некоторые базовые знания в Pascal(Delphi), C/C++ (изучали два курса в университете). Сейчас пишу курсовую на PHP, заодно в универе занятия по нему в этом семестре у нас проводятся, в общем, выбор PHP в большей степени был продиктован со стороны. В принципе, все получается, язык кажется довольно несложным(скорее всего, потому что задание не требует серьезной подготовки), но код, особенно после C++, не вызывает каких-то положительных эмоций. Если взглянув на код, написанный на C++, можно было однозначно сказать, что это красиво, то здесь по большей части у меня противоположные ощущения. Поскольку я еще полный новичок, то мой код представляет из себя мешанину из html-тегов и конструкций PHP. В общем говоря, меня это напрягает, но жить можно, учитывая, что большая часть кода все равно интуитивно понятна(размер-то кода небольшой, оно и ясно). Кроме того, ситуацию к тому же усугубляет еще и то, что в какую бы тему, посвященную выбору языка для back-end или сравнению/обсуждению языков из этой области, я ни зашел(в т.ч. и на тостере), я вижу сплошные нападки на php, как со стороны разработчиков на python, ruby, так и тех, кто пишет на php(зачастую это фразы типа: "пишу, потому что приходится.." или "меня уже слишком затянуло и не отпускает..." и все в таком духе, я, конечно, слышал про "рабство", но не настолько же). В основном главный их аргумент это статья PHP: a fractal of bad design
В результате по ходу дела поглядываю в сторону тех же python(с последующим "апгрейдом" до django) или ror. Это неудивительно, ведь вокруг полно восторженных отзывов "несчастных" php-программистов, перешедших на python или ruby(хотя тоже часто видел недовольство его "магией"). Сам этими языками не занимался, но знаю, что Python нахваливают за скорость выполнения(которая, вроде как, на самом деле примерно равна скорости PHP5.6, а ведь на подходе PHP7, работающий значительно быстрее своего ближайшего предка) и разработки, структурированность, а руби просто покоряет своим синтаксисом и читать код на нем можно словно это текст на английском, но при этом медленнее и PHP, и Python, к тому же в последнее время вроде как подсдал позиции(так это или нет? для РФ, думаю, точно, для США, думаю, нет).
Кроме того, PHP в последнее время очень динамично развивается(вторая жизнь?), много вакансий(но и говнокодеров не меньше, и к тому же большая часть работы связана с доработкой/поддержкой уже существующего говнокода и cms), есть крутые фреймворки типа symfony, zend, yii.(нахватался тут, может быть, и не крутые)
TL;DR Так вот, кратко список моих вопросов:
1. PHP умирает(мёртв)? Так почему же тогда мёртвый язык развивается в последнее время быстрее всех (большинства) ныне живущих(это я про python, к примеру).
2. Если на первый вопрос вы ответите в стиле:"Сколько PHP не развивайся, но это изначально непродуманный язык, даже не язык, а шаблонизатор...", тогда такой вопрос: Есть ли у разрабов PHP шансы наверстать упущенное в этом плане?
Короче говоря, первые два вопроса сводятся к следующему: Имеет ли смысл учить PHP, перспективен ли он в плане дальнейшей работы(работы, а не доработки cms и т.п.)? (ой, вот это баянище, сто раз уже обсуждали)
3.Есть ли у меня шансы успеть освоить что-то другое(Python+Django || ROR || Node.js) буквально за пару месяцев( макс. 4) до уровня написания простеньких систем типа системы тестирования(сложности для новичка м.б. разве что в авторизации и вывода всевозможных графиков, по которым можно будет анализировать успеваемость, про бд ничего не говорю, потому что в php с этим проблем не было, а тут мб и будет?)?
4.Нужны ли какие-то особенные фичи на хостинге для запуска проекта на всём вышеперечисленном? К примеру, потянет обычный университетский хостинг проект на django? Многое придется менять и что вообще придется менять?
5. Фриланс на чем-то из вышеперечисленного vs. фриланс на php(в плане интересной работы, а не рутины, ведущей к деградации; т.е. отбрасываем тонны проектов на php, где требуется знание конкретной cms, всякие разные сайты под ключ(скорее всего) и т.д.)? Вероятность найти работу в городе-миллионнике(Россия) (полу)джуниору?
6. Продолжать изучать PHP, какая связка PHP+%некий фреймворк% наиболее "боеспособна"? Когда переходить к фреймворкам?
Понимаю, что вопросов много, и вообще я малость обнаглел такие стены текста катать, у людей и поважнее дела есть, нежели читать мои малограмотные сочинения. Поэтому, у кого времени в обрез, но есть что сказать, прошу переходить сразу к вопросам, не читая стену выше.
P.S. Просьба не холиварить, все языки хороши, каждый предназначен для своих целей; язык лишь инструмент, учи не язык, учи технологии и т.д., но с чего-то стартовать нужно, а мозгов выбрать что-то конкретное и давить именно это, чтобы потом не прогадать, у меня пока не хватает. И да, может быть стоит учить всё и сразу?
P.P.S. Пишу этот вопрос, потому что внутренний голос не дает спокойно писать на php, постоянно уговаривая попробовать Python или Ruby(доктор, скажите, это попытка слиться или в этих сомнениях что-то есть и я просто теряю время?).
Особенно хочется послушать мнение OnYourLips, поскольку этот человек один из немногих, кто заступается здесь за PHP(из тех ответов на вопросы, что я видел).
  • Вопрос задан
  • 8918 просмотров
Подписаться 17 Оценить 7 комментариев
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
но код, особенно после C++, не вызывает каких-то положительных эмоций.

А у меня не вызывает положительных эмоций код на C++. Да и код разный бывает. 90% кода на PHP у меня так же не вызывают положительных эмоций, но писать на нем нормально более чем можно.

1) под фразой "php умирает" позразумевает его модель работы. После каждого запроса он умирает, то есть воркер отчищается и запускается по сути заного. Это существенно упрощает работу (у вас хоть сегфлоты могут быть всеравно весь сервак не умрет), а так же масштабирование (за счет отсутствия у самого PHP состояния между запросами, сессии мы не берем в расчет), но существенно бьет по производительности. К счастью с PHP 5.3 писать демоны на PHP не так уж страшно.

Если же посмотреть рынок и динамику развития сообщества - PHP живее всех живых.

2) PHP не такой уж стремный язык. Я не считаю "не консистентные названия функций" таким уж прям фактором влияющим на выбор языка. С моей точки зрения Ruby уродливая отрыжка, попытка сделать объектно-ориентированный перл (это лично мое мнение, мне не приятно работать с ruby, пусть меня за это простят), но за счет того, насколько сообщество ruby-разработчиков ценит и понимает цели бизнеса, насколько уважает тестирование своих решений и т.д... словом PHP комьюнити в этом плане еще расти и расти. Но прогресс виден.

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

3) нет. Шансов на нормальном уровне с нуля изучить еще один язык программирования и к тому же фреймворк - почти нет. Да и в этом нет смысла.

4) судя по вопросу вы уже определились для себя. Дальнейшая дискуссия не имеет смысла. Разбирайтесь. Но если брать шаред хостинги то PHP это пожалуй единственный адекватный вариант на сегодняшний день (если не брать в расчет что шаред хостинги как таковые это не очень адекватный вариант).

5) все зависит от вас. Хорошие разработчики зарабатывают примерно одинаково вне зависимости на каком языке программирования они работают. Они просто хорошие разработчики и таких всегда мало.

6) как хотите.

И так...

Язык программирования - это лишь инструмент для решения задач. Фреймворки - это так же просто инструменты для решения задач. Что важно - уметь задачи решать. И решать эффективно. Понимать что кривыми решениями вы увеличиваете риски для бизнеса.

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

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

Не учите язык программирования. Учитесь разработке с применением этого языка. И тогда все будет намного проще.

p.s. Haters gonna hate
Ответ написан
@newpy
web-dev
все языки хороши, каждый предназначен для своих целей...у всех свои минусы

это и есть ответ на все ваши вопросы. Плюс зависит от стоящих перед вами конкретных задач.
вы по-моему задали кучу вопросов, и сами же дали на них кучу ответов. Употребляете фразы "...да оно и понятно...". Так если все понятно, не тратьте время и пишите приложения.

Если коротко и по-делу в сотый раз процитирую сотню-пять хороших советов: "...что нравится, то и изучайте...". Что касается всего остального, то у вас не получится изучать что-то одно. Хотите заниматься backend-ом, нет проблем, но у вас не получится стоять в стороне от современных технологий, и есть такое понятие как "стек" этих самых технологий. Не получится использовать что-то одно, один фреймворк, одну технологию.

Про смерть PHP - глупости конечно. Про его минусы, можно уже смело процитировать вас же
все языки хороши, каждый предназначен для своих целей

Про Python и Django - я знаком и с тем и другим (PHP), могу писать на том и другом. Но лично мое субъективное ощущение что на Python мне писать приятнее. И нравится больше. И тут работает главный совет из начала, "на чем нравится на том и пишите", если это позволяет задача, и есть возможность выбирать. Просто если поступил заказ использовать PHP, то что вы откажетесь от денег и заказа и будете сидеть пока не прилетит волшебник с заказом на python+Django?

Про скорость работы языка: я думаю, вам рановато думать о скорости работы того или иного языка. Если вы только прям сейчас не пишете свой фейсбук, например. К слову, например Instagram написан на Python и вроде не испытывает недостатка в нагрузке, и вполне работает. Все остальное вполне справляется со своими задачами.

Про скорость работы (просто скорость работы): Django даже позиционируется как фреймворк "для перфекционистов с дедлайнами", что гласит даже заглавная страница фреймворка, т.е. позволяет вести разработку быстро. К слову тоже самое можно делать и с помощью того же Laravel. Если хочется "по-взрослому": то чаще всего это Symfony. Но в большинстве случаев нет смысла писать небольшие сайты на Симфони. Не потому что Симфони там плох, а потому что это можно сделать быстрее. А в коммерческой разработке, бытует мнение, что главный критерий для клиента сейчас -это скорость разработки.
Если проект крупный, то там сроки тоже поставлены, но они довольно большие, и там чаще всего и используют Симфони.
Опять же Django при этом подходит как для небольших проектов, так и для очень больших.
Если вам нужно разработать API, то там чаще всего используют другие инструменты, которых много как со стороны PHP, так и со стороны Python. Различные микрофреймворки в качестве backend-а.

Подводя итог, вы можете заметить, пару ключевых тезисов:
1. Зависит от конкретной задачи, которая перед вами стоит, или требование клиента(руководства компании)
2. Если есть возможность выбирать, если это позволит вам получить конечный результат, то выбирайте то, что вам по душе. Кому-то Python "не лезет", кому-то PHP.

Хотелось закончить на веселой ноте =), поэтому скажу так: при всем вышесказанном, чаще всего, всех этих людей объединяет одно: "так или иначе все они используют JavaScript"
:D
Ответ написан
Пригласить эксперта
Ответы на вопрос 12
dimonchik2013
@dimonchik2013
non progredi est regredi
главное - определиться:
или формошлепство (уважаемо, почетно, денежно),
или серьезные языки (выхлоп далеко не сразу, но стабильно в итоге)
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
1. PHP умирает(мёртв)? Так почему же тогда мёртвый язык развивается в последнее время быстрее всех (большинства) ныне живущих(это я про python, к примеру).

Потому что изначальное утверждение - ложное.

Сколько PHP не развивайся, но это изначально непродуманный язык, даже не язык, а шаблонизатор...

Haters gona hate. Под свои задачи - это идеальный язык.

Есть ли у разрабов PHP шансы наверстать упущенное в этом плане?

Упущенное в чем?)) Про непродуманность - это бла-бла-бла, без конкретики. 5.6 - вполне норм. 7.1 Обещает быть интересным.

Имеет ли смысл учить PHP, перспективен ли он в плане дальнейшей работы(работы, а не доработки cms и т.п.)?

Вопрос не корректен. Перспективен в плане работы - специалист. Только от вас зависит где и как вы будете работать.

Есть ли у меня шансы успеть освоить что-то друго...

Зависит от вас

К примеру, потянет обычный университетский хостинг проект на django?

Вопрос ниочем. Что такое "обычный университетский хостинг"?

Многое придется менять и что вообще придется менять?

Смотря что вы собрались делать.

Продолжать изучать PHP, какая связка PHP+%некий фреймворк% наиболее "боеспособна"? Когда переходить к фреймворкам?

Symfony + сразу.

И да, может быть стоит учить всё и сразу?

Можно, только сразу к психиатру запишись. Не шутка.

постоянно уговаривая попробовать Python или Ruby

Дык попробуй, чего кота за яйца тянуть? Если понравится - переходи на тот стек технологий.
Ответ написан
mr_T
@mr_T
Web-разработчик
Прочитал весь вопрос, но на ответы меня не хватило, так что могу что-то повторить)

Момент 1. Языки. Если ты реально знаешь C++ (указатели, управление памятью, стек, куча, ООП и т.д.), то ты автоматически уже почти знаешь PHP, Python и Ruby. У тебя есть преимущество при изучении этих языков, так как ты уже имеешь представление о том, что реально происходит в твоей программе и, что тоже важно, под капотом интерпретатора. Сами эти языки (с точки зрения подходов и принципов) не так уж сильно отличаются друг от друга. Каждый из них имеет ряд своих особенностей, но их не так много и освоить их не составит труда. При этом изучив любой из языков ты совершенно без проблем перескачишь на любой другой.

Момент 2. Фреймворки. Вряд ли в реальных проектах получится взять язык N, и ручками с нуля что-то на нем делать. Скорее всего будут использованы какие-то фреймворки. Но тут, опять же, достаточно взять любой доступный на языке N фреймворк, чтобы понять подавляющее большинство остальных. Yii, Django, Rails, Laravel - все они схожи гораздо сильнее, чем может показаться. Итог - изучив один из них можно легко перескачить на другой. Каждый перескок будет даваться все легче (актуально и для предыдущего пункта).

Момент 3. Сервер. Если ты хочешь заниматься именно вебом, то сервер, очевидно, его неотъемлемая часть. Тут у языков немного больше отличий, чем в первых двух моментах. Но суть одна - если брать самую распространенную конфигурацию, то должен быть т.н. front-end сервер (не путать с front-end частью приложения), который отдает обычные файлы, не беспокоя само приложение, и back-end сервер (или сервер приложения). Back-end сервер как раз и занимается выполнением кода приложения и тут в зависимости от языка свои особенности по его установке, настройке и связке с front-end сервером. Но все в пределах разумного и вполне реально изучить. Менее распространенные конфигурации можно будет изучить по ходу, да и суть будет похожа.

Момент 4. Node.js. Да, для него отдельный пункт. В JavaScript все построено на асинхронном программировании, поэтому он сильно отличается от "классических" языков. В подробности вдаваться не буду, но рекомендую как минимум с ним ознакомиться, чтобы иметь общее представление об асинхронном программировании, в частности на сервере. Можно взять не Node.js, а какие-то похожие варианты на других языках, но JavaScript основан на этой идее, поэтому я считаю., что оптимально взять именно его.

Момент 5. Лирика. Любая технология решает опеределенный круг задач, поэтому говорить, что она "плоха" просто некорректно. Можно сказать, что она не решает данную конкретную задачу или же есть какая-то другая технология, которая решает ее лучше. Теперь конкретно про PHP, Python и Ruby. Как ты успел заметить в этом вопросе, существует очень много споров о том, что же лучше. Сам факт неугасания этих споров в течении многих лет говорит о том, что нельзя однозначно их разрешить.
Так же есть тренд говорить, что PHP язык для лохов. Но говоря так человек лишний раз доказывает свою некомпетентность и невежество. Исторически так сложилось, что PHP самый распространенный язык, поэтому на нем написано огромное количество вещей разных назначений и качества. Людей, которые могут на нем писать (я намеренно не стал использовать слово "программист"), очень много и логично, что качество кода многих из них оставляет желать лучшего. Многие говорят про порог вхождения, но я бы не сказал, что у того же Python этот порог выше. Плюс PHP за последние годы приобрел много хорошего и как язык, и как его инфраструктура. Короче, можно смело брать PHP :)

Поток мыслей получился немного сумбурный, но, надеюсь, на поставленные вопросы я ответил.
Ответ написан
Комментировать
@legolas4444
PHP не умирает и не умрет в скором времени, а то что нужно ещё кроме него что-то знать, так это 100%. Широкий кругозор и понимание того какие задачи лучше решать каким языком никому не помешают. Например если стоит задача написать что-то с реалтаймом, то глупо для этого php насиловать, а лучше посмотреть в сторону NodeJS. Многопоточность? Вот вам JAVA пожалуйста. Если нужно написать к примеру типичный API, то бери тот который лучше знаешь.
А вообще я бы наверно Python посоветовал бы. Он этакий универсал. С ним точно не пропадёте.
Ответ написан
Комментировать
@Elizavetta
Matroid: gamedev/js-разработка
Если взглянув на код, написанный на C++, можно было однозначно сказать, что это красиво, то здесь по большей части у меня противоположные ощущения.

Какие правильные ощущения. По всему описанию видно, что у вас достаточно знаний, чтобы отложить в сторону PHP.
Python+Django за 2-4 месяца вполне успеете для своих задач.
5. Фриланс на чем-то из вышеперечисленного vs. фриланс на php(в плане интересной работы, а не рутины, ведущей к деградации; .. ? Вероятность найти работу в городе-миллионнике(Россия) (полу)джуниору?

Вероятность найти работу в миллионнике именно, к сожалению выше на PHP, если просто смотреть на цифры по вакансиям. Это связано и с уже большой базой наработок на PHP. Но от вас зависит прийти на новое место работы и стартануть новые проекты на Python, например. Есть вариант вспомнить о PHP, уже имея базу в Python, только если работы совсем не будет.
Ответ написан
@gro
За то время пока ТС писал эту простыню и читал ответные, мог бы уже пару языков выучить.
Ответ написан
Arris
@Arris
Сапиенсы учатся, играя.
Статья "фрактал плохого дизайна" написана танцором, которому очень мешали его яйца. И он решил поделиться этой проблемой с окружающими.

Окружающие повелись (особенно те, кому тоже мешало). Потом проблему раздули. Взяли список минусов, раздули проблемы с ними до астрономических масштабов и как-то забыли сказать, что:
1) не всякий ЯП годен для всякой задачи (писать софт для Хаббла на ПХП - это извините, лол, а вот сайт - почему нет?)
2) язык развивается.

Еще много чего забыли сказать, кстати.

P.S. Честно говоря само название "фрактал плохого дизайна" вызывает сильное недоумение. Я тупо не понимаю, что хотел названием сказать автор. И, кстати, друзья-лингвисты тоже в недоумении.
P.P.S. Кстати, следовало бы поинтересоваться у автора статьи - а на чем он сейчас-то пишет? Может какой ЯП придумал свой, свободный от проблем ПХП ? :)
Ответ написан
Комментировать
@zoh
Не надо мутить пургу о развитии.
ява не развивалась вообще несколько лет, это не значит что падали вакансии и ценники.

Как мне сказали в одной ирландской конторе - "на пхп можно заработать, ... пока"
так что я бы советовал пока не поздно учить питон. если уже не поздно.
сейчас куда не плюнь - один питон, даже в той же раше.
советую - питон+джанго сейчас.

Да и нужно знать базу, перепрыгнуть на технологию просто, чусть сложнее на другую парадигму.

Итог: умирает не умирает, жить он будет пока на нём будут писать (на коболе до сих пор пишут), а большая зп имхо, рождается из высокого спроса.
Ответ написан
Комментировать
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Первым делом нужно отделить собственно код на PHP (обработка данных, форм например, формирование данных для построения страницы), от кода построения страницы. Последнее лучше доверить шаблонизатору. Я пользуюсь Smarty, но вариантов масса, тут на вкус и цвет все фломастеры разные. А мешать код PHP с кодом HTML, и, упаси Боже, с кодом JS - Это Богохульство я считаю... :D

Хотя PHP это позволяет, но это равносильно выстрелу себе в ногу...

В целом я люблю PHP, особенно после Clipper 5.2 и Borland Pascal. Назад я уже точно не вернусь.

Однако, тенденции современности таковы, что логика все больше мигрирует в сторону клиентского кода. Это то, чем занимаются всевозможные Angular.JS, Ember.JS, Backbone.JS, React.JS и прочие jQuery, и же с ними...

Что еще более замечательно, это то, что JS стал активно мигрировать в сторону бэкенда (Node.JS, Io.JS и т.п.)

Так вот, по моему личному опыту последних лет, а это очень много AJAX+jQuery, бэкенд все больше превращается в эдакий прокси модели до БД и сервис аутентификации/авторзации... И в этом плане, каким бы прекрасным ни был PHP7, но работы для него все меньше (потому что совершенно до фонаря, скрипты на каком ЯП отдают JSON)... По крайней мере в том ключе, в каком он изначально задумывался и существовал до начала бурной эпохи AJAX.

Поэтому моё мнение такое, раз уж начал проект на PHP - надо прочитать начало моего поста, облегчить себе жизнь, завершить и сдать проект, а потом переключиться на фронтенд, и с ходу бросить все силы на освоение сначала JavaScript, а потом сразу Ember.JS, в крайнем случае Angular.JS, ибо именно там сейчас полным ходом развивается будущее. Разумеется какой может быть фронтенд разработчик без серьезных скиллов в HTML5/CSS3... Поэтому и это тоже надо обязательно изучать.

Делать это надо хотя бы потому, что освоить Ember.JS равносильно получению второго высшего образования, и вакансий по этой тематике все больше, а минимальный доход пряморукого разработчика на таких вакансиях от 60 тысяч у.е. в год. Разумеется необходимо владеть английским, как без этого...

Безусловно, и на бэкенде еще полно работы, и есть такая, которую на фронтенд нет смысла тащить, тем не менее, бэкенд уже не тот что был 10 лет назад, и уже не будет прежним.

P.S.: все вышесказанное - это сугубо плод моего воображения и личного опыта (20 лет в разработке), думать придется, в любом случае, собственной головой и нести ответственность за принятые решения, и разбираться с последствиями оных.
Ответ написан
Комментировать
На php работает 80% всех сайтов, хотел бы я написать нечто настолько же мертвое. Вы поменьше обращайте внимание на возгласы личностей, о которых ничего не знаете (также как и об их знаниях объекта критики). https://dev.by/lenta/main/top-razrabotchik-php-7-k... почитайте на досуге про "мертвый язык".
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Учите PHP, не забывайте C++/Delphi/etc.

Почему так?
PHP - это скриптовый язык для обмена текстовыми данными в режиме диалога (в основном, с браузером пользователя) с обработкой и дальнейшим формированием результата на их основе.

Всё, что требует скорости при обработке больших объёмов данных - это точно НЕ PHP!
(а что-то более нативное и приспособленное)

Когда нужна будет высокая скорость обработки однотипных данных - напишите свой модуль (демон/сервис) на компилируемом языке (который знаете) и будете обращаться к нему из того же PHP для получения результата.
Ответ написан
@Silm
www.phptherightway.com

Говнокодят все, в начале, на любом языке. И это нормально. В PHP достаточно всего, чтобы этого не делать. Если начал изучать PHP нет никакого смысла менять язык, изучи его, научись разработке и вот тогда сам увидишь, что тебе подходит больше.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы