Пятничная загадка для PHPшников
В ЖЖ увидел прекрасное — загадку про ПХП.
Те, кто знает этот язык, скажите, почему этот код не выдаёт ошибок или предупреждений (все ошибки, конечно, включены):
<?php
//bolknote.ru
?>В ЖЖ увидел прекрасное — загадку про ПХП.
Те, кто знает этот язык, скажите, почему этот код не выдаёт ошибок или предупреждений (все ошибки, конечно, включены):
<?php
//bolknote.ru
?>
Комментарии 16
Вопрос теперь, почему не ругается на незнакомый оператор.
Комментарий для Дмитрий:
Что не так с goto в2013-м году? Вы, надеюсь, помните, почему вообще не рекомендовали когда-то использовать goto? Или это абстрактная нелюбовь?
Я–то как раз помню. Плюс для меня лично он является абсолютно избыточной конструкцией, за последние лет десять программирования не было ни одного случая, когда я бы подумал “самое время написать маленький оператор безусловного перехода”, за исключением разработки на ассемблере.
Вы часто пользуетесь? Обрадовались добавлению в синтаксис? Раньше не хватало?
Комментарий для Дмитрий:
Поскольку я частенько пользуюсь break, иногдачем-то вроде break 2, то меня раздражало, конечно, что стоит избавиться от внешнего цикла, как все break, где параметр больше единицы, нужно переделать.
В этом смысле goto лучше. Но использовать пока не доводилось.
В этом смысле лучше была бы конструкция «break МЕТКА», которая в некоторых языках есть.
(Когда-нибудь и в РНР будет.)
Тем, видимо, что работать будет только в циклах.
Я сторонник теории, что язык программирование должен поощрять (и формировать) у разработчика ряд полезных привычек и определенный образ мышления. Появление goto в php, с учетом его входного порога и ментальной зрелости аудитории может повлечь удвоение средней величины спагеттисности кода. Добавлять вещи из соображений “а шоб було” мне кажется глупым, у PHP хватает пренатальных проблем, с которыми стоило бы разобраться в первую очередь.
Пока те примеры использования, которые предполагаются выглядели так: вот правильное решение на PHP, а тут оно чуть понятнее, потому что есть goto. Хотя изначальное решение ни в какие ворота не лезет. Также авторы любят ссылаться на FSM, в которых GOTO, хотя сомневаюсь, что хотя бы один из них хотя бы раз FSM использовал. А, еще смешные отсылки на ядро линукса, где много goto. В итоге имеем печальную картину: косметические улучшения изначально кривого кода, FSM и ядро линукса. FSM, ядро линукса и PHP.
Т.е. из циклов выходить по goto хорошо, а из других блоков — нет? Почему, позвольте поинтересоваться?
Я не говорил, что это хорошо, я предположил, что автор это имел в виду. Опять же лучше ≠ хорошо. Иметь сифилис лучше чем спид, как–то так.
Нет. В JS такая же ситуация.
Я
http://pastebin.com/bWPJhqR6
и с тех пор помню про метки.
Вы мне глаза открыли сейчас, кстати!