> On 16.03.2015, at 15:03, Kristian Köhntopp <k...@koehntopp.de> wrote:
> 
> That is me. And I voted no on a broken poposal.

And because some people asked, the kk account is not new.

I have been using PHP since about 1997/98, joining the community around the 
times of the first PHP 3.0 beta-releases. Boris Erdmann and I wrote something 
called PHPLIB (http://marc.info/?l=php-general&amp;m=90222503034131&amp;w=2, 
http://marc.info/?l=php-general&amp;m=90281652210710&amp;w=2) which implemented 
some kind of session management that has been rewritten into the session module 
of PHP 4.

I also wrote the Posix and Recode extensions back then, worked on the LDAP 
extension, and dissed Zeev because of the C++ way of implementing constructors 
instead of using __init or __construct 
(http://www.mail-archive.com/php-dev@lists.php.net/msg36275.html, and many 
other messages before that). I also annoyed people into implementing __get, 
__set and __call, which over time became 
http://php.net/manual/en/language.oop5.magic.php

I blogged https://plus.google.com/u/0/+KristianK%C3%B6hntopp/posts/ijoDNH2M8mB, 
and apparently that motivated a number of people to look into this and form an 
opinion, which is good. PHP already has too many things that can be enabled and 
disabled at the language level, and too many ways to enable and disable 
functionality in the language. It should have one typing system, not many and 
certainly not any way to switch these on and off, no matter how.

At the current state and climate of discussion I personally think it would be 
best for the language and the community for each and every proposal to change 
the type system to fail or be withdrawn.

From my current experience, it may have been best for the language  to have 
chosen the Python way of things back 20 years ago

>>> 3 + "2"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>> 3 + int("2")
5
>>> 3 + int("2a")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '2a'

but it is too late now. Neither of the current proposals actually improves a 
lot for anybody, but making that improvement optional, how little it may ever 
be, is just insane.

If you MUST have one proposal succeeding, I am of the opinion that one should 
support the one by Zeev with the modification that it actually warns about 
things instead of erroring right now (E_DEPRECATED or something), and make that 
errors in the release after the current. I do think that because it is ONE type 
system, not optional and because it actually finds things that are broken and 
complains about these. Just make the transition more gradual than it is now, in 
order to ease adoption.

K

--
Kristian Köhntopp http://google.com/+KristianKohntopp

Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

Reply via email to