LINUX.ORG.RU

Почему PHP хают, но всё равно его используют?

 , ,


1

4

Почему все PHP хают, но всё равно его используют? Советуют учить python, а на деле в вакансиях всегда требуют PHP. Если человек немного подучил питон и джанго. Всё равно же он никому не нужен, если у него нету за плечами 2-3 лет опыта. И всегда в питон вакансиях требуют синьора или мидла. А в PHP норм, даже можно без опыта взять. Так не выгодно получается учить питон. Речь про веб.

Deleted

Последнее исправление: Deleted (всего исправлений: 2)

Ответ на: комментарий от arturianec100

Пхп же (и руби, и питон, и даже джава с дотнетом в меньшей степени) всего лишь дёргают готовый функционал по апи. И покрывает тестами. В этом суть скриптухи.

И что с того? Давайте херачить все в машинных кодах, а то как-так будем удобные инструменты использовать…

rumgot ★★★★★
()
Ответ на: комментарий от arturianec100

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

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

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от dimuska139

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

arturianec100
()
Ответ на: комментарий от rumgot

Суть не в том, факте, что используется. Самая мякотка в том объёме и сложности логики, которая реализована в других ЯП и внешних языках. Асм в сишке - очень маленькие эффективные числодробилки внутри функций. Бд, mq… в пхп - большие проекты на миллионы строк, решающие объёмные задачи.

И не надо бросаться в крайности, надо различать «переписали perfomance critical части на си» и «всю логику дёргает через ffi/rest api».

arturianec100
()
Ответ на: комментарий от rumgot

Что с пыхой, что без неё почти вся сложная логика пишется на серьёзных языках. Если осилить, то С++ позволяет очень быстро и комфортно решать практические задачи. Правда мало кто действительно осилит его кривую обучения. И при нормальном проектировании, сроках и декомпозиции всё апи так инкапсулировано, что новый джун может не знать лоулевел вещей и не прострелить себе ногу при использовании. Но таких способных людей действительно мало и заказчики поставят себя в неудобные условия, если выберут исполнителей на С++.

Пруф выразительности С++ - любой код царя, который он выложил в открытый доступ. Простое хайлевел апи - это свойство библиотеки/фреймворка, а не языка.

arturianec100
()

Почему все PHP хают, но всё равно его используют?

почему винду все хают, но всё равно используют?
почему раст и хаскел все хвалят, но не используют, судя по вакансиям?

anonymous
()
Ответ на: комментарий от FilosofeM

Доля PHP в Web - 79%. Доля Python - 1.3%.

прям как винда и линукс на десктопе

anonymous
()
Ответ на: комментарий от anonymous

«Есть два типа языков программирования — те, которые все ругают, и те, на которых никто не пишет» (с)

anonymous
()
Ответ на: комментарий от Deleted

Когда можно взять простое готовое решение - пхп удобнее. Но когда очень суровые требования а-ля амазон-ебэй-алиэкспресс - приходится всё равно делать своё решение, где ключевая бизнес-логика на серьёзном ЯП. И это уже не php vs python, а c vs c++ vs rust vs go. Хотя царь топит за «только С/С++». Уже другая весовая категория. Хотя казалось бы – интернет-магазин… Да, таких проектов единицы на весь мир, пилятся корпорациями, а не на аутсорсе.

arturianec100
()

Тут про Python темы создают каждую неделю, с попыткой скатить всё в холивар. Помню, году так в 2014 меня здесь на лоре убеждали, что питон не нужен и всякие Джанги умрут, что они не дотягивают до скорости php фреймворков и прочую чепухню городили, а щас темы про питон плодят как кошки рожают (это я про популярность питона, походу, народ с СНГ не вдупляет, почему же Питон так популярен??)

menangen ★★★★★
()
Ответ на: комментарий от arturianec100

У тебя сумбур какой-то. Не важно, как написаны либы для языка, да и вообще сам язык. Это все не важно! Главное то, что язык PHP отлично решает задачи из своей ниши, те задачи, для которых его готовили. Его и не задумывали для написания библиотек и прочего. А ты рассуждаешь как крановщик, который говорит, что на кране неудобно в магазин ездить.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от anonymous

На SAAS контентом наполняют продавцы/управляющие.А допиливают часто сами владельцы сервиса за дополнительнуую денюшку

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

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

redixin ★★★★
()
Ответ на: комментарий от redixin

а кодеры на других языках сразу опытными рождаются?

anonymous
()
Ответ на: комментарий от rumgot

Главное то, что язык PHP отлично решает задачи из своей ниши

В том-то и дело, что это не заслуга самого языка. Если бы не было ни пхп, ни питона, ни жс, ни руби, эти же задачи этими же библиотеками также легко решали бы на С++. Если бы невозможно было бы выделить подмножество «С++ для даунов», его бы никогда не преподавали в универах. С этими же библиотеками не парились бы про лоулевел и прочие указатели.

Если по аналогии с кранами - на С++ можно и «грузы тягать», и «в магазин ездить», и многое другое, причём удобно и просто. Главное взять подходящий «автомобиль» (либы, фреймворки), а ЯП - «завод автомобилей».

arturianec100
()
Ответ на: комментарий от WitcherGeralt

сходу начал фигачить

Тяпляп и в продакшен. Сайт с пару кнопок, со стандартными компонентами. Без функциональных и юнит тестов, без кеширования, без прав доступа, без перевода на разные языки.

sekreti-gollivuda
()
Последнее исправление: sekreti-gollivuda (всего исправлений: 2)
Ответ на: комментарий от sekreti-gollivuda

Он личный проект писал, но далеко не примитивный, причём с профилями, плюс какой-то внутренрий инструмент для поддержки, никакого «прода» там не было.

И ты в любом случае себя в лужу садишь. То, что ты перечислил — это по факту и есть большая часть сайтиков на пхп — говённые одностраничники, «лендинги» так называемые.

WitcherGeralt ★★
()
Ответ на: комментарий от arturianec100

Если бы не было ни пхп, ни питона, ни жс, ни руби, эти же задачи этими же библиотеками также легко решали бы на С++

Дядя ку-ку. Я бы еще понял джаву или шарпы. Но плюсы.. Замучаешься ошибки управления памятью из своего сайта-визитки выковыривать

Deleted
()
Ответ на: комментарий от Deleted

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

Это я для кого писал? В высокоуровневой прикладухе весь этот лоулевел нормально прячется «под капот». А все эти «ошибки управления памятью» возникают в системщине - лоулевеле. Именно поэтому раст позиционируют как «лоулевел волшебная таблетка» - иначе всем было бы насрать на его штучки про безопасную память, ведь в самом прикладном хайлевеле безопасная работа с памятью - давно не проблема.

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

arturianec100
()

Самая большая моя претензия к пхп — это динамическая типизация. Но то же я могу предъявить и питону. Джаваскрипту — в меньшей степени, потому что под него можно пилить на тайпскрипте. Нынче так получается, что лучший стек для веба — от мелкомягких: это либо тайпскрипт под mean, либо шарпик под mvc/core. Есть ещё джава, но с ней не доводилось работать.

beaver
()
Ответ на: комментарий от arturianec100

В том-то и дело, что это не заслуга самого языка.

А ты не воспринимай язык как только синтаксис. Ты воспринтмай его вместе с основными либами и прочим.

rumgot ★★★★★
()
Последнее исправление: rumgot (всего исправлений: 1)
Ответ на: комментарий от dimuska139

Тайпхинтинг в пхп частично решает проблему типизации

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

beaver
()
Ответ на: комментарий от arturianec100

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

«Бегом побежал» писать хайлевел на C++98. Другого C++ у нас для тебя нет в том времени, когда были сделаны все эти CMS. Ну про то, насколько это «нелепая херня» писать дергалку базы и склеивалку текста на C++, пока не будем разжевывать. Может сам догадаешься.

bread
()
Ответ на: комментарий от beaver

Во многом из-за того, что хостинги дают решения «под ключ»: пхп (сразу со всеми либами), муэскуэль, плюс сертификат и бесплатный домен в подарок. Зарегался, за 5 минут залил по фтп папку со своим креативом вперемешку с CMS и сайт работает

Есть хостинги с таким же уровнем «автоматизации» для жавы, шарпа или ноды?

Deleted
()
Последнее исправление: Deleted (всего исправлений: 2)
Ответ на: комментарий от beaver

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

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

dimuska139 ★★
()
Ответ на: комментарий от dimuska139

Тайпхинтинг в них позволяет юзать типизацию опционально

Нет. И рядом не валялся с нормальным статическим ЯП

На той же джаве или гошке какой-нибудь интернет-магаз ты будешь пилить гораздо дольше

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

Куда проще потом отдельные части проекта переписать на go

И поиметь зоопарк ЯП на пустом месте. Иногда даже проще переписать язык, чем свой говнокод (man фейсбук)

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от rumgot

Окей, воспринимаем как экосистему. А когда библиотеки и внешние тулзы (бд, mq…) доступны для 10-20 языков, это заслуга самой предметной области (веба), а не конкретного ЯП? Тогда это умножает на ноль преимущества конкретного ЯП для задачи. И вот - вместо расчудесного ЯП у нас предметная область, где много бесплатных готовых наработок.

arturianec100
()
Ответ на: комментарий от arturianec100

«тебя поимела пропаганда». Ты забываешь, что у тебя, в терминологии раста, unsafe в каждой строке

Deleted
()
Ответ на: комментарий от bread

«Бегом побежал» писать хайлевел на C++98

Та же qt изначально писалась в 90-х - пример хайлевела, да ещё и переносимого. Семантика QObject parent with children сильно упрощает работу с памятью и делает очевидным «кто чем владеет». Да ещё и сигналы-слоты - хайлевел, позволяющий передавать данные между потоками тем, кто ничего не слышал про мьютексы и прочее. На его основе сделали несколько веб-фреймворков (правда непопулярных). Другое дело, что апи там заточено под десктоп, а не веб. Но для С++ жизненно необходимо писать своё хайлевел апи на основе лоулевел апи. Когда на пхп было «из коробки» средне-хай-левел апи.

писать дергалку базы и склеивалку текста

легко и просто на любом мейнстримном ЯП, когда есть готовое для задачи апи.

arturianec100
()
Ответ на: комментарий от Deleted

Показывай, что это за пропаганда. Царь всегда может показать какой тезис из какой пропаганды скопипащен.

Ты забываешь, что у тебя, в терминологии раста, unsafe в каждой строке

Это подмена понятий. Unsafe - свойство конкретного кода, а не всего языка. В том же расте в блоки unsafe заворачивается конкретный код! Описанное растофанатами правило «unsafe под капотом, наружу торчит safe api» работало в сишке ещё до создания раста. Любая сишная библиотека для питона, пыхи и прочего «высовывает наружу» только safe api. В противном случае любой питоний код а-ля json.loads(tratata) был бы unsafe и приводил бы к сегфолтам, а не трейсбекам в случае ошибок, ведь вся стандартная библиотека питона написана на си и вполне себе safe.

Просто там на уровне документации, а не синтаксиса описано «unsafe implementation, safe api».

Короче, если код unsafe - он по-умолчанию НЕ является удобным хайлевелом. Стандартные библиотеки питона, пыхи и прочего - safe C.

arturianec100
()
Ответ на: комментарий от arturianec100

Показывай, что это за пропаганда

Царская пропаганда

Unsafe - свойство конкретного кода, а не всего языка

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

Deleted
()
Ответ на: комментарий от Deleted

Нет. И рядом не валялся с нормальным статическим ЯП

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

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

Их искать и не надо. Эти детские (и не только детские) баги выявляются на этапе написания юнит-тестов, которые нужны, к слову, и в НЕ скриптухе точно так же.

И поиметь зоопарк ЯП на пустом месте

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

dimuska139 ★★
()
Последнее исправление: dimuska139 (всего исправлений: 1)
Ответ на: комментарий от arturianec100

ведь вся стандартная библиотека питона написана на си и вполне себе safe

Тысячами энтузиастов. Вся покрыта тестами. А разрабу выдали презерваитив в виде GC и школоскрипта. В нем школоразраб защищен от сишного кода

А хайлевел-презерватив в плюсах не защитит гребца, плывущего в озере сп си

Deleted
()
Ответ на: комментарий от dimuska139

Динамической всегда была скриптуха, а «решение бизнес задач» на ней просто стечение обстоятельств и в общем-то недоразумение.

WitcherGeralt ★★
()
Ответ на: комментарий от dimuska139

Захотел - заюзал тайпхинтинг

Хинты != типизация. Они жалкая попытка скриптухи запрыгнуть в уходящий поезд

Эти детские (и не только детские) баги выявляются на этапе написания юнит-тестов

Тесты опциональны, в отличии от типов. Тесты это тоже код и он тоже подвержен ошибкам. Проверки типов в тестах, в отличии от аннотаций, не дают никакой информации о коде компилеру и IDE. Сизифов труд

Это совершенно нормальная практика, когда в проекте «зоопарк» ЯП

Нет

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

Так потому что как раз на ней решать бизнес-задачи проще, быстрее и дешевле

dimuska139 ★★
()
Ответ на: комментарий от Deleted

Царская пропаганда

Нет. Про безопасность хайлевел апи я дошёл сам, анализируя питон, его std, сишку «под капотом», поведение питона и сишки при ошибках времени выполнения. Да и вообще - если бы хайлевел апи не было поголовно safe (или не пыталось бы изо всех сил приблизиться), то проблема unsafe и памяти задолбала бы уже всех питонистов, пхпшников, джаваскриптеров и не только. Здесь именно, что мой анализ «слоёв скриптухи».

наделаешь всех ошибок, которых только позволит сделать язык

Хватит выдавать мощь и гибкость языка за недостаток. При использовании хайлевел апи всегда ограничиваешься определённым подмножеством ЯП, и вопрос лишь в гарантиях безопасности этих апи и этого подмножества. Та же инкапсуляция скрывает unsafe от клиентского кода во всех ЯП! Точнее должна.

arturianec100
()
Ответ на: комментарий от Deleted

В нем школоразраб защищен от сишного кода

Защищён от лоулевел кода. Перенос свойств конкретного кода на си на весь си - манипуляция.

А хайлевел-презерватив в плюсах не защитит гребца, плывущего в озере си

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

Вся покрыта тестами

Там, где у сишного кода есть тесты, расту тоже нужны такие же тесты. Если помнить, что ошибки памяти - не единственный вид ошибок.

arturianec100
()
Ответ на: комментарий от Deleted

Тесты это тоже код и он тоже подвержен ошибкам
Проверки типов в тестах

Ээ, тесты в сабже не проверяют типы. Это делает интерпретатор.

wxw ★★★★★
()
Ответ на: комментарий от arturianec100

Та же qt изначально писалась в 90-х - пример хайлевела, да ещё и переносимого.

Ага, только там пришлось запилить moc. Так что Qt это уже надстройка над C++, и все равно хайлевел не очень-то высокий, зато там высокий порог вхождения в отличие от любого языка с GC.

bread
()
Ответ на: комментарий от arturianec100

Может напишешь царю блог на C++, если все так легко и просто. Разрешаю заюзать самый распоследний стандарт и все фреймворки, которые найдешь.

bread
()
Ответ на: комментарий от bread

Любой код на С++, который я напишу, царь загнобит так, как будто я евангелист раста. А вообще у меня есть планы написать серьёзный сайт с бизнес-логикой на С++ и расте и сравнить. Но очень не скоро.

arturianec100
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.