LINUX.ORG.RU
ФорумTalks

Мифы о PHP


0

0

Читая ЛОР почему-то встретил тут жёсткую антипатию к PHP, с кучей комплексов (думаю просто Питонщики завидуют популярности)

Так вот, достаточно долго сидя на форуме PHP кодеров я увидел там такие кадры, например:

"ааа, понял. Я просто не знал что ASCII и dec - одно и то же. Спасибо."

Скажу вам что это быдло. Но на PHP пишут достаточно много хороших профессиональных веб-разработчиков. PHP даёт гибкие инструмены для решения кучи задач. Он легок к изучению (его можно выучить за один вечер). Просто из-за того что он лёгкий к изучению на него рвётся писать куча леммингов которые только что изучили Visual Basic и считают себя крутыми кодерами. Это не проблема PHP что он прост.

Фактически PHP - это Java с немного более простым синтаксисом и динамической типизацией. PHP обладает почти всеми возможностями Явы (начиная от рефлекции), а кое где и даже больше.

Давече тут читал вопли одного лемминга на том-же форуме о том что PHP говно, а Руби рулит. Только этот лемминг привести определение ООП несмог. (http://phpclub.ru/talk/showthread.php?s=&threadid=106821 кому интересно)


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

>да ?) значит мне нужно использовать ORM + шаблонизатор + Фреймвок ?) ты эта, сходи почитай про Джангу хотя бы иль Пайлонс ... и сравни их с вот тем, что назвал )

Гы. Django и есть ORM + шаблонизатор = фреймворк :)

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

>просто легче написать с нуля движек, чем этот тянуть

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

...

На Авиабазе форумы до сих пор снаружи выглядят как натуральный punBB. И в БД оно - punBB. Но ворочает этим всем в основном - мой фреймворк.

В одном проекте сейчас также встроился в iPB.

Скажем, описать ORM-класс топика любого типичного форума - это десяток строк. Даже если топик размазан по нескольким таблицам.

KRoN73 ★★★★★
()

мне PHP не нравится тем что

1. в нем нет нормальных регулярных выражений (кастрированная пародия на перл не в счет)

2. в нем большой гимор с опечатками опечатался в имени переменной и оно тебе смолчало и просто тупо подставило вместо переменной пустую строку

и ищешь по программе где ты ее потерял

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

> перекодировка строки в PHP из cp1251 в UTF-8:

> iconv('cp1251', 'UTF-8', $str);

> перекодировка строки в Python:

> str.encode('UTF-8')

В первом случае хоть понятно, что куда и как перекодируется :-P

ip1981 ☆☆
()
Ответ на: комментарий от phasma

> где в похапэ объекты ?) вот даже на таком примитивном уровне ...

Нахрена на ТАКОМ ПРИМИТИВНОМ уровне объекты?

А статические методы - как раз затычка для подобного рода примитивных случаев.

ip1981 ☆☆
()
Ответ на: комментарий от kode

я тебе как пехепешник(на 5 весрсии) со стажем скажу - ооп в пхп - говно. Вот так откровенно и просто. Говно.

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


Type_Num_IntPos
Type_Num_Float
Type_Str_StringNE
Type_Fs_NameFileReadable

etc..

ну и что ты думаешь? а я тебе расскажу: возможность переопределить автоматическое предобразование есть только для преобразования в тип string . То есть у меня вместе со счастьем (не надо в каждом методе проверять

if( intval( $_param ) === false )
throw new Exception( 'parametr - govno' );

) появился и геморойчик: ( сложение целых выглядит так:

$int3 = Type_Num_Int::getByValue( $int1->getValue() + int2->getValue() );

, вместо

$int3 = $int1 + $int2;

, ну это ли не издевательство???? )

Нет возможности переопределить функции с одним и тем же именем но разными параметрами... (через call можно, но там опять же гемор с ручной проверкой параметров, причём столько, так что лучше и не рыпаться, а конструктор нельзя даже через call, но зато можно через предка.. но опять гемор, короче только пути удаления гланд через жопу видны).

да ещё много по мелочи претензий...

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

а детям советую: ну его нафиг. лучше уж ява. Пусть она и тупит своими "защитами", но уж такую элементарщину как определить несколько функций с одним именем но разными параметрами позволяет.

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

>1. в нем нет нормальных регулярных выражений (кастрированная пародия на перл не в счет)

Хм. Функциональный формат записи для тебя «пародия» или ты не в курсе PCRE в PHP?

> 2. в нем большой гимор с опечатками опечатался в имени переменной и оно тебе смолчало и просто тупо подставило вместо переменной пустую строку

Ещё один, не использующий E_NOTICE. А на Perl ты тоже без use strict пишешь? ССЗБ.

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

>если человек утверждает, что мол "язык XYZ - это говно!" причём совершенно не важно какой именно язык

Язык 1С - полное говно!!!

Про остальное промолчу

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

>$int3 = Type_Num_Int::getByValue( $int1->getValue() + int2->getValue() ); > , вместо > $int3 = $int1 + $int2; > , ну это ли не издевательство???? )

...

>чуть подосвобожусь и на руби/питон/форт

Форт явно не для тебя, там всё ещё более запущено, чем в PHP, в Питоне тебя ждёт жестокое разочарование по поводу сложения разных типов без преобразования, так что тебе только Ruby остаётся... Всегда его рекомендую тем, кто с Perl расстаться не может :D

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

> Нахрена на ТАКОМ ПРИМИТИВНОМ уровне объекты?

а нахрена вообще ОО ?)

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

> В первом случае хоть понятно, что куда и как перекодируется :-P

зачем ?) у тебя есть строка, на выходе строка в юникоде )

phasma ★☆
()

<Sonium> someone speak python here?
<lucky> HHHHHSSSSSHSSS
<lucky> SSSSS
<Sonium> the programming language

anonymous
()

Это не мифы, а предрассудки.

anonymous
()

> Фактически PHP - это Java

Ужас, дальше не читал. PHP - интерпретируемый язык, java - платформа.

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

>PHP - интерпретируемый язык

Компилируемый :) Как и Python, Perl. Сегодня мало интерпретируемых языков, я навскидку только bash и JavaScript назову. Точнее, конечно, имеются в виду конкретные реализации, естественно, PHP можно написать и интерпретируемый и bash компиллируемый.

KRoN73 ★★★★★
()

Язык может и хороший, только уже давно засношало читать в логах:

91.186.21.243 - - [02/Feb/2008:09:40:34 +0300] "GET /phpMyAdmin-2.2.3/read_dump.phpmain.php HTTP/1.0" 404 236
91.186.21.243 - - [02/Feb/2008:09:40:34 +0300] "GET /phpMyAdmin-2.2.7-pl1/read_dump.phpmain.php HTTP/1.0" 404 240
91.186.21.243 - - [02/Feb/2008:09:40:34 +0300] "GET /phpMyAdmin-2.5.6/read_dump.phpmain.php HTTP/1.0" 404 236
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.5.7-pl1/read_dump.phpmain.php HTTP/1.0" 404 240
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.6.0/read_dump.phpmain.php HTTP/1.0" 404 236
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.6.0-pl3/read_dump.phpmain.php HTTP/1.0" 404 240
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.6.0-pl3/read_dump.phpmain.php HTTP/1.0" 404 240
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.6.1-pl3/read_dump.phpmain.php HTTP/1.0" 404 240
91.186.21.243 - - [02/Feb/2008:09:40:35 +0300] "GET /phpMyAdmin-2.6.3-pl1/read_dump.phpmain.php HTTP/1.0" 404 240

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

Знали бы вы что PHP это ещё и виртуальная машина.

kode
() автор топика
Ответ на: комментарий от AndreyKl

OH SHI~, ну я с вас херею - окей, давайте я дам вам решение:

Мы знаем что в PHP динамичиская типизация, те

$a = "123"; //Строка $b = 432;

$a+$b чему равно будет? То-то же

Есть такой магический метод - __toString называется, теперь ваш мозг понял идею или вам всё разжёвывать.

> я тебе как пехепешник(на 5 весрсии) со стажем скажу и какой же интересно стаж если такой простоты незнаете?

kode
() автор топика
Ответ на: комментарий от xargs

1. в нем нет нормальных регулярных выражений (1. в нем нет нормальных регулярных выражений (кастрированная пародия на перл не в счет) на перл не в счет)

PCRE - никогда не слышал чтобы это было "кастрированной пародей"

2. в нем большой гимор с опечатками опечатался в имени переменной и оно тебе смолчало и просто тупо подставило вместо переменной пустую строку

E_NOTICE???

kode
() автор топика
Ответ на: комментарий от phasma

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

Если так рассуждать то сейчас бы все на вантузе катались

> открой для себя error_reporting(0) (%

хорошо пошутил :\

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

С теми, кто ищет дырки несмотря на обфускатор, Моссад разбирается как с агентами Хамаса...

anonymous
()

> Питонщики завидуют

Несчастные существа, кому оне только не завидуют.

Всё остальное - на грани между ИМХО и 4.2.

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

>Щас вам пыхпыхеры расскажут, что нужно включить варнинги, и про ereg

я очень рад за пыхпыхеров, но почему то НИ В ОДНОМ сайте на пых пыхе я не видел включенных этих опций.

что-то писать на пых пыхе мне не нужно

для написания новых приложений существуют очень удобные языки

а что-то поправить в чужом коде приходилось и почему-то нигде не встречал варнинги про неправильное имя переменной

никто ими не пользуется наверно потому что не юзабельны они?

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

>я очень рад за пыхпыхеров, но почему то НИ В ОДНОМ сайте на пых пыхе я не видел включенных этих опций.

За криворукость админов уже язык отвечает? Воистину, PHP велик и могуч! :D

>а что-то поправить в чужом коде приходилось и почему-то нигде не встречал варнинги про неправильное имя переменной

Кривые руки. Ты не поверишь, но Perl без use strict тоже ошибок не выдаёт.

>никто ими не пользуется наверно потому что не юзабельны они?

Вах! Зря газифицируешь лужу, метан с водой взаимодействует при гораздо более высоких температурах и в присутствии катализатора.

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

>За криворукость админов уже язык отвечает?

а так это уже криворукость _АДМИНОВ_ что программеры не пользуются аналогом strict?

php это "все через ж": сейчас еще раз в этом убедился :)

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

>>метан с водой взаимодействует при гораздо более высоких температурах и в присутствии катализатора

Так что-ли - 3*CH4+3*H20 -> C2H5OH + CO2 + 6*H2 ?

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

>а так это уже криворукость _АДМИНОВ_ что программеры не пользуются аналогом strict?

Ты писал:

>но почему то НИ В ОДНОМ сайте на пых пыхе

Ты уже определись, чего ты хочешь, включения E_NOTICE на уровне сайта (работа админа) или в прикладной программе (уровень программиста). Если второе, то почему ты про сайты пишешь. Если про первое, то в чём твое удивление по поводу админов?

PHP позволяет включить предупреждения и на уровне сервера и на уровне отдельного скрипта (то, что в Perl'е - use strict.)

...

В общем, пока налицо ПОЛНОЕ незнание PHP вообще. С таким подходом - любой язык дерьмом покажется. Ибо дерьмо на самом деле не в языке, а в мозгу.

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

Газов много бывает, как и катализаторов.

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

>Ты уже определись, чего ты хочешь, включения E_NOTICE на уровне сайта (работа админа) или в прикладной программе (уровень программиста).

при чем тут уровень сайта? про уровень сайта ты начал разговор. я про уровень php-кода.

>PHP позволяет включить предупреждения

так почему же никто не включает?

возьми скачай практически любое популярное php-приложение (форум какой или движок или еще что) и поправь в нем что-то на неправильное имя переменной - все будет (не) работать никуда не ругаясь ни о каких ошибках

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

>при чем тут уровень сайта? про уровень сайта ты начал разговор. я про уровень php-кода.

Открути немного наверх, если своих слов не помнишь, и прочти, как ты писал: «... но почему то НИ В ОДНОМ сайте ...»

>так почему же никто не включает?

Я включаю. Все мои знакомые нормальные программисты - включают. А то, что у кого-то ещё руки кривые, так это уже не от меня и не от PHP зависит.

>возьми скачай практически любое популярное php-приложение (форум какой или движок или еще что) и поправь в нем что-то на неправильное имя переменной - все будет (не) работать никуда не ругаясь ни о каких ошибках

У меня всё ругается. В общем, ты ещё раз показываешь, что _совершенно_ не разбираешься в вопросе.

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

>>В общем, ты ещё раз показываешь, что _совершенно_ не разбираешься в вопросе.

Да. Вы все гандоны, один я Дартанян.

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

>Открути немного наверх, если своих слов не помнишь

я свои слова отлично помню: я не встречал сайта/поделки/программы на php где эта хрень бы использовалась.

ты сказал что админы виноваты а не сайтописатели

это маразм вообще на админов спихивать недостатки языка

>Я включаю. Все мои знакомые нормальные программисты - включают.

ну так ты ни одного распространенного проекта похоже не написал

>У меня всё ругается. В общем, ты ещё раз показываешь, что _совершенно_ не разбираешься в вопросе.

да да про дартаньяна выше ты верно написал

xargs ★★★
()

> За криворукость админов уже язык отвечает? Воистину, PHP велик и могуч! :D

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

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

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

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

А кто тебя заставляет выводить их в браузер? По умолччанию в PHP display_errors = Off

...

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

Почему в теме не было ругани в сторону Perl'а, который также не нотифицирует ошибки неинициализированных переменных без use strict?

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

Вобщем в PHP нет замыканий, метапрограммирования => он не пригоден для разработки программ в современном мире.

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

Капча eq "danork"

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

>Вобщем в PHP нет замыканий, метапрограммирования => он не пригоден для разработки программ в современном мире.

Хм. Ты не поверишь, но в современном мире разрабатывают программы даже на Си++. Даже на Си :D

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

>Хм. Ты не поверишь, но в современном мире разрабатывают программы даже на Си++. Даже на Си :D

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

А в вещах где нужно много бизнес-логики рулят языки где есть замыкания и можно писать DSL-ы, и РНР там естественным образом умирает. Даже маректологи из майкрософта это поняли, и теперь мы видим короткие лямбды в сишарпе третьем и средства для создания DSL (CodeDOM и как пример его использования LINQ). Со стороны же опенсорса мы видим огромный прорыв абстракции в фреймворках типа RubyOnRails (хотя там этим настолько злоупотребляют что на каждый, извините, пук, пишут свой DSL).

PS. писать на C++ это ССЗБ, на ЛОРе вообще то обсуждалось

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

>Почему в теме не было ругани в сторону Perl'а, который также не нотифицирует ошибки неинициализированных переменных без use strict?

потому что все сколь либо распространенные проекты на perl идут с use strict.

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

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

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

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

> потому что все сколь либо распространенные проекты на perl идут с use strict.

А на любом сколь-нибудь приличном сервере с PHP E_NOTICE включено в конфигурациях сервера. Я за последние лет пять не работал ни с одним сервером, где E_NOTICE был бы выключен, как своим, так и на подработках.

Просто вопрос вынесен в другую плоскость.

Тем не менее, если кому-то попадётся сервер с выключенным E_NOTICE, никто не запрещает включить его у себя.

Так при чём тут язык?

Язык умеет выдавать предупреждения на неинициализированные переменные? Умеет. Нормальные люди этим механизмом пользуются? Пользуются. Какие претензии к языку? Если у кого-то руки кривые, язык тут не при чём. Всю жизнь в гипсе всё равно не проходишь.

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

>Ты не поверишь, но у меня и при веб-разработки не было надобности в замыканиях.

Ты не поверишь, но для того чтобы была в них необходимость необходимо понимать основы абстракций и иметь развитое мышление. Почитай SICP и пойми что всё чем ты занимаешься на РНР -- это ежедневное велосипедостроение. Я уверен что ты и в javascript замыкания не осилил, хотя они там есть и во всех фреймворках используются.

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

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

У тебя mod_astral сбоит, перезагрузи :) Ты сейчас по капле пива делаешь выводы о существовании океанов пива.

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