5 ms·
I agree. SQLite gets away with using C because it literally uses military-grade levels of verification. As John Regehr pointed out, SQLite is quite possibly the
by pcwalton 9y ago
I agree. SQLite gets away with using C because it literally uses military-grade levels of verification. As John Regehr pointed out, SQLite is quite possibly the only piece of software that goes to that level of validation and testing without being required to by law.
It's not just a matter of skill, either. The cost in terms of money and time needed to develop software in that way is completely impractical in almost any commercial scenario. Aside from some very specific situations, it's not an economically viable way to produce software.
- IloveHN84 9y agoIn Germany there are strict regulations if you're writing secure software, especially under the lens of BSI and of the Bundesdruckerei. Softwares which deal with eID are verified and certified with strict rules
- signa11 9y ago> In Germany there are strict regulations if you're writing secure software, especially under the lens of BSI and of the Bundesdruckerei. Softwares which deal with eID are verified and certified with strict rules just curious, does this extend to dependent libraries as well ?
- epse 9y agoYup
- zerr 9y agoRegarding the viability, another thing to consider is that C gives you an ubiquitous compatibility.
- bsenftner 9y agoit is not economically viable for entertainment or disposable "apps", but extremely required for any serious, mission critical software. Seriously, the comments here betray how many people are in disposable software careers.
- pcwalton 9y agoThe comments here betray how much of the software economy depends on developer productivity. The fact is that SQLite style verification is not practical for almost any software, very much including "mission-critical" software.
- jt2190 9y agoCan't it be both? We need it right now and we don't need to to work perfectly or last forever. Really, we're talking about the same thing like they're two separate things: The software [1] (in this case, SQLite) and the application (whatever tables, queries, etc. you need to solve your problem) are used together. So we build the poorly tested, quick and dirty application on top of the well tested, solid software. [1] Yes, I realize that "software" is a terribly generic term to use to mean "well designed and tested software" and that "application" is also a terribly generic term to use to mean "hastily designed and untested software". Feel free to mentally substitute your own terms if you have better ones.
- phaer 9y agoYes, but look how much of the software economy's infrastructure* depends on underfunded products. OpenSSH, GnuPG and OpenSSL are just 3 projects which are installed on pretty much every Linux server on the internet, including the servers of billion-dollar-businesses. It got a lot better in recent years, but still: Quite a few economically viable software companies just depend on free labor for mission-critical software product which take a lot of resources to become solid. And while we are at it: http://www.openbsdfoundation.org http://www.openbsdfoundation.org https://gnupg.org/donate/ https://gnupg.org/donate/ https://www.openssl.org/support/donations.html https://www.openssl.org/support/donations.html
- simias 9y agoI wish that were true. I've worked on products that are very much not "disposable" and I've seen some terrible code and very poor testing infrastructure. It's especially bad in shops that were not primarily writing software and had to integrate software solutions to remain competitive. Execs don't understand it, don't care for it, don't invest enough resources in it. It's often delegated to some 3rd party and integrated like a black box in their solution.
- crb002 9y agoSQLite is litteraly used by the military in their Android phones.
- sli 9y agoIt's literally used by every Android phone, military or not. It can be used in iOS apps, too.
- kderbe 9y agoThe Opus codec has an impressive amount of testing behind it as well: https://www.ietf.org/proceedings/82/slides/codec-4.pdf https://www.ietf.org/proceedings/82/slides/codec-4.pdf
- z3t4 9y agoMost/All these tests are done by machine. Debugging (in production) (while your service is down) costs much more then writing a bunch of tests. The more states your program can be in the more rigorous tests are needed.
- nialv7 9y agoSQLite went through thorough testing, not verification. These are two different things.
- adwn 9y ago> SQLite went through thorough testing, not verification. These are two different things. I think you're confusing the terms "formal verification" and "verification". Testing is a subset of verification, but not of formal verification.