C++は難しすぎ 難易度:4

1デフォルトの名無しさん2008/09/16(火) 18:31:24
どう考えても難しすぎだろ!
読みやすい名前に改名しないBjarne Stroustrupには げんあり

前スレ達
難易度:1 http://pc5.2ch.net/tech/kako/1058/10586/1058675178.html
難易度:2 http://pc5.2ch.net/tech/kako/1063/10633/1063323615.html
難易度:2 http://pc11.2ch.net/test/read.cgi/tech/1071697977/

571デフォルトの名無しさん2017/06/24(土) 10:48:03.15ID:5iili0Vp
> 機能追加で便利になってるのに、何が複雑なのかわからん

そういう感覚なんだろうなw
何が複雑かのセンスがそーいう状態なんよ
俺が何を言ってるかも、多分分からんやろな

572デフォルトの名無しさん2017/06/24(土) 11:00:01.28ID:0iPve436
C++の書籍って、浅い入門書か、すでに使いこなしてる人向けの高度な本の両極端なイメージ

573デフォルトの名無しさん2017/06/24(土) 11:12:32.10ID:5HRkzvGx
やはり、コードの字面から動作を予測しやすいというのがわかりやすいプログラムなんだと思う。
そういう意味で、テンプレート、オーバーロード、SFINAE、ADLなんかを駆使してドヤッてるC++プログラムは
マクロ使いまくりのLispやCなみにわかりにくい。

574デフォルトの名無しさん2017/06/24(土) 13:20:37.04ID:pld1AkHH
>>566
実用的かどうか。これに尽きる
自己満のゴミプログラムなんていらない

575デフォルトの名無しさん2017/06/24(土) 17:42:49.03ID:2UgIHN8U
複雑と思うなら、その機能を使わなければいいだけでしょ
低レベルさに加えて、流行りの高級機能も使えるという、「選択権」があるのがC++の良いところなんだから

自分の理解不能な機能を見て、ドヤってると感じるのは劣等感じゃね?
もちろん、普通に関数作れば良いところでlambda使って無駄に読みにくくしてる人がいると言う事実には同意する

576デフォルトの名無しさん2017/06/24(土) 18:13:25.45ID:5HRkzvGx
例えばマクロを多用したプログラムが理解しにくいというのと、マクロの機能を理解しているかどうかってのは別の話。
言語機能自体を理解していたとしても、わかりにくいプログラムはわかりにくい。
>>573にlambdaを挙げなかったのは、lambdaはそういう意味での分かりにくさは比較的少ないから。

577デフォルトの名無しさん2017/06/24(土) 18:35:48.62ID:5iili0Vp
>>575が一体C++で何を作ってきたのかが疑問だな
お前C++の良さを語れるような立場じゃねえよな

578デフォルトの名無しさん2017/06/24(土) 18:37:46.40ID:23EMNP9J
無理に使わなくてもいいというのは同意だけど
例えばメンバとして持つものにstd::tupleなど、ムーブをサポートしているクラスを想定して
ムーブコンストラクタ、ムーブ代入演算子など定義するけど
「それ以外ほぼ何もしない」クラス作ってドヤってる人(サンプルコードの話ではない)は最近よく見かけるんだよなぁ・・・w

セオリーや流行ばかり追いかけて実用性皆無なコードしか書けない趣味グラマ?ばかりが
最近C++界隈で目立っている気はする。

ある程度なんでも出来るようになれば言語のことはどうでもいいから、
結果そういうのばかりが目立ってるのかもしれんけど

579デフォルトの名無しさん2017/06/24(土) 18:40:43.39ID:GiFMFqzr
>>576
具体的に言うと、どの言語がわかりやすいの?
煽ってる訳ではなく、純粋に意見が聞きたいだけよん。

580デフォルトの名無しさん2017/06/24(土) 19:03:23.75ID:5HRkzvGx
絶対的な順位というのは決められないだろうけど、少なくともCはC++より分かりやすいよな。

a = b + c;

こんなコード片があるとき、Cならここで数値かポインタの加算が行われると推測できるし、あとは
オーバーフローの可能性を気にする程度でいいけど(マクロが使われていた場合は別として)、
C++だと選択肢が多すぎて判断が難しい。下手したらコード全体を隅から隅まで調べないと実際の
動作を把握できないかもしれない。

581デフォルトの名無しさん2017/06/24(土) 19:07:55.94ID:VreQ5HUD
書きやすいと読みやすいは別物で
C++はC以上に書きやすさを求めた結果
読み手に優しくないコードが書けるようになったのは事実だよね

精通すればスラスラ読めるようになるってんならまだしも
単なる独りよがりなコードも書けるから手に負えない

582デフォルトの名無しさん2017/06/24(土) 19:38:18.99ID:GiFMFqzr
>>580
ああそういう事ね。
確かにわかる。

まあ、その点だけで言うと、その operator を提供しているクラスを信じられるかどうかって点に行き着く気がするけどね。
プラスの意味論 (セマンティクス) に逆らう機能を実装するような、質の悪い設計なのかって言う点から、実際ちゃんと動くのかって点ね。

セマンティクスに逆らわない機能で、単体テストされていれば、基本的に疑いの眼差しを向ける必要はないはず。(カプセル化)

583デフォルトの名無しさん2017/06/24(土) 19:41:21.76ID:GiFMFqzr
>>581
ああー、同意。
うまく使えば読みやすいのに、慣れない人が使うと酷いことに。

なるほどー、わかってきた気がする。
あまりにも簡単に無意味に複雑なコードが書けてしまうことが問題なのか。

584デフォルトの名無しさん2017/06/25(日) 11:37:33.63ID:nwJzUblX
仕事ならバカに合わせて書くしかない

585デフォルトの名無しさん2017/06/25(日) 12:05:23.88ID:crK74dJZ
違う。書いた本人以外に合わせるんだよ。
あんたのコードを周りの人が理解できないのはあんた以外全員バカだからというわけじゃない。

586デフォルトの名無しさん2017/06/25(日) 20:45:16.60ID:jd7A/4Ox
ポリモーフィズムを使うとき、デストラクタにvirtual付け忘れると
場合によってはメモリリークして大変な事になる
サブクラスをdeleteした時に
スーパークラスのデストラクタしか呼ばれない

この罠に引っかかった奴は多いに違いない

587デフォルトの名無しさん2017/06/25(日) 22:23:33.41ID:dn2uysTM
>>586
とにかくデストラクタにはvirtual付けるようにしてる。

588デフォルトの名無しさん2017/06/25(日) 23:29:06.06ID:crK74dJZ
今ほど継承の問題点が言われていなかった過去の常識という印象。

589デフォルトの名無しさん2017/06/26(月) 00:00:32.21ID:n6GngECu
virtualなデストラクタが必要なのは、上に言われてる通りポリモーフィズム使う時だけなんやで
基底クラスのポインタに派生クラスをまとめて管理する(基底のポインタからdeleteする)んでなければ
virtualにする必要は無いんやで
でないと、vtblを持たない、メンバ変数の通りの内容(パディングが無ければ、サイズもメンバの合計に等しい)
しか持たないクラス/構造体とか作れないしな。

継承の問題点って具体的にどの辺?自分にはちょっと想像つかんかった

590デフォルトの名無しさん2017/06/26(月) 00:56:00.08ID:RgMKiEkv
継承(is-a)は、構造が硬直化する。柔軟ではない

一方、包含(has-a)は柔軟で、処理の委譲(丸投げ)にも使われる。
依存性の注入(DI)も、最近の流行

591デフォルトの名無しさん2017/06/26(月) 01:01:22.15ID:GM19K0OY
なんか中途半端に本を読んでコピペした感じがうざい

592デフォルトの名無しさん2017/06/26(月) 08:13:51.70ID:Th5Kxani
世間でそう言われているという話ならコピペでも不思議はなかろう。

593デフォルトの名無しさん2017/06/26(月) 10:18:51.97ID:n6GngECu
>>590
has-aの関係だと言えるものならそうすべきだけど、is-aの関係を包含でやると
そのうち必ず破綻するよ?

594デフォルトの名無しさん2017/06/29(木) 12:50:46.65ID:MWDK7HMB
まぁ多態しないならデストラクタを仮想関数にする必要ないってのはその通りで
shared_ptrなんかはダウンキャストしても正しいデストラクタが呼び出せるように
ポインタ自体がデストラクタを持ちまわってるし、知らなきゃ驚くようなことをしている



そんなことより、C++が雑多だっていうなら
筆頭は多重継承、ダイヤモンド継承だろ
だーれも使ってない機能、goto以上に誰も使わない、盲腸のような機能
ここから読み取れるのは、つまりは要らない機能は使わなければよい
ってのがC++の流儀であり習わし
今に始まったことではない、昔からそう

595デフォルトの名無しさん2017/06/29(木) 12:56:18.30ID:MWDK7HMB
多重継承のダイヤモンド継承がどれぐらい使われないかというと
明らかに問題があってめちゃ複雑なのに
ここで例に上がらないぐらい誰も使ってないし
すっかり忘れて頭から抜け落ちるぐらい使われてない
使ったこともないから困ったこともない、そんぐらい使われてない
こんな使ってはならないような機能を持っている言語なんだから
使う側で工夫するしかないのだわな

596デフォルトの名無しさん2017/06/29(木) 13:09:10.82ID:MWDK7HMB
ちなみに仮想継承なんか、実用的なプログラムで使ったことあるやつ居るのかね
コンパイラ開発者がかわいそうだよ
実装が面倒くさそうなのに誰も使わないんだから

597デフォルトの名無しさん2017/06/29(木) 13:47:44.72ID:QLNa2n95
NVIインターフェースを複数継承するみたいなクラスはよく書くから多重継承がないと困る
そして、スマポが持ってるのはデストラクタではなくてカスタムデリータでしょ?
RAIIのためのデリータを指定するのと、ポリモーフィックなクラスのデストラクタを仮想にすることは独立だと思うけど

598デフォルトの名無しさん2017/06/29(木) 14:59:04.83ID:MWDK7HMB
インターフェースの多重継承は別に否定してないよ

599デフォルトの名無しさん2017/06/29(木) 19:22:15.33ID:RPV5s2DX
ん?
オブジェクト志向バリバリだと、普通に多重継承起こるでしょ?
「インターフェースクラスの」ではあるけど。

600デフォルトの名無しさん2017/06/29(木) 20:32:48.96ID:QLNa2n95
>>598
インターフェースかどうかはどうやってジャッジするの?

601デフォルトの名無しさん2017/06/29(木) 20:35:07.19ID:xH5cN2nI
子供の発表会みてるような微笑ましさがあるな
ID:MWDK7HMBのことな

602デフォルトの名無しさん2017/06/29(木) 20:38:35.47ID:MWDK7HMB
インターフェースの多重継承は否定してないって言ってるのになぁ
インターフェースの多重継承は他言語でも見かけるけど
C++の場合は実装の多重継承も出来て、これはJavaやC#では禁止されているわけだけど
CにOOを追加したのがC++の売りであるから、継承は筆頭株主というか鳴り物入りというか
当時としてはCに対するアドバンテージで、売りであったはず
そこでマズったのはハッキリ言ってかっこ悪いが
いらない機能は使わなきゃ済む話、それがC++
仮想継承とか誰が使うの?ってね
gotoより使わないし、gotoより害悪

603デフォルトの名無しさん2017/06/29(木) 20:45:11.69ID:xH5cN2nI
この子の発表はまだまだ続くの?

604デフォルトの名無しさん2018/03/11(日) 21:00:49.54ID:2FqbHSvs
ageてみる

605デフォルトの名無しさん2018/03/11(日) 21:05:50.78ID:sEfAJdP7
gotoは案外よく使うけどな。

606デフォルトの名無しさん2018/03/15(木) 17:22:50.07ID:+IqDDMxO
江添亮とかいうやつやたら偉そうだけど
C++界になんか貢献したの?

607デフォルトの名無しさん2018/03/15(木) 19:26:00.92ID:NnpmsWbw
Linux プログラミング・インタフェース、Michael Kerrisk, 千住 治郎、2012

C++11/14 コア言語、江添 亮、2015

組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006

神の啓示を受けし者たちが記した、神の書。
この3冊が出版されているのは、日本だけ

皆、これらの本を持って、山ごもりするw

608デフォルトの名無しさん2018/03/19(月) 01:38:56.72ID:K5wpoJU5
>>606
俺は江添氏のブログで助かってるけどなぁ
新しい仕様を実践的に教えてくれるのでわかりやすい
対してメタプログラミングやらコンパイル時のポリモーフィズムやらを
「今どきのC++の使い方」とばかりに押し付けてくる風潮がうざい(ああいうのはアマチュアの意見だと断言できる)

アマチュアが言ってるのはわかるけどC++系のライターにまでそういうバカが居るから困る
誰とは言わんけど

609デフォルトの名無しさん2018/05/03(木) 13:03:51.75ID:oVIVMK38
>>607
1番目のはLinuxシステムプログラミングと内容が似てるみたいだけどそっちのが良いの?

610デフォルトの名無しさん2018/05/12(土) 11:05:17.41ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/

611デフォルトの名無しさん2018/05/12(土) 18:34:04.79ID:TkoJoFTb
>>594
標準ライブラリをはじめ多重継承は至るところで使われてるし、禿4にも、真のC++使いは恐れなく多重継承を使うと書かれている。
個人的には多重継承を避けてきたのだが、そろそろ使ってみようかと思う。
昔のgoto危険みたいな話なのかも。
使った方が良い場合は確かにあるので。

612デフォルトの名無しさん2018/05/12(土) 18:36:45.29ID:TkoJoFTb
禿4によると過度の総称型も良くないらしい。
よくありがちなObject型ってやつ。

613デフォルトの名無しさん2018/05/16(水) 07:04:16.92ID:Lmfmb/K/
>>611
多重継承が一番いいと思ったらためらいなく使うわ
gotoも同様にね、まあ、これはgotoの出番かーと思っても
やっぱり必要なかったなとなるんでgoto使う機会は今のところないな

6146072018/05/16(水) 07:54:53.37ID:OVunt3L8
>>609
「Linux プログラミング・インタフェース」の著者、
Michael Kerrisk は、Linux man ページを、10年書いてきた人。
世界中の開発者から、神と崇められている!

開発者は、この本を枕にして寝ろ、と言われている

この本に似ている本は、
詳解 UNIX プログラミング 第3版、2014

6156072018/05/16(水) 08:05:22.04ID:OVunt3L8
C++テンプレートテクニック 第2版、
επιστημη(えぴすてーめー)・高橋 晶、2014

επιστημη も、C++標準化委員会の会員

江添も、テンプレート・メタプログラミングの需要があれば、
本を書きたいって言ってたけど、既にこの本が出ている

616デフォルトの名無しさん2018/05/17(木) 00:02:23.47ID:AFgiB6OA
江添はそいつらよりちょっと頭が悪いからまともに見えることもあるってだけだな。
本質は変わらん。

617デフォルトの名無しさん2018/05/23(水) 19:19:19.68ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

LNCSZ

618デフォルトの名無しさん2018/05/24(木) 10:41:08.30ID:cPlRxlDn
LNCSZ

619デフォルトの名無しさん2018/07/04(水) 22:54:19.04ID:gFgZc5FG
UP4

620デフォルトの名無しさん2018/07/06(金) 12:31:44.56ID:uTPDH9XV
UP4

621デフォルトの名無しさん2018/08/13(月) 19:07:44.00ID:HA278kx6
屋上屋を架す形での仕様の肥大化が続いてもう巨大迷宮みたいな言語
理解してるって自信があるのはコンパイラ開発者や規格策定者だけじゃないかってレベル
いやそれさえも怪しいけど
そんな言語を一介のユーザーが進んで使いたいなんて思うわけがないよね

新着レスの表示
レスを投稿する