В чем польза изучения PHP сегодня?
====================================

 Здравствуйте!   
  
**Заранее прошу прошения** за нубство и очередной тысячный вопрос(на свой лад) о многострадальном выборе пути новичка в WEB-разработке.  
  

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

1. Даст ли изучение PHP больше пользы, понимания работы WEBа и разработки в нем, чем к примеру, Django, Ruby? (Node.js, на сколько я понял, **пока** инструмент специфический).   

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

3. Что я, или многое ли, упущу в плане проф. развития, если не буду изучать PHP, а перейду сразу на другие серверные языки, а возможно и, - Основы программ.- основы С - JS - Динамические Django/Ruby -ASP .NET(С# -Go - далее? Не будет ли проблем с удаленной работой(фултайм) и муки совести, что возможно поддался общему малообоснованному негативному фону относительно PHP, и пропустил его?  
  

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

Конечно хочется понимать больше парадигм технологий и конструкций, но позже, все не освоить за раз, для меня по крайней мере. Но буду тянуться к этому.  
  

Спасибо ребята за мнение кто откликнется. Лет мне за 30, меняю профессию, и было бы здорово эффективнее потратить время на освоение профессии и скорого начала работы.  
  
**UPD**  
  

Ребята Спасибо всем за комментарии и пояснения, очень помогли, внесли ясность в мои предыдущие мутные суждения. На основе ваших слов пошел читать на Тостере и внешние источники уже с другим подходом. И думаю необходимо вынести сложившиеся мысли.   
  

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

Узнал о технологиях помогающих PHP создавать и держать нагруженные проекты(memcached, php-fpm, др). Но ведь наверное на этапе крупных проектов уже приходит понимание и интерес применить что-то другое, может современное, и возможно уже освоенное к этому времени. Уже проще с опытом навязать клиенту определенную технологию, архитектуру отличную от PHP и не только, которая более применима к ситуации.   
  

Ясно стало одно, что не смотря на то что технологии в Web-разработке развились и продолжают развиваться, принеся когда то вездесущий JS, с его многочисленными современными фреймворками, появившиеся "новые" языки и подходы к хранению и обработке данных, главным для новичка остается начать понимать на практике смысл и суть того как все работает и устроено в Web-разработке, на каком либо одном более менее объемлющем, с компромиссом востребованности и доступности для новичка языке/стэке который рассчитан на создание как малых так и крупных проектов не сильно при этом "меняющийся" в процессе. - Для начала.   
  

Вроде как теперь необходимо ответственно подойти к выбору этого самого первого ЯП/стэка. Но думаю что это не будет PHP, потому как способы позволяющие на нем создавать высоко нагруженные проекты, это скорее всего вынужденная необходимость старых проектов, нагрузка на которые со временем выросла. И сегодня PHP это хороший инструмент для небольших проектов/скриптов и другого чего я пока не знаю, в силу поверхностных знаний.   
  

Логичным для себя все же посчитал "пробежаться" по основам железа и программирования через собственный подобранный список литературы(ниже), потому как ноль в Comp. Sc. что хоть минимально поможет держать в уме не один подход и чуть более широкий взгляд, не зависимо какой путь развития в Web будет выбран в ближайшее время. Ну и собственно **найти** и изучить один ЯП с ООП или современн. минимальный стэк технологий, на которых пишутся как малые так и крупные проекты. Что думаю даст не столь стрессовое развитие в начале, перед дальнейшим полным погружением в отрасль. В любом случае рад прояснению.  
  

В процессе поглядывал еще и на Big Data с Enterprise, но это скорее недобрый знак.  
  

Ну и список по основам, не обязательно, просто для полноты:  

1. Э. Таненбаум(Архитектура комп.);  

2. Ч. Петцольд(Код. Тайн. язык инф.);  

3. С. Макконелл(Соверш. код);  

4. Х. Абельсон/Д. Д. Сассман(SICP);  

5. Б. У. Керниган/Д. М. Ритчи(Язык программирования Си);  

6. В. Подбельский/С. Фомин(Программирование на языке Си)  
  

Рад что нашел данный сервис, где можно не отстать от развития технологий, и где так быстро отвечают по всем темам. Спасибо еще раз за помощь.  
  
**Update** Ограничив для себя примерно круг интересов - web и в последующем возможно финансы, др, взялся до корней изучать Python/django. Позже или параллельно JS конечно(от ситуации). И в будущем возможно - C#)  
  

Библиотек у Python куча как оказалось, предоставляющих ему множества возможностей и др., чего раньше видимо не хватало и ограничивало его.   
  

С php я бы себя ограничил не только в плане возможностей, но и столкнувшись с проблемами его использования в будущем, да и "время терять не хочется". С учетом того что есть основная работа(доход), есть смысл в изучении "других" технологий.  
  

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

Учителей я надеюсь всегда "найти" здесь и не только.. В выборе инструментария помогли советы опытных людей из комментариев и не только, о том для чего именно выбирается этот самый инструментарий и то что необходимо углубиться в изучение технологии. Спасибо!  
  
**UPDATE 7 мая:** Задав однажды вопрос, получив множество разных полезных мнений, начав получать уже какой-то опыт, параллельно изучая долгосрочные и финансовые тенденции в IT(программирование), все же пришел к "основам" - Java или C#, помимо Python.   
  

  

Я же все пока скатываюсь в "унылый" Enterprise, мотивация - деньги, навыки. Но, деньги и навыки для реализации конкретных дальнейших жизненных целей. В общем, четкая цель своеобразная, которая не позволяет появляться в моей голове мыслям "а зачем мне все это нужно", стереотипам и прочему подобному от лукавого про программирование))). Ну а дальше, возможно и жизни без этого уже не смогу себе представлять, уже затягивает, учитывая дальнейшие долгосрочные цели(каждый может придти к своим). Такой подход проверен на примерах из собственной жизни, по другому себе не умею прививать сильной и долгосрочной мотивации. Драйв и эксперименты это наверно еще до 30 лет))), мне сейчас пока не до них))). Хотя постоянно натыкаюсь на топики в сети, где взрослые люди с нереальным воодушевлением открывали для себя web-технологии и не важно с каких инструментов они начинали(php, базы данных, др.), уходя из своих предыдущих профессиональных сфер.  
  

C# также в среднем "равноценен" Java по всем параметрам, говорят удобнее только в плющках, и перейти по необходимости можно будет в кратчайшие сроки, если только конечно понадобиться. Но Java, все же кажеться основее основ(плюшки потом). К тому же из нее вроде растет Scala(функциональное программирование).   
  

Грызу материал по Java, практикую. Может получиться со временем напроситься в какой нибудь опенсорс, если из дома потяну конечно, деваться не куда если джуном не будут брать долгое время. Много советов встречаю не тратить время на создание своего первого учебного проекта/сайта, а сразу в опенсорс для более реального опыта. Хотя проект запилить более практичный - тоже интересно сильно. В текущем python-проекте пока больше подглядывал за Pytonистами(первоначальная самонадеянность), и многое оставалось за кадром о программировании. С Java должно все встать на свои места, пусть и с некоторою болью в начале.   
  

P.S. В бизнес логику, Enterprise еще тянет по причине малого в нем участия html, js и т.п. Пока нет желания связываться. Хотя с noda все же видимо теснее стать придется, время покажет.  
  
**UPDATE МАЙ 2016:** Вместимость этого поста не позволяет разместить здесь последнюю информацию о себе, о своем продвижении в Java. Потому добавил комментарий ниже, с пометкой "**update 2016:**" от 13 мая 2016 года, где вся информация.  
  

И да, здесь я описал список книг выше. Но ментор по Java которого я нашел в процессе, сразу попросил откинуть 5 из 6, и оставить лишь Код, Петцольда, и добавить к ней Философию Java. Первая(и то опциоанально) для ознакомления с принципами работы компьютеров и кодированием, вторая непосредственно по Java. Остальные было сказано - лишний груз, который излишен, если есть желание стать разработчиком Java.  
  

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

> 1. Даст ли изучение PHP больше пользы, понимания работы WEBа и разработки в нем, чем к примеру, Django, Ruby?

  

Если ваша цель - понять принципы вэба в кратчайшие сроки - php вполне для этого ок, но только этого языка МАЛО, web имеет и frontend сторону. *Django - это того, не язык.  
  

> 2. Предпочитается ли PHP сегодня, и будет ли предпочтителен на будущее для разработок не мелких сайтов, а сложных проектов, учитывая его развитие(наверное)? 

  

Facebook, VKontakte - это маленькие проекты?))  
  

> 3. Что я, или многое ли, упущу в плане проф. развития, если не буду изучать PHP, а перейду сразу на другие серверные языки, а возможно и, - Основы программ.- основы С - JS - Динамические Django/Ruby - далее?

  

Не мешайте в одну кучу компилируемый язык общего назначения (С), событийный скриптовый язык (JS), фреймворк (Django) и скриптовый язык (Ruby)). Они предназначены для разных задач.  
  

> Не будет ли проблем с удаленной работой(фултайм) и муки совести, что возможно поддался общему негативному фону относительно PHP, и пропустил его?

  

Все зависит от вас. Если вы станете отличным спецом RoR, или NodeJS, или Django - проблем с поиском работы не будет.  

Дело в том, что хотя и php-шников много, хороших специалистов найти очень не просто. Банально на собеседовании на синьйора спрашиваешь: в каких ситуациях стоит использовать "AR, в каких Repository", или "какие негативные последствия могут быть при использовании FK в high load проекте", а в ответ тишина. Куча народу считает себя гуру JS, а когда спрашиваешь что-то, что не делает jQuery(библиотека) - полное непонимание.  
  

Резюмируя выше сказанное: php-не центр всея web, это интсрумент и он подходит под вполне конкретные задачи, под кучу других задач он не подходит. Вы можете спокойно зарабатывать на хлеб с маслом в web разработке не зная при этом php. Вам всего то нужно стать хорошим специалистом своего дела. 

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

Легко быть новичком, но если нужен хотя бы уровень джуниора, то придется попотеть, сильнее, чем в Python или Ruby.  

Быть профессионалом в PHP гораздо сложнее, чем в Python или Ruby, ведь надо обладать тем же количеством заний, но нет никакого мейнстримного набора технологий, все знания фрагментированы. 

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

А вы думаете практику сразу где-то в хайлоад будете проходить? Сомневаюсь. До хайлоада должен быть целый "хайлоад" маленьких проектов, пхп вам позволит видеть минусы и плюсы, в лополнение оно простит вам ошибки вашей начальной "безграмотности". В пхп (как в прочим и других яп) есть прекрасный фреймворки (например yii, laravel) которые помогут вам понять патерны, архитектуру и научат более менее писать правильно (эти знания в принцие универсальны для всех яп).  

и не нужно выбирать один язык, вам рано или поздно придется учить еще и еще, важно базу правильно себе заложить. Ну а дальше стоит все таки смотреть в асинхронную разработку (чтото типа nod.js)  

Поймите что вы не сможете стать универсальным доктором который лечит только левый глаз, правый тоже надо будет лечить.  

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

ps: если вдруг все таки не пхп, посмотрите на руби, но не забывайте про асинхронную разработку, очень понадобиться в дальнейшем. А вообще действовать надо маленькими шагами: почитал сделал, а не почитал-почитал-почитал. а потом сделал^3, иначе второй раз будете перечитывать 

 А как же Великая и ужасная (технология) **ASP .NET**? Почему нет в списке? ;-)  
  

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

Я бы рекомендовал сделать акцент на **ООП**.   
**PHP** может быть объектно-ориентированным, но может и не быть, если лень или недостаточно знаний.  
  

Если говорить об **ASP .NET**, то тут без **ООП** не обойтись. Хочешь не хочешь, придется работать с объектами/классами и прочими сопутствующими вещами.  
  
**ASP .NET** позволяет программировать на **Visual Basic .NET** и **C#**. Изучив один из этих языков можно будет создавать приложения для **Windows** и **Windows Phone**, всякие библиотеки и компоненты. В общем, много чего можно будет делать.  
  

Сложные и большие проекты делать в **ASP .NET** проще, чем на **PHP** (мне доводилось работать и с тем и другим). Раньше у **PHP** было преимущество в доступности и дешевизне. Сейчас такого преимущества нет. Технология **.NET** за поседение годы стала доступней. Сервера и хостинг под **Windows** по стоимости не уступает **Linux**. Основная среда разработки под **.NET** - **Visual Studio** потихоньку становится совсем бесплатной, былые ограничения постепенно уходят в историю, хотя даже с ограничениями многое можно реализовывать гораздо быстрее и проще.  
  

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

 PHP не советую. Мало проектов где используются фреймворки. PHP это в основном разработка в рамках какой нибудь CMS(в России в основном Битрикс), т.е. придется копаться в недрах CMS а это не самое приятное занятие и платят мало.   

Если хочется программировать, то на мой взгляд лучше C#(ASP.NET MVC) или Java, или Python.  

В случае с C# и Java работу найти очень легко.   

С PHP тоже легко найти работу, но не факт, что она вам понравится.  

Я например изучил PHP, но у нас в регионе в основном вакансии по Битрикс, пошел посмотреть что такое Битрикс, сейчас понял что не мое — учу Java, но деньги появились.  
  

На мой взгляд самый главный недостаток PHP - возможность смешивать логику и представление. К сожалению многие программисты пользуются этим и получается некрасиво.  
  

Самая большая разница в Вебе это не PHP - другой язык программирования, а front-end back-end. Так например большинство back-endщиков не любят верстать, большинство front-endов особо не интересуются базами данных.   

Возможно вам больше понравится верстка и front-end, поэтому желательно сначала посмотреть что это такое, т.к. стать специалистом по фронт-энду можно гораздо быстрее. 

 PHP идеален для начала:  

 1) легко найти практическое применение, т.к все, кроме крупных компаний (которые, в основном и ругают PHP) используют именно его. Туда, где ругают PHP без 3-5 летнего практического опыта не возьмут.  

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

Судя по вакансиям этого года, то кроме PHP стоит учить node.js. Он почему-то всем нужен. Про Python с Ruby уже кричат не так сильно.  
  

Из списка книг по Си стоит оставить только Кернигана и Ричи ибо классика и дает хорошее понимание, что и как происходит в этот мире.  
  

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

p.s. Я проходил путь смены профессии 6 лет назад (тоже в 30) с менеджера по продажам. 

 Мне по работе приходится тесно контактировать с разработчиками разного профиля и языков. И знаете, что я понял? РНР хорош. Да, его недолюбливают за разные грехи, в основном - отсутствие типизации, наличие огромной базы плохого кода (и соответствующего контингента) и разные непривычные для тру-кодеров подходы к программированию. Но какая разница, если благодаря всему этому на нём надо сделать гораздо меньше телодвижений для решения повседневных насущных задач? Я писал и хайлоад на РНР, и всё отлично работало, особенно в совокупности с грамотно настроенным веб-сервером и грамотно написанными хранимками и запросами. Тут мы плавно переходим к сфере применимости. Очевидно, что сложная логика для БД должна быть написана в БД. Очевидно, что если вам нужна (*действительно* нужна) многопоточность, то РНР не подходит. Понятно, что это не работает в низкоуровневой разработке и других подобных вещах... В общем, следуйте элементарной логике и будет вам счастье.   

Ну а что касается проф.развития... А что для вас проф. развитие? на хабре была [отличная статья](http://geektimes.ru/post/233757/), прям вот любому программисту распечатать и повесить на стеночку. Проф.развитие - это умение быстро и качественно решать задачи бизнеса и получать за это хорошие деньги. А на РНР это всё делать легко, потому что большой спрос, и сам РНР простой и удобный. 

 На вашем месте, я начинал бы придумывать некий проект, нашел инвестора и нанял бы программиста)  

В жизни вам это ничем сильно не поможет, если вы не сможете стать просто Асом. А работать в мелких проектах и получать свои 30-150 000р в мес. не ахти )  
  

Чисто моё мнение) 

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

Если совершенно 0 в программировании, лучше не начинайте с пхп иначе будете его также обсирать как и толпы других людей. В пхп легкий порог входа, но столкнувшись однажды с серьезным проектом, вы поймете, что ваш код запутанный кривой, работает неверно, где именно работает не верно тоже не понять, испортите себе репутацию перед заказчиками, ваш код попадет сюда govnokod.ru, а вы станете очередным троллем ненавидящем ПХП.   

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

**Update (май 2016):**   

Всем привет. Хотел сообщить в посте о последних новостях о себе. Но вместимость поста/вопроса ограниченна 10000 знаков. Потому оставлю информацию здесь в комментариях.  
  

Уже подзабыл что данный вопрос связан не только с PHP, но и говорил о Java. C тех пор я плотно занимаюсь освоением Java технологии. По ка еще не ходил на собеседования в своем городе(Уфа). Так как еще считаю незаконченным свое самообучение, но к чему уже близок относительно(делаю проекты), которое описываю на одном интернет ресурсе связанном с достижениями целей, по этой [ссылке](https://smartprogress.do/goal/120529/) . Искал для поддержания само мотивации где бы выкладывать процесс самостоятельного обучения разработке на Java. Так и был выбран вышеотмеченный сервис, где я в течении нескольких месяцев описываю свой прогресс и все что связано с целью. Помимо этого подключил изучение английского. Одновременно конечно сложно в моем случае их достигать - английский и программирование, и я их осваиваю по очереди, если это так можно назвать. Здесь всего не описать - много будет. Не реклама сервиса, думал о ЖЖ. Но функционал другого вроде как показался более подходящим, на нем я и остановился. В общем по ссылке все что со мной произошло и происходит в процессе освоения Java. 

 Инструмент не имеет значения. Главное — уметь решать им задачи. Если бы на ассемблере можно было успешно создавать веб-приложения, то на нём бы их и создавали.  

Свои плюсы и минусы есть и у ПХП, и у Питона, и у Руби, и у Go, и у вообще всего. В любом языке программирования можно найти людей, которые скажут, что этот язык полное говно, и даже приведут вполне весомые аргументы. Также можно найти людей, которые скажут, что это идеальный язык, и тоже приведут аргументы. Ну и что с того? Какой толк о того, что говорят другие?  

Попробуйте всё, на что хватит времени, и выберете то, что ВАМ больше всего понравится. Ведь это именно ВАМ в будущем целыми днями писать на этом языке код. Если вы решили серьезно этим заниматься, то потратите на это не один год. А зачем тратить время на нелюбимую деятельность?  
  

ПС Те, кто советуют ему начать "с основ", с C и Java, — вы сошли с ума :) 

 А вот мне пхп нравится. Легкий для понимания, низкий порог входа. Работу найти можно даже толковому джуну. Язык развивается, ооп поддерживает.  

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

 Польза - это в получении новых знаний. А вообще болшинство проектов в мировом интернете на пхп реализовано 

 Немного не понимаю когда коллеги говорят о плохом коде. Вы же не собираетесь изобретать свой велосипед. Не, хотите плохого кода используйте фреймворки. Благо PHP- язык очень зрелый и на нем появилось очень много хороших фреймворков- Yii2, Symfony, Laravel. На мой взгляд удобнее чем даже Ruby on Rails (ROR). В ROR когда я его изучал не было Query Builder, не было Debug Toolbar.  

Не обязательно связываться с Битриксом, заказчику зачастую все равно на чем будет работать его сайт, и Вы можете предложить ему свое решение, самое главное для заказчика, что бы это решало бизнес задачи и было удобно пользоваться.