Дискриминация профессиональная — потому, что подавляющее большинство программистов на php имеют низкую квалификацию. Дискриминация по оплате — потому, что большиство задач стоящих перед программистами на php не требуют высокой квалификации для решения.
Высококвалифицированных программистов никто не будет упрекать в том, что они используют php, недостатки которого им самим хорошо известны.
Я стараюсь перечислить плюсы, которые отличают php от других решений. Большое количество хороших фреймворков к таковым не принадлежит ибо характерно не только для php.
Для java есть play framework, есть Spring который на первый взгляд ну очень поход на laravel, только чутка поудобнее, для scala есть play framework2. Для go названий не помню, но там тоже есть.
Что есть на php, чего нет на других языках это Wordpress :).
Судя по тому, что пишет SamDark он немного отпустил руку с пульса. :)
Коннект по сравнению со всем остальным это копейки обычно, опять же непонятно что вы такое делали?
Установка соединения это вечность. Если по запросу надо только вернуть небольшой кусок данных, а это характерно для REST API — большая часть времени будет затрачена именно на установку соединения.
Если проект пишут неопытные разработчики, то наверное так и есть. Но такие с трафиком в любом случае будут иметь сложности. А если разработчики понимают, что делают, то у джавы есть огромное количество проверенных методов распараллеливания кода. По принципу делай раз, делай два, делай три.
Большой выбор серьёзных и развивающихся фреймворков есть в java, ruby, python, go, c#, scala. Пара веб фреймворков есть даже для С++. Это не отличает php от всего остального.
Ваша правда, если мы уж затронули тему веб мордочек, то джава тут явно не на первом месте :)
У джавы тут все великолепно. Но часто получается так, что веб пилят те же программисты, что и всё остальное. У них громадный опыт программирования в их области и практически никакого в веб. Результат — соответствующий.
Ага вот, поэтому появляется что-то вроде scala, которая как java, но не совсем.
Которая как джава, но не совсем это groovy. scala это совсем не как джава, но исполняемая в джава машине.
Почему-то никто не плодит всяких «улучшенных пхп»
В основном потому, что это технически сложно. Сделать новый язык, который будет исполняться в джава манине —
задача отностительно простая. Автоматом этот язык будет иметь доступ к джава коду.
Поэтому таких языков много.
Ну и есть ещё одна причина. Когда java программист уставал от джавы у него не было альтернатив. Так и
появились эти языки. У программиста на php альтернатив море — начиная от ruby и кончая Go. Для перехода с
php ему не надо ничего, кроме желания.
Это т.е. несколько хттп запросов к пхп и конекшен один? А зачем так?
Чтобы не поднимать новый коннекшн на каждый запрос.
Берем тогда phpDaemon, производительность у него на уровне nodeJS. Если именно ресурсы как данные, то apc есть.
Вот я и говорю, удобно это не сделаешь. Только приблудами всякими.
Сыплете терминами всякими, прям как гуманитарий какой.
Эти термины знает каждый программист. Кроме тех, конечно, которые используют языки не поддерживающие многопоточность.
Чтобы раскрыть что такое многопоточность и зачем она нужна нужно написать целую книгу и не одну.
php многопоточность, увы не поддреживает.
На счет же всяческих указателей компилятору что оптимизировать что нет, тут конечно же нет.
volatile нужен не для оптимизации, а чтобы прорамма вообще работала.
Ну да, правда есть такой огромный шанс, что когда его на java напишут он уже нафиг никому не нужен будет.
Всё, что делается на php быстро на джаве делается примерно с той же скоростью. То, что на php делать долго, на джаве, как правило делается быстрее.
С пхп все несколько веселее, прототип — за месяц на коленке, тут главное опыт иметь и чтот-то вроде архитектуры придумать. Далее можно тупо кусками тяжелые моменты запиливать, например, демонами на с++.
На джаве примерно так же, только можно не запиливать демоны.
На больших данных и тяжелых манипуляциях с ними — с++ джаву сделает только в путь.
Вы про то, что нужно указывать тип переменной? Да, есть такой косяк. Во многих языках его потепенно устраняют автоматическим выводом типа.
Но, в отличие от доллара в php, тип в java надо указать только при объявлении, а не при каждом использовании. И, в отличие от доллара в php, польза от статической типизации огромна и неоценима.
Ну, если ты не помнишь первых букв названия переменной, то наверное да :). Но вообще современные IDE думаю способны выдать список переменных, доступных в скоупе.
С чего хоть вы взяли, что в PHP низкий порог входа?
Очень много простых задач, для решения которых язык почти не надо знать. Типа добавить текущую дату в какую-нибудь талицу. И за это уже заплатят деньги.
PHP — сложный язык. Реально сложный.
Да, это так. И это ужасно. Сложность — для языка программирования не достоинство.
И хорошо писать на нем не легче, чем на Java, например.
Да, хорошо писать на Java значительно легче. Хотя экосистема Php в последнее время во многом копирует экосистему java.
Перед каждой переменной нужно набрать символ, для набора которого надо зажать шифт. Кто-то будет спорить с тем, что это неудобно и глупо? Кто-то скажет, что это даёт хоть какие-то преимущества?
Перед каждой переменной нужно ставить дополнительный символ, которы набирается с шифтом. Это раздражает.
Есть удобный механизм для хранения разделяемых ресурсов в памяти? Чтобы, например, каждый запрос использовал один и тот де коннекшн к БД? Когда я интересовался вопросом, для этого нужно было использовать отдельный сервер. В языке для этого ничего не было.
Есть поддержка многопоточности? Прямо concurrency? Если это так, то язык за последние 2 месяца сделал гигантский прорыв. Можно снипет, как создать 2 потока, которые имеют доступ к разделяемой переменной? Как сделать критическую секцию? Есть ли модификатор volatile?
Если нужна высокая производительность то тогда не php надо бросать, а учить с++ и писать частично на нем именно те части, которые требуют высокой производительности, java тут будет не полноценным выходом.
Всё зависит от требуемой производительности. И наличия легаси кода. С легаси кодом — действительно легче переписывать куски. Если проект новый, то java (дажа java) даст рост производительности в разы.
выше написали про php 7, но в целом никто не мешает запилить например ассёрты уже сейчас.
Закат солнца вручную? Да, приходится иногда делать. Но лучше, когда язык делает за тебя.
* Нужна выская производительность.
* Нужна поддержка многопоточности.
* Нужен удобный механизм хранения разделяемых ресурсов в оперативной памяти.
* Хочется исключить ошибки, которые можно исключить системой статической типизации.
* Когда достала необходимость ставить доллары перед каждой переменной.
Высококвалифицированных программистов никто не будет упрекать в том, что они используют php, недостатки которого им самим хорошо известны.
Для java есть play framework, есть Spring который на первый взгляд ну очень поход на laravel, только чутка поудобнее, для scala есть play framework2. Для go названий не помню, но там тоже есть.
Что есть на php, чего нет на других языках это Wordpress :).
Судя по тому, что пишет SamDark он немного отпустил руку с пульса. :)
Установка соединения это вечность. Если по запросу надо только вернуть небольшой кусок данных, а это характерно для REST API — большая часть времени будет затрачена именно на установку соединения.
У джавы тут все великолепно. Но часто получается так, что веб пилят те же программисты, что и всё остальное. У них громадный опыт программирования в их области и практически никакого в веб. Результат — соответствующий.
Которая как джава, но не совсем это groovy. scala это совсем не как джава, но исполняемая в джава машине.
В основном потому, что это технически сложно. Сделать новый язык, который будет исполняться в джава манине —
задача отностительно простая. Автоматом этот язык будет иметь доступ к джава коду.
Поэтому таких языков много.
Ну и есть ещё одна причина. Когда java программист уставал от джавы у него не было альтернатив. Так и
появились эти языки. У программиста на php альтернатив море — начиная от ruby и кончая Go. Для перехода с
php ему не надо ничего, кроме желания.
Чтобы не поднимать новый коннекшн на каждый запрос.
Вот я и говорю, удобно это не сделаешь. Только приблудами всякими.
Эти термины знает каждый программист. Кроме тех, конечно, которые используют языки не поддерживающие многопоточность.
Чтобы раскрыть что такое многопоточность и зачем она нужна нужно написать целую книгу и не одну.
php многопоточность, увы не поддреживает.
volatile нужен не для оптимизации, а чтобы прорамма вообще работала.
Всё, что делается на php быстро на джаве делается примерно с той же скоростью. То, что на php делать долго, на джаве, как правило делается быстрее.
На джаве примерно так же, только можно не запиливать демоны.
Большие данные это зачастую Hadoop и Spark.
Но, в отличие от доллара в php, тип в java надо указать только при объявлении, а не при каждом использовании. И, в отличие от доллара в php, польза от статической типизации огромна и неоценима.
Очень много простых задач, для решения которых язык почти не надо знать. Типа добавить текущую дату в какую-нибудь талицу. И за это уже заплатят деньги.
Да, это так. И это ужасно. Сложность — для языка программирования не достоинство.
Да, хорошо писать на Java значительно легче. Хотя экосистема Php в последнее время во многом копирует экосистему java.
Есть удобный механизм для хранения разделяемых ресурсов в памяти? Чтобы, например, каждый запрос использовал один и тот де коннекшн к БД? Когда я интересовался вопросом, для этого нужно было использовать отдельный сервер. В языке для этого ничего не было.
Есть поддержка многопоточности? Прямо concurrency? Если это так, то язык за последние 2 месяца сделал гигантский прорыв. Можно снипет, как создать 2 потока, которые имеют доступ к разделяемой переменной? Как сделать критическую секцию? Есть ли модификатор volatile?
Всё зависит от требуемой производительности. И наличия легаси кода. С легаси кодом — действительно легче переписывать куски. Если проект новый, то java (дажа java) даст рост производительности в разы.
Закат солнца вручную? Да, приходится иногда делать. Но лучше, когда язык делает за тебя.
Часто используемая технология ограничивает производительность и если производительность действительно нужна — надо менять технологию.
Нету поддержки concurrency в языке.
Развивается язык. Это не может не радовать. Проверка типов при компиляции или в рантайме произходит?
* Нужна выская производительность.
* Нужна поддержка многопоточности.
* Нужен удобный механизм хранения разделяемых ресурсов в оперативной памяти.
* Хочется исключить ошибки, которые можно исключить системой статической типизации.
* Когда достала необходимость ставить доллары перед каждой переменной.