・・・を見れば、少なくともCであれば、j の値が5倍されて結果が i に格納されるということがわかる。
しかしC++の場合では、同じスニペットから分かることは何もない。まったく。C++で本当に起こることが何か知るためには、ぜんぜん違う場所で宣言されているかもしれない i と j の型を見つける必要がある。それはjがoperator*をオーバロードしている型の変数かもしれず、かけ算したときにはなはだ気の効いたことをやってくれるかもしれないからだ。そして i はoperator=をオーバロードしている型の変数かもしれず、また型が異なるために暗黙の型変換関数が呼ばれることになるかもしれない。そして何が起るか知るためには変数の型をチェックするだけでなく、その型を実装しているコードを見つける必要があり、そして,神よ救いたまえ、どこかで継承が行われていれば、コードが実際どこにあるのか自分でクラス階層をたどる必要があり、そしてどこかにポリモーフィズムがあれば、あなたは本当に難儀することになり、それは i と j の型がどう宣言されているか知るだけでは不十分で、実行のその時点における型が何か知る必要があるからであり、それにはどれくらいの量のコードを調べなければならないかわからず、停止性判定問題のおかげで、あなたは決してすべてをチェックしたか本当に確信することはできないのだ。(やれやれ!)
女房と言語は新しい方がいい (スコア:1)
と言ってるだけだな。
Cの何が悪いかちゃんと理解できればC++できちんとしたコード書けるだろ。
Windowsにはmanaged objectだとかもあるだろ。
取り替えられるならとっくにやってる&あんたが知らないだけだと思われ。
Re: (スコア:1)
今のC++は複雑すぎるだろう。
新しい言語の成果をどんどん取り入れるのはいいが、頑なに互換性を守るために歪な文法を強いられる。
Cの良いところは、言語使用が小さく一行一行がどういう機械語に置き換わるか予想できるところ。
モダンC++は a = b;とだけ書かれていても凡人には想像も及ばないことが行われていたりする。
あと、C++のコミュニティが最悪だね。
間違った理解やちょっと古臭いコードを書くと「そんなことも知らないんですか。勉強して出直してきてください」だもんな。
Re:女房と言語は新しい方がいい (スコア:4, 興味深い)
どこかで似たような話を読んだなぁと思ったらブックマークに残ってた。
間違ったコードは間違って見えるようにする [joelonsoftware.com]
一般的に言って、私はものごとを隠してしまうような言語機能には恐れを感じる。次のコード
i = j * 5;
・・・を見れば、少なくともCであれば、j の値が5倍されて結果が i に格納されるということがわかる。
しかしC++の場合では、同じスニペットから分かることは何もない。まったく。C++で本当に起こることが何か知るためには、ぜんぜん違う場所で宣言されているかもしれない i と j の型を見つける必要がある。それはjがoperator*をオーバロードしている型の変数かもしれず、かけ算したときにはなはだ気の効いたことをやってくれるかもしれないからだ。そして i はoperator=をオーバロードしている型の変数かもしれず、また型が異なるために暗黙の型変換関数が呼ばれることになるかもしれない。そして何が起るか知るためには変数の型をチェックするだけでなく、その型を実装しているコードを見つける必要があり、そして,神よ救いたまえ、どこかで継承が行われていれば、コードが実際どこにあるのか自分でクラス階層をたどる必要があり、そしてどこかにポリモーフィズムがあれば、あなたは本当に難儀することになり、それは i と j の型がどう宣言されているか知るだけでは不十分で、実行のその時点における型が何か知る必要があるからであり、それにはどれくらいの量のコードを調べなければならないかわからず、停止性判定問題のおかげで、あなたは決してすべてをチェックしたか本当に確信することはできないのだ。(やれやれ!)
Re: (スコア:0)
つまり、kotlinはクソってことだね。
Re: (スコア:0)
https://cpplover.blogspot.jp/2013/05/linus-torvalsc.html [blogspot.jp]
https://srad.jp/~taro-nishino/journal/509450/ [srad.jp]
SFINAE萌えとかC++初心者の自分ではありますが、御大の言ってることは確かになぁ、って思う。