И только единицы могут донести свою мудрость до других.
Или хотя бы объяснить почему они «умнее, образованее, культурнее, чем большинство». Проблема в том, что зачастую эти достоинства не позволяют им быть до конца откровенными. Сила рекурсии, однако =)
Если бы он делал только для себя, мы бы сейчас им не пользовались. Хотя, можно допустить, что тенарник привнес кто-то другой, а ответственные лица просто не проконтролировали (и поэтому тоже виноваты). Тенарный оператор — это классическая конструкция, общая для всех языков, идеологически повлиявших на PHP. Разве вы видите другие причины, кроме невежества дизайнеров языка, которые повлекли за собой подобную реализацию?
В 1994 году датский программист Расмус Лердорф создал набор скриптов на Perl/CGI для вывода и учёта посетителей его онлайн-резюме, обрабатывающий шаблоны HTML-документов. Лердорф назвал набор Personal Home Page (Личная Домашняя Страница). Вскоре функциональности и быстроты Perl — интерпретатора скриптов — перестало хватать, и Лердорф разработал с использованием языка C новый интерпретатор шаблонов PHP/FI (англ. Personal Home Page / Forms Interpreter — «Личная Домашняя Страница / Интерпретатор форм»).
Синтаксис PHP подобен синтаксису языка Си. Некоторые элементы, такие как ассоциативные массивы и цикл foreach, заимствованы из Perl.
Очевидно, что в то время Расмус программировал на C, Perl и хотел создать простой язык с похожим синтаксисом. Вот только его, видимо, подвело непонимание того, как в этих (да и в других, что уж говорить, почти во всех) языках работает тенарный оператор. И из-за этого маленького косячка разработчики на PHP страдают (слегка преувеличил, но все же) на протяжении уже 15 лет…
Да, и это можно расценивать как фишку языка. Но на самом деле это всего лишь результат безответственности создателя.
Named parameters are not used in languages like C, C++, and Java. PHP позиционируется как C++ -like и Java-like, может быть поэтому? Но почему они тогда lambda-функции добавили?
А вообще, когда у вас много параметров, можно использовать хеши, а если нужно четко определить эти параметры, помогут value object'ы.
А что вы хотите от языка, который писался студентами на коленке с целью сделать страничку слегка динамической? Усилиями Zend что-то более-менее серьезное получается.
На самом деле это критическая ошибка в дизайне языка, так как ее нельзя исправить без потери обратной совместимости. Если в PHP6 забьют на нее (совместимость с PHP5), то может и поправят… Хотя учитывая их нацеленность на интерпрайзы, сложно себе это представить.
А так же есть signal-slot, event-driven programming, но все они решают одну проблему — устранение дублирования и зависимостей при реализации сквозной функциональности.
Пример из жизни: когда вы заходите в магазин, что бы купить продуктов, вы заходите и покупаете продукты, не обращая внимания на охрану и камеры видео-наблюдения. Это все потому, что охрана (security) и камеры (log) — это сквозная функциональность. Вы в этом случае — объект наблюдения, на действия которого «подписываются» другие заинтересованные объекты.
Есть проблема понимания того, какая функциональность для в каждом конкретном случае (домене) является сквозной, а какая — специфичной.
я хотел как раз упростить этот кусок в программе с целью не распугать новичков трехэтажным for с ветвлениями внутри. Кроме того, думаю, новичкам будет полезно узнать, как этот конкретный шаблон помогает упростить (и улучшить) код в этом конкретном кейсе, что, несомненно, более доходчиво, чем изучать их (паттерны) по абстрактным примерам.
Или хотя бы объяснить почему они «умнее, образованее, культурнее, чем большинство». Проблема в том, что зачастую эти достоинства не позволяют им быть до конца откровенными. Сила рекурсии, однако =)
Очевидно, что в то время Расмус программировал на C, Perl и хотел создать простой язык с похожим синтаксисом. Вот только его, видимо, подвело непонимание того, как в этих (да и в других, что уж говорить, почти во всех) языках работает тенарный оператор. И из-за этого маленького косячка разработчики на PHP страдают (слегка преувеличил, но все же) на протяжении уже 15 лет…
Да, и это можно расценивать как фишку языка. Но на самом деле это всего лишь результат безответственности создателя.
А вообще, когда у вас много параметров, можно использовать хеши, а если нужно четко определить эти параметры, помогут value object'ы.
Пример из жизни: когда вы заходите в магазин, что бы купить продуктов, вы заходите и покупаете продукты, не обращая внимания на охрану и камеры видео-наблюдения. Это все потому, что охрана (security) и камеры (log) — это сквозная функциональность. Вы в этом случае — объект наблюдения, на действия которого «подписываются» другие заинтересованные объекты.
Есть проблема понимания того, какая функциональность для в каждом конкретном случае (домене) является сквозной, а какая — специфичной.