Здравствуйте, quwy, Вы писали:
Q>Почему это тормозное косорылое угробище не сгинуло во тьме веков? Q>Причины? Зашкаливающее количество неграмотных школокодеров? И получается он будет жить всегда?
А почему php обсуждается абстрактно?
Может обсудить то, что обрабатывает php?
Fast-CGI
CGI
Mod-PHP
suPHP?
Здравствуйте, Calc, Вы писали:
C>Здравствуйте, Abalak, Вы писали:
A>>Здравствуйте, quwy, Вы писали:
S>>>>и какая нужда заставила заняться гадостью? Q>>>Деньги.
A>>За последние несколько недель встречаю второго человека, который взялся за пхп ради денег. Куда мир катится?
C>А за PHP и берутся ради денег... C>Мне он деньги приносит, я доволен. Что еще нужно?
Я не спорю Просто мой знакомый до того момента вполне успешно зарабатывал дотнетом.
Здравствуйте, Anton Batenev, Вы писали:
AB>Тест с strtotime: 64.84 user 66.24 system 2:12.13 elapsed (~132s) AB>Тест с решением выше: 26.74 user 0.02 system 0:26.95 elapsed (~27s) AB>Т.е. типа ускорили в ~5 раз. Хотя я мог допустить грубую ошибку где-то, т.к. под утро голова не соображает.
Вы не поняли. Я написал аналог, который принимает на вход строки так же, как это делает strtotime(). Хотя похоже придется написать отдельные функции типа вашей.
q>> P.P.S. В какой версии функция crc32() научится принимать значение от предыдущей итерации, чтобы можно было посчитать CRC чего-нибудь большего, чем фразы "Hello world" не используя своей php-реализации с потерей 95% производительности? Почему мне нужно реализовывать хитровывернутый (и, как следствие -- тормозной, ибо писать его приходится на том же php) алгоритм объединения двух независимых CRC в один? AB>hash_file?
А если мне не файл? Если мне нужно посчитать сумму блоба или иного потока большого размера? Писать на диск? Да и появилось это аж в 5.1.2, до этого даже файл без тормозов посчитать нельзя было (напомню, что у многих хостингов используется и более ранние версии PHP).
Я PHP не знаю. Но знаю Perl — а PHP это, как мне кажется, уродливый перл. Если это не так — мои ответы не имеют смысла.
Q>1. Полный разнобой в стандартных функциях.
В смысле?
Q>1.1. Постоянно используются разные нотации.
В смысле?
Q>1.2. Порядок параметров (объект/субъект операции) всегда разный.
Пример?
Q>2. Кривая динамическая типизация.
Q>2.1. Почему после присвоения $Str = '123456';, Str имеет предпочтительный тип int, а не string?
Что ты понимаешь под "предпочтительным" типом? Тип определяется операцией.
Q>3. Неадекватное поведение интерпретатора.
А именно?
Q>3.1. Зачем, если fopen() не удалось открыть файл, гадить в stdout своими мусорными ворнингами? Ф-ция возвращает ошибку, я ее сам обработаю! (про @ я в курсе)
Не должен. Это полный бред.
Q>3.2. Почему нельзя индексировать непосредственно возвращаемый ф-цией массив?
Почему нельзя?
Q>4. Идиотизм синтаксиса. Q>4.1. Нахрена доллары?
Наследие шелла, где доллар означает обращение к переменной.
Q>4.2. Почему нет структур? (ассоциативный массив -- это не структура!)
Не нужны при наличии ассоциативных массивов.
Q>4.3. Почему нет перечислений?
А где они есть, кроме Паскаля?
Q>4.3.1. Почему регистр "заменяющих" перечисления строк в разных местах разный?
Чего?
Q>4.5. Почему вообще для этого языка был выбран C-подобный синтаксис? Тут гораздо уместнее был бы BASIC или Паскаль.
Это perl
V>Я PHP не знаю. Но знаю Perl — а PHP это, как мне кажется, уродливый перл. Если это не так — мои ответы не имеют смысла.
Q>>1. Полный разнобой в стандартных функциях. V>В смысле?
В прямом. Половина — с C-синтаксисом, другая — с перловым. Часть функций есть, части функций нет или появляются очень поздно (date_add), три или четыре способа подключаться к мускулю и работать с ним
Q>>1.1. Постоянно используются разные нотации. V>В смысле?
то camelCase, то_подчеркивания, то скрщнзвния, то скрщ_нзвания, то полные_названия то вообще какая-то хрень
Q>>1.2. Порядок параметров (объект/субъект операции) всегда разный. V>Пример?
http://php.net/array_map vs. http://php.net/array_filter
Q>>2. Кривая динамическая типизация.
Q>>2.1. Почему после присвоения $Str = '123456';, Str имеет предпочтительный тип int, а не string? V>Что ты понимаешь под "предпочтительным" типом? Тип определяется операцией.
Нифига он не определяется операцией. == в РНР ведет себя, как хочет. Даже в документации описано.
Q>>3.2. Почему нельзя индексировать непосредственно возвращаемый ф-цией массив? V>Почему нельзя?
M>>Потому что при всем при том он легче, чем перл V>В каком смысле "легче"?
В том, что, по сути, для в PHP есть только один способ сделать что-то, а не несколько, как в Перле Ну и синтаксис даже в самых жтких комбинациях вполне читаем, в отличие от жутких комбинаций перла
Здравствуйте, quwy, Вы писали:
q> AB>hash_file? q> А если мне не файл? Если мне нужно посчитать сумму блоба или иного потока большого размера?
stream_filter_register, а поток сделать или прямо, если возможно, или через php://temp
А вообще, "все — есть файл".
q> Да и появилось это аж в 5.1.2, до этого даже файл без тормозов посчитать нельзя было (напомню, что у многих хостингов используется и более ранние версии PHP).
Версия 5.1.2 была выпущена 12 января 2006 года. Странно, что ты не вспомнил 4-ю ветку. Многие хостеры уже навзрыд плачут от нее, но не могут отказаться потому что хомячки мозг съедят потом, т.к. не осилили.
Здравствуйте, Vamp, Вы писали:
V>Я PHP не знаю. Но знаю Perl — а PHP это, как мне кажется, уродливый перл. Если это не так — мои ответы не имеют смысла.
Тут уже частично ответили, но я таки дополню.
Q>>2.1. Почему после присвоения $Str = '123456';, Str имеет предпочтительный тип int, а не string? V>Что ты понимаешь под "предпочтительным" типом? Тип определяется операцией.
Если $Str может быть истолковано и как int и как string, то PHP предпочтет int. Вот этот код сработает неправильно:
$Str = '123';
$Pos = strpos('Value is {123} units', $Str);
А все потому, что strpos(): "If needle is not a string, it is converted to an integer and applied as the ordinal value of a character". Выходит, что еще при присвоении значения переменной, на кавычки был забит болт в надежде, что когда будет нужна строка, тогда int снова сконвертим в строку. Про затрачиваемое на подобные изыски время я молчу, в данном случае гораздо хуже, что программа ведет себя неадекватно.
Q>>3.1. Зачем, если fopen() не удалось открыть файл, гадить в stdout своими мусорными ворнингами? Ф-ция возвращает ошибку, я ее сам обработаю! (про @ я в курсе) V>Не должен. Это полный бред.
Однако тем не менее. Отключить конечно можно, но тогда и полезные ворнинги исчезают (например о выходе за границу массива).
Q>>4.1. Нахрена доллары? V>Наследие шелла, где доллар означает обращение к переменной.
Когда это PHP шеллом выполнялся?
Q>>4.2. Почему нет структур? (ассоциативный массив -- это не структура!) V>Не нужны при наличии ассоциативных массивов.
Нужны. Во-первых цена ассоциативного массива слишком высока. Во-вторых структура предсказуема. В-третьих структура позволяет безгеморройно обмениваться данными с внешним миром.
Q>>4.3. Почему нет перечислений? V>А где они есть, кроме Паскаля?
В C/C++/C# есть. Даже в VB есть. Его только во всяких скриптовых "язычках" нет.
Q>>4.3.1. Почему регистр "заменяющих" перечисления строк в разных местах разный? V>Чего?
filetype() возвращает нижний регистр: 'dir', 'file' и т.п.
поле subtype возвращаемого imap_fetchstructure() объекта идет в верхнем регистре: 'PLAIN', 'HTML' и т.п..
Здравствуйте, gandjustas, Вы писали: G>Исторический фактор давит (типа Facebook сделан на PHP)
Это миф. У Facebook на PHP сделан только рендеринг страниц.
Логика — на Erlang, системные части — на C++
Здравствуйте, quwy, Вы писали:
Q>>>4.2. Почему нет структур? (ассоциативный массив -- это не структура!) V>>Не нужны при наличии ассоциативных массивов. Q>Нужны. Во-первых цена ассоциативного массива слишком высока. Во-вторых структура предсказуема. В-третьих структура позволяет безгеморройно обмениваться данными с внешним миром.
а структура была бы сделана через тот же ассоциативный массив.. значит не нужно..
AE>Здравствуйте, gandjustas, Вы писали: G>>Исторический фактор давит (типа Facebook сделан на PHP) AE>Это миф. У Facebook на PHP сделан только рендеринг страниц. AE>Логика — на Erlang, системные части — на C++
логика вообще неизвестно на чем. скорее всего на всем, что есть в facebook'е. на erlang'е — чат
Здравствуйте, Calc, Вы писали:
C>Написано очень много документации и не нужно ничего настраивать, чтоб работало с httpd хоть под виндой, хоть под линухой и т.д.
Замечательно! А теперь курим простую и банальную функцию fnmatch(). Занимательно, php-девелоперы не нашли ее аналога в WinAPI и тупо забили! В итоге имеем скриптовый язык, у которого под разными платформами разный набор базовых функций. Круто, блин. И это при том, что ее ручная реализация у меня заняла ровно 30 строк php-кода (без использования регекспов).