Static Typing in Python

Premshree Pillai premshree_python at yahoo.co.in
Mon Mar 15 05:42:22 EST 2004


 --- Jacek Generowicz <jacek.generowicz at cern.ch>
wrote: > 
> On 13 Mar 2004, at 08:07, Premshree Pillai wrote:
> 
> > Yes, I am aware that Python is dynamically typed,
> and
> > so is Perl, right? In Perl, we have the "use
> strict
> > vars" pragma to force variable declaration.
> 
> I'm no Perler ... but by reading a bit of
> documentation, I get the 
> impression that you are a bit confused about what
> "use strict 'vars'" 
> really does. It seems to be some mish-mash of
> concepts: it imposes the 
> necessity to fully qualify names, to declare (the
> existence, not the 
> type of) variables with "our", and does some control
> of scoping rules.
> 

Err...you probably have the wrong idea of static
typing, I think. Static typing has to do with explicit
declaration (initialization) of variables (and not of
variable types). Like in C, C++, etc, Python too is
strongly typed, i.e., variables are necessarily bound
to a particular type.

So, Python is dynamically typed, and also strongly
typed...as opposed to statically typed and strongly
typed like in C/C++ (casting notwithstanding).

> Whatever it does, it seems that "use strict 'vars'"
> has absolutely 
> nothing to do with static typing.
> 
> So, I must ask you the same question as I asked
> Peter: "what do you 
> understand 'static typing' to mean?"
> 
> > Is there something like it in Python?
> 
> No.
> 
> > Don't you think forced variable declaration is an
> > important requirement in a language?
> 
> No. Absolutely not. I think that an important
> requirement in a language 
> is that it NOT *force* variable declaration.
> (Optional declaration is 
> fine.)
> 
> I do think that it is an important requirement in a
> language that test 
> suites be easily written in it. I also think that it
> is an important 
> requirement of developers that they write
> comprehensive test suites as 
> they develop their software. The test suites will
> catch ALL SORTS of 
> errors (including those resulting from type errors).
> Static type 
> systems, OTOH, catch only one, minor, class of
> errors (type errors), 
> and do so at great cost.
> 
> Static typing catches even those type "errors" which
> would in no way 
> prevent the program from running correctly.
> (Implicit static typing 
> systems are much better in this respect than
> manifest ones.)
> 
> Static typing makes the language more inflexible,
> and makes it much 
> more difficult to run incomplete programs. Why would
> I want to run an 
> incomplete program? Well, during the *whole*
> development phase, a 
> program is incomplete. Just think about that for a
> minute. And I would 
> certainly like to run my programs during development
> to test them.
> 
> Your average C++ programmer is so happy when the
> compiler eventually 
> complies his program without errors (even though it
> may signal 300 
> warnings), that he is convinced that the program is
> correct. "I 
> Suffered so much, and fixed so many errors to get
> this far. If the 
> compiler, which is so pedantic and spotted all those
> errors, can't spot 
> any more, then surely there _aren't_ any more errors
> in my program." 
> And he thinks he has finished. He hasn't been able
> to run any tests so 
> far (this is the first time that the program has
> complied), so the 
> program is almost guaranteed to be bug-infested, but
> the thought of 
> writing a test-suite at this point (if it would
> cross his mind - it 
> won't; the complier has already told him that his
> program is 
> error-free) would be so frightening that he would
> quickly dismiss it. 
> If, however, he did try to write a test suite, then
> the third bug he'd 
> find, would motivate him to make a tiny change which
> would make the 
> static typing system reject his _whole_ program. He
> would then notice 
> that the static type system forces a whole chain of
> changes upon him, 
> extending into parts of the program which are in no
> way related to the 
> part which he is actually trying to test, before
> allowing him to run 
> the program again, in order to check that his fix
> works. That chain of 
> changes would, of course, set off new chains of
> changes along its way, 
> and those chains ... you get the picture.
> 
> I think that manifest static typing systems are
> great way of slowing 
> down development, and ensuring less (sic) correct
> programs.
> 
> Variable declarations are usually just noise, which
> obfuscate the 
> program, and make it a pain to write.
> 
> 
> -- 
> http://mail.python.org/mailman/listinfo/python-list 

=====
-Premshree
[http://www.qiksearch.com/]

________________________________________________________________________
Yahoo! India Insurance Special: Be informed on the best policies, services, tools and more. 
Go to: http://in.insurance.yahoo.com/licspecial/index.html




More information about the Python-list mailing list