GOSUBはBASICに昔からある命令で、処理をジャンプするだけなのでこっちの方が速いですが、パラメーターを渡したり結果を受け取ったりはできません。 DEFは小さい別プログラムを実行するようなイメージで、パラメーターを渡してその値を元に処理をしたり、、値を戻したりできます。DEF内でのみ使用可能なローカル変数も使用可能です。GOSUBよりは若干遅いそうです。 人によって使い分けている人もいれば、全部DEFでいいじゃんって人もいます。私は使い分けています。どうしてもパラメーターが必要な時以外は、メインプログラムの流れの処理はGOSUB、汎用部品的なものはDEFを使用しています。 ぶっちゃけ、どっちでも書けますし、同じように動かせます。