буквально пять минут так было, волнуюсь, извините.
Вот качество материала крайне низкое, только почему то в большинстве команд такое не используется, по крайней мере в проектах PHP которых участвовал приходилось предлагать и внедрять данные инструменты. Хотя не знаю конечно, может это все туфта, все эти инструменты, правда после их внедрения sentry меньше ошибок стало отлавливать.
Данные инструменты можно использовать как в хуках, так и отдельно запускать. Про pre-commit написал только для того, чтобы описать где это все можно удачно использовать, для этого и выделили часть статьи как «Pre-commit review».
php-cs-fixer правит code style, это не относится к code rewiev?
За это и минус от меня с ...
Спасибо за Ваше мнение! Немного переименовать статью надо. Могу только добавить, что эти инструменты в помощь при code rewiev и они не могут полноценно заменить весь rewiev.
… об инструментах которые помогают проводить code review.
Все эти инструменты настраиваются человеком как ему захочется, согласно принятым правилам в команде.
Вы считаете человек надежнее чем машина выполняет рутиную работу и человеческий взгляд надежнее машинного? Мне всегда казалось машина как раз рутиную работу и предназначена делать и машина лучше может сравнить например написание переменной при ее объявлении и при ее вызове (php к сожалению прощает такие ошибки как разное написание переменной, в итоге при обращении к ней в ней может оказаться совсем не то, что ожидалось)
Т.е. вы считаете данные инструменты никчемные и их вообще надо запретить, все должен делать человек?
И да, кто запрещает использовать человеческий труд? Здесь описаны инструменты которые ПОМОГАЮТ проводить code review, но итог и процесс зависит только от человека.
А всякий автоматический анализ кода — это уже из другой оперы.
Описал инструменты которые помогают автоматизировать (статья поэтому и называется «Code review это просто») code review, проверяют на синтасические ошибки, приводят code style к одному виду во всем коде, проверяют наличие повторного кода, статический анализатор может проверить типы данных, phpunit даже можно автоматически запускать, статический анализатор может найти ошибки вида «не достижимая переменная» и многое другое, все возможности в одной статье не уместить.
Разве это не относится к области code review? Если нет, буду благодарен если поясните его смысл, спасибо!
Уважаемые хабравчане, буду благодарен за комментарий если минусуете, не совсем понятно что здесь не так, неужели описанных инструментов нет в природе? Вроде ссылки на них дал даже.
Спасибо!
В какой то мере Вы правы, особенно если любите стрелять из пушки по воробьям и сторонник писать код не задумываясь о ресурсах машины на которой он будет исполняться!
1. Java интерпритируемый язык программирования, так же как и PHP он исполняется на виртуальной машине, JVM для Java, ZendVM для PHP
2. Когда производишь компиляцию Java кода, то ты преобразуешь код программы в байт-код, при этом проверяются типы дынных и корректность кода. На JVM поступает байт-код но не машинный (бинарный) код!
3. PHP так же при старте скрипта вначале компилируется программный код в байт-код и в ZVM так же поступает байт-код, точно так же как и на Java.
4. До версии 7.1 (могу ошибаться, поправьте если не прав с версией) при компиляции в байт-код оптимизации не происходило, сейчас же оптимизация проводится компилятором байт-кода, который никуда не денется по определению!
5. OPcache — простыми словами, это хранилище раннее откомпилированного байт-кода на PHP. Вот как вы думаете, почему при включенном OPcache если меняешь код, то изменения не применяются сразу и надо перезапускать php-fpm (если работаете с его использованием)
По компиляции вывод — принцип работы Java и PHP одинаковый, выигрывает тот, кто лучше производит оптимизаци.
Преимущества Java на данный момент:
1. JIT компилятор
2. Процесс сидит в памяти и не требуется повторной инициализации ресурсов (подключений к БД и т.п.)
Что ждет PHP:
1. JIT компилятор при использовании которого, по предварительным тестам, производительность PHP сравнима с производительностью С.
2. Уже есть сервера на PHP, самый производительный это Swoole (только не забывайте, писать код уже надо не как вы обычно это делаете на PHP)
3. Есть статические анализаторы которые проверяют все ваши типы данных и корректность кода, точно так же как и у компилируемых языков. Но это уже отдельная тема.
Про ЗП хочу немного добавить: по данным компании NewHR, в июне 2019 года средняя зарплата PHP-программиста уровня middle в Москве составила 160–180 тыс. рублей. Senior’ы зарабатывают в среднем 180–240 тыс. рублей. Зарплата team lead’а составляет от 240 тыс. рублей.
По хорошему все языки приблизительно в одном русле, плюс — минус, Scala наверное только выделяется.
Вот не спорю, репутация низкая у PHP специалистов, т.к. цена входа очень низкая, даже не программисты что то делают и соответственно получается у них черти что.
Хотя гавн-код можно писать и в Java (например), уверяю Вас.
JS (прототипное ООП) так там вообще бардак еще творится, классы например поддерживаются начиная с ES6, как написать сложное приложение в более ранних стандартах без «лапшы» или кастылей, даже не знаю, может кастыль под названием Buble использовать?
Phyton — мало знаком с данным языком, брат на нем пишет и он ему нравится, язык сейчас конечно популярен, но если посмотрите бэнчмарки которые предоставил ниже, то он проигрывает PHP.
Другой вопрос в том, что знание и опыт и Java и NodeJS очень помогло мне в жизни, без данного опыта думаю было бы сложновато, хотя сейчас очень много литературы стало доступно по написанию хорошего кода вне зависимости от языка программирования.
По поводу ЗП — очень скользкая тема, даже боюсь ее трогать.
Не знаю, «чуйка» наверное, что пока отказываться от PHP не стоит, но развиваться, изучать раличные подходы в программировании надо всегда! Знать основы, как что работает так же надо. Почему специалисты PHP часто ценятся не высоко, многие просто даже не знают что такое стек, что такое очередь, хэш таблицы считают что это просто массивы PHP, но это больше в силу того, что цена входа низкая.
Ну а люди, кто развивает PHP, явно не глупые!!! У меня сложилось такое впечатление, что они владеют другими языками и в PHP стараются взять только лучшее, избегая ошибок других языков.
Всё-таки хочу поделиться одним видео с YouTube, которое никак не дает мне покоя — www.youtube.com/watch?v=SpmnVDYwr_g&list=WL&index=36&t=30s
Со слов докладчика, Swoole бьет и NodeJS и Golang.
А что будет когда PHP 8 выйдет (разработчики swoole рекомендуют использовать чем новее версия PHP, тем лучше)!? При этом разработчики swoole позиционируют себя как пришли они надолго и всерьез, что у них сейчас работает стабильная команда разработчиков.
Так же есть фреймворк swoft у которого под капотом swoole, а спереди стоит сервер на Golang у которого время отклика лучшее. Так же у swoft уже есть реализованный пулл коннектов к БД (для долго живущего приложения это очень важно!), есть своя ORM. Swoole (соответственно и Swoft) tcp подключение могут обрабатывать и WebSocket подключение обрабатывать. Так же coroutines есть с каналами (как у Golang), плохо развито на данный момент, но ведь это только начало.
Вот и заставляет задуматься, бросать этот язык или нет. Честно, я в замешательстве, ведь сейчас так много говорят о phyton, nodejs, scala, java, haskell и т.п.! Помогите!!!
А еще вспомнил слова Стива Макконнелла — «программировать надо используя язык программирования, а не на языке программирования». Суть в том, что надо вначале спроектировать систему, а потом решать на каком языке ее написать (и на этот выбор могут влиять не только технические факторы).
Планируется обсудить вопрос «Как и кем формируется рынок PHP-разработки, кто по факту решает, на чем писать и переписывать проекты.», думаю он во многом прояснит ситуацию.
А мое мнение, PHP как изначально был для web-а, так в связке с Golang лучшим решением для него и остается, а с учетом того как он развивается, возможно и без Go скоро обойдется. У Golang время отклика лучше чем у PHP, хотя приложение «Hello world» на php-fpm RPS дает приблизительно в 1.2 раза больше. На текущей работае проводили такие тесты, к сожалению не могу их опубликовать.
PHP vs Java в web:
Java держит ресурсы в памяти, PHP при каждом обращении создает новое подключение к ресурсу (к БД) — так кто держит ресурсы в памяти у Java? А держат их сервера приложений типа JBos, WildFly, WebSphere, и даже пулы коннектов к БД создаются в них. У Spring Boot под капотом Tomcat. Так на PHP сейчас есть Swoole, Workerman и т.д. и т.п. Ну а если самому захотелось открыть web socket, так PHP и такую возможность дает. Вот для чего Java или Scala подходят, это написание полноценных приложений типа БД, брокера очередей и т.п., для этого PHP не приспособлен конечно. Основная проблема у Java и Scala, как впрочем и для других языков, если хочешь качественный код, то нужен хороший/дорогой специалист, а гавн-кода и на этих языках хватает, вы уж поверьте.
PHP vs NodeJS в web: NodeJS — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код). Это вообще не язык программирования, а кастыль транслирующий JS в машинный код. На моей прошлой работе решили попробывать NodeJS вместо PHP, так плеваться потом начали, даже при использовании async/await система все равно не справлялась с нагрузкой, пользователи подвисали на достаточно долгое время прежде чем получить результаты работы, элементарно залогиниться в системе долго не могли (например).
PHP vs Rust:
Rust это вообще системный язык программирования, как их можно сравнивать то!?
PHP vs Go:
Простые сервисы писать на Go однозначно проще, но сложную логику как на нем писать не преставляю, в моем понимании если надо взять запрос и тут же выплюнуть ответ Go лучшее решение. Если не прав, пожскажите в чем, Спасибо!
Какие сделал для себя вывыоды, PHP удобен для:
1. Как связующее звено между различными системами, для организации инфраструктуры компании. Позволяет выбирать лучшие решения и пользоваться ими, а если решили использовать что то другое, то незаметно для пользователей переключиться на него.
2. Возможна организация сложной логики работы с данными. Т.е. получили данные, провели их анализ и приняли решения. Конечно и другие языки на это способны, но PHP в некоторых случаях удобнее.
3. Быстрая организация инфраструктуры проекта. Например за неделю до Нового Года менеджеру стукнуло провести необычную Новогоднюю рекламную акцию, PHP для этого на мой взгляд подходит лучше чем Java, NodeJS, Rust или даже Golang.
Понимаю, первый опыт хабра, решил поделиться, пришел к тому, что статьи должны выглядеть по другому, конкретики больше, ьелее четкая терминология и т.п.
… мне, конечно, в этот момент очень любопытно, кем вы себя считаете из этого списка.
Это совсем совсем о другом.
Такое ощущение, что мы говорим с вами на различных языках о разных вещах, думаю стоит остановиться. В любом случае такие беседы иногда полезны, но надо знать меру и когда остановиться.
Давайте я вам быстренько объясню, что делать.
Спасибо конечно.
декомпонуете вашу задачу на доменные сущности
По хорошему об этом речь и идет.
определение по МакКоннелу. Оно не противоречит тому, что я сказал.
По хорошему нично ничему не противоречит, поэтому и привел в пример ошибку №11 «Строгое следование правилам». Джун пишет все в контроллерах, мидл пишет все на интерфейсах, сеньер знает где можно написать код в контроллере, а где и как использовать интерфейсы (не мои слова).
Вот качество материала крайне низкое, только почему то в большинстве команд такое не используется, по крайней мере в проектах PHP которых участвовал приходилось предлагать и внедрять данные инструменты. Хотя не знаю конечно, может это все туфта, все эти инструменты, правда после их внедрения sentry меньше ошибок стало отлавливать.
Спасибо за Ваше мнение! Немного переименовать статью надо. Могу только добавить, что эти инструменты в помощь при code rewiev и они не могут полноценно заменить весь rewiev.
Вы считаете человек надежнее чем машина выполняет рутиную работу и человеческий взгляд надежнее машинного? Мне всегда казалось машина как раз рутиную работу и предназначена делать и машина лучше может сравнить например написание переменной при ее объявлении и при ее вызове (php к сожалению прощает такие ошибки как разное написание переменной, в итоге при обращении к ней в ней может оказаться совсем не то, что ожидалось)
Т.е. вы считаете данные инструменты никчемные и их вообще надо запретить, все должен делать человек?
И да, кто запрещает использовать человеческий труд? Здесь описаны инструменты которые ПОМОГАЮТ проводить code review, но итог и процесс зависит только от человека.
Из какой, подскажите? Цель вроде одна и та же.
Разве это не относится к области code review? Если нет, буду благодарен если поясните его смысл, спасибо!
Спасибо!
2. Когда производишь компиляцию Java кода, то ты преобразуешь код программы в байт-код, при этом проверяются типы дынных и корректность кода. На JVM поступает байт-код но не машинный (бинарный) код!
3. PHP так же при старте скрипта вначале компилируется программный код в байт-код и в ZVM так же поступает байт-код, точно так же как и на Java.
4. До версии 7.1 (могу ошибаться, поправьте если не прав с версией) при компиляции в байт-код оптимизации не происходило, сейчас же оптимизация проводится компилятором байт-кода, который никуда не денется по определению!
5. OPcache — простыми словами, это хранилище раннее откомпилированного байт-кода на PHP. Вот как вы думаете, почему при включенном OPcache если меняешь код, то изменения не применяются сразу и надо перезапускать php-fpm (если работаете с его использованием)
По компиляции вывод — принцип работы Java и PHP одинаковый, выигрывает тот, кто лучше производит оптимизаци.
Преимущества Java на данный момент:
1. JIT компилятор
2. Процесс сидит в памяти и не требуется повторной инициализации ресурсов (подключений к БД и т.п.)
Что ждет PHP:
1. JIT компилятор при использовании которого, по предварительным тестам, производительность PHP сравнима с производительностью С.
2. Уже есть сервера на PHP, самый производительный это Swoole (только не забывайте, писать код уже надо не как вы обычно это делаете на PHP)
3. Есть статические анализаторы которые проверяют все ваши типы данных и корректность кода, точно так же как и у компилируемых языков. Но это уже отдельная тема.
по данным компании NewHR, в июне 2019 года средняя зарплата PHP-программиста уровня middle в Москве составила 160–180 тыс. рублей. Senior’ы зарабатывают в среднем 180–240 тыс. рублей. Зарплата team lead’а составляет от 240 тыс. рублей.
По хорошему все языки приблизительно в одном русле, плюс — минус, Scala наверное только выделяется.
PS: в DevOps вообще надо идти.
Хотя гавн-код можно писать и в Java (например), уверяю Вас.
JS (прототипное ООП) так там вообще бардак еще творится, классы например поддерживаются начиная с ES6, как написать сложное приложение в более ранних стандартах без «лапшы» или кастылей, даже не знаю, может кастыль под названием Buble использовать?
Phyton — мало знаком с данным языком, брат на нем пишет и он ему нравится, язык сейчас конечно популярен, но если посмотрите бэнчмарки которые предоставил ниже, то он проигрывает PHP.
Другой вопрос в том, что знание и опыт и Java и NodeJS очень помогло мне в жизни, без данного опыта думаю было бы сложновато, хотя сейчас очень много литературы стало доступно по написанию хорошего кода вне зависимости от языка программирования.
По поводу ЗП — очень скользкая тема, даже боюсь ее трогать.
Не знаю, «чуйка» наверное, что пока отказываться от PHP не стоит, но развиваться, изучать раличные подходы в программировании надо всегда! Знать основы, как что работает так же надо. Почему специалисты PHP часто ценятся не высоко, многие просто даже не знают что такое стек, что такое очередь, хэш таблицы считают что это просто массивы PHP, но это больше в силу того, что цена входа низкая.
Ну а люди, кто развивает PHP, явно не глупые!!! У меня сложилось такое впечатление, что они владеют другими языками и в PHP стараются взять только лучшее, избегая ошибок других языков.
github.com/the-benchmarker/web-frameworks
Со слов докладчика, Swoole бьет и NodeJS и Golang.
А что будет когда PHP 8 выйдет (разработчики swoole рекомендуют использовать чем новее версия PHP, тем лучше)!? При этом разработчики swoole позиционируют себя как пришли они надолго и всерьез, что у них сейчас работает стабильная команда разработчиков.
Так же есть фреймворк swoft у которого под капотом swoole, а спереди стоит сервер на Golang у которого время отклика лучшее. Так же у swoft уже есть реализованный пулл коннектов к БД (для долго живущего приложения это очень важно!), есть своя ORM. Swoole (соответственно и Swoft) tcp подключение могут обрабатывать и WebSocket подключение обрабатывать. Так же coroutines есть с каналами (как у Golang), плохо развито на данный момент, но ведь это только начало.
Вот и заставляет задуматься, бросать этот язык или нет. Честно, я в замешательстве, ведь сейчас так много говорят о phyton, nodejs, scala, java, haskell и т.п.! Помогите!!!
Планируется обсудить вопрос «Как и кем формируется рынок PHP-разработки, кто по факту решает, на чем писать и переписывать проекты.», думаю он во многом прояснит ситуацию.
PHP vs Java в web:
Java держит ресурсы в памяти, PHP при каждом обращении создает новое подключение к ресурсу (к БД) — так кто держит ресурсы в памяти у Java? А держат их сервера приложений типа JBos, WildFly, WebSphere, и даже пулы коннектов к БД создаются в них. У Spring Boot под капотом Tomcat. Так на PHP сейчас есть Swoole, Workerman и т.д. и т.п. Ну а если самому захотелось открыть web socket, так PHP и такую возможность дает. Вот для чего Java или Scala подходят, это написание полноценных приложений типа БД, брокера очередей и т.п., для этого PHP не приспособлен конечно. Основная проблема у Java и Scala, как впрочем и для других языков, если хочешь качественный код, то нужен хороший/дорогой специалист, а гавн-кода и на этих языках хватает, вы уж поверьте.
PHP vs NodeJS в web:
NodeJS — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код). Это вообще не язык программирования, а кастыль транслирующий JS в машинный код. На моей прошлой работе решили попробывать NodeJS вместо PHP, так плеваться потом начали, даже при использовании async/await система все равно не справлялась с нагрузкой, пользователи подвисали на достаточно долгое время прежде чем получить результаты работы, элементарно залогиниться в системе долго не могли (например).
PHP vs Rust:
Rust это вообще системный язык программирования, как их можно сравнивать то!?
PHP vs Go:
Простые сервисы писать на Go однозначно проще, но сложную логику как на нем писать не преставляю, в моем понимании если надо взять запрос и тут же выплюнуть ответ Go лучшее решение. Если не прав, пожскажите в чем, Спасибо!
Какие сделал для себя вывыоды, PHP удобен для:
1. Как связующее звено между различными системами, для организации инфраструктуры компании. Позволяет выбирать лучшие решения и пользоваться ими, а если решили использовать что то другое, то незаметно для пользователей переключиться на него.
2. Возможна организация сложной логики работы с данными. Т.е. получили данные, провели их анализ и приняли решения. Конечно и другие языки на это способны, но PHP в некоторых случаях удобнее.
3. Быстрая организация инфраструктуры проекта. Например за неделю до Нового Года менеджеру стукнуло провести необычную Новогоднюю рекламную акцию, PHP для этого на мой взгляд подходит лучше чем Java, NodeJS, Rust или даже Golang.
Понимаю, первый опыт хабра, решил поделиться, пришел к тому, что статьи должны выглядеть по другому, конкретики больше, ьелее четкая терминология и т.п.
Богом всевышним, кем я могу себя еще считать то!
Это совсем совсем о другом.
Такое ощущение, что мы говорим с вами на различных языках о разных вещах, думаю стоит остановиться. В любом случае такие беседы иногда полезны, но надо знать меру и когда остановиться.
Спасибо конечно.
По хорошему об этом речь и идет.
По хорошему нично ничему не противоречит, поэтому и привел в пример ошибку №11 «Строгое следование правилам». Джун пишет все в контроллерах, мидл пишет все на интерфейсах, сеньер знает где можно написать код в контроллере, а где и как использовать интерфейсы (не мои слова).