2025年10月19日「言語仕様オタク、本を読む」
こんにちは、こんばんは。
今日は勉強と制作に特化した日にしました!
歩きもせず、同人もせず……。
同人のほうはまたグンといって、新作は出せたらいいねくらいになりました。
目標値には達成しました。
毎日作業して、完成したら今月でも来月でもどっちでもいいから出すつもりです。
近々予告も出すので、お気に入りをぜひ探して入れてください。
今日は勉強をしてました。
『やさしいC++』を読んでおりました。
フレンド関数と仮想関数について新たに知識を入れました。
フレンド関数というのは、privateに設定しておくと、そこにアクセスできるものです。
あまり使わないほうがいいよねというコパイロットと壁打ちして出した結論でした。
でも、こういった拡張性、自由性があるところが、C++のよさだと思いました。
仮想関数というのは、virtual修飾子というものをつけると、あとからオーバーライドができるというものです。
派生クラスで、というものです。
それからテンプレートの機能、STLというものを学びました。
コンテナというものなどアルゴリズムで使う系のものがSTLです。
Standard Template Libraryというものです。
テンプレートというのはこれとは異なって、型を渡して、既に作っているテンプレートを使えるという機能です。
コンストラクタに値を渡すみたいに、テンプレートに型を渡すという感じです。
もちろん、そのあと、値を渡すことも、同時に渡すこともできます。
面白いですよね。なんか、設計書みたいなもんですよね。
たとえば、Javaだったら、インターフェースとクラスの継承で、設計書を作っていきますが、それだと何度も使うのがいちいち書かないといけない。
だけど、C++ならテンプレートがあるので、書かずに何度もそれこそテンプレートを使えるというもので、とてもスッキリした構造にできますよね。
また言語仕様オタクの駄弁りになってしまいましたが、気にしないでください。笑
言語仕様って本当に面白いんですよね。
え?!こんなことできんの?!
みたいな。
これで、こうして、こう書くこともできるんだ!!
というとき、すごく面白いですよね。
C++はその点、言語仕様オタクにとっては、めっちゃ仕様がばかでかいので、40年の重みを肌で感じられます。最高です。一言でいうと。
これが根源的な好きの理由なのかもしれませんね。
言語仕様オタクだから、言語仕様がばかでかいほうが好きというだけなのかもしれませんね。
TypeScriptをやろうと思いましたが、意味があるのだろうか……。
とか考え出している時点でだめなので、やめました。
Reactは勉強したいですね。
フロントはReactで書くということにしたいなと思ってます。
Reactはいま、Node.jsを併用する形になってます。
Next.jsでフレームワークとしてウェブアプリを作る感じになりますが、HTMLライクにJavaScriptを書くのがReactです。でも、HTMLも記述できるので、フロントをReactで書くパターンがいま、増えていると思います。
フロントをReactで。
これでいいと思います。
ぼくはそうしていきたいなと思ってます。JSXでやれますが、TSXにすれば、相当“いい”コードになると思います。
何を言ってるのかわからんひとは、飛ばしてください。笑
とにかく、言語仕様を学ぶことは面白いです!という話です。
言語仕様オタクならば、C++を学ぶことをおすすめします。
それか、JavaScript。
JavaScriptは、普通の関数の話から、アロー関数、async/awaitの非同期処理、DOM、スコープチェーン、thisなど……難しい話もいっぱいあります。
結構おすすめ。言語仕様オタクには。
どっちかがいいですね。
それとC#もいいかも。それでいくと、Javaもいいですし、Goでも面白いかも。
C++が随一ですので、言語仕様オタクならば、C++をおすすめします。
Cも含まれますので、Cの内容も知ってないと書けないところもあります。
ただ、Cとは結構違いますね。
structなどの構造体の概念はまったく同じです。ポインタとか。
だけど、C++では、標準で用意されているものが今は多いので、Cではこうしなくてはいけなかった……というものが、C++では、バシッとこれを書けばOKみたいなものがあります。
だから、Cができる=C++も楽勝ではないです。
あくまで、Cの系譜を引き継いでいるだけの話。
それだけの話なんですよね。C++はほぼ異なる言語と思ってやったほうがいいです。
それで、『やさしいC++』第四版に関しては再読を完了し、読了しました!!
いえい!!
一週間くらいかけてまた読みました。
最後、ギュッと詰まっているので、もっと深いことをやりたいひとは、別の書物がいいと思います。
ぼくは、このあと、オライリーの古いほうの『実践C++プログラミング初版』を読みたいと思います。
これも再読です。
いろいろ勉強してきたうえで、もう一度読むと、読後感が変わるかなと思いました。
構造体の設定で、stackを作るとか、queueとかもそうで、そういう中身を見たいので、とてもいいですね。古いからだめ――ということはいっさいありません。
ぜひ、古い本を読んでみてください。
とてもおすすめです。
ネットワークについて詳しくなりたいので、そういったインフラ知識もつけていこうと思いました。
データベーススペシャリストについても学びます。
DB設計では、データベーススペシャリストの勉強をすれば、網羅されているので、それでじゅうぶんだと思います。
ぱらぱらと見た感じ、そんな感じがしました!
SQLもやります。
MySQLをやろうかなと思っていたのですが、PostgreSQLについてやろうかなと思いました。
MySQLもやります。
しかし、いまだと、ポストグレスかなと思いました。
MySQLがいちばんベーシックですけどね。
Oracleもやっておいたほうが、本当はDBの勉強としてはいいんですよね。
ただ、そこまでいくと、なにをしたいの?w
という話になるので、やめておきます。笑
SQLオタクになるのはまだ先かなと。笑
『HACKING:美しき策謀』についてもせっかく持っているので、読んでいきたいですね。
物理本を読了しまくって、来月あたりまた本を一気に売ると思います。
C++以外はあまりやらないかなと思います。
Goは趣味でやります。
TypeScriptとかも。
Reactはフロントで書きたいので、やります。JavaScriptができるので、それでいまは書いていって、Reactはいつかできたらいいよねという感じです。
さっきのHACKINGの本は、C言語ベースです。
だから、とてもいいですね。
脆弱性攻撃への対策の理論と実装ですね。
タイトル通りですね。C言語です。
C++ではないです。
しかし、CもやれたほうがC++でも活きるので、それはそれで勉強になると思います。
そんな感じの勉強感ですね。
あれ……?
アルゴリズムは?
やりますよ!!C言語のアルゴリズムをC++に書き換えていくことを習慣にしたいと思ってます。
バブルソートとクイックソートがあって、速さを求めるなら、クイックソートですね。
しかし、簡単な実装は、バブルソートです。
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (a[j] > a[j + 1]) {
int temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
というものです。
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
if (a[i] > a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
こういうのもあります。
いろいろありますが、どっちでもいいらしいです!
ぼくは結構、下を書いてしまうことがあります。
選択ソートふうアルゴリズムだそうです。笑
選択ソートじゃないの?w
ふう――だったか!!
swapアルゴリズムをわからないと、最後なにをしているのかわからないとは思いますが、それは冗長的に何度も書いているので、省きます。
これで昇順に並べ替えられます。
1、2、3……って感じになりますね。1~8とかだったら。
ぼくの選択ソートふうは、nの二乗の計算量ですが、選択ソートはnらしいので、全然違いますよね。
計算量を意識するなら、選択ソートがいいと思います。
もっといいのは、nlognの計算量ですね。
さらに小さくなります。
クイックソートとかがそれにあたります。
nのもう一個のほうを、lognにするというものですね。
nよりも多くない?w
そっか!!そうかも。
選択ソートをしてください!!!!
おすすめです!!
ただ……。
sort(a.begin(), a.end());で、ソートできてしまいます。
しかも超最適化されたメソッドです。
こっちを使ったほうが絶対にいいのですが、自分でちょっとソートしたいな……ってときは、選択ソートふうとかを使えば、できたりするので、もし、実装を迫られたら、選択ソートふうがいちばんわかりやすいので、それを書いてみてください。
選択ソートのほうが絶対にいいですけどね!
条件分岐で、n回をn回やるのではなく、n回で済ませるというソート方法ですね。
アルゴリズムの話をしても仕方がないので、ここらへんにしておきます。
アルゴリズムもやるよ!という話です。
C言語で書かれたものを、C++に書き換えていく感じにします。
あと、英語!!
英熟語をやろうと思いましたが、ビジネス英会話だけとにかくやろうと思いました。
単語力は、また洋書を買って、それを読んで身につけたいと思います。
明日とこのあとの話をして、終了としたいと思います。
あ。
あと、SDK制作についに入りました!!
いちばん末端のファイルをまるっとC++に書き換えました。
それを毎日やっていきます。
最終的にちゃんと動作するかを、C++のウェブアプリで使いたいと思ってます。
だから、C++のウェブアプリも作らないといけないんですね。
だけど、それはまた後日作ります!!
とにかく、SDKを作り終えたいと思ってます。
全部書き換えたら、マージして、いったん、Ver.1.0として公開します。
試験運用をしてからですね。
それで日々、ここはこうしたほうがいいんじゃないかとかを整備していく感じになります。
それが終わったら、AI制作のほうへ行きたいかなと思ってます。
C++で機械学習、深層学習を、実装してAIを作ります。
チャットボットレベルですけどね。アルゴリズム特化型のチャットボットです。
アルゴリズムについて相談したら、吐いてくれるというAIです。
となると、さっきのC言語のアルゴリズムをC++に書き換えて勉強していくとかも活きますね!
それを食わせればいいわけですから。
明日からも、このSDK制作はつづきます。
毎日1ファイル書き換えていきたいなと思ってます。
それが終わったら、ウェブアプリ、試験運用・チェック済み、パブリックに公開、AI制作へという感じですね。
うんうん!!
しばらく放置して、誰かイシューとかプルリクエストを送ってくれたら、それを参考にして、書き換えるということをしたいですね。
このあとは、YouTubeで動画を見たいかなと思います。
本は読み終えたので、明日からまた読んでいくと。
『実践C++プログラミング 初版』ですね!
Effectiveは、そのあと読みます。
メルカリとブックオフで買いたいかなと思ってます。
やってくぜ!!いえい!!
明日はやっとお給料が入るので、とてもいいですね。
ずっと我慢してきました。笑
めっちゃ節約してきましたからね。
というわけで、今回はここまで!!
YouTubeで、C++のOOPについての動画のつづき、C++の関数についていろいろ調べてみたいと思います!!
いろいろ見て、勉強します!!
ではでは。
ばいび。