LINUX.ORG.RU
решено ФорумTalks

Почему php считается плохим языком программирования?


1

1

Хоть я только начинаю на нем писать, но на мой взгляд он довольно таки хорош.

Плюсы:

- Легок в изучении

- Обширная документация, разжеванные примеры

- Хостинг дешевле

- Процесс кодинга подобен процессу творчества

- Динамическая типизация

- eval()

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



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

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

Потому что всё, что на нем не пишется, скатывается в говно стремительным домкратом

Ох блен скотино ты безграмотное и урод безъязыкий, школота недоучившаяся!!! Запомни, мать твою за ногу:

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

Поэтому ради всего святого - выучи, &^%$*&^$#, русскей езыг!!!

no-dashi ★★★★★
()
Ответ на: комментарий от winddos

целый пост ненужностей собран вместе.

так такие вещи как ООП, type coercion, неймспейсы итд итп. Я так же не упомянул хитрые проблемы с указателями (референсами?), кривой встроенной библиотеки (просто неудобная местами т.к. в большинстве случаев либы у пых-пыха процедурно-ориентированные), отсутствие эксепшенов (даже если они там и есть, главное что стандартная либа их не поддерживает => польза от них околонулевая). Это ахренеть какие минусы на большом проекте.

у совсем упоротых говнокодеров.

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

А потом попробуй без знания руби разобраться, почему оно не работает, или пофиксить.

такое у меня тоже было, алгоритм решения проблем тот же что и с пыхом (гугл+доки). Я успел натрахался с gem и рельсами. И с modperl. Кстати, у питона сообщения об ошибках получше написаны. Без всяких упоротых комментов типа «unexpected T_VARIABLE». Что за T_VARIABLE? (знаю, гугл найдёт ответ)

В общем, не вижу ни одного довода в пользу пыха. Вообще.

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

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

так такие вещи как ООП, type coercion, неймспейсы итд итп. Я так же не упомянул хитрые проблемы с указателями (референсами?), кривой встроенной библиотеки (просто неудобная местами т.к. в большинстве случаев либы у пых-пыха процедурно-ориентированные), отсутствие эксепшенов (даже если они там и есть, главное что стандартная либа их не поддерживает => польза от них околонулевая).

Это феерический бред.

ООП - вполне уже достойное, неймспейсы - есть, хитрые проблемы с референсами - это какие? вместо «кривой встроенной библиотеки» можно юзать SPL. И что значит «стандартная либа не поддерживает эксепшены»? Может пора бы уже с 4-ки обновиться? Для нее апдейтов больше не выпускают

У пыха есть нормальные инструменты, но для совместимости с кучей говна, которую на нем успели понаписать, приходится тянуть и весь этот мусор

ЗЫ Контакт юзает пых как шаблонизатор, не более. Хотя изначально весь на нем был написан

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

Ви так говорите, как будто Дуров не спиз^W^W писал тентакль лично.

Lonli-Lokli ★★
()
Ответ на: комментарий от true_admin

Это ахренеть какие минусы на большом проекте.

Но 60% проектов находятся между «большим» и «сайт визитка», и эту нишу php идеально покрывает.

В общем, не вижу ни одного довода в пользу пыха. Вообще.

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

Естественно это является и главным минусом php, который позволяет отстрелить себе любые конечности.

Просто на питоне получится стройнее.

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

В итоге получается, что для кодера «правильные» языки идеальны, а для зарабатывания денег подходят плохо.
Ну а php говнокодеры и даже средние стоят 10 центов за дюжину.

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

Лучшая оценка - количество пользователей.

Лучшая голова - жопа.

Lonli-Lokli ★★
()
Ответ на: комментарий от PolarFox

В java нет перегрузки операторов. С одной стороны недостаток, с другой может и плюс...

Поэтому оператор присваивания (=) - это ВСЕГДА присваивание ссылки, и со сравнением (==) также. Это ВСЕГДА сравнение ссылок.

В тех же плюсах легко переопределить что =, что == =) в путоне, кстати, тоже. Иногда это создаёт неочевидный код.

BattleCoder ★★★★★
()

А ещё в пыхе нет этих долбаных отступов, что невозбранно радует некоторые категории населения.

Lonli-Lokli ★★
()
Ответ на: комментарий от boombick

И что значит «стандартная либа не поддерживает эксепшены»?

взял первую попавшуюся функцию: socket_select(). Ну и где там про эксепшены? Или socket_connect(). А ещё фееричная функция socket_last_error(). Это же надо было додуматься.

неймспейсы - есть

которые ручками надо добавлять, да? Неудобненько.

хитрые проблемы с референсами - это какие?

феерические: http://programmersforum.ru/showthread.php?t=183723

У пыха есть нормальные инструменты

а смысл? Остальные косяки так и будут. Я не говорю что им нельзя пользоваться, я утверждаю что питон лучше. В том числе и для веба. А то что я называю пых нехорошим словом это моя личная оценка как ЯП. Кол-во косяков превышает мой threshold. А ещё помню у них были эпичные баги которые они долго не фиксили. Даже при том что за них проголосовало много народа. Правда, давно было, вряд ли щас это будет весомый аргумент.

Про ооп убедил, нехай будет. А про spl... не знаю что это, поверю на слово.

true_admin ★★★★★
()

PHP - нормальный ЯП, который справляется со своими задачами. Обкидывать его какахами может только очень отсталый от реальности человек. Да он не идеален, идеального ЯП вобще нет в природе, разве что C почти подходит, но сейчас не об этом. Искать истину, искать то, что правильно и рулит можно очень - очень долго. Взять инструмент и начать обучаться, мыслить, создавать не слушая «великие умы» - это залог вероятного успеха. «Великие умы», которые срут на PHP, кто они? Я не слышал их имен, но я слышал имена Марка Цукерберга и Павла Дурова, их соц. сети написаны на PHP.

Ты, ТС, несомненно прав насчет простых правил, в PHP их три, лично для меня: 1) думай 2) юзай последние достижения (SPL, Namespaces, phar) 3) мысли алтернативно(прим.: обход массива намного дешевле делать через коллбэк)

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

Да. Именно так.

Для числовых классов (Integer во всяком случае точно, насчёт остальных не ручаюсь, не помню просто), и для строк String точно также. попробуйте создать строку (желательно покороче) и проверить. Для длинных строк может и не будет работать, не уверен... не знаю.

Но полагаться на такое состояние _НИКОГДА_ не стоит. Поэтому всегда и используют equals =)

Я всё-таки не считаю это минусом языка. Всё-таки плюсом. Ведь в в крестах, например, оператор = и == могут присваивать/сравнивать как классы, так и ссылки, и указатели, и сходу и не сообразишь ;)

а в java это всегда ссылки... и сравнение в чистом виде == применяют только для примитивов (float, int, double, etc... и ссылки сравнивают !=null, например, что тоже, IMHO, не всегда хорошо)

Некоторые «особо продвинутые» java-гуру вместо пустых списков и пустых строк используют null типа ради экономии памяти... что не есть хорошо.

P.S. Извините, что не в тему, в пых-пыхе я слабоват.

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

и эту нишу php идеально покрывает.

питон не хуже, уже проверяли. flask/bottle.py и вперёд. Причём в «пару кликов». Например, при помощи sphinx и других ready-to-use приблуд. Вчера как раз гуглили т.к. сайт щас делаем.

Кодеров которые могут написать стройно, красиво и качественно реально мало

это верно для любого языка.

Т.е огромный плюс php в том, что ты можешь найти фреймворк на свой вкус

но они все будут на пыхе

а не выбирать ровно из 2-3 штук.

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

А все потому что новому мега-крутому кодеру не нравится, как писал его предшественник.

это не зависит от языка. И я тоже всегда за сисадминами переделывал. Зачастую с нуля. Это не сравнить с переписыванием кода с нуля, но всё же. Просто потому что обслуживать загаженную устаревшую end-of-life систему (превращённую шаловливыми ручками в слакварь) в долгосрочной перспективе гораздо сложнее.

Ты смешиваешь понятия. Мы не говорим о поддержки legacy кода и цикле жизни программ (кода). Мы ЯП обсуждаем. В данном случае в контексте веб-программирования. Цена кодеров тоже вопрос из другой области. Это, безусловно, критичные вопросы, но к достоинствам и недостаткам самого ЯП не относятся. Я поэтому и не поднимаю тему того что 99% прогеров php вообще не должны быть подпущены к клавиатуре (правда, для других языков это тоже верно, может только процент слегка поменьше).

true_admin ★★★★★
()

Плюсы:
- Легок в изучении

ок

- Обширная документация, разжеванные примеры

посмотрите что такое «хорошая документация» на примере msdn/javadoc

- Хостинг дешевле

в век облаков стоимость одинаковая или вы все еще хоститесь на шаред серверах?

- Процесс кодинга подобен процессу творчества

от языка не зависит

- Динамическая типизация

минусов у нее больше чем плюсов.

- eval()

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

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

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

питон не хуже, уже проверяли. flask/bottle.py и вперёд. Причём в «пару кликов». Например, при помощи sphinx и других ready-to-use приблуд. Вчера как раз гуглили т.к. сайт щас делаем.

Приведи пожалуйста движок форума, магазина и блога с функционалом уровня wordpress на питоне.
И так, чтобы на развертывание ушло 200-400 баксов (ну некоторый софт платный, увы) и час времени.

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

Выбора будет однозначно меньше.

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

(на всякий случай уточню что себя я тоже отношу к кодерам весьма средней квалификации)

Я тоже кодер не той квалификации дабы спорить о преимуществах ЯП и его функционала.
Мне php с головой хватает, хотя некоторые его баги мешают работать.

В общем меня интересует только эффективность php как инструмента для создания веб проектов и зарабатывания денег.
То что там есть @ и прочая мерзость мне совершенно не важно.

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

Приведи пожалуйста движок форума, магазина и блога с функционалом уровня wordpress на питоне.

Я тебя неправильно понял. Я по этому вопросу я был не прав. Конечно, магазин-то я на питоне найду (http://www.getlfs.com/), но выбора практически нет, это правда. По кодовой базе в некоторых областях типа этой всё плохо.

Выбора будет однозначно меньше.

100 штук этого более чем достаточно. больше просто не нужно.

пых позволяет кодить и оформлять код как мне нравится.

это очень скользкий вопрос. Я осмелюсь на него дать краткий ответ. Вот возьмём питон. У него есть ограничения на форматирования. Однако ещё ни один кодер не ругался что его это не устраивает. Я не имею в виду ламеров у которых опыта 0. Даже perl6 написан на на самом деле «на питоне». Да-да, был я на презентации Ларри Уолла, он смеялся над питоном, а потом открыл кишки своего parrot и там был точь-в-точь питон, только со скобками. Потом открыл какую-то либу для демонстрации крутости perl6 над perl5 и... и снова чистый питон. Я думаю те куски кода вообще 1:1 транслируются :).

Пока есть мешанина из html и кода то без «гибкого» форматирования никак. А при MVC это не проблема. Я согласен что в какиих-то особых случаях это может мешать. Но ооочень редко.

меня интересует только эффективность php как инструмента для создания веб проектов и зарабатывания денег.

вот я и говорю, мы не сам ЯП обсуждаем а можно ли на нём зашибать бабло и на сколько это проблематично. Это совсем другой вопрос :). Ответ очевиден, все на нём только это и делают.

true_admin ★★★★★
()

- Процесс кодинга подобен процессу творчества

Ну да, потом вычитываешь - и думаешь, вот под каким веществами... ?!

segfault ★★★★★
()

Динамическая типизация

Это свойство языка, но в «плюсы» я б ее не спешил записывать. Иногда она только мешает.

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

Низкий порог вхождения = много плохих программистов.

+100500
Еще писать с использованием ООП там - застрелиться!

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

но я слышал имена Марка Цукерберга и Павла Дурова, их соц. сети написаны на PHP

Мракетоидный крэп.

прим.: обход массива намного дешевле делать через коллбэк

Элементарные вещи делаются какой-то черезжопной магией - ЧТД.

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

Ну и где там про эксепшены?

Любую ошибку, кроме фатальных, можно превратить в эксепшн. Черезжопное решеньице, конечно, но вполне себе рабочее. А вот отсутствие finally реально порой обламывает

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

Остальные косяки так и будут

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

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

ЗЫ SPL - Standart PHP Library http://ru.php.net/spl

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

Элементарные вещи делаются какой-то черезжопной магией - ЧТД.

В любом языке элементарные вещи можно сделать черезжопной магией. А можно и не делать :)

boombick ★★★★★
()

- Процесс кодинга подобен процессу творчества

Страшно звучит.

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

Еще писать с использованием ООП там - застрелиться!

А что с ООП там не так? Почему я ещё не застрелился не смотря на ООП головного мозга в течении последних ~18 лет? :)

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

А что с ООП там не так?

Если прозвучит фраза «нет множественного наследования», то я точно свалю из треда :) Я не знаю почему, но мне оооочень часто приводят отсутствие этой сомнительной нужности фичи в качестве примера кривой реализации ОПП в пыхе

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

Вот возьмём питон. У него есть ограничения на форматирования. Однако ещё ни один кодер не ругался что его это не устраивает.

Вот тут — подпишусь :) Структурирование форматированием — заметный плюс Питона. Что интересно, лет, эдак, 20+ назад, в наивной студенческой юности, сам думал написать язык, в котором бы структурирование задавалось форматированием. Но скилла языкостроения тогда не было, а когда появился — я вовсю уже отравился Си/Си++ и Фортом :)

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

Если прозвучит фраза «нет множественного наследования», то я точно свалю из треда :)

Ну, справедливости ради, я на эту ругался совсем-совсем недавно: Как жить без множественного наследования?

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

Я не знаю почему, но мне оооочень часто приводят отсутствие этой сомнительной нужности фичи в качестве примера кривой реализации ОПП в пыхе

Ну, в ту же Java ткни их :)

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

В принципе, множественное наследование можно эмулировать при помощи интерфейсов. Но нафига? :) ИМХО, если всплывает нужность такой фичи, то пришло время пересматривать архитектуру

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

В принципе, множественное наследование можно эмулировать при помощи интерфейсов.

Да нифига. Методы же не наследуются. Да и интерфейсы в PHP — так, для галочки. Чтобы ошибку ловить, если метод какой-то не реализуешь :) Там же связывание на этапе выполнения.

ИМХО, если всплывает нужность такой фичи, то пришло время пересматривать архитектуру

Теперь я с этим полностью согласен :)

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

Да какая разница какой магией, пускай хоть уличной, это работает и это не стандарт, такой обход можно считать «грязным хаком», возможность есть, про существование онной узнают только избранные - извращенцы, что прочли PHP Reference. Соль вся в чем: На PHP разрабатывать удобно и быстро, спецов с более менее перевариваемым скилом кодинга на нем хватает, учитывая повсеместное, многоуровневое кеширование веб - приложений и масштабируемость - я еще долго буду кушать хлебушек на который мне поможет заработать этот слон =). Плохая его репутация - следствие огромной базы говно - кода, но наличие этой базы как бы намекает, что php популярен и востребован.

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

А что с ООП там не так?

Ок, это, конечно, «на вкус и цвет», но:
1. Меня раздражает стрелка вместо точки. Понимаю, что точка уже задействована для другого, но два символа вместо одного для одной из самых популярных конструкций. Кроме того точка используется в большинстве языков! Это fail.
2. Я не понимаю почему в функциях-членах класса при обращения к членам класса нужно писать $this. Ведь в них в основном работа идет с данными класса, редко с глобальными переменными. Избыточность и потеря наглядности.
3. Можно описать отдельно класс, отдельно имплементации функций? Чтобы в более-менее среднем классе понять какие в нем есть функции, нужно пролистать страницы кода и неупустить конец описания класса.
4. Однажды привыкнув к тому, что имя переменной начинается с доллара, в конструкции $obj->v , v никак не воспринимается как переменная, скорее всего как функция которая почему-то без вызова.
5. Когда объект передается функции, переменная-параметр объявляется как MyClass $obj , когда создается новый объект, делается через new . Почему в очень похожих ситуациях принципиально разные конструкции?

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

Меня раздражает стрелка вместо точки

Потрясающий недостаток ООП. Сиплюсплюсники в горе :)

Я не понимаю почему в функциях-членах класса при обращения к членам класса нужно писать $this

Питонисты с self в панике :D

Можно описать отдельно класс, отдельно имплементации функций?

Решается через PHPDoc и нормальную IDE. При чём тут ООП?

Однажды привыкнув к тому, что имя переменной начинается с доллара, в конструкции $obj->v , v никак не воспринимается как переменная

Это ты ещё на Perl не программировал…

скорее всего как функция которая почему-то без вызова

Функция? Без скобок? Кхм.

Когда объект передается функции, переменная-параметр объявляется как MyClass $obj , когда создается новый объект, делается через new . Почему в очень похожих ситуациях

Прости, описание параметров функции и создание нового объекта для тебя «похожие ситуации»? o_O Как же тебя от чего-то, типа Java должно угнетать тогда! :D Ну, или Си++ тот же…

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

JFreeM

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

оно надо только в очень специфических случаях.

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

true_admin

> Кодеров которые могут написать стройно, красиво и качественно реально мало
это верно для любого языка.

кодеров, для которых синтаксис С просто и понятен на порядок больше. Причём у 95% тех, для которых прост и понятен синтаксис пайтона имеют стаж <5 лет.

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

BattleCoder

Некоторые «особо продвинутые» java-гуру вместо пустых списков и пустых строк используют null типа ради экономии памяти... что не есть хорошо.

не знаю как в жабе, но в SQL NULL и пустая строка - две большие разницы. Причём операции сравнения документированы, и дают строго детерминированный результат. В отличие от php.

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

Seraph

«Великие умы», которые срут на PHP, кто они? Я не слышал их имен, но я слышал имена Марка Цукерберга и Павла Дурова, их соц. сети написаны на PHP.

с технической стороны это убогие и кривые сайты. Вспомнив этих г-нов в таком контексте, вы сейчас опустили php ниже плинтуса.

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

Правда? :) Вы, наверное, можете показать прекрасный с технической стороны сайт?

И повторюсь еще раз, в фб и вк php используется как шаблонизатор

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

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

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

Ну не столько аргумент «за» сколько попытка заинтересовать ТСа в глубоком изучении инструмента. В других тредах видел его исходники ибо.

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