David,

It seems I didn't state clearly enough my original statement, which is that
software will *_always_ *fail, even because of faulty hardware components,
or cosmic rays.

For software to be resilient, it must assert it's expected state.

But that doesn't have to be with the *assert* statement, perhaps less so
when the Python tradition is that those go away with just a "-O".

I won't vouch for an *"invariant"* statement, because that's probably too
much to ask for.

So I'll just use *"if"* to assert more invariants in the code I write.

Cheers,

On Sat, Sep 11, 2021 at 2:05 PM David Mertz, Ph.D. <david.me...@gmail.com>
wrote:

> On Sat, Sep 11, 2021 at 9:20 AM Juancarlo Añez <apal...@gmail.com> wrote:
>
>> I'm happy about dropping the DBC theme and rebooting to make *assert* easier
>> to use so it gets used more.
>>
>
> I agree with Steven, Marc-Andé, and others in seeing "using assertions
> more" as an anti-goal.
>
> This isn't to say that a given program should have fewer—nor more—lines
> that start with `assert`.  Rather, assertions should be use to ASSERT
> conditions that should NEVER be violated.  They are NOT to check whether
> user input is bad. Nor whether a disk is unreliable.  Nor whether a
> computation takes too long. Nor whether a value is outside of a useful
> range.  Nor any of the other things that regular exception handling is well
> designed for.
>
> If for some reason you find yourself completely unable to write "if not
> (condition_to_check): ..." for mysterious reasons, you could use assert
> this way (but don't):
>
> >>> try:
> ...     assert 2+2==5, "Bad arithmetic"
> ... except AssertionError:
> ...     print("Configuring stuff to log problem")
> ...     raise
> ...
> Configuring stuff to log problem
> Traceback (most recent call last):
>   File "<ipython-input-3-2a9bdbc65744>", line 2, in <module>
>     assert 2+2 == 5, "Bad arithmetic"
> AssertionError: Bad arithmetic
>
> But again, that's bad code for the same reason your proposal would be bad
> code.  Assertions have the entire purpose of being possible to disable, and
> to express conditions a programmer believes are *necessarily true*.
>
>
> --
> Keeping medicines from the bloodstreams of the sick; food
> from the bellies of the hungry; books from the hands of the
> uneducated; technology from the underdeveloped; and putting
> advocates of freedom in prisons.  Intellectual property is
> to the 21st century what the slave trade was to the 16th.
>


-- 
Juancarlo *Añez*
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/CWNOAP4UF7ECVMOXPJQQICEZPIDA576V/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to