アイデアの続き:証明可能な実世界の言語はありますか?
あなたのことはわかりませんが、保証できないコードを書くことにうんざりしています。
上記の質問をして驚異的な回答を得た後 (ありがとうございました!) Haskellへの証明可能で実用的なアプローチの検索を絞り込むことにしました。私が Haskell を選んだのは、それが実際に有用であり (Haskell用に書かれた多くの Web フレームワークがあり、これは良いベンチマークのようです) 、機能的に十分に厳密であり、証明可能であるか、少なくとも不変条件のテストが可能であると考えたからです。
これが私が欲しいものです(そして見つけることができませんでした)
psudocode で記述された Haskell 関数 add を参照できるフレームワークが必要です。
add(a, b):
return a + b
- そして、特定の不変量がすべての実行状態を保持しているかどうかを確認します。正式な証明が欲しいのですが、モデルチェッカーのようなもので解決します。
この例では、値aとbを指定すると、戻り値は常に合計a+bになります。
これは簡単な例ですが、このようなフレームワークが存在することは不可能ではないと思います。テストできる関数の複雑さには確かに上限があります (関数への 10 個の文字列入力は確かに長い時間がかかります!) が、これは関数のより慎重な設計を促進し、他の形式を使用する場合と違いはありません。メソッド。Z または B を使用することを想像してみてください。変数/セットを定義するときは、変数に可能な限り小さい範囲を指定するようにしてください。INT が 100 を超えることがない場合は、そのように初期化してください。このような手法と適切な問題分解により、Haskell のような純粋関数型言語の十分なチェックが可能になるはずです。
私は正式なメソッドや Haskell の経験はまだありません。私のアイデアが正しいものなのか、それとも Haskell は適していないと思うのか教えてください 別の言語を提案する場合は、「has-a-web-framework」テストに合格することを確認し、元の質問を読んでください:-)