nullを許すかどうかを明示的に分ける言語

多分、constとかと同じようにmodifierみたいにするといいのでは?
例えば以下のような感じです。nullable が新しいキーワードです。

nullable File findFile(File path, String pattern) {
    for (File f : path.listFiles()) {
        if (match(f, pattern)) return f; // 見つかった
    }
    return null; // 見つからなかった
}

引数 path, patternはnull不可です。
戻り値はnull可です。だから return null も可能です。
また、nullableな変数をそうでない変数に代入することはできません。
その逆は可能です。