[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/20 16:42 / Filesize : 347 KB / Number-of Response : 1000
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

0からの、超初心者C++相談室



1 名前:デフォルトの名無しさん [2018/11/12(月) 14:55:13.35 ID:Tf74ZWQr.net]
何にも知らない0からの出発、超初心者のためのC++相談室

542 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 21:05:50.93 ID:BgvqARb2.net]
vector dp(N+1,vector(i+1,vector<mint>(i,0)));
これはdp[N+1][i+1][i]個のデータを確保していると思っておk?

543 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 21:10:07.75 ID:G9Jlm58L.net]
OK牧場!

544 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 21:44:11.09 ID:BgvqARb2.net]
TXH!

545 名前:527 mailto:sage [2023/10/16(月) 23:49:47.91 ID:6sfjI2pS.net]
>>532 を始めとして皆さんまたまたありがとうございます。
アセンブラ、Cを長くやってきたあと、最近C#を少し覚えたのでそちらと混同していました。

コピーコンストラクタと代入の演算子関数を作ろうとしていますがまだ途中。少しずつ進めます。

546 名前:デフォルトの名無しさん mailto:sage [2023/10/17(火) 23:09:31.94 ID:cH9YbrYr.net]
既製品のクラスライブラリについて、クラス階層が深いところのクラスは、公開メンバの全体をひと目で見渡すことができません。
マニュアルや継承のツリーををたどって地道に調べるしかないのですか。

547 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2023/10/18(水) 09:51:20.64 ID:UZlHr99J.net]
>>546
ソースコードの構造を調べるのを補助するツールはあるが
どういう意図でどういう使い方を想定してそう書かれているのかは
プログラマが読み解かないとどうしようもない。

548 名前:デフォルトの名無しさん [2023/10/18(水) 17:06:40.02 ID:d+gN3jrr.net]
既製品ならドキュメントあるだろ
ドキュメントで謳ってないことはやるべきでない

549 名前:デフォルトの名無しさん [2023/10/18(水) 21:01:33.56 ID:XEk7oAP2.net]
visual studio community 2022で、
他のソリューションで作成されたmoduleをimportする方法がわかりません。
#includeみたいにパスを指定する方法とかがあるんでしょうか?

550 名前:デフォルトの名無しさん [2023/10/18(水) 21:18:35.91 ID:GW9b62tt.net]
あるよ



551 名前:デフォルトの名無しさん [2023/10/18(水) 22:46:30.83 ID:XEk7oAP2.net]
>>550
ぜひ教えてください!

552 名前:デフォルトの名無しさん [2023/10/19(木) 10:07:14.52 ID:W1XtHktx.net]
外部モジュール取り込みは言語仕様じゃ無くてIDEの機能だから

553 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 09:56:30.99 ID:/M3RKJCH.net]
IDEに頼ってるとアホになるよ

554 名前:デフォルトの名無しさん mailto:sage [2023/10/21(土) 16:32:35.29 ID:dhBJRkMq.net]
0のうちにやめとけ
時間がもったいない

555 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 23:16:10.15 ID:4gABazLN.net]
typedef uint8_t byte;
:
byte a = 3;
uint8_t b = a;

bの初期化は型不一致エラーにならないと思います。

コンパイラは型の異なる変数の初期化や代入を見つけると、typedefを探して元の型が同一かを調べてエラーにするかどうかを決めるのですか。

556 名前:デフォルトの名無しさん mailto:sage [2023/10/26(木) 23:23:19.82 ID:oN20rU1J.net]
>>555
typedef は型の別名を作る機能であって新しい型を作らない。

557 名前:デフォルトの名無しさん mailto:sage [2023/11/05(日) 12:44:18.01 ID:iVzKXsmj.net]
Visual StudioでソリューションAでビルドしたブツ(.exe、.dll、lib)、シンボルファイル(.pdb)、必要なヘッダファイル(.h)
をソリューションBで取り込むの場合、Aのビルド後イベントとBのビルド前イベントを駆使してフォルダのパスは
"$(Solution)..\x\$(Platform)\$(Configuration)" みたいなマクロで解決、みたいなローテク頼みという印象、
Visual Studio 2019以降だと今は実はもっと簡単?

558 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 23:40:20.59 ID:mtEH7OmF.net]
class MyClass {
public:
MyClass();
:
};

int main()
{
MyClass* c = new MyClass(); ①
MyClass d;
MyClass* dp = &d; ②
:
}

オブジェクトのポインタは①や②のように取得できると思います。
私からすると①はdeleteしなければならないのでできれば使いたくない。

①の書き方は、よく入門書に出てくる、継承関係にあるポインタの相互代入のためにあると考えて正しいですか。

559 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 23:49:08.54 ID:VDRR6isO.net]
>>558
その「相互代入」って何ですか?

560 名前:はちみつ餃子 mailto:sage [2023/11/10(金) 23:56:43.46 ID:Irnop6+y.net]
>>558
自動変数の寿命はスコープ単位だから
それより長い寿命のオブジェクトが必要なら new する。
寿命の種類のことを Storage duration といい、
new で生成したオブジェクトは Dynamic storage duration に該当する。

継承関係がどうこうというのは何が言いたいのかよくわからないが、
ポインタの性質はオブジェクトの寿命とは関係ない。



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
わからないか…かわいそうに…
教えてあげなぁぁい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<347KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef