2023年5月15日月曜日

Q:質問:何でも出来るプログラミング言語で「発明」される酷いコードやバグの数々にうんざりしています。退屈であっても力の弱い、バグを作りにくいプログラミング言語はありませんか?

https://jp.quora.com/nande-mo-dekiru-puroguramingu-gengo-de-hatsumei-sa-reru-hidoi-ko-do-ya-bagu-no-kazukazu-ni-unzari-shi-tei-masu-taikutsu-de-atsu-te-mo-chikara-no-yowai-bagu-wo-tsukuri-nikui-puroguramingu-gengo-ha-arima-sen-ka


A:回答:

再代入もできない、データ構造の一部を更新することもできない、評価順序に依存した副作用を伴う処理を直接には書下すことのできない、ナイナイ尽くしの(純粋)関数型言語をおすすめします。

さらに、静的に定まる型に一致しない型を持ったデータについて、代入や引数に与えたり受け取ったりするコードの実行を試みることすら実行前に禁止する静的型言語であれば更に非力になります。

関数型ではなくても、Rustなどの強力な表現力の高い型システムは例えばメモリバグを殲滅します。言語で書けることを意図的に制限し狭めエラーとすることができる表現力の高い型システムは、ある種のバグを減らすのに効果的です。自由度の高い、ポインタに算術演算すらできる強力なC言語における脆弱性の多発は世に知られるとおりです。

統計的には上記でバグは少なくなるといわれています。デバッグの苦労がコンパイルを通す苦労に置き換わってると言えるかもしれませんが。

ただし、いずれにしろ残念ながら退屈ではありません。Haskellなどでたまにやらなければいけなくなる型合わせパズルはエキサイティングな頭の運動になります。

0 コメント:

コメントを投稿