2025年10月15日「C++が最強にいいということがわかった」
こんにちは、こんばんは。
どうも!こんばんは!?
出している時間帯が午後なので、こんばんはでいいんじゃね!?
というどうでもいいことを思ったり。
背中が疲れている……。笑
歩いてくると、膝とか足とかの疲れよりも、背中の疲れのほうが強いですね。
ボキボキ鳴らしたり、寝たりして治すしかない!!
今日は同人作業はしませんでした。
理由は昨日書いた通り、様子見をするためです。
新作を出す必要があるのかないのかです。
明日も見て、同じくらいの売り上げになったら、もう出しません。笑
勉強にブッパします。
とはいえ、来月出したいので、少しずつクオリティを上げて、必ず背景を足すとか、デッサンや陰を気をつけるとか、ボリューミーにするとかしますね。
そのあと、『やさしいC++』を読んでました。
これはやさしいとはいえ、難しい本です。笑
大抵、~入門とか、やさしい~とか、全然そんなことないというのが、お決まりのパターンです。
エンジニア界隈のやさしいは、やさしくないです。大抵。
フルスタックは逆に、フルスタックではないというのもお決まり。
ハンズオンも置いてきぼりなパターンもお決まり。
ステップバイステップは、楽すぎというのもお決まり。
じゃあ、なにがいいんだよ!
いろいろ読んで相補的に補完していくかしないです。
もうこればっかりは、仕方ないです。
そういうもんです。
一冊でわかろうなんて、甘い甘い。
ただ、一冊を三周くらい読んでから、違うのに行くのが最初のステップです。
それをさらに、AIに聞きながらやるといいです。
コードを実際に書く必要はあまりないです。
コードを書くことがしたいのならば、Paizaさんで問題を解いてください。
それで大抵書き方のパターンがわかると思います。
それだけじゃないのでね。技術というものは。
そのあと、『C++実践プログラミング』を読んでました。
オライリーの本です。
古い1996とか1997とかの本です。
めっちゃ古いです。stackは、今のC++なら、標準搭載されておりますが、構造体と関数で定義する感じをとってます。この本では。
だから、例えば、基礎知識の低レイヤー部分も知れるということですね。
C++が好きならば、簡単な今のC++だけでなく、古いC++も学ぶべきですし、Cも学ぶべきです。
そうじゃなくて、書けるぜ!は、楽しすぎなC++の可能性があります。
int ans = 0;
for (int i=0; i<n; i++){
ans = max(ans, a[i]);
}
とかも、
int ans = 0;
for (int i=0; i<n; i++){
if (a[i]>a[i+1]){
ans = a[i];
}
}
で書けることがいいです。
ほとんど変わらなくね?と思いますか?
ifやforだけで実はプログラムは作られているということから、ここまで細分化して書けることの重要性が大事なんです。
重要性が大事という頭痛が痛いみたいなw
これが書けないエンジニアがいたら、結構……うふふな感じなので、しっかり書けるようになりましょうね!
MooMooMooみたいに書いていくプログラミング言語みたいに、うふふだけでやるプログラミング言語とかあったら、面白いですよね。笑
実際に、日本語でプログラミングをするという言語もありますよ。確か。
何ていうやつだったか、忘れましたけど。
うふうふふうふうふふふうふがHello World!かもしれません。笑←嘘
何を言ってるんだ?
何だっけ……。あ、古いC++の本も読んだほうがいいし、C言語もやったほうがいいですよ、という話ですね!
vectorというコンテナの概念が登場するまで、静的配列とかでやりくりしてたとかね。
Paizaさんでも古い問題の解答では、静的配列で、vectorは使ってないとか、初期化にmemsetを使うとか、そういう古いやり方があったりして微笑ましいです。
vectorを使えば、初期化はかっこなだけですからね。
ぼくも最初は静的配列でやってました。Javaとも互換性があるので。
あと、Cの本では、int i, j, k, n, mみたいに、宣言をしておいて、さらに書くという書き方を、古い本ではしてますが、普通に初期化の書き方で宣言できます。
int i;
for (i=0; i<n; i++){ホニャララ}
という書き方は、古いです。
普通に問題ないので、
for (int i=0; i<n; i++){ホニャララ}
でいいです。
それと、古い本とか、特定の本では、
for (int i=0; i<n; ++i){ホニャララ}
と、繰り返し処理を、先にインクリメントしてますが、i++の後置のインクリメントで大丈夫です。
同じ意味かと思います。
アルゴリズマー養成講座では、そうなってました。
これ、同じ意味だよな……?
と思って、読んでました。笑
厳密には違うんですけどね。
ただ、forループでは、同じ意味です。ちょっと違いますが、混乱しないようにしてくださいね。
C++にも歴史がかなりあります。
もう数十年とか経ってるのは、確実ですからね。
すごい歴史の深い言語です。
仕様がばかでかい!!
ロベールのC++という入門本があるのですが、それは10cmくらいの分厚さで、30cmくらいの大きさです。笑
しかもそれも結構古い本ですね。笑
やばいですよね。言語仕様がばかでかいのでいくと、最強ですね。
だからこそ!!
何でも作れるというのはあると思います。
だからこそ、低レイヤーが向いているというわけなんです。
だからこそ、ぼくは好きです。
Rustよりも。Rustはなんか、違うなと思いました。書いてみて。
今だったら、Rustなのかな……と思ってますけど。正直。
でも、C++は、今後さらに進化するだろうと予想してます。
Web方面に、拡大していくと思います。
有名なウェブフレームワークが、ないので、C++でウェブアプリを作る人はほぼいないです。
いまだったら、Next.jsでいいです。
それが最適解だと思います。
しかし、他の言語でできないの?
ってことで、Django、Spring boot、Laravelとかがあるんです。
バックの処理を、C++とかでやりたい!というときにできるんですね。
今も、CppConというYouTubeで、C++のカンファレンスが出てます。
まだ発展途上ですね!
ぼくはゲームか、組み込みに行きたいと思ってます。
ナーヴギアに活きると思うので。
これに尽きる!!
ナーヴギアをいつか作りたいから、C++を学んでいるまである。
それしかない。
入りは、アルゴリズムの最適化で入りましたが、あ、これ書けるかも……と思って、C++を書き始め、ナーヴギアに活きるやんとなったという結果論ですね。
C++でしかできないことは、ゲーム開発と最適化アルゴリズム、低レイヤー。
アンリアルエンジンとかは、完全にC++です。
ゲームといえば、C#か、C++です。
C#はWindowsで使えることを前提としてやっているので、Javaと併用するパターンもあれば、ちょっと特定領域かなと。
ぼくのイメージですけど。
Javaでいい環境ではないSESに当たってしまった人は、C#を考えてもいいと思います。
たぶん、行けると思います。
Javaに非常に似ているというか、JavaをCライクに書いたのがC#なので。
JavaライクのCかも。わからん。
ぼくはC++にしたいと決めました。
Pythonがもともと好きでしたが、ライブラリ依存なところがちょっと飽きてきた感がありますね。
C++もincludeでやるじゃん。
いや、もともとは、iostreamとかのインクルードだけで、書けるのが古い書き方であって、書けないこともないんです。
アルゴリズムでは、vectorとかalgorithmとかをインクルードする場合があります。
だから口を酸っぱくして言っているように、C++が好きならば、古い本もチェックする必要があるよという話です。
その低レイヤー感が大事です。
C++を極めるのなら。
C++エバンジェリストというものにプロフィールを変えました。
エバンジェリストというのは、魅力を広める人という意味です。
熱意、パッションを持って、伝える人です。
ロベールのC++買ったほうがいいのかも……と思います。
あと、オライリーのC++とか。
買ったほうがいいですね!!
今度買います!
あれを熟読したら相当詳しくなれそう。笑
いいね!
とはいえ、Pythonの本も頼んじゃって、明日届くという……。
深層学習の本です。
そこでなのですが!
OSSを何にするのか?
ということをずっと悩んでおります。
某OSSのC++SDKを作ることはベースとして、C++のOSSもやりたいんです。
となると、やっぱりAIですかね。
C++製の。
そうします!!機械学習をPythonで学んで、それをC++で実装していきたいかなと思います。
ライブラリの中身を一個ずつC++で構築すれば、AIは実質作れると思います。
そもそも、C++でPythonのライブラリが書かれていることが多いので、全然できないことはないです。
むしろ向いているし、ゴリゴリ書いて、AIを作ることも可能です。
そうしたら、JavaとかGoとかでもできるぞという世間貢献的にもいいですね!
いいOSSのテーマかと思います。
自分で言っておきながら。
というわけで、OSSは、AI制作にやっぱり費やします。
そして、ライブラリをコードリーディングしていきますかね。
Pythonとかの。
たぶんC++製のライブラリ多いと思う。
あと、C言語の勉強もセットでやっていきたいですね。
C++を理解するには、エバンジェリストになるのなら、Cもスペシャリスト並みでないとだめですよね。
ただ、Cのメソッドとか、全然違う場合があるので、C++とCは必ずしも一致ではないですね。
延長線上にあるというだけ。
構造体とかが理解に必要になるが、それはCを学べばいいですね。
そこに、クラスというものが出てきます。オブジェクトというわけですね。
何かにまとめるといいということがわかってきたから、オブジェクト指向になっていった……。
と、C++のオライリーの本に書いてあって、そうなんだあと思いました。
つまり、品質をよくするには、まとめることを指向として置いたほうがいいという概念ですね。
だから、オブジェクト指向を取り入れたというわけです。
OOP言語というのは、厳密にはほぼOOP言語なんですが、Pythonもオブジェクト指向やろうと思えばできるのですが、JavaとかC++がOOPをすべてカバーしていると言って過言ではありません。
だから、OOPを習得したいなら、JavaかC++がいいと思います。
C++は、仕様がばかでかいので、Javaがおすすめです。
仕事も、一強なので、Javaを極めておけば、デザインパターンもGoF本で学べるので、とてもいいですね。
おすすめです。
しかも。
Javaのエバンジェリストみたいであれですが、Javaは組み込みもいけるので、最強ですね。
C++もウェブがまだ未発達だから、日の目を見てないだけかもしれませんが、Javaは強いですね。
ただ、うふふな現場も多いと聞きます。
なので、Javaやだー!って人は、C#ですね。
Windowsでいいのなら、C#をやるべきです。
それか、フロントのほうへ行くとか、PHPとかですかね。
TypeScriptできると、結構、いい現場多いと思います。
ぼくはC++のほうへ行きます。Javaでは、デザインパターンの理解で読むかなと思います。
Javaは書けるが、仕事にはしないですね。
C++で行きたい。
Cでも可。
組み込みでも可。
何でもいいですね。
C++でゲーム開発がいちばんいいですね。
第一志望そこで、第二志望が組み込み、第三志望が低レイヤー全般エンジニアですね。
バイトを1年~2年やって、そのまま中途採用を受けます。
C++をやりたいです。
年収はどうでもいい。
もう、C++でできないといやだレベル。
外資とかで年収アップとかはまったく考えてません。
最終的に、C++で上のほうへ行けたらいいなという感じですね。
C++よりもGoのほうが年収は高いです。なぜなら貴重だから。
C++って仕様がばかでかいですが、書ける人が多いというのもある。
だから、求人もそこそこあるのですが、年収は普通くらい。
600万円いけばいいほう。
全然、それでいいかなと思ってます。
よし!!
今回はここまで!!
C++の話ばっかでしたね。
というわけで、今日も明日もC++をやっていきますよー!
ウェイ!!
ではでは。ばいび。




