I don't even use PHP regularly anymore, and never did encounter that message even when I did --- probably because my use of PHP predated all the OOP stuff --- but I still remember that word after reading articles about this precisely because it's so memorable. It's sad to see that they removed it in an attempt to effectively dumb down the language even more to cater to those not willing to use their brains and learn a bit about its (IMHO interesting) history. The other example of memorable words that I associate with a programming language are car and cdr.
If you want to learn the history, go read "the history of PHP". There's tons opf it, none of it relevant to people who want to program modern PHP.
If you want to actually use PHP, or any other language, and the interpreter/compiler throws up errors that _cannot be understood_ by "using your brain" then that is both a bad design decision that should have been changed way back when, _and_ is a current bug in your interpreter/compiler that you need to fix.
> complaining about how everything should be "easy"
Not the worst thing to complain about.
Things that ought to be easy should be easy, so that time can be spent on solving hard problems.
T_PAAMAYIM_NEKUDOTAYIM is an example of something easy made deliberately hard. Thousands of people had to search for it (it adds up in the aggregate).
And not only that, now there's mundane debates around whether or not it was a bad idea (such as right here, but also in the linked article). Further waste of time.
It’s not that hard, right. Nothing is really hard when an explanation is one search keyword away. But even a little bit becomes an issue when you fed up. This has nothing to do with skills and intelligence, the argument is emotional. If you don’t get fed up bit by bit in our profession or you work at the place where you have plenty of time to digest anything irrelevant, lucky you.
How is writing things in random languages "intellectual" ?
If I replace a random λέξη[0] in my comments with its equivalent in another language for no reason, is someone being "anti-intellectual" for thinking that's silly?
> It's sad to see that they removed it in an attempt to effectively dumb down the language even more to cater to those not willing to use their brains and learn a bit about its (IMHO interesting) history.
As an alternative explanation, perhaps people don't want to be using Google to look up an obscure error message when they're in the middle of writing code, when the error message could be better and the history of the programming language is irrelevant to the problem at hand?
Here's the deal. Haskell has “Functor” (mappable), “Monoid” (aggregate/summary), “Foldable” (summarizable), “Monad” (context/commandlike). This language comes from a lot of early adopters being math nerds of a sort. It is a barrier to entry, and everyone understands that.
PHP’s situation is worse because, you know what's true about PHP developers? They are often just learning programming. It is an entry-level language, something you can throw into the HTML you already have to make some magic happen. Yes it can be so much more, but it ALSO is a lot of peoples' first look at programming. When you chose to learn Haskell you knew you were jumping in the deep end. The sitch with PHP is grown adults nearly drowning in a kiddie pool.
Look, when Haskell condescends to me, “Your rigid skolem type variables are bound by the type signature for fizzBuzz!” I know as a seasoned programmer that I am experiencing my own masochism and that I should probably Google away and that I may end up having to read a PDF by Dr. Craig T. Skolem to find out why he has a species of type variables named after him. But if you are just starting out? It just makes you feel like you will never be able to do this and why did you even try.
So keep T_PAAMAYIM_NEKUDOTAYIM in the error message, feel free, I don't care. But IF it is there, please include in your English error messages in some brackets, “(that’s Hebrew for ‘double colon’, it helps for searching errors online)” or something like that. If you find that line in the error message smug/condescending, then T_PAAMAYIM_NEKUDOTAYIM is all the more smug, because it has the same implications but hidden behind an extra smug superiority, “you don't know the history of this language, do you?!” Or, on the flip side, as long as the error message explains what went wrong and hints how to fix it, feel free to inject a mini Hebrew lesson into my day, sure.
To be honest I don't know what the fuck your (parenthetical) terms were. You just have to learn those things under some name, and even if you know what a functor is in maths it won't tell you how to write Haskell. There's no magic word that will tell you exactly what something is, unless you already know the exact concept by a different name. You can try to make the names mnemonic, but they can't be a whole explanation.
I remember running into this error back in the day and wondering why it was named in such a manner I had to search it up rather than getting an explanation on what actually went wrong. These people wanted to make things hard for no good reason.
Lisp uses these names decades before Clojure, see for example the Lisp Machine Manual from 1979 which documents first, second, ..., seventh, rest1, rest2, ...
The difference is that Clojure does not have cons cells with CAR and CDR like in Lisp. The special dot notation (a . b) does not exist in Clojure. Clojure has something like cons, but they don't work like in Lisp.
In Lisp the cons cells are the building blocks for ALL list like data structures: lists, circular lists, cons trees, etc. CAR and CDR can have arbitrary contents: (1 . 2) describes a valid cons cell. In Lisp the function CONS accepts two arbitrary objects and returns a cons cell.
Where in Clojure the dot notation for cons cells does not exist and where the function cons is a function which accepts an object as first argument and a seq as second argument. It returns a seq. No such function exists in Lisp.
Thus CAR and CDR would not make no sense for Clojure, because it does not support CONS cells with CAR and CDR. It uses seqs (etc.) instead.
In Lisp there is a style convention that the names FIRST, SECOND, ... and REST should be used in code which uses conses as lists. When conses are used to build trees (which are not lists), the operators CAR, CDR and related are preferred.
I don't get it. What was wrong with the following abbreviations: "Contents of the Address Register" (CAR), "Contents of the Decrement Register" (CDR)? IMO they're self-describing.
It also allow you to use all the premutations of Address and Decrement registers: C[A|D]+R. How do you do this with "first" and "rest"? ;)
And in the theme of the post, I kind of miss those old terms that I remember fondly from learning Scheme a long time ago. Using them felt like incarnating some ancient magic.
That said, the terms "first" and "rest" are superior, and one of the things I love about Clojure is that it never makes anything obscure.