Как стать автором
Обновить

Особенности влияния изучения нескольких языков программирования

Время на прочтение 2 мин
Количество просмотров 1.4K
Попробуйте в уме высчитать результат вычисления следующего выражения:

true ? false ? 5 : 6 : true ? 7 : 8

Высчитали? А теперь идём под хабракат

Итак, если вы считаете, что в результате вычисления данного выражения должно получиться 7, то скорее всего вы PHP-программист. Если же вы считаете, что в результате вычисления данного выражения должно получиться 6, то скорее всего вы программируете на одном из других языков.
Всё дело в том, что в сравнении с другими языками программирования, PHP имеет неправильную ассоциативность тернарного оператора. В PHP тернарный оператор имеет левую ассоциативность, тогда как в других языках программирования этот оператор имеет правую ассоциативность. Соответственно при помощи скобок можно показать как вычисляет данное выражение PHP:

(true ? (false ? 5 : 6) : true) ? 7 : 8

и как его вычисляют другие языки программирования:

true ? (false ? 5 : 6) : (true ? 7 : 8)

Хуже всего то, что в половине учебников по PHP указано (проверено посредством поиска в Google), что тернарный оператор якобы имеет правую ассоциативность, что не соответствует действительности. В официальной документации по PHP указано, что тернарный оператор имеет в PHP левую ассоциативность.
Конечно, в реальной жизни за такой говнокод надо руки отрывать, но пример взят не из реальной практики, а был всего лишь тестовым заданием при устройстве на работу. Должен сказать, что пример был куда длинее, и я, наивно полагая, что в PHP тернарный оператор имеет, как и везде, правую ассоциативность, дал неверный ответ.
Причём здесь «влияние изучения нескольких языков программирования»? Часто мы, зная уже несколько языков программирования, пропускаем весьма общие разделы в учебниках по новому для себя языку, полагая, что там всё как и в других языках. Будьте внимательны и доверяйте только официальной документации.
Про тернарный оператор и его проблему в PHP есть страница на английском в Wikipedia.
Теги:
Хабы:
+92
Комментарии 117
Комментарии Комментарии 117

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн