Documentation Source Text

Check-in [4a40995c05]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Soften the criticism of Go because of their decision to omit assert() from the language.
Timelines: family | ancestors | descendants | both | branch-3.28
Files: files | file ages | folders
SHA3-256: 4a40995c05dc3264584b387c821f0bf8b2411ca6ef6ad16201c8677265416559
User & Date: drh 2019-04-29 15:46:08
Context
2019-04-29
19:27
Further clarification to the assert.html document. check-in: ef3822f76d user: drh tags: branch-3.28
16:21
Merge changes from the 3.28 branch. check-in: d220b2f30c user: drh tags: trunk
15:46
Soften the criticism of Go because of their decision to omit assert() from the language. check-in: 4a40995c05 user: drh tags: branch-3.28
2019-04-19
23:40
Clarify the documentation on PRAGMA cache_size to explain that the cache size will go up or down in proportion to a change in page size. check-in: 184e897473 user: drh tags: trunk
Changes
Hide Diffs Side-by-Side Diffs Ignore Whitespace Patch

Changes to pages/assert.in.

    67     67   An ALWAYS(X) or NEVER(X) macro, or something similar, should be used in 
    68     68   those cases because ALWAYS(X) or NEVER(X) will be followed by code to
    69     69   actually deal with the problem when the programmers reasoning
    70     70   turns out to be wrong.  Since the code that follows ALWAYS(X) or NEVER(X)
    71     71   is untested, it should be something very simple, like a "return" statement,
    72     72   that is easily verified by inspection.
    73     73   
    74         -<p>The [https://golang.org|Go programming language] omits assert().
           74  +<p>
           75  +Because assert() can be and is commonly misused, some programming language
           76  +theorists and designers look with disfavor on the whole idea of assert().
           77  +For example, the [https://golang.org|Go programming language] omits assert().
    75     78   The Go developers
    76     79   [https://golang.org/doc/faq#assertions|recognize this is contentious].
    77         -Disallowing assert() is essentially telling developers that they are
    78         -not allowed to do run-time verification of invariants.
    79         -It is as if the developers of
    80         -Go do not want coders to prove the software is correct.
    81         -The SQLite developers believe that the lack of assert() disqualifies
    82         -Go as a language for serious development work.
           80  +The SQLite developers agree with those that think the decision to 
           81  +omit assert() from Go is a mistake.
           82  +It is true that assert() can be misused.  Antibiotics can be misused
           83  +too, but that does not mean we should ban all antibiotics.
    83     84   
    84     85   <h2>Different Behaviors According To Build Type</h2>
    85     86   
    86     87   <p>Three separate builds are used to validate the SQLite software.
    87     88   <ol>
    88     89   <li> A functionality testing build is used to validate the source code.
    89     90   <li> A coverage testing build is used to validate the test suite, to confirm