- 次世代言語18 V Julia 他
248 :デフォルトの名無しさん[sage]:2019/10/05(土) 18:11:40.37 ID:b9+wkgN8 - >>207
Cはキャストでどうにでもなるけどそれが全ての型がない言語を代表してるとでも 旧ObjectWorksだと何も困ることはなかったな 任意のインスタンスに存在しないメッセージ投げようとしても警告が出てセーブできないし 無理やりevalで実行時解釈させようとしてもエラートラップするだけで原因はすぐわかるようになってる 引数はいわゆるanyだがどのクラスに限定するのか記述することもできる(そうしたいのなら) 型で縛ってる言語は労力かかるわりに仕上がり悪いことが多いね
|
- 次世代言語18 V Julia 他
249 :デフォルトの名無しさん[sage]:2019/10/05(土) 18:18:15.93 ID:b9+wkgN8 - そもそも型推論はコードの安全性を高めるのが目的というよりも
型が定まることにより最適化の恩恵を受けられるというのが本来の筋だと思うんだよな
|
- 次世代言語18 V Julia 他
255 :デフォルトの名無しさん[sage]:2019/10/05(土) 20:08:36.34 ID:b9+wkgN8 - コンパイラにできることは型が正しいか検査することだけであって
正しい処理をしたかどうかなんて担保できないんだよね 型の辻褄は合わせました、ロジックは間違ってて要求仕様を満たしてません こういうのを何度も見てると本末転倒とさえ思える 型に振り回されすぎて実際のコードがゴミになってる これはいかんね
|
- 次世代言語18 V Julia 他
258 :デフォルトの名無しさん[sage]:2019/10/05(土) 20:19:05.31 ID:b9+wkgN8 - >>256
少人数でも大人数でも動的なほうが問題起こしにくいよ コード量も少なくて労力がかからないというのは利点しかない 機能追加にしても動的だと合わせやすいけれども静的型付けだと どうしても綿密にやらないといけない割に不具合起こしやすくなる 強い型付けは想定されていなかったことに対して非常に弱い側面あるね
|
- 次世代言語18 V Julia 他
260 :デフォルトの名無しさん[sage]:2019/10/05(土) 20:32:05.04 ID:b9+wkgN8 - 個人的におかしいと思うのは
強い型付け言語の利点としてなぜかコードの安全性なるものが神話化してしまったことなんだね それは全く担保できないことなんだけれども。 大きな利点があるとすればコンパイラがより最適化しやすくなる、ということだけだけど HaskellなんかのUnboxed Valueがさっぱり早くないところを見ると疑問もある
|
- 次世代言語18 V Julia 他
261 :デフォルトの名無しさん[sage]:2019/10/05(土) 20:34:18.71 ID:b9+wkgN8 - >>259
通らないコードはテストもされていないってことなんだよ そこを心配するのはそもそもおかしいのだ 動的なエラートラップはすぐに原因がわかるのと対処も早いので進捗は早めになる
|
- 次世代言語18 V Julia 他
274 :デフォルトの名無しさん[sage]:2019/10/05(土) 21:37:33.45 ID:b9+wkgN8 - >>269
それは現実離れした極論だね 修正が必要になるのはどの言語でも変わらないよ テストコードが動かない場合、あるいはtest protocolが失敗するケースでは問題が起きてるから修正にはなるがそれだけだ 引数に全く違うオブジェクトが入ってきた場合の振る舞いはすぐにトラップするからわかるよ 全体修正なんてことにはならないしなったこともない
|
- 次世代言語18 V Julia 他
275 :デフォルトの名無しさん[sage]:2019/10/05(土) 21:39:22.95 ID:b9+wkgN8 - >>272
メソッド名の変更は全体に適用できるので問題ないね 命名変更程度なら用意されてる 呼び出す方も全て変わる
|
- 次世代言語18 V Julia 他
276 :デフォルトの名無しさん[sage]:2019/10/05(土) 21:42:13.51 ID:b9+wkgN8 - >>264
旧仕様のクラスのままで新仕様のクラスをテストする、ということが動的の場合はできるのだ こう言ったことに限らずあらゆる局面で柔軟性が高いのは利点だよ 開発サイクルの速さはこういうことにもつながっている
|
- 次世代言語18 V Julia 他
278 :デフォルトの名無しさん[sage]:2019/10/05(土) 21:50:21.79 ID:b9+wkgN8 - >>264
重要なことを書くのを忘れた 「型を追わなくていい」んだな そこに注力する必要がなく、適切なprotocolと定義があるかを見ることが重要になる 型付け言語と動的の場合それぞれアプローチが変わってくる
|
- 次世代言語18 V Julia 他
283 :デフォルトの名無しさん[sage]:2019/10/05(土) 22:08:26.33 ID:b9+wkgN8 - CLOSなんかでも総称関数で想定外のオブジェクトが渡されたら大変なことになるなんて言う人いないと思うが
最終的に呼ばれるはずだったslotが存在しないオブジェクトを扱おうとしていたら直ちにトラップか コンパイルする処理系だと事前に警告だから どこをどうやっても全体修正なんてことにはならない 強い型付けをしても想定通りに動かないコードが出来上がってしまうのは すなわち型だけで安全性を高めることはできない証左とも言える その理由の一つに一般的に型とは振る舞いを定義しているものではないからだ 型が合わなければ通さない、合っていれば通す、ただそれだけのことであって 通した後の処理まで面倒見ているわけじゃあない 本末転倒になっているのはこの部分だね
|