1 名前:デフォルトの名無しさん [2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr.net] 何にも知らない0からの出発、超初心者のためのC++相談室
561 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 00:13:49.90 ID:M40i1rJ9.net] 相互代入は言葉がおかしいですね。 基底クラスのポインタで派生クラスのオブジェクトをポイントできるというものです。 オブジェクトのボインタを使う場面があまりないので用途を聞きました。 >>560 >自動変数の寿命はスコープ単位だから それより長い寿命のオブジェクトが必要なら new する。 自分の場合、関数内より長い寿命が必要となったらそれはもうグローバルにしてしまいます。設計方針がよくないですかね。
562 名前:はちみつ餃子 mailto:sage [2023/11/12(日) 02:00:51.06 ID:O0gb6uIB.net] >>561 グローバル変数として書いたオブジェクトの寿命は static storage duration に該当する。 この static というやつは main が始まる前に構築されて main が終わった後に解体されるので 必要以上に長い寿命になってしまうことが多いし、 実行時の情報を元にして構築するオブジェクトを static にはしようがない。 dynamic (new でのオブジェクト生成) が必要になる場面はごく普通にある。 ごく普通にあるのに使わずに済ませてるならたぶん不自然な設計になってると思う。 グローバル変数は寿命も長すぎるがスコープも広すぎる。 人間は自分が思ってるより馬鹿だから最初にどういう想定をしてたのか忘れて要らんことをしてワヤにする。 触らせたくないものは隠しておくのはカプセル化の考え方の重要な部分。 本当に人間は忘れるし間違える。 部品ごとに間違った使い方を出来ないように配慮しておかないと規模を大きく出来ない。 まあ逆に言えば小さいプログラムではそんなに凝ったことをしなくても大丈夫なんだけど。
563 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 11:04:18.35 ID:l8rhUXJt.net] >>558 >@の書き方は、よく入門書に出てくる、継承関係にあるポインタの相互代入のためにあると考えて正しいですか。 そのためだけにあるという訳ではない >私からすると@はdeleteしなければならないのでできれば使いたくない。 生のポインタではなくスマートポインタ(unique_ptrやshared_ptr)を使えば deleteはスマートポインタがやってくれる 構築は uniqu_ptr <MyClass> = new MyClass(); や uniqu_ptr <MyClass> = make_unique <MyClass> (); のようにやる
564 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 13:14:04.39 ID:xpiKETrj.net] > 基底クラスのポインタで派生クラスのオブジェクトをポイントできるというものです。 > オブジェクトのボインタを使う場面があまりないので用途を聞きました。 アップキャストのことだろうかね。 必ずといっていいほど使う機会がある。関数の引数にオブジェクトを渡すときとか
565 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 06:27:48.00 ID:qbVz2ceg.net] >>558 は、最初から必要数が決まっているオブジェクトしか作ったことがないのかな。 リストやツリー構造を自作していれば、①が必要なケースは分かると思うけど。
566 名前:デフォルトの名無しさん [2023/11/13(月) 10:31:45.02 ID:IRswNIWu.net] >>564 型チェックしなきゃ危険だけどな
567 名前:デフォルトの名無しさん [2023/11/13(月) 13:26:36.10 ID:qAieNn1D.net] uniqu_ptr
568 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 18:54:22.80 ID:CCXWxw1E.net] >>567 おおスマン typoだね
569 名前:デフォルトの名無しさん mailto:sage [2023/11/13(月) 23:59:54.01 ID:RLYu3oMv.net] >>562 ほか皆さんありがとう。 自分の関わってきた分野が小規模組み込みだからか、そもそもCでmallocの使用経験がないのです。 処理系がmallocをサポートしないMCUもありました(使いたいなら自分で作ってという思想、標準入出力も)。 なので>>565 さんの指摘は当たりです。 c++に挑戦している今の環境も小規模なので、newの利用はほどほどに検討してみます。
570 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 00:03:40.68 ID:F1cdKor4.net] >>564 だいたい参照で済んでしまいます
571 名前:デフォルトの名無しさん mailto:sage [2023/11/14(火) 12:46:18.30 ID:SRCspH78.net] mallocもnewも使ったこと無いってやばいぞ
572 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/11/14(火) 15:58:08.40 ID:oTbgWDDI.net] new 演算子はオーバーロードも出来て、型ごとにメモリの確保の仕方を変えるといったようなことも出来る。 メモリの確保と値の構築を別のレイヤとして定義できるということに意味がある。 (いわゆる関心の分離?) 低レイヤでも便利な場面はたぶんある。 分離する甲斐がないほど小規模ならべた書きが悪いわけじゃないけど あえてべた書きという設計を選ぶってのとなんもわからんで使わないってのでは違う。 知っておくに越したことはないよ。
573 名前:デフォルトの名無しさん [2023/11/14(火) 21:59:36.46 ID:WxE96Zj2.net] 空配列を用意してそれを順繰り使い回す チープなCPUでは必須の方法
574 名前:デフォルトの名無しさん [2023/11/14(火) 22:15:51.21 ID:VpxEmvp/.net] RAM2KBでmallocが必要かどうか
575 名前:デフォルトの名無しさん [2023/11/15(水) 09:06:17.34 ID:vh+zgKB1.net] よく A a = new A(); a->b(); delete a; みたいに生成してすぐ解放ってのがありますけど、 A a; a.b(); じゃ駄目なんでしょうか。前者に何のメリットがあるんでしょうか。
576 名前:デフォルトの名無しさん [2023/11/15(水) 09:39:21.05 ID:88mXe6hW.net] 後者はスタックを消費するから A が巨大なオブジェクトだったら困るとかかな
577 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 09:40:08.83 ID:7t1hSBTd.net] >>575 A *a = new A(); よね、一応 bを呼び出したいだけなら特にメリットはないよ
578 名前:デフォルトの名無しさん [2023/11/15(水) 10:25:46.06 ID:2QF9cM/v.net] スタック? そんな所にゃ領域取らないだろ
579 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 16:06:06.00 ID:rnHf5KLb.net] 何したらここの人らみたいにプログラム詳しくなれるの?PC98からやらなきゃダメ?
580 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/11/15(水) 16:35:01.46 ID:k729Xl/N.net] >>575 > ありますけど、 ないよ……。 少なくともそう頻繁にはない。 あるとしたら >>576 が指摘するように A が特に巨大な場合というのはひとつの可能性。 ただ、巨大になるのがわかってるならリソースを分割して A の中で 上手いことやりくりする (A 自体の大きさは抑える) べきで、 クラスを使う側で配慮しなきゃならないのは普通は悪い設計だと思う。 第二の可能性として、 new 演算子をオーバーロードして そのオブジェクトがメモリの特定の場所に対応づけられる場合。 メモリバス経由でデバイスと接続するようなアーキテクチャもまあまあ有るから それを C++ 上ではオブジェクトのように抽象化するということはあるかもしれない。 でもそれは低いレイヤだけの話で、 適当にラップするクラスを作ってもうちょっと抽象度の高いクラスを挟むのが普通だと思う。
581 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 18:55:56.04 ID:aqUxtLPE.net] 超初心者スレで揚げ足とったり、マウントしたり
582 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 19:46:52.63 ID:O3I3kWYX.net] >>579 何か作ってるうちに嫌でも詳しくなるよ
583 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/11/15(水) 21:31:49.26 ID:k729Xl/N.net] PC9801 時代を知ってる人は色々と詳しいと思うがその知識が役立っているというわけでもなくて、 PC9801 時代からの三十年くらいあれば詳しくなって当たり前ってだけだぞ。 たくさんの知識を身に付けるにはたくさん学ぶというシンプルな話。
584 名前:デフォルトの名無しさん [2023/11/16(木) 11:26:46.68 ID:QXdh7keC.net] 当時は役に立ったけど今はオワコンの技術と 今でも役に立ってる技術と どっちが割合多い?
585 名前:デフォルトの名無しさん [2023/11/16(木) 11:55:31.84 ID:nxuWB9A/.net] 「技術は陳腐化するが考え方は永遠である」
586 名前:はちみつ餃子 mailto:sage [2023/11/16(木) 14:01:30.65 ID:brAf4s3Y.net] 新しい技術的流行が昔からあったやつの焼き直しってことは珍しいことじゃない。 「なんや、結局は××やないか」というときに××自体が廃れていてもう使わなくても 理解のためには役立っているのでオワコンとも役に立ってるとも言えたりする。
587 名前:デフォルトの名無しさん [2023/11/16(木) 15:18:16.01 ID:QXdh7keC.net] ActiveXってCOMだよね COMってOLEだよね
588 名前:デフォルトの名無しさん [2023/11/20(月) 15:56:09.22 ID:QJSPRwrd.net] こんにちは坂本と申します。 C++を0から勉強したく書き込み致しました。 私ごとですが先月定年退職し、やっと自由な時間がもてる様になりました。 在職中ずっとプログラミングの勉強をしたかったのですが子育てや職場がプラントの電気機械保全業務の3交代だった為に定年後を楽しみに我慢してまいりました。 プログラミングの知識は全くなく制御盤のPLCでニーモニック語でリストプログラミングをするぐらいしか経験はありません。 有料でもかまいませんので何回でも質問ができ、すぐに返答と解説をして頂けるサービスや学習機関がございましたら教えて頂きたく書き込ませてもらいました。 漠然とした質問で申し訳ありませんが今月よりプログラミングの勉強を独学で始めましたが質問できる知り合いもいなく困り果てております。 長文失礼致しました。
589 名前:デフォルトの名無しさん [2023/11/20(月) 19:07:01.26 ID:UNSN9Hhc.net] >>587 DDEは?
590 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 00:24:28.42 ID:cXhp/VaI.net] C/C++ はポインターがあるから、ややこしい。 10年やっても無理 Ruby をやれ。 半年で、Ruby on Rails も出来る
591 名前:デフォルトの名無しさん [2023/11/21(火) 11:11:38.44 ID:HSO31doi.net] 神社code
592 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 14:22:46.70 ID:tYm3I+7J.net] ポインターが分からない奴は プログラムを組む資格がない
593 名前:はちみつ餃子 mailto:sage [2023/11/21(火) 17:27:32.66 ID:4ADiN9xr.net] ちゃんとした本があれば独学でそんなに困らないと思うけどな。 入門書の各章をじっくり読んで理解してから次の章に進むみたいな学習法をしているなら 詰まったときにどうしていいかわからなくなりがちなのでやめたほうがいいと思う。 色んな要素が相互に絡むので順番通りに学べるようなものじゃないから。 理解できなくてもたくさん詰め込んでいけばその内に繋がりがわかってくる。 「最初は」熟考しなくてもいい。 入ってない知識が関連するなら考えてもどうせわからん。
594 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 17:38:45.53 ID:oh7zlSJI.net] >>590 ポインタ使わないこともできるのに何言ってんだ そもそもポインタはノイマンアーキテクチャの基本なのでポインタがわからないというならコンピュータの利点を十分に利用できないということ
595 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 18:05:44.93 ID:tYm3I+7J.net] ポインター: 変数が入っているアドレスの数字 なんも難しいことはない
596 名前:デフォルトの名無しさん [2023/11/21(火) 18:24:30.60 ID:fyFN08Ef.net] インデックスって言えば分かる? コンピュータにあるメモリー全体のインデックス番号
597 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 18:35:32.85 ID:Ai4yJ31G.net] 俺も最初全然わからなかったけどC言語ポインタ完全制覇のおかげで覚えた
598 名前:デフォルトの名無しさん [2023/11/21(火) 19:20:18.31 ID:JkIDzJ0A.net] Java や C# にもポインタはあるしポインタを理解できなかったら他の言語も使えないよ ポインタ自体は難しくないんだけど C/C++ ではポインタ演算できちゃうのが鬼門なんだよね
599 名前:デフォルトの名無しさん [2023/11/21(火) 20:49:14.51 ID:TIZNoRj+.net] N88-BASICにポインタあったっけ?
600 名前:デフォルトの名無しさん [2023/11/21(火) 20:53:06.63 ID:TIZNoRj+.net] ポインタの文法なんて入門書には必ず説明があるので直ぐ分かるとして 俺が初期に読んだ数冊の入門書には それがプログラミングでどう役に立つのかが示されてなくて 悶々としながら読んでいたなぁ
601 名前:デフォルトの名無しさん [2023/11/21(火) 21:38:13.97 ID:fyFN08Ef.net] ポインターなんて処理が糞遅いCPUをいかに速く動かすかって事以外に意味が無いからなぁ
602 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 23:15:10.49 ID:mJ6deMbY.net] std::string str = "abc"; ①str = str + "dd"; ②str = "dd" + str; これらの記述は有効のようです。 ①の右辺はstr.operator+("dd"); と解釈でき理解できます。 ②の右辺は "dd".operator+(str); と書きかえるとこれは無効に見えます。 std::stringのoperator+のプロトタイプを調べたところテンプレートが駆使されており私では読めませんでした。 ②が有効なのは、テンプレートの仕組み?でそう書けるようにつくられているからですか。
603 名前:はちみつ餃子 mailto:sage [2023/11/22(水) 06:21:16.63 ID:xG0rhWaa.net] >>602 非メンバ関数として定義されている。 つまり str=std::operator+("dd", str); に相当することをやってる。 メンバ関数として定義すると不都合が起こるから std::complex とかも非破壊的な二項演算子は非メンバ関数として定義するのが通例だよ。
604 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 18:16:14.60 ID:yQq1Seno.net] >>603 本を見直したらfriendにするといい等ありました。 第1引数+第2引数、という記述があり、2個の引数を持つ+演算子関数が定義されている場合はそれが呼び出される決まりになっているのですね?
605 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 18:17:35.84 ID:yQq1Seno.net] stringから離れて一般的な質問です。↑
606 名前:はちみつ餃子 mailto:sage [2023/11/23(木) 20:11:53.97 ID:V52ACnUy.net] >>604 そう。非メンバ関数として二つの演算子を受けとる operator+ があれば a+b みたいに書いたときに operator+(a,b) に読み替えられると考えてよい。 (全ての演算子を非メンバ関数として定義できるわけではない。) 余談だけど ADL という変な規則があるのは演算子が名前空間修飾できないことに対処する必要があるというのが理由のひとつで、自分が定義するクラスではこれが上手いこと作用するように設計すると便利なこともあるかもね。
607 名前:はちみつ餃子 mailto:sage [2023/11/23(木) 20:13:30.07 ID:V52ACnUy.net] >>606 間違い。 「二つの演算子」じゃなくて「二つの引数」
608 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 20:15:11.03 ID:0De2U7us.net] 最小のサンプルコードを書いて自分で試すと分かるし身につくよ
609 名前:はちみつ餃子 mailto:sage [2023/11/23(木) 20:49:41.10 ID:V52ACnUy.net] 書いてみるというのは賛成。 でもあくまでも学んでから確かめるために書くのであって動作から言語仕様を推測したりはしないように。 C++ には未定義とか処理系定義とかがいっぱいあるからテキトーに書いたプログラムの結果が保証された動作とは限らないから。
610 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 11:27:01.67 ID:rcrc48ZO.net] >>609 >でもあくまでも学んでから確かめるために書くのであって動作から言語仕様を推測したりはしないように。 横から悪いがこれには反対させてもらう もちろん動作からの仕様の決めつけは良くないが、人間は学習する動物なので書いて動作を見てこそ上達するんだよ 丸暗記だけで理解したと勘違いしてるやつが昨今多い(そしてそういう奴に限って何も作ってない)ので、そういうのを後押しはしないで欲しい
611 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 11:52:38.86 ID:rcrc48ZO.net] というか、自分の認識の間違いに気づくのもまた書いて試した時だからね(まれにコンパイラのバグだったりもするけど) 人間が頭の中で考えたことなんか穴だらけなんだから書いて試せるなら真っ先に試した方がいい
612 名前:デフォルトの名無しさん [2023/11/25(土) 12:13:14.81 ID:vlVh3gWj.net] >>610 同意。 処理系依存とか未定義動作なんて中級者以上になってから気にすればいいこと はじめは手元にある処理系の結果を「正」として学習を進めても問題ないと思う
613 名前:デフォルトの名無しさん [2023/11/25(土) 12:45:47.67 ID:rKTwm3uz.net] >>593 これ >>590 しね
614 名前:デフォルトの名無しさん [2023/11/25(土) 12:47:19.78 ID:rKTwm3uz.net] >>595-596 ポインタ判らんって人はその辺は判ってんだよ 本当に判ってないのはアドレッシングモード
615 名前:デフォルトの名無しさん [2023/11/25(土) 12:50:17.30 ID:rKTwm3uz.net] >>599 peek poke はあるし変数もあるから 用途という意味でのポインタはある
616 名前:デフォルトの名無しさん [2023/11/25(土) 12:54:57.59 ID:rKTwm3uz.net] >>610 そうだな Rust スレにも変なのが粘着してゴリ推ししてて迷惑
617 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/11/25(土) 13:45:51.01 ID:BXmPXb0v.net] >>610 > 書いて動作を見てこそ上達するんだよ だから書いてみるのは賛成と書いたのだが、何に反対してるんだ?
618 名前:デフォルトの名無しさん [2023/11/25(土) 13:56:27.70 ID:vlVh3gWj.net] 「学んでから確かめるために書く」 ↑反対されてるのはここでしょ これどうなるんだろう?動かしてみよう!なるほどこうなるのか!という学び方でもいいと思う あなたが言ってるのは「これどうなるんだろう?」ではダメで「こうなるはずだ!」と学んでから動かせってことだよね? それは初心者には結構むずかしい
619 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 15:39:30.62 ID:BXmPXb0v.net] >>618 > これどうなるんだろう?動かしてみよう!なるほどこうなるのか!という学び方でもいいと思う 私が言いたいのは推測できるものではないというところが主旨で、 自分が色々やってみたことが不確かな推測であることを認識した上で きちんとした資料にあたって確かめるという順序でもかまわないとは思うよ。 出来るのならば。 やってない人が多いように私には見えているから否定的に言ってるわけだけど。 > 初心者には結構むずかしい 訓練せずに他のことをしてても出来るようにはならないでしょ。 やらなきゃずっと難しいよ。 C++ は複雑怪奇かつ規格改訂もあるのでベテランでも頻繁に仕様を参照するのが普通なわけで、 資料を参照するのを後回しにするような人間が後にそのような人間に変われるとは思わない。
620 名前:デフォルトの名無しさん [2023/11/25(土) 16:15:59.30 ID:vlVh3gWj.net] 「やってない人が多いように私には見えている」 多くの人が出来てないことを初心者に求めてもねェ
621 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 16:27:29.63 ID:BXmPXb0v.net] >>620 「推測した後には多くの人が資料を見ること」をやってないという話だぞ。 最初に資料で学ぶ人は体系的な知識が身に付くからそっちがオススメという話だぞ。
622 名前:デフォルトの名無しさん [2023/11/25(土) 16:42:06.01 ID:vlVh3gWj.net] 初心者に対して「言語仕様を推測したりしないように」「学んでから確かめるために書く」って言ってたよね 言語仕様を理解してからコードを書けってことでしょ?
623 名前:デフォルトの名無しさん [2023/11/25(土) 16:49:08.14 ID:vlVh3gWj.net] >>621 先にも後にも資料(言語仕様)を確認しない人が多いんでしょ そんな難しいことを初心者にまで要求してどうすんの
624 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 16:51:46.77 ID:BXmPXb0v.net] >>622 そうだよ。 言語仕様を理解してから書くのが好ましい。 理解する前に色々試すというやり方も許容しなくはないが、 それでも後では資料を見て仕様を理解するという前提があってのもの。 理解する前に色々試すタイプは資料を見なくなりがちという現実があると述べてる。
625 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 16:55:25.38 ID:BXmPXb0v.net] >>623 「資料」と「仕様」を使い分けて書いてるつもり。 直接に言語仕様を読めとは述べてないよ。 プログラムを書くときは色んな資料を参考にするので 入門書程度すらちゃんと読まない人がやってけると思ってんの? ってことを言ってる。
626 名前:デフォルトの名無しさん [2023/11/25(土) 17:00:19.64 ID:vlVh3gWj.net] え? 資料=言語仕様じゃないの? 「言語仕様を推測したりはしないように」って言ってたから言語仕様に関する資料を読んでからコードを書けという意味だと解釈したのだけど 資料=入門書程度なの? ・・・なんか言ってることが変わってきたね?
627 名前:デフォルトの名無しさん [2023/11/25(土) 17:03:42.33 ID:vlVh3gWj.net] ちなみに「入門書を何冊か買って読みながら進めるといいよ」みたいな書き方だったらこんなに絡んだりしてないからね?
628 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 17:04:18.21 ID:BXmPXb0v.net] >>626 いや、そりゃそうでしょ。 最初から言語仕様を読めとか言わないよ。 入門書だって仕様書に基づいて書いてるし、基づいてない入門書だったらクソってだけ。
629 名前:611 mailto:sage [2023/11/25(土) 17:06:46.45 ID:5Y+f+Y1g.net] >>620 これをやってきたのがはちみつ餃子なんだよ 俺ははちみつ餃子の書き込みにいつも感心してるよ
630 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:09:19.28 ID:rcrc48ZO.net] >言ってることが変わってきた うん、まぁ、はちみつはそういうとこあるから・・・w ただまぁ、言語仕様に詳しい人の存在は(はちみつに限らず)非常に有難いんだが、 実際にソフト書く上で気にしなきゃいけないのは言語仕様だけじゃない 特定のソフトの個別の問題を解決するためのアルゴリズムについて、資料があるのか?と。(すでに出来上がってて公開されてるアルゴリズムが存在する問題などほとんど無い) 一番大事なのは論理的思考力であって、なんでもはなから資料をアテにしてたら逆にそれが身につかないよ
631 名前:デフォルトの名無しさん [2023/11/25(土) 17:12:35.76 ID:vlVh3gWj.net] >>628 だとしたら、言語仕様を推測するな、未定義動作や処理系がどーのこーのとずいぶんと遠回しな言い方をしたねえ 入門書を読みといいよの一言で済むのに >>629 それは別の話。餃子がエキスパートであることは否定してない 初心者の前に高いハードルを立ててC++を聖域みたいにするのはやめて欲しいのだ
632 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:13:52.19 ID:rcrc48ZO.net] どうも仕様オタク(言い方は悪いが、アマチュアという意味も込めて)な人達は、自分の知ってる世界が全てだと思い込んでるようで前々から問題だと思ってた 世の中、マイナーなAPIとかになると嘘を書いてることもあるし何も資料が無いことすらある もちろん実際の動作から「今わかること以上」をわかった気になる(仕様を知った気になる)のは問題だが、 逆に言えば「仕様がこうだから間違ってないんだ」などと動作を確かめもせずに決めつけるのも問題だ そういうのは結局本人の心的態度の問題に過ぎない
633 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 17:15:51.23 ID:BXmPXb0v.net] アルゴリズムは考えればわかることもあるかもしれんが、言語仕様は考えたってわからんし。 (想像はつくことも多いけど。)
634 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:17:15.50 ID:mGx3DnG8.net] > 書いてみるというのは賛成。 初心者はこれでもいい > でもあくまでも学んでから確かめるために書くのであって動作から言語仕様を推測したりはしないように。 中級者以上になって言語仕様等に踏み込んだ学習をしようとするなら書いたもので仕様を測るのではなく「学んで」知るべし と言う意味だと俺は>>609 を解釈してた
635 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 17:21:04.72 ID:BXmPXb0v.net] >>631 複雑難解な C++ を試させるのがハードルの低い方法だと主張したいわけ? きちんと整備された学習ルートがあるという話なのにそれでハードルを上げてるとか言われるのは心外だわ。
636 名前:デフォルトの名無しさん [2023/11/25(土) 17:24:19.67 ID:vlVh3gWj.net] 「きちんと整備された学習ルートがあるという話なのに」 お前そんな話してたか?
637 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:24:48.18 ID:mGx3DnG8.net] あれよな ・初心者スレだからアドバイスはすべて「初心者向けの内容」 ・初心者スレだけどアドバイスは「初心者向けの内容」と「その先を見据えた内容」 はちみつ大先生は後者だけど、ツッコミを入れたほうは前者で読み取っているから噛み合わないってだけよな、たぶん
638 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 17:26:03.64 ID:BXmPXb0v.net] >>636 まずは資料を読め (資料があるから) という主張を最初からしてるつもりだが。
639 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:34:11.58 ID:xBFezCRv.net] 「C++言語リファレンスを頭に叩き込め!!話はそれからだ」 でいいんじゃね?と俺は思っている で、理解できない部分は入門書やサンプルコードを読んで理解する まずは書いて試せという人もいるが俺はこの意見には賛同できない プログラミング言語というのは日本語や英語などの自然言語と違って 少しでも間違えたら動かないし、C++の場合なら最悪システムが破壊される 理解できなくても動けばいいなどという考えの奴がいるからバグが量産されるのだ ミスが許されないのはたとえば医者だな 医者は医者になる前に知識を詰め込むのが普通だ 知識もないのに外科手術をしたらどうなるか? 切りながら覚えろというのか? プログラミングは手術と同様、まずは知識、次に技術が必要となる、と俺は思っている 【完】
640 名前:はちみつ餃子 mailto:sage [2023/11/25(土) 17:40:31.27 ID:BXmPXb0v.net] >>637 初心者教育は二種類に大別されると思っていて、たとえば公立学校の授業でするような 興味がない層も含めて最低限の知識は与える教育と 学ぶ意欲があって専門知識と言えるようなものを身に付けようとする者に対する教育。 前者は「興味をひく」というところから考えないといけない。 理屈よりも楽しいと思えるようなやり方が必要になることもあるだろう。 後者は理屈を避けては通れない。 理屈の身に付け方には色んな方法論があるかもしれないけど まずは書いてあるものを読め (先人がそれを良いやり方だと思ってまとめてくれたんだから! 手を動かす必要があると思うところでは演習問題があったりもする) という風に考えてる。 今は初心者であるかどうかは重要ではなく ここで相談するような層は後者のルートのつもりでいると私は思って書いてる。
641 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 17:45:56.52 ID:Xpg7OWMd.net] >>639 >理解できなくても動けばいいなどという考えの奴 誰の話?
642 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:21:13.32 ID:xBFezCRv.net] >>641 わからないか…かわいそうに… 教えてあげなぁぁい
643 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:24:14.13 ID:0MoP1N3f.net] おちんちん舐めてごらん
644 名前:デフォルトの名無しさん [2023/11/26(日) 10:58:08.83 ID:d/KzVdDP.net] >>625 最近ChatGPTに全部聴いて済ます変なのが住み着いて迷惑だな
645 名前:デフォルトの名無しさん [2023/11/26(日) 11:15:51.84 ID:d/KzVdDP.net] >>639 >医者は医者になる前に知識を詰め込むのが普通だ >知識もないのに外科手術をしたらどうなるか? >切りながら覚えろというのか? 言いたいことは判るが「最初の医者」はどうしてたんだろうな 君の言ってるやり方は「従順な職人」を育てるやり方としては正しいが クリエイターを育てることは出来ない
646 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 12:24:07.96 ID:t0WQFMSf.net] >>639 からの>>642 だからな 一見それっぽいこと言ってるようで全く中身の無い事を言うアホが長いこと住み着いてる(C++系だけなのか他もなのか) 突っ込まれると頭悪い煽り方しかしてこないからすぐわかる、玄人ぶりたいだけのアホだから相手しない方がいい
647 名前:デフォルトの名無しさん [2023/11/26(日) 12:37:18.37 ID:DTfcWvWZ.net] 医者の下りはおかしい 医師は残念ながら完全な医学的知識を身に着けて 外科手術に臨む訳じゃないぞ 語弊を恐れなければ「切りながら覚える」側面もある
648 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 12:54:38.94 ID:k38CbPq9.net] ちゃんとした資料で学んでないと用語が無茶苦茶だから 何を言ってるんだかわからないということが起こる。 言語仕様の理解が結果的に正しくてもそうでなくても。 「伝わればいいだろ!」みたいに言う人が結構いるんだけど伝わらないから困るんだ。 メンバ関数をメソッドと言ったりするのは誤解の余地はそんなにないと思ってたら 非メンバ関数もメソッドと言っている例を観測したことがあるし、 子クラスって派生クラスの意味で言ってるんだよな? と思ってよく確認したら入れ子になったクラス (nested class) だったりするし、 クラス変数は静的データメンバの意味だろう (Ruby とかにはそういう用語があるし) と思ったら 静的でないデータメンバのことを言ってたというオチもある。 結果的に正しく使ってる場面ですら本当にその意味で言ってるのか疑わしくなる。 経験や感覚で書けるようになったとしても まともな資料を読んでないというのはそういった形でコミュニティ内で有害なわけで たまには思い違いがあるのはしょうがないが 学んでないし学ぶ気もないのを良しとは言えないよ。
649 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 13:47:17.98 ID:t0WQFMSf.net] >>648 いい加減にしろよ お前何でそんな上からなの?
650 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 14:18:15.64 ID:k38CbPq9.net] >>649 伝えようとしない態度を批判してるところに対して伝わらないことを書くのやめろよ。 何が言いたいんだ?
651 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 14:34:29.20 ID:mssmbX4x.net] 自己正当化しか考えてない人格破綻者に道理を教えてやる気は無い、自分で考えろ ここを利用してる初心者は、仕様について教えてくれるはちみつには感謝すべきだが、彼はプロではないしソフトウェアを書き上げたこともほぼ無いアマチュアであって C++の学び方や上達の仕方についてまでご高説垂れてるのを真に受けないようにね C++は別に仕様を完璧に把握しなくても使える言語だし(そんな言語なら使い物にならない)、未定義踏みまくるのは彼のようにわざと常識に沿わないおかしなコードを書きたがる素人だけだから。 荒らす気は無いのでこれで終わりにする
652 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 14:42:52.42 ID:k38CbPq9.net] 完璧に把握しろなんて一度でも俺が書いた箇所があるなら指摘してくれよ。 書いてないことを主張したかのような風評を流してお前はなにをしたいんだ?
653 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 14:55:17.55 ID:k38CbPq9.net] 資料(この場合は入門書)を読んでから手を動かして学ぶというごく普通の手順を主張してるつもりだが、むしろそうじゃない方法でどうするのがよいと考えてるんだ? 学校だって座学でやったことを演習で実践してるだろう。
654 名前:デフォルトの名無しさん [2023/11/26(日) 15:50:55.41 ID:DTfcWvWZ.net] 気にするなってほぼ嫉妬なんだから
655 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 16:03:14.03 ID:t0WQFMSf.net] >ほぼ嫉妬 俺に言ってんの? いずれにせよ荒らそうとしてる自覚はあるか?
656 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 16:08:02.37 ID:Dy8SO9u0.net] >>655 どう考えてもお前が荒らしじゃん 人のことをアホ呼ばわりしてるし
657 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 16:22:42.40 ID:t0WQFMSf.net] >>639 =645=659 バレバレだからwww
658 名前:デフォルトの名無しさん [2023/11/26(日) 18:08:35.12 ID:fCQnoW9K.net] >>652 言語仕様・未定義動作・処理系とか言ってたから完璧に把握しろに近いニュアンスだと感じた メソッドではなくメンバ関数、用語を正しくつかわないと伝わらないとか言ってることがどんどん変わってる
659 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 18:08:55.12 ID:4RSi5A29.net] お取り込み中すみませんが質問です ダウンキャストという用語が是か非かです ボクは不適切な用語だと思っていて 理由は 1) 言語の仕様に出てきていない 2) アップかダウンかについてももちろん仕様に無い 3) アップキャスト相当の操作は通常行わない です 少なくともC++界隈でちゃんとした定義なんて出てこないですよね?
660 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 20:14:28.93 ID:k38CbPq9.net] >>659 仕様の中を検索してみたら何故か例示のコードのコメントとして数か所だけ upcast という用語で書いてあるんだけど…… 原則としては C++ 用語ではないと考えて良いと思う。 クラスの関係をスーパー/サブだとか親/子で言うのが混乱の元という理由で基底/派生という用語になっているので 方向をアップ/ダウンで言うのもおかしな話だし。 derived-to-base convertion というような用語は仕様書の文面にもあるので アップキャストに相当するのはこの用語のはずだけど base-to-derived convertion という用語は出てこないので ダウンキャストに相当する直接の用語はなさそう。 冗長でも「××から〇〇への変換」みたいな言い方が公式なんだと思う。 ところであらためて JIS を見たら derived-to-base convertion の訳語は「派生基底変換」だった……。 to が脱落したらだいぶん雰囲気が変わってしまうでないの。 これは真似しないほうがいいかもね。 ただ、 C++ 界隈の中でも、というか規格の提案や検討に関する文面の中でも アップキャスト/ダウンキャストという用語はまあまあ使ってるっぽいので なんだかんだで一語で表せるってのは便利なんだと思う。 私は使わないようにしているけど。
661 名前:はちみつ餃子 mailto:sage [2023/11/26(日) 20:20:37.65 ID:k38CbPq9.net] すまぬ。 綴りが間違えてた。 concertion じゃなくて conversion だった。