謎's キッチン

謎のひとりごと。Amazon欲しい物リストはこちら: https://www.amazon.co.jp/hz/wishlist/ls/CCPOV7C6JTD2

言語の種類

前方参照だけの言語としてHaskellがある。
手続き型だけの言語としてJavascriptがある (モジュールの前方参照が無いので複数のモジュールの読み込む順番を前もって決めなければいけない)。
実装が組合せで、モジュール・静的・関数が手続き型としてC言語C++がある(ヘッダのincludeガードによってJavascriptの時の読み込む順番を前もって決めなければならないという弱点を克服してる…ものの、複数のオブジェクトにコンパイルする際に呼出し元に依存するせいで中間表現(?)を共有できない)。
んでモジュール・静的が前方参照(ただしdebugやstatic ifなど一部が手続き型)、関数が手続き型としてD言語
Javaとかは知らね。



モジュールはコンパイル速度的に前方参照が有利(ただし手続き型でも一度にコンパイルすればそんなに変わらない(C++で#pragma onceでヘッダに実装埋め込んで一つのファイルにしてコンパイルするとか)。むしろ問題なのはヘッダ読み込みの順序による副作用かも。)、静的はどっちも一長一短、関数は手続き型の方が使い易いはず。静的は手続きの方が良いと思ってたけど、手続き型な変数は前方参照な変数に依存できない…というように制限すれば共存できなくもないな。ややこしいけど。