On Thu, Apr 14, 2016 at 5:44 PM, Alain Williams <a...@phcomp.co.uk> wrote:
> On Thu, Apr 14, 2016 at 10:00:41AM +0100, Tony Marston wrote: > > > I agree with Zeev 100%. There are too many people out there who are > > trying to make the language more complicated than it need be just to > > prove how clever they are. The aim of any language should be to > > enable programmers to do complicated things in a simple way, and not > > to do simple things in a complicated way. > > I disagree. My way of looking at it is that adding some features(eg the > current > type specification/checking) adds to the simplicity because I can say what > types > I want and don't need to write code to check the types of argument > received by a > function (etc). Why would I want to check: because I value robustness, ie not having my code > fall over because, somehow, a wrong type slips by unnoticed. I think the original purpose of adding type system in Hack, is to provide just-in-time compilation, this provides more information to let compiler to optimize the code with specific type. Haskell, OCaml, C or C++, these statically typed languages compile code into executable binary, the compiler raises the warnings or errors before executing it, thus they have more time to check type information, they usually don't check type in the run-time. However PHP is not, PHP runs script on the fly, and check the type in the runtime (instead of compile time), therefore the type checking implemented in PHP is a kind of execution performance trade off (until we implemented the JIT compiler). and a complex type system add more extra work to the whole system than statically typed language. Adding type hinting makes people writing PHP code with more confident, I like the scalar type hinting implemented in the current PHP. But weak type conversion and union type are not, it introduces more complex rules of how variables should be converted into another values, and there will be more implementation defined behavior. People will have to always have a cheatsheet or something to check whether if they write the correct code. And I believe, if we can remove the support of weak type conversion, PHP could be a "consistent", "simple" language and it can help people write confident code. Cheers, Yo-An Lin