Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:11004 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 73308 invoked by uid 1010); 8 Jul 2004 23:33:26 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 73284 invoked by uid 1007); 8 Jul 2004 23:33:26 -0000 Message-ID: <20040708233326.73283.qmail@pb1.pair.com> To: internals@lists.php.net Date: Thu, 08 Jul 2004 19:33:02 -0400 User-Agent: Mozilla Thunderbird 0.7.1 (Windows/20040626) X-Accept-Language: en-us, en MIME-Version: 1.0 References: <5.1.0.14.0.20040707203931.02fa6200@mail.ionzoft.com> <40ED64A0.7050305@cschneid.com> <20040708151952.92187.qmail@pb1.pair.com> <20040708215205.23281.qmail@pb1.pair.com> <20040708222005.4329.qmail@pb1.pair.com> In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-Posted-By: 130.58.81.153 Subject: Re: [PHP-DEV] what happened to that new isset() like language From: contact_marcos@yahoo.es (Marc Richards) Rasmus Lerdorf wrote: > On Thu, 8 Jul 2004, Marc Richards wrote: > >>Rasmus Lerdorf wrote: >> >>>On Thu, 8 Jul 2004, Marc Richards wrote: >>> >>> >>>>Does it? There are other similar constructs that don't e.g. +=, $a ? $b >>>>: $c, .=; >>> >>> >>>These have roots in other languages and as such have a familiarity to >>>them. ?: would be a brand new operator nobody has seen before and one >>>that looks a lot like the ternary operator which everyone knows about. >>> >> >>We can always create a name for the construct (in the same way the >>ternary statement has a name) and properly document it. If it becomes >>useful and popular, people will start calling it that. Proper >>documentation doesn't require an actual function name. > > > That wasn't my point. The point was that every operator in PHP is common > and known to the majority of people familiar with any other language. You > are proposing adding a new operator never seen before. Giving it a name > won't help because how will people know this name? They won't. Not until they hear about it or read about it. But that is true whether it is a function or and operator. Making it a function won't make everyone magically cogniscent of it. Of course it will be important to make it easy to search for information about it on PHP.net, which includes allowing people to search for ?: and providing a courtesy link from the ternary operator section. >The way you name an operator is to make it a function. Huh? I must be misunderstanding what you mean to say, because as far as I can tell that just isn't true otherwise we would have functions like add(), subtract() and ternary(). >>>>I think that part of the reason that these things are so terse is >>>>because if would defeat the whole point to use a function name; The aim >>>>is to be concise. >>> >>>No, the aim is not conciseness. That has never been PHP's goal. The aim >>>is clarity. >> >>I wasn't saying it was a PHP goal, I was it is the goal of certain >>constructs like += or .= > > > += is not unique to PHP in any way. Pick 10 random mediocre PHP or > non-PHP developers out of a crowd and ask then what += does and I bet a > good number will be able to tell you. Do the same with ?: and you will > first have to carefully explain that no, this is not the ternary ? : > operator, but rather a single ?: operator and then ask them to guess at > what it might do. How many do you think will figure it out? > > We don't do things to save people typing a couple of extra characters here > and there. We do things to lower the WTF factor of the language as much > as possible. The overall design from the very beginning has been to meet > the expectations of the common developer. The common developer expects > common operators such as += ++ -- != to do the right things. Are you saying PHP will never introduce an operator that doesn't already exist in a large number of other languages? > Not having > these would give us a high WTF factor. Nobody in the world expects a ?: > operator which is not the ternary operator. And having such an operator > would indeed be a big surprise and as such its WTF factor is high. > To be honest I am kinda hot and cold about how close it is to the ternary operator. On the one hand the two could be easily confused, but on the other hand they are in fact very similar in function in which case we could "market" (meaning document) them as being related. Ternary operator: $a = $b ? $b : $c; Compound Ternary operator: $a = $b ?: $c; The only asymmetry being that the "compound ternary operator" doesn't throw and error if !isset($b) whereas the regular one does...deal breaker? I dunno. Marc