Иной раз приходится слышать мнение, что если умеешь программировать на одном языке, то быстро разберешься и в другом. Во многом это правда: условные конструкции, циклы, работа с простейшими структурами данных редко вызывают вопросы. В лингвистике существует понятие о «ложных друзьях переводчика», словах в разных языках, которые похожи по написанию, но имеют совершенно разные значения. С языками программирования, впрочем, тоже можно попасть впросак. Знакомые конструкции при использовании в новом языке могут давать неожиданный результат.

Хороший пример — [1] + [2]. Посмотрим на результат в трех известных языках: Python, JavaScript и PHP. В Python результатом будет [1, 2], потому что сложение списков объединяет их в один. В JavaScript получится строка «12», поскольку массивы приводятся к строкам, далее происходит их конкатенация. В PHP результатом внезапно станет [1]. Дело в том, что сложение массивов объединяет их по ключам, у обоих элементов ключ 0, поэтому значение слева сохраняется, а справа отбрасывается.

И это не означает, что операция сложения массивов в одном языке «логична», а в другом спроектирована «на коленке». То или иное решение обычно уходит корнями в историю языка и имеет обоснование. При изучении нового языка важно помнить о множестве неочевидных мелочей, которые могут проявиться в любой момент.

Иной раз приходится слышать мнение, что если умеешь программировать на одном языке, то быстро разберешься и в другом | Сетка — социальная сеть от hh.ru