On 13/10/2015 01:07, Steven D'Aprano wrote:
On Tue, 13 Oct 2015 04:20 am, Marko Rauhamaa wrote:

As for managing complexity, many people believe static typing is a
crucial tool. I disagree. Static typing adds vast amounts of noise to
the code.

Only if you are stuck in the 1970s. And even then, it is not always noise,
type declarations or annotations often make useful documentation.

Consider the following piece of code:

def addone(x):
     return x + 1


The human programmer reading that can trivially infer that x must be a
number (or at least something which supports numeric addition). So can the
compiler. In a strongly typed language with no numeric promotion, the
compiler can infer that x must be an int. In a language with numeric
promotion, it can infer that x must be an int or float.

That's type inference. And is harder than it looks. In Python, x could be almost anything, and still be legal, if X has type T and "+" has been defined between T and integer. (It would need to analyse an entire program and it still can't always be sure.)

Where is the "vast amounts of noise" added to the code?

It comes from writing this:

 def addone(int x)int:

And not all types are as compact as 'int' (have a look at some C or C++ header files).

--
Bartc



--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to