Потому что параметров может быть более одного, а некоторые ещё и необязательные. В связи с этим, лучше всегда быть уверенным, что после названия функции всегда будет указан объект, над которым выполняется операция, а потом уже параметры.
Потому что первый аргумент больше конкретизирует назначение функции. Аналогия: если бы такую же задачу ставили
человеку, то его бы сначала привели к стогу сена (ну или просто сказали бы, к какому стогу ему надо
пойти), а потом стали бы объяснять, что именно ему там требуется найти.
find(haystack, needle), "обьект — аргументы". По аналогии с (эквивалентной кое-где) записью haystack->find(needle), т.к. needle->find(haystack) читается несколько по-другому.
> когда я кодил на PHP, помню пару «haystack-needle»
PHP меня всегда поражал функцией array_key_exists, которая как раз (needle, haystack)...