Фига себе нанооптимизаторы мне карму снесли :) Теперь придется долго реабилитироваться в комментариях опусами о влиянии регистра букв в переменных на производительность скрипта :)
Незнаю, имхо проблема восприятия PHP как языка кухарок — реальная проблема, но она существует уже давно, и я верю что когда-нибудь она сойдет на нет, а вот проблема придумывания велосипедов — проблема надуманная, и на том-же хабре (хотя в меньшей степени) или на каком-нибудь специализированном форуме по PHP — конечно хреновы миллионы непризнанных гениев, хвастающихся своими велосипедами (как в матрице, огромное поле, а там кабачками PHP-девелоперы: P), но это-же все новички, тот кто занимается программированием на PHP давно — давно уже все для себя решил, и имеет собственные готовые програмные решения на любой случай жизни. Мне лично наоборот не нравится тенденция «ухты, а тут все готовенькое, сейчас я это себе в код впихну», если уж и используешь чужой код — то его хотя-бы для начала нужно досконально изучить и понять, и быть в состоянии написать с нуля если не лучше, то хотя-бы также, иначе это не программирование, а собирание конструктора лего. Хотя в чем-то конечно соглашусь, Zend Framework далеко не самое худшее, что есть на PHP, и его хорошо-бы по-больше разрекламировать, чтобы кабачков-велосипедистов впоследствии стало меньше :)
Хм, а меня наоборот не впечатлил интерфейс Зенда :) Дома установлен 6.01 на эклипсе — юзаю его, и испытываю всяческие эгоистические удовольствия, а на работе 5.51 — тоже вполне себе IDE, но что-то после эклипса не то.
А мне лично кажется паттерн DataMapper более удобным нежели различные реализации ORM, все-таки у каждого СУБД есть свои специфичные особенности, которые в общем ORM'е все учесть сложно, и DataMapper в этом плане предоставляет большие возможности для использования сложных, составленных вручную запросов с учетом специфики СУБД. При переходе на другой СУБД DataMapper конечно придется переписывать, но я лично считаю это оправданным, в мелких проектах это не так много работы, а в крупных не так часто меняют СУБД, и там как раз таки очень важна производительность. Ну и при необходимости использования нескольких вариантов хранения информации - DataMapper можно инстанциировать через фабрику.
Смотря как его использовать, разбив общий шаблон страницы на тысячи маленьких кусков - вполне можно вынести всю сложную логику из шаблона в скрипт, оставив только подстановку переменных :) хотя это конечно крайность, но вообще я лично как раз сторонник того чтобы сложную логику перекладывать на объект представления в скрипте, а не на шаблон.
Незнаю, по-моему это не такая непомерная задача - заработать 10$ на домен :) Не думаю что это было мотивацией, пусть не очень мною уважаемого, но тем не менее действительно очень известного и популярного шаблонного движка.
Так и я не утверждаю :) В ассемблере этот оператор (его аналог) вполне уместен, и даже более того, является базисом, как например и в некоторых других языках, где без этого оператора невозможно простым и удобным способом реализовать какие-либо конструкции, как например выход из вложенных циклов, и т.п.
Однако в PHP штатных средств для решения таких задач более чем достаточно: функции, исключения и т.п., по аналогии с вашим примером C# - в Java такого или аналогичного оператора - нет, и не предвидится, а ведь нельзя назвать Java языком кухарок, несмотря на то что у них на эмблеме чашка кофе :)
Ну и насчет прямых рук - так об этом и речь, я не говорю что кто-то прибежит ко мне в офис с пистолетом, и заставит меня переписать все исходняки с использованием GOTO - но раз будет возможность его использовать - будут и люди его использующие, и в прямоте их рук я к сожалению очень сомневаюсь, правку чужого кода на PHP и раньше нельзя было назвать сказкой, но с введением GOTO это может вылиться в действительно значительные трудозатраты.
Можно пример того, что можно реализовать с помощью GOTO, но нельзя с помощью старого функционала PHP? Насколько я, возможно профан в этом вопросе, представляю - GOTO создан исключительно для того чтобы убивать структуру и читабельность кода, реализуя алгоритмы а-ля:
Да, GOTO это конечно феноменальный отжиг :) Ну ничего, тут пофиксить - там поправить... добавить set_goto_handler()/restore_goto_handler(), поддержку новоиспеченных namespace'ов в goto, поддержку объектной модели, а-ля goto array($object, 'label'); ну и т.п. - и всем языкам будет язык :)
Автор просто ошибся, это тернарный оператор сокращенный, а GOTO обычный... в общем это начало конца, лучше я сейчас утоплюсь, чем потом буду натыкаться скрипты такого рода революционными фичами...
Честно говоря слабо могу себе представить ситуацию, когда переданные из другого модуля сериализованные данные должны быть сразу отправлены во фронтэнд, обычно такие данные используются для того чтобы изменить поведение конечного модуля, а их для этого соот-но нужно десериализовать.
Для инженера, настоящего темного властелина, конечно-же не имеет значение на чем писать, зачем писать, и как долго :) Сказали писать не на PHP а на Perl'е - потратил месяц на изучение Perl'а, потом еще пол-года на изучение его специфических особенностей, параллельно с отладной написанных на нем нерабочих программ - и вперед, сказали писать на Jav'е - еще пол-года, итого лет за 10 можно заиметь вполне себе многоцелевого программиста, правда PHP он уже к этому времени забудет, потому если вдруг - еще пол-года и... Нанимают-то обычно тех кто готов работать сразу, или подразумевается что инженер-программист при трудоустройстве уже знает все мыслимые и немыслимые языки? Ну тогда уже для конторы не должна иметь значение сумма, которую он запросит за свои услуги :)
Так что имхо профессия-то может и общая, а специализация в ней должна быть своя. Конечно это не отрициет того что теоретически принципы программирования хороший программист должен знать во всем их многообразии, даже если к языку в котором он специализируется они не относятся, но боюсь что страсть к самообразованию не критерий для трудоустройства, потому как ведрами ее мерять проблематично.
А насчет верстки - так уж сложилось что в основном языками программирования называют империтивные языки программирования, а верстка относится к декларативным, где реализация описывается не программистом, а заложена в интерпритатор (в данном случае браузер), и специфика у нее другая, научиться верстать - невелика наука, а знать что при третьем диве слева такой-то браузер дает 8 пикселей справа - на это опять-же нужно время.
Работаю в небольшой конторе на 10 человек, 3 программистов, требования - PHP5 c ООПъектами там всякими, MySQL, JavaScript. Раньше требовали знание HTML/CSS, но после продолжительного нытья на луну, со стороны PHP-программистов, верстку из обязанностей вычеркнули, верстают теперь левые дяди, хотя скорее всего при трудоустройстве знание принципов верстки, при прочих равных, будет неплохим плюсом.
Если говорить в общем - это скорее всего больше зависит от размера конторы, если в маленькой студии, где из персонала один человек (и чтец, и жнец, и на дуде игрец) - требуется вообще все: верстка, программирование, проектирование БД, а еще дизайн, раскрутка и навыки общения с клиентом, то по мере роста конторы обязанности можно (и нужно) распределить, один человек действительно не может быть специалистом во всем одновременно, да и не нужно это, потому как грамотное распределение труда всегда будет давать ощутимый прирост в скорости разработки по сравнению с бюджетными решениями а-ля Вася-Пупкин-All-Included, так как даже если знаешь две каких-либо области на отлично - чтобы переключиться от одной к другой все равно потребуется время.
Однако в PHP штатных средств для решения таких задач более чем достаточно: функции, исключения и т.п., по аналогии с вашим примером C# - в Java такого или аналогичного оператора - нет, и не предвидится, а ведь нельзя назвать Java языком кухарок, несмотря на то что у них на эмблеме чашка кофе :)
Ну и насчет прямых рук - так об этом и речь, я не говорю что кто-то прибежит ко мне в офис с пистолетом, и заставит меня переписать все исходняки с использованием GOTO - но раз будет возможность его использовать - будут и люди его использующие, и в прямоте их рук я к сожалению очень сомневаюсь, правку чужого кода на PHP и раньше нельзя было назвать сказкой, но с введением GOTO это может вылиться в действительно значительные трудозатраты.
set_time_limit(0);
ignore_user_abort(true);
$t = microtime(true);
сюды:
goto туды;
туды:
if(connection_aborted()) { goto конец; }
goto сюды;
конец:
$file = fopen('чудо.log', 'a');
fwrite($file, 'Этот юзверь продержался: '.(microtime(true) - $t).' миллисекунд');
fclose($file);
Так что имхо профессия-то может и общая, а специализация в ней должна быть своя. Конечно это не отрициет того что теоретически принципы программирования хороший программист должен знать во всем их многообразии, даже если к языку в котором он специализируется они не относятся, но боюсь что страсть к самообразованию не критерий для трудоустройства, потому как ведрами ее мерять проблематично.
А насчет верстки - так уж сложилось что в основном языками программирования называют империтивные языки программирования, а верстка относится к декларативным, где реализация описывается не программистом, а заложена в интерпритатор (в данном случае браузер), и специфика у нее другая, научиться верстать - невелика наука, а знать что при третьем диве слева такой-то браузер дает 8 пикселей справа - на это опять-же нужно время.
Если говорить в общем - это скорее всего больше зависит от размера конторы, если в маленькой студии, где из персонала один человек (и чтец, и жнец, и на дуде игрец) - требуется вообще все: верстка, программирование, проектирование БД, а еще дизайн, раскрутка и навыки общения с клиентом, то по мере роста конторы обязанности можно (и нужно) распределить, один человек действительно не может быть специалистом во всем одновременно, да и не нужно это, потому как грамотное распределение труда всегда будет давать ощутимый прирост в скорости разработки по сравнению с бюджетными решениями а-ля Вася-Пупкин-All-Included, так как даже если знаешь две каких-либо области на отлично - чтобы переключиться от одной к другой все равно потребуется время.