>>621
Javaのクラスの中のメソッドと同じで順序は問わない。

まあでも新しい言語ってだいたいそうじゃないか?
変数の場合は初期化される順序の問題で先に書かなきゃいけない場合はあると思うが。これについては Kotlin も同じ。

例えばこうなっている場合に main() と p() は順序を逆にできるが s と s2 は逆にできない。

val s = "abc"
val s2 = s + "def"
fun main(args: Array<String>) = p()
fun p() = println(s2)

できるような言語も作れるだろうがそうすると人間が混乱する可能性が高まってバグの温床になりかねないからわざとできないようにしてあるんだろうと思う。