PHP: a fractal of bad design
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 11.04.12 15:00
Оценка: 118 (9) +1
Свежая обзорная статья.
The God is real, unless declared integer.
Re: PHP: a fractal of bad design
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 11.04.12 15:03
Оценка: 6 (1) +1
Показательная цитата (перевод от lj user=frenzytechnix)

Взгляните на этот код, взятый из какой-то документации по PHP:

@fopen('http://example.com/not-existing-file', 'r');

Что он делает?

Если PHP был скомпилирован с --disable-url-fopen-wrapper, это не заработает. (В документации не говорится, что значит "не заработает" — возвращает null, вызывает исключение?). Обратите внимание, что этот флаг был удален в PHP 5.2.5.
Если в php.ini отключен параметр allow_url_fopen, это тоже не заработает.
Поскольку там есть @, предупреждение о несуществующем файле не будет выдано.
Но оно будет выдано если в php.ini установлен параметр scream.enabled.
Или же если параметр scream.enabled установлен вручную через ini_set.
Но только не в случае, когда не выставлен нужный уровень error_reporting.
Если предупреждение все же будет выдано, то, куда оно попадет, зависит от параметра display_errors, опять-таки в php.ini. Или ini_set.

Я не могу сказать, как будет вести себя вызов этой безобидной функции, не изучив флаги компиляции, конфигурацию сервера и конфигурацию в моей программе. И все это — стандартное поведение.

The God is real, unless declared integer.
Re: PHP: a fractal of bad design
От: dimgel Россия https://github.com/dimgel
Дата: 11.04.12 15:16
Оценка:
Здравствуйте, netch80, Вы писали:

N>Свежая обзорная статья.


ППКС (except "I loooove Python").
Re: PHP: a fractal of bad design
От: kochetkov.vladimir Россия https://kochetkov.github.io
Дата: 11.04.12 17:54
Оценка: 3 (1)
Здравствуйте, netch80, Вы писали:

N>Свежая обзорная статья.


http://phpsadness.com/

[Интервью] .NET Security — это просто
Автор: kochetkov.vladimir
Дата: 07.11.17
Re[2]: PHP: a fractal of bad design
От: avpavlov  
Дата: 11.04.12 21:02
Оценка:
KV>http://phpsadness.com/

В целом список по делу, но есть и забавные упрёки

Cannot create a final abstract class
No good way to modify private method behavior in a testing environment
Re: PHP: a fractal of bad design
От: SV.  
Дата: 11.04.12 22:10
Оценка: 1 (1) -5 :))
Здравствуйте, netch80, Вы писали:

N>Свежая обзорная статья.


A language must be predictable...
A language must be consistent...
A language must be concise...
A language must be reliable...
A language must be debuggable...


Хотите правильный ответ? Я его давно пропагандирую: A language must be C-like. Это как латинско-греческие корни европейских языков и какой-нибудь санскрит. Если язык состоит из неизвестных закорючек, как к нему вообще подступиться? Он может быть прост и удобен, но это никто не узнает, кроме задротов-индологов. Так и PHP. Это кусок гавна, а не язык, всерьез говоря, но из всей компании PHP/Perl/Python/Ruby он самый си-подобный. Когда вам нужен комментарий, не надо писать #, когда вам нужен набор условий, не надо писать elsif (Perl). Для оформления кодоблока можно воспользоваться привычными фигурными скобками (Python). И отдельные команды разделяются ; (Ruby). Все эти привычные мелочи значат в нашем несовершенном мире гораздо больше, чем предсказуемость, консистентность и что там дальше по списку. Кто этого не понял, тот чудак на букву м.

Тот чудак, который цитируется вами, написал по этому поводу следующее: "Just write C! Here, there’s even a CGI library for it". Так вот, пусть он сам пишет на C/CGI, а потом имеется с деплоем под разные платформы и make-файлами. Нормальный вебовский нуб тоже человек и хочет свои первые скрипты пописать и поотлаживать в веб-серверовском интерпретаторе. Он идет и смотрит, что там есть с максимально привычным синтаксисом, но со всеми прелестями вебовских скриптов: сборкой мусора, отсутствием компиляции и так далее. Предсказуемо, что он находит PHP.

Совершенно справедливо автор замечает: PHP was originally designed explicitly for non-programmers (and, reading between the lines, non-programs). Что ж, когда нуб перестает быть нубом и начинает писать большие и серьезные программы, где подводные грабли, так красочно описанные вашим автором, начинают причинять серьезные неудобства, он переключается на (сюрприз!) C#/ASP.Net, в названии которого есть заветная буква, Java, про которую сами ее создатели говорили, что она создавалась под девизом "Выкинуть мусор из C++") или, в конце концов, тот самый C/CGI, если надеется достичь сверхвысокой оптимизированности.

Эта моя теория замечательно подкрепляется тем фактом, что (по версии TIOBE) 6 самых популярных языков (в том числе и PHP!) обладают ярко выраженными си-подобием. Причем, суммарная их доля составляет (примерно) две трети.

Если человек так не любит PHP, он мог бы создать другой си-подобный язык, лишенный недостатков PHP. Какой-нибудь Пи-плюс-плюс, чтобы в формулу лампы укладываться. Денег, правда, на этом не заработать.
Re[2]: PHP: a fractal of bad design
От: oldjackal Россия  
Дата: 12.04.12 11:27
Оценка: +1 -1
Здравствуйте, SV., Вы писали:

SV.>Хотите правильный ответ? Я его давно пропагандирую: A language must be C-like.


Нечитабельные нагромождения скобочек и неочевидные правила приоритета? Зачем?!? Очень мало популярных среди не-программистов языков с C-подобной грамматикой. Да и тот же VB.NET настолько популярен, что самим своим существованием доказывает вашу неправоту.

SV.> Это как латинско-греческие корни европейских языков и какой-нибудь санскрит. Если язык состоит из неизвестных закорючек, как к нему вообще подступиться?


Вот именно так я и смотрел на C после Паскаля и Фортрана.

SV.> Нормальный вебовский нуб тоже человек и хочет свои первые скрипты пописать и поотлаживать в веб-серверовском интерпретаторе. Он идет и смотрит, что там есть с максимально привычным синтаксисом, но со всеми прелестями вебовских скриптов: сборкой мусора, отсутствием компиляции и так далее. Предсказуемо, что он находит PHP.


У нормальных нубов PHP вообще первый язык, и никаких таких C они в глаза не видели. А в ВУЗе они учили, скорее всего, вообще Паскаль.
Re[3]: PHP: a fractal of bad design
От: SV.  
Дата: 12.04.12 14:56
Оценка:
Здравствуйте, oldjackal, Вы писали:

SV.>>Хотите правильный ответ? Я его давно пропагандирую: A language must be C-like.

O> Нечитабельные нагромождения скобочек и неочевидные правила приоритета? Зачем?!?

Нечитабельность есть свойство субъективное и тратить время на ее обсуждение не стоит. Все люди разные, одному нравится попадья, другому свиной хрящик. Не надо судить обо всех по себе. "Зачем?", следовательно, надо спрашивать не меня, а две трети тех, кто выбирает эти нечитабельные нагромождения. Индусов-аутсорсеров, например, и прочее молчаливое большинство, которое даже на форумы не вылазит, поскольку делом занято. А поскольку у каждого вы все равно не спросите, вопрос ваш начисто лишен смысла. Имело бы смысл спросить, как так получилось, что "нечитабельное нагромождение скобочек" стало так популярно (изначально). То есть, популярность PHP можно отнести на си-подобие, а сам Си с чего вдруг стал так популярен? Если вот так поставить вопрос, я могу с облегчением ответить: не знаю. Наверное, есть в нем что-то такое, чего вы не видите за "нечитабельным нагромождением скобочек".

Если вы спросите "Зачем?" лично меня, я отвечу. Хотя это и будет офтопиком к теме "A language must be ... [to be popular]", которую я выделил из набора тем, обсуждаемых в статье. Нельзя рассуждать о популярности на основе личных вкусов и предпочтений. Так вот, мои личные вкусы и предпочтения — нечитабельные нагромождения скобочек. Объясняется это двумя причинами:

http://en.wikipedia.org/wiki/Path_dependence Обязательно введите это понятие в свой культурный багаж, если еще не. Люди до ужаса инертны и PD объясняет многое из людской деятельности. Когда я разбирался с программированием, ничего круче просто не было, а потом я уже привык. Вторая причина — мне нравится, когда "словам тесно, а мыслям просторно". Если одним символом ({) можно передать то, что в других языках требует пяти (begin), я считаю, что такой символ и такой язык стоит выучить.

Еще раз, это мои личные предпочтения, которые офтопик, и обсуждать их я не буду.

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


Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

>Да и тот же VB.NET настолько популярен, что самим своим существованием доказывает вашу неправоту.


С этого места все желание отвечать пропало. Ладно, я лучше netch'а подожду. На каждый чих не наздравствуешься.
Re[4]: PHP: a fractal of bad design
От: oldjackal Россия  
Дата: 12.04.12 15:27
Оценка:
Здравствуйте, SV., Вы писали:

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


SV.>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?


Языки в Matcad, R, Stata, языки в разнообразных CAD-ах — все они ничего общего с C не имеют (и это прекрасно!).

>>Да и тот же VB.NET настолько популярен, что самим своим существованием доказывает вашу неправоту.


SV.>С этого места все желание отвечать пропало. Ладно, я лучше netch'а подожду. На каждый чих не наздравствуешься.


Вы отрицаете популярность VB? Интересно.
Re[4]: PHP: a fractal of bad design
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.04.12 04:04
Оценка: -1
Здравствуйте, SV., Вы писали:

SV.>Имело бы смысл спросить, как так получилось, что "нечитабельное нагромождение скобочек" стало так популярно (изначально). То есть, популярность PHP можно отнести на си-подобие, а сам Си с чего вдруг стал так популярен? Если вот так поставить вопрос, я могу с облегчением ответить: не знаю. Наверное, есть в нем что-то такое, чего вы не видите за "нечитабельным нагромождением скобочек".

Я вам помогу. На самом C был написан Unix. Именно это, а также его близость к архитектуре процессоров DEC, обеспечило ему популярность среди системных программистов. Не нужно думать, что там какой-то особенно тёплый ламповый синтаксис.

SV.>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

Например, финансовые аналитики, которые пишут бизнес-правила в ERP системах типа Оракловых.

SV.>С этого места все желание отвечать пропало. Ладно, я лучше netch'а подожду. На каждый чих не наздравствуешься.

Отож. Вот уж ткнули так ткнули.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: PHP: a fractal of bad design
От: Cyberax Марс  
Дата: 13.04.12 04:23
Оценка:
Здравствуйте, oldjackal, Вы писали:

SV.>>Хотите правильный ответ? Я его давно пропагандирую: A language must be C-like.

O> Нечитабельные нагромождения скобочек и неочевидные правила приоритета? Зачем?!?
Что конкретно нечитаемого? В С основные проблемы с приоритетом — для битовых операций, которые мало кого заботят.

O>Очень мало популярных среди не-программистов языков с C-подобной грамматикой. Да и тот же VB.NET настолько популярен, что самим своим существованием доказывает вашу неправоту.

Ровно по той же причине, что и PHP.

SV.>> Это как латинско-греческие корни европейских языков и какой-нибудь санскрит. Если язык состоит из неизвестных закорючек, как к нему вообще подступиться?

O> Вот именно так я и смотрел на C после Паскаля и Фортрана.
А ну понятно — детская травма.

O> У нормальных нубов PHP вообще первый язык, и никаких таких C они в глаза не видели. А в ВУЗе они учили, скорее всего, вообще Паскаль.

Вот и приучаются люди к плохому.
Sapienti sat!
Re[5]: PHP: a fractal of bad design
От: Cyberax Марс  
Дата: 13.04.12 04:24
Оценка:
Здравствуйте, oldjackal, Вы писали:

SV.>>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

O> Языки в Matcad, R, Stata, языки в разнообразных CAD-ах — все они ничего общего с C не имеют (и это прекрасно!).
А им и не надо, они для другого предназначены. С Фортраном и Паскалем, кстати, они тоже имеют мало общего.

SV.>>С этого места все желание отвечать пропало. Ладно, я лучше netch'а подожду. На каждый чих не наздравствуешься.

O> Вы отрицаете популярность VB? Интересно.
Да, он непопулярен среди опытных программистов.
Sapienti sat!
Re[5]: PHP: a fractal of bad design
От: Cyberax Марс  
Дата: 13.04.12 04:29
Оценка:
Здравствуйте, Sinclair, Вы писали:

SV.>>Имело бы смысл спросить, как так получилось, что "нечитабельное нагромождение скобочек" стало так популярно (изначально). То есть, популярность PHP можно отнести на си-подобие, а сам Си с чего вдруг стал так популярен? Если вот так поставить вопрос, я могу с облегчением ответить: не знаю. Наверное, есть в нем что-то такое, чего вы не видите за "нечитабельным нагромождением скобочек".

S>Я вам помогу. На самом C был написан Unix. Именно это, а также его близость к архитектуре процессоров DEC, обеспечило ему популярность среди системных программистов. Не нужно думать, что там какой-то особенно тёплый ламповый синтаксис.
Чем конкретно С близок к архитектуре DEC?

Язык С так всем понравился из-за того, что на нём легко выражаются операции с памятью. Работа с указателями в нём — легка и понятна, по сравнению с тем же Паскалем.

SV.>>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

S>Например, финансовые аналитики, которые пишут бизнес-правила в ERP системах типа Оракловых.
А сам Оракл на чём написан-то? То что для непрограммистов неудобны С-подобные языки — это разговор отдельный.
Sapienti sat!
Re[5]: PHP: a fractal of bad design
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.04.12 08:31
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Я вам помогу. На самом C был написан Unix. Именно это, а также его близость к архитектуре процессоров DEC, обеспечило ему популярность среди системных программистов.


Это "городская легенда", которая многократно опровергнута авторами языка.

S> Не нужно думать, что там какой-то особенно тёплый ламповый синтаксис.


Я ещё в школе проникся им именно за мощь и плотность эффектов на единицу объёма.
Конечно, интересы школьника совсем другие, чем интересы программиста на толстом проекте на годы развития.
Но именно такой "школьный" взгляд и становится причиной народной популярности и соответственно подспудного интереса, несмотря на все регулирования.

А в нынешней его популярности скорее виноват MS-DOS, чем другие. Потому что C был первым (по рангу) реальным средством что-то писать для неё. Ассемблер низковат для заметного объёма кода, Паскаль более маргинален несмотря на Borland, а стиль Unix, где основным средством выше системных утилит предполагались sh/awk/sed/Perl, для MS-DOS был неподъёмен по хилости её архитектуры.
The God is real, unless declared integer.
Re[6]: PHP: a fractal of bad design
От: oldjackal Россия  
Дата: 13.04.12 08:34
Оценка: +2
Здравствуйте, Cyberax, Вы писали:

SV.>>>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

O>> Языки в Matcad, R, Stata, языки в разнообразных CAD-ах — все они ничего общего с C не имеют (и это прекрасно!).
C>А им и не надо, они для другого предназначены. С Фортраном и Паскалем, кстати, они тоже имеют мало общего.

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

SV.>>>С этого места все желание отвечать пропало. Ладно, я лучше netch'а подожду. На каждый чих не наздравствуешься.

O>> Вы отрицаете популярность VB? Интересно.
C>Да, он непопулярен среди опытных программистов.

Это несколько не так. Есть огромное количество опытных программистов на VB. И глупо было бы считать, что они в чем-то хуже опытных программистов на, например, C++.
Re[6]: PHP: a fractal of bad design
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.04.12 08:59
Оценка: -1
Здравствуйте, Cyberax, Вы писали:

C>Чем конкретно С близок к архитектуре DEC?

while(*p++ = *q++)
Это ровно две инструкции PDP-11.

C>Язык С так всем понравился из-за того, что на нём легко выражаются операции с памятью. Работа с указателями в нём — легка и понятна, по сравнению с тем же Паскалем.

А сама модель указателей в нём, вместе с операциями префиксного/постфиксного инкремента/декремента в чистом виде списана с операций процессора DEC.

SV.>>>Кто такие не-программисты и как вы померили у них популярность языков с C-подобной грамматикой?

S>>Например, финансовые аналитики, которые пишут бизнес-правила в ERP системах типа Оракловых.
C>А сам Оракл на чём написан-то? То что для непрограммистов неудобны С-подобные языки — это разговор отдельный.
Внимательно читайте текст, на который отвечаете. Это как раз на чём написан Оракл — отдельный разговор.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: PHP: a fractal of bad design
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.04.12 09:00
Оценка:
Здравствуйте, netch80, Вы писали:

N>Это "городская легенда", которая многократно опровергнута авторами языка.

Можно пруфлинк на опровержение?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: PHP: a fractal of bad design
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 13.04.12 09:11
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, netch80, Вы писали:


N>>Это "городская легенда", которая многократно опровергнута авторами языка.

S>Можно пруфлинк на опровержение?

Единственным упоминаемым фактором близости к архитектуре считается автоинкремент и автодекремент, и вот явно про них:

People often guess that they were created to use the auto-increment and auto-decrement address modes provided by the DEC PDP-11 on which C and Unix first became popular. This is historically impossible, since there was no PDP-11 when B was developed.


Отсюда. От одного из авторов и с сайта конторы-разработчика, то есть авторитетнее уже некуда.

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

(Всё это Вы и сами могли нагуглить за минуту (у меня ушло ровно столько), но если хотите, чтобы Вам разжевали и положили в рот... ok, я с утра подозрительно добрый.)
The God is real, unless declared integer.
Re[4]: PHP: a fractal of bad design
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 13.04.12 09:14
Оценка:
Здравствуйте, SV., Вы писали:

SV.>Нечитабельность есть свойство субъективное и тратить время на ее обсуждение не стоит.

Можно ввести объективный критерий: количество односимвольных опечаток (вставка, удаление, замена символа), которые не приводят в ошибкам компиляции.
Re[6]: PHP: a fractal of bad design
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 13.04.12 09:17
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Чем конкретно С близок к архитектуре DEC?


Все операции в DEC имеют свои аналоги в C. Проще говоря, берез список инструкций DEC, смотрим, такие в нем есть операции, вводим аналоги.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.