How coding in Python is bad for you
BartC
bc at freeuk.com
Mon Jan 23 19:44:14 EST 2017
On 23/01/2017 22:09, Chris Angelico wrote:
> On Tue, Jan 24, 2017 at 8:55 AM, BartC <bc at freeuk.com> wrote:
>> On 23/01/2017 17:34, Chris Angelico wrote:
>>>
>>> On Tue, Jan 24, 2017 at 4:24 AM, <breamoreboy at gmail.com> wrote:
>>>>
>>>> The article is here http://lenkaspace.net/index.php/blog/show/111
>>>
>>>
>>> I would respond point-by-point if I thought the author had a clue.
>>
>>
>> I thought points 1 to 4 were valid, in that the assertions were true.
>
> 1 is wrong - there is structure, same as in every language. Or if it's
> true, it's true in every language.
Python (I think in common with other scripting languages) allows you to
place statement outside functions, either before, after or in-between
functions. While functions themselves, as well as imports, can be
conditionally defined.
2 is also trivially true - you can
> ALWAYS define variables wrongly. Yes, okay, so you don't have data
> type checking, but that's only going to catch a specific subset of
> errors.
With Python, you can take function names that you've defined, imported
modules, or math.pi, and set them all to "edward g robinson". (The name
just came into my head..)
> 3, well, okay. But if you get your indentation wrong in C++,
> Java, etc, it should fail code review.
With C++ or Java, it's possible to tell the indentation is wrong
(because of the extra redundancy of having the indentation /and/ block
delimiters). That's a bit harder in Python making source more fragile.
> 4 is flat out wrong.
(About having no compiler.) Yes (C)Python does have a byte-code compiler
but there are a vast range of errors that it cannot trap at compile-time
because of its dynamic nature.
Maybe you can run tools to do extra analyses, but as it's normally used,
many errors are not detected until execution. Spelling errors in names
for example. (Actually when I tested my assertion above I assigned to
math.p rather than math.pi; no error not even at runtime, just the wrong
result. Or technically the right one, as math.pi still had the usual value!)
I'm not criticising it, just stating facts which may well have been the
experience of the guy who wrote the article, giving the impression of a
more chaotic, free-for-all language than they may have been used to, or
expected.
--
bartc
More information about the Python-list
mailing list