Web-разработка. Уровень погружения в язык программирования: PHP vs JavaScript. Где «глубже»?

Доброго времени суток, господа.

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

За последние несколько лет стремительными темпами развивается мобильный веб, да и веб в целом, и стандартных инструментов вроде HTML, CSS и JavaScript уже не достаточно, чтобы продержаться "на плаву". Каждая из этих технологий имеет ряд сторонних библиотек и фреймворков, без которых сейчас не обойтись.

Я уже довольно долго использую JavaScript в своей роботе, при этом использую солидное количество сопутствующих решений в данном направлении. Для себя я составил следующий список, который содержит, по моему, основные моменты использования JS, которые так или иначе должен знать каждый js-разработчик, для того, чтобы соответствовать средней вакансии на hh.ru, freelansim.ru и т.д.:
  • Вспомогательные (обязательные) технологии - HTML + CSS;
  • Библиотеки "все-в-одном" - jQuery / Dojo / MooTools / Prototype и т.д.;
  • Библиотеки для отделения логики от представления - ReactJS / BackboneJS+MarionetteJS / AngularJS / EmberJS / KnockoutJS / MithrilJS и т.д;
  • Модульное программирование - RequireJS / BrowserifyJS / Webpack и т.д.;
  • Продакшн - GruntJS / GulpJS и т.д.;
  • Тестирование - MochaJS / JasmineJS / KarmaJS и т.д.
  • Препроцессоры и CSS-like - LESS / Sass / Stylus / Bootstrap / Foundation / jQuery UI и т.д.;
  • Серверное использование - Node.js / express.js / total.js и т.д.;
  • Мелкие "помощники" как - autoprefixer и т.д..

Каждый из этого списка выбирает себе библиотеку\фреймворк по нраву.Кто-то использует BackboneJS, кто-то отдает предпочтение AngularJS, а кто-то и то и другое или вообще ничего. Я, например, никогда не использовал библиотеки для тестирования и отладки и свожу к минимуму использование таких "тяжелых" библиотек как jQuery, но от этого список библиотек, которые нужно знать никак не уменьшается. Хотя JS и самый популярный язык программирования в мире, но даже на нем далеко не заедешь. К тому же потребность в знании такого большого количества сторонних библиотек иногда пугает.

Уже пару лет я использую на базовом уровне (если это так можно назвать) PHP и наконец-то решил углубится в него по максимуму, как и в JS в свое время.По-этому, всех, кто дочитал до этого места я жду в ответах\комментариях - составьте подобный список технологий использующихся с PHP, необходимых для mid и senior-уровня разработчика. Например, для себя я как минимум выделяю знания SQL, XML и т.п. Также если мой список по JS неполный, любые поправки только приветствуются. Также мне было бы интересно услышать, почему вы отдаете предпочтение той или иной "библиотеке" и что можете посоветовать (как для JS, так и для PHP).

P.S.: по том-же JS я прочел не один 10-к книг и некоторые из них, который восхваляли, оказались не такими уж и полезными.
По-этому, буду рад за советы по концептуальной литературе по PHP любого уровня сложности.

Всем спасибо!
  • Вопрос задан
  • 7228 просмотров
Пригласить эксперта
Ответы на вопрос 10
Deroy
@Deroy
Senior Developer, Software Architect
Многое несомненно зависит от того как позиционируется PHP бэкенд в составе проекта,
однако в целом если говорить про разработку приложений на PHP как такового (без зоопарка вокруг)
список инструментов примерно следующий (представлены самые популярные)

Стандарты - по хорошему надо прочитать и понять всё что издает php-fig в сфере юзерленд кода,
самые важные - PSR 0-4

Вспомогательные (обязательные) технологии - YAML, XML, CSV, JSON;
Библиотеки "все-в-одном" - на бэкенде не водятся (да здравствует linux-way);
Фремворки общего назначения, скелеты приложений - Yii (1,2), Symphony2, ZendFramework2;
CMS-фреймфорки - Drupal, ... Wordpress? ищите под задачу;
Модульность, Зависимости - Composer и все что с ним связано, PEAR/PECL (потихоньку отмирает);
Сборка - Phing (хотя я собираю php-проект gulp'ом - у него API приятнее);
Тестирование - PHPUnit, Behat, CodeCeption;
Деплой(Развертывание релизов) - Mage (aka Magallanes), Deployer
Помощники - Vargant, Docker (тестирование и разработка в готовых окружениях)

Здесь я не упоминал того что нужно знать о самом языке и его компонентах.

теперь поговорим о зоопарке..

технологии и зоопарк специфичный только для PHP:

Сервера приложений - php-fpm, apache-mod-php;
Кэш и быстродействие - APC (APCu для PHP >= 5.5)
дебаг - ZendDebug, XDebug, XHProf

Далее то что не отличается от одного серверного языка к другому.
это часть ответа безгранично велика на самом деле =)

Сервера и прокси - Nginx, Apache, Varnish, etc.
Кэши и NoSQL - Memcached, Redis, Mongo, etc.
СУБД - MySQL, PostreSQL, etc..
Поисковые индексы - ElasticSearch, Sphinx
Очереди и межпроцессовое взаимодействие - RabbitMQ, ZeroMQ, linux-sockets, posix-treads
Протоколы взаимодействия (4 уровень OSI) - HTTP(во всех его подробностях! просто MUST HAVE), POP, SMTP, IMAP, REPL.
Траспортные Протоколы (3 уровнь OSI) - TCP, UDP
Библиотеки уровня системы - cURL (абсолютный MUST HAVE - большинство взаимодействия поверх HTTP строится на этой библиотеке в абсолютном большинстве серверных скриптовых языков)
Ответ написан
Комментировать
sayber
@sayber Куратор тега PHP
Да, я программирую на PHP и еще асинхронно!
Тут можно советовать и предлагать сколько угодно.
Даже до холивара дойти.

Естественно - глубокое изучения самого PHP.
Технологии которые часто используются в зоопарках - Redis, Memcached, Sphinx, Percona Server, Tarantool да и еще пара десятков.
Покопаться и изучить фреймворки - Symfony, Laravel, Zend
Естественно github

Я даже и не знаю что предложить =) Обычно все по мере поступления изучается.
Времени на изучение вне рабочего окружения нет =(

upd
Сейчас часто проекты выполняются по следующей схеме.
Frontend на зоопарке js фреймворках, backend на php фреймворках указанных выше (ну если др. языки не берем).
Работа по средством RESTful.

Хотя уже имеются проекты, где фронт и бек реализованы на JS.
К примеру фреймворк Meteor, сразу реализует и фронт и бек.
Ответ написан
@iliyaisd
Очень зависит от того, разработка чего ведётся. Сегмент (b2b/b2c), не-/нагруженное, сайтик/веб-приложение/интернет-магазины/большой портал... И так далее. Из общего можно выделить:

- sql, как вы сказали - напрямую к РНР не относится, но знать его и СУБД точно придётся (в основном, MySQL, PostgreSQL, иногда Oracle, MSSQL).
- фреймворки - для любой более-менее серьёзной разработки. Наиболее распространённый зоопарк: Yii/Yii2, Symfony2, Zend, сейчас нашумел Laravel (не пробовал), иногда CakePHP.
- разные CMSки для сайтов и особенно для интернет-магазинов. Если сегмент требует, изучайте.
- для нагруженных проектов - memcached, APC, RabbitMQ, всевозможные NoSQL (Mongo, Redis). Понимание тонкостей Apache и Nginx.
- cron
- контроль версий - в основном сейчас git, используется также svn.

Из книжек никогда ничего не читал, кроме php.net (это прям "настольная") и гугла. Наверное, это неправильно. Но я очень не люблю учить программирование по книжкам - у меня как-то всё сразу забывается. Поэтому я по ходу необходимости почитываю разные статейки / ответы на вопросы.
Ответ написан
Комментировать
mlnkv
@mlnkv
JavaScript Developer

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

В корне с вами не согласен. В первую очередь важно в идеале знать сам язык.
Ответ написан
Комментировать
AlexPTS
@AlexPTS
Full stack веб разработчик
PSR, composer, phpunit в дополнение к предыдущему комменту
Ответ написан
Комментировать
index0h
@index0h
PHP, Golang. https://github.com/index0h
Не могу сказать, что прям вот каждую секунду нужно все из этого списка использовать, но иногда приходится: PSR, composer, yii, symfony, monolog, phpunit, xdebug, codeception, mysql, couchdb, mongodb, elasticsearch, rabbitmq, redis, memcached, xcache, bash, vagrant.
Ответ написан
Комментировать
alexiusp
@alexiusp
senior frontend developer
Из того, что не упомянули явно, можно ещё упомянуть хорошее понимание работы HTTP протокола (заголовки, POST/GET и пр.) ну и по возможности другие полезные протоколы: POP/SMTP например. Это особенно важно для работы со сторонними API, что сейчас в тренде. Ну и cURL обязательно прикрутите к PHP-сборке и попробуйте - на мой взгляд самый удобный инструмент для общения со сторонними ресурсами.
Ответ написан
Stac
@Stac
Самое смешное, что знания чистого PHP вам скорее всего хватит, учитывая ваше знание JS.

Нужно принимать запросы, читать данные из файлов или БД, писать туда же и отдавать HTML (или более интересный для вас JSON) в браузер.

Дополнительно можете посмотреть т.н. микрофреймворки (slim,...) и что-то для работы с БД (redbean, notorm), хотя в PHP есть встроенный PDO, которого хватит для работы с mySQL и SQLITE.

Имейте в виду, что SQL хотя и стандартизирован, реально отличается от СУБД к СУБД.

И вообще, мало кто вам скажет, что чем меньше технологий используется в проекте, тем лучше.
Ответ написан
@true0r
Не стоит забывать о шаблонизаторах: Smarty, Twig. Знание концепции ORM и ее реализаций к примеру Doctrine (используется во фреймворке Symfony).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы