Hello Marc,
Friday, July 9, 2004, 1:33:02 AM, you wrote:
> 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.
AND ?: won't be ternary....the whole reason for that operators name is that
obviously noone had a good name for it. But since it is the only ternary
operator (at least in all the languages i know) everybody calls the
construct ternary operator.
--
Best regards,
Marcus mailto:helly@php.net