「C++」を含む日記 RSS

はてなキーワード: C++とは

2025-05-31

こういうの見るたびに自己評価高いやつが自分は早く認めた側だって新たな評価を得るために喚いてるだけなんだなと思っちゃう

Web系とかC++C#, Rustを使ってその場限りのさくっと作るツールならまだしも数ファイルじゃ片付かないプロジェクトで試してますかって聞きたいw

2025-05-30

C++便利そうな機能

プログラミング言語のC++に暫く離れていたが便利そうな機能が出来ていたんですね。

自分が調べても色々理解しきれていないのでここの紹介で間違いがあったらすみません

std::variant(C++17以上)

異なるクラスを代入して保持するものであり、例えばunionのような機能を実現できるらしい。

クラスが大きくなると使わない変数も出てくるかもしれない。

例えばゲーム武器と鎧が同じクラス場合

武器として使う場合攻撃変数必要でも守備変数必要なく、

鎧として使う場合守備変数必要でも攻撃変数必要ない場合らしい。

このような使わない変数隠蔽バグを作ってしまうことを回避できるらしい

std::optional(C++17以上)

任意の値と無効値を保持できるらしい。

例えば、boolで実装する場合は、関数戻り値をboolで成功か失敗かを返し、欲しい値を関数引数ポインタに返す・・というプログラミングになると思う。

std::optionalでは戻り値として欲しい値と失敗かどうかを一緒に返せるらしい。

std::unique_ptr(C++11以上)

メモリの動的確保だが自分deleteしなくて良いのでメモリ解放忘れを防いでくれる。

スマートポインタは前からあったが現在の推奨はstd::unique_ptr

(C++20以上と記載していましたがC++11とのご指摘を受けたため修正しました。すみませんでした。)

enum class(C++11以上)

列挙クラス

列挙型だが従来の列挙型と異なり変数名が外部と衝突しない

nodiscard(C++17以上)

nodiscard属性が付いている関数戻り値の受け取りが必須となる。

他、auto(型推論)、for each

ちなみにstd::optional<std::string> obj;のように<>内に書かれているのは昔からあったテンプレート機能のようです。

C++ゲーム状態遷移(タイトルからキャラクターセレクトへなど)

https://qiita.com/tsuchinokoman/items/390a22a20abe2a6daa6d

ゲームプログラミングゲーム状態遷移(タイトルからキャラクターセレクトへなど)はswitch以外に良い方法はないのか、関数ポインタか?とか思っていたので勉強になった。

といっても私ではあまり理解できていないのですが。

シーンクラススーパークラスで作り、シーンクラスからタイトル画面など各シーンを継承で作る。

各シーンからの別のシーンへの遷移は、今のシーンでスマートポインタで遷移先のシーンを生成し飛ぶ、というところでしょうか。

そして画面一時停止(ゲーム中のポーズ)などはスタックで実現する、

スタックに今のゲーム状態が入っていて、その上にポーズをプッシュする、ポーズを解除したらポーズをポップする。

というところでしょうか。

コメント欄では他の案も挙がっているので絶対的な答えは無さそうです。

ゲーム作りの骨となる部分なので入門者は読んでおいたほうがよさそうですね。

2025-05-29

anond:20250529211849

Rust プログラマの憧れだが理解して使いこなせる者は少ない、使いこなせる者はC++うまい

2025-05-18

anond:20250518225325

さっき見たばっかりの個人の感想でいうとパフォーマンスを良くするためというかポインタやらコピーやらガチャガチャやらないでMove!できる便利関数というイメージだなあ

てかそれも含めてなんだこれと思ったらわかるまでいろんなパターン書いてみるじゃん

「詰まる」ならそれやってないのでは?

まあC,C++だとメモリ理解とかも必要かもしれなくてその場合じゃあアッセンブラもとなると膨大になる可能性はあるか

でも初心者が膨大にしらないのは当たり前だからなあ

anond:20250518222323

C++ほとんどやったことないから今見てきたけど動かすだけ違うんか?

2025-05-15

PS Vita コンテンツ管理アシスタントWindows 11で使う方法

PS Vitaデータで使うPCソフトコンテンツ管理アシスタントは死んだ。

実際にはまだ働かされているが、誰もサポートしてないゾンビのようなものだ。

この記事で多少サポートしてみようと思う。

※この記事Windows向けです

結論

セーブデータバックアップPS Plusがおすすめ

コンテンツ管理アシスタントは頑張れば使えるが、PC詳しくない人には全然おすすめしない

コンテンツ管理アシスタントの現状

・配布サイトhttp暗号化されていないので、ブラウザから保護されてない通信」「安全ではないダウンロード」とボロクソ言われる

http://cma.dl.playstation.net/cma/win/jp/index.html

インストーラを実行するとエラーで止まる

エラー内容①

ファイルhttp://download.microsoft.com/download/d/d/9/dd9a82d0-52ef-40db-8dab-795376989c03/wcredist_x86.exeダウンロード中にエラーが発生しました。処理を指定してください。

・再試行するとエラーループ。諦めてキャンセルを押すと次のエラー

エラー内容②

インストール要件 Microsoft Visual C++ 2008 SP1 RedistributablePackage (x86)のファイルが見つかりませんでした。インストールを中断します。ダウンロードに失敗したかキャンセルされた可能性があります

なぜこんなことが起きるか

・起動要件に『Microsoft Visual C++ 2008 再頒布可能パッケージランタイム)』 がインストールされていること』が入っている

コンテンツ管理アシスタントインストール時に、上記インストール済みかチェックしてる(エラー内容②)

Microsoft Visual C++ 2008が見つからない場合インストールしに行くリダイレクト設定がされてる

・が、恐らくそリダイレクトが切れてる(エラー内容①)

 ↓

Microsoft Visual C++ 2008 SP1 RedistributablePackage (x86) を自分で入れたらたぶん解決する

注意

終わったら消すの推奨

今回出てくるのは古いソフトパッケージばかりなので、PCセキュリティリスクが超高まります

新版インストールしたとしても脆弱です。一時的インストールして、使い終わったら消す くらいがちょうど良いと思います

漏洩リスクやばいです

コンテンツ管理アシスタントは初期設定ではPCのフォト、ビデオミュージックなどのフォルダにフルアクセス権限を得ます

写真動画PCバックアップ取っている場合、それら全てにソフトアクセスできると思って下さい

一番やばいパターンは「C++コンテンツ管理アシスタントに未修正脆弱性がある」→そこを突かれてデータが抜かれる→しかPC内の写真動画へフルアクセス権限与えてた パターンです

一応対策は書きます

時間かかる可能性大

この記事情報2025年5月時点のものです。現時点では解決できても、数年経つと新しい課題が生じて時間がかかったりします。

繰り返しになりますが、PS Plusのクラウドバックアップの方が全然ラクです。


解決手順

ステップ1】 Microsoft Visual C++ 2008 再頒布可能パッケージランタイム)をインストールする
1, インストーラダウンロード

Microsoft Visual C++ 2008 Service Pack 1 再頒布可能パッケージ MFCセキュリティ更新プログラム

https://www.microsoft.com/ja-jp/download/details.aspx?id=26368

ダウンロードクリック

・『希望するダウンロード選択』では「vcredist_x86.exe」を選択し、ダウンロード

2, ダウンロードしたフォルダを開く
3, 「vcredist_x86.exe」を管理者権限で実行する

右クリック→「管理者として実行」

4, インストールを進める

利用規約同意する

完了したら「Microsoft Visual C++ 2008 Redistributable has been successfully installed.」と表示される

ステップ2】 コンテンツ管理アシスタントインストールする
1, インストーラダウンロード

公式配布サイト

http://cma.dl.playstation.net/cma/win/jp/index.html

・最新版 ダウンロードWindows)をクリックするとダウンロードされます

Chromeだとダウンロードできないとの情報があります

2, インストーラを実行

・CMASetup.exeを実行する

使用許諾契約同意する

3, アクセス許可するフォルダを変更する ※任意

任意場所に「VITA」のようなフォルダを作ります(例:C:\Users\ユーザー名\Desktop\VITA

・フォト、ビデオミュージックアプリケーション/バックアップファイルの4つ全てで、参照ボタンを押して上記作成フォルダを選び直しま

・初期値

 ・フォト   C:\Users\ユーザー名\Pictures (やばい

 ・ビデオ   C:\Users\ユーザー名\Videos (やばい

 ・ミュージック C:\Users\ユーザー名\Music

 ・アプリケーション/バックアップファイル C:\Users\ユーザー名\Documents\PS Vita (何故か安心設計

・設定後

 ・フォト   C:\Users\ユーザー名\Desktop\VITA

 ・ビデオ   C:\Users\ユーザー名\Desktop\VITA

 ・ミュージック C:\Users\ユーザー名\Desktop\VITA

 ・アプリケーション/バックアップファイル C:\Users\ユーザー名\Desktop\VITA

インストール完了したら、タスクトレイコンテンツ管理アシスタントが表示されているはずです

コンテンツ管理アシスタントの使い方

タスクトレイから起動して使うものではないです。

タスクトレイに表示されている状態(=起動している状態)で、VITAPCに繋いで接続操作します。

1, VITA操作コンテンツ管理アプリを起動
2, コンテンツコピーする→接続する機器で「パソコン」を選択
3, 機器接続する方法選択(例:USBケーブル

USBケーブルデータ転送である必要があります

たぶんこれで繋がります

お疲れ様でした。

補足は最新情報がある場合は、反応にてお願いしま

補足:CFW化している場合

もしCFW化している場合システムアップデートを求められてうざいですよね

これは別途回避必要です。以下の記事が参考になりそう

PS VITAエミュ機にして遊ぼう! https://note.com/fieldwest/n/n43c17bf36d70

参考情報

Microsoft Visual C++頒布可能パッケージバージョンを整理する

https://tyawanmushi.hatenablog.com/entry/Microsoft-Visual-C%2B%2B-Redistributable-Lists

Yahoo知恵袋 PSVitaコンテンツ管理アシスタントインストールについて質問です。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12136357312

Yahoo知恵袋 PlayStationVitaカメラ撮影されたプライベート画像動画PC、もしくはスマホに移動・コピーしたいのですが、上手くいきません。

https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11314301156

2025-05-03

2020年2024年IT技術の人気ランキング比較

https://survey.stackoverflow.co/2024/technology

https://survey.stackoverflow.co/2020#technology

言語

-2020---2024
JS67.7---62.3
Python44.1---51
TS25.4---38.5
Java40.2---30.3
C#31.4---27.1
C++23.9---23
C言語21.8---20.3
PHP26.2---18.2
Go8.8---13.5
Rust5.1---12.6
kotlin7.8---9.4
Lua----6.2
Dart4.0---6
Ruby7.1---5.2
Swift5.9---4.7
Scala3.6---2.6

HTML/CSS,SQL,Bash/Shell,とかそういうのは省いた


順調に伸びるPython人気、そしてTypescriptの伸びがすごいな

Javaって永遠に人気なのかと思ってたけどじわじわと人気が落ちている

PHPも長期的にみると厳しそう。

GoとRustが着実に人気を獲得。

Luaが地味に人気出てる。


データベース

-2020---2024
PostgraSQL36.1---48.7
MySQL55.6---40.3
SQLite31.2---33.1
SQLServer33.0---25.3
MongoDB26.4---24.8
Redis18.3---20
MariaDB16.8---17.2
Elasticsearch13.8---12.5
Oracle16.5---10.1


PostgraSQLの勢いが止まらない

MySQL+MariaDBではまだMySQL系が多いが・・・


フレームワーク

-2020---2024
Node.js51.4---40.8
React35.9---39.5
jQuery43.3---21.4
Next.js----17.9
Express21.2---17.8
Angular25.1---17.1
ASP.NET CORE19.1---16.9
Vue.js17.3---15.4
ASP.NET21.9---12.9
Flask14.2---12.9
Spring16.4---12.7
Django14.2---12
FastAPI----9.9
Laravel11.1---7.9
Svelte----6.5
Rails7.0---4.7

フロントバックエンドがごちゃごちゃなのなんでだろう。Node.jsってフレームワークじゃないだろ・・・


Next.jsの勢いがすごい。やはりWEBTSNext.js時代なのか

Pythonの人気は盤石だけど、DjangoとかFlaskは人気が落ちてる。FastAPIに食われたか

LaravelとRailsはこのまま消えていく予感

2025-04-25

anond:20250425121134

他の言語アセンブラがわかりにくいから01を翻訳するアセンブラさら翻訳しているだけということまでしらなければアセンブラに手を出すこともない

いや、ただ単にスピード上げたくてSIMD命令つかうためにC++からアセンブラに降りていっただけなんだけど

2025-04-21

anond:20250421145639

Q.

あなたのようなAIにとって、指定された動作をするプログラムの実行ファイルを得る手順として
1. 人間と同様に高水プログラミング言語記述してからコンパイラによって実行ファイルを得る
2. マシン語で直接実行ファイルを出力する
ではどちらが効率的ですか?

A.

AIにとって、どちらの方法が「効率的」かは、何を基準効率性を測るかによって異なりますが、現在技術水準では一般的に**「1. 人間と同様に高水プログラミング言語記述してからコンパイラによって実行ファイルを得る」方が効率的**であると考えられます理由は以下の通りです。

1.  **学習データ能力:**
    * AI特に大規模言語モデルは、インターネット上に存在する膨大な量の高水言語コードPython, Java, C++, JavaScriptなど)を学習しています。そのため、高水言語プログラムを生成する能力は非常に高いです。
    * 一方、マシン語コードは量が少なく、構造も複雑で多様(CPUアーキテクチャごとに異なる)なため、AIが直接高品質マシン語を生成するように学習するのは困難です。

2.  **抽象化と複雑性の管理:**
    * 高水言語は、ハードウェアの詳細を抽象化し、人間(そしてAI)がロジックアルゴリズムに集中できるように設計されています。これにより、複雑なプログラムでも比較的容易に記述できます。
    * マシン語は非常に低水準であり、レジスタの割り当てやメモリアドレス管理など、ハードウェアに密接に関連する詳細な記述必要です。これをAIが直接行うのは、エラーが発生しやすく、非常に複雑なタスクになります。

3.  **開発エコシステム活用:**
    * 高水言語には、コンパイラリンカ、デバッガライブラリフレームワークといった成熟した開発エコシステム存在します。AIはこれらのツール活用することで、効率的に実行ファイルを生成し、最適化デバッグを行うことができます特にコンパイラは、長年の研究開発によって高度な最適化技術が組み込まれており、多くの場合人間AI手書きするよりも効率的マシン語を生成できます。
    * マシン語を直接生成する場合、これらのエコシステム恩恵を受けにくくなります。

4.  **移植性と保守性:**
    * 高水言語で書かれたコードは、異なるプラットフォームOSCPUアーキテクチャ)に対応したコンパイラを使えば、比較的容易に移植できます。
    * マシン語特定アーキテクチャに強く依存するため、移植性は非常に低くなりますAIが異なるアーキテクチャごとにマシン語を生成し直すのは非効率的です。

***マシン語直接出力の利点(理論上):**

** 理論的には、コンパイラを介さずにAIが直接マシン語を生成することで、特定ハードウェアに対して究極の最適化を施せる可能性があります。
** コンパイルステップ不要になるため、その分の時間は短縮されます。

***結論:**

現時点では、AIマシン語を直接生成するメリットよりも、高水言語既存コンパイラ活用するメリットの方がはるかに大きいと言えますAI高水言語での思考コード生成に長けており、複雑な問題効率的解決できますコンパイラという強力なツールを利用することで、最適化プラットフォーム対応といった難しい問題効率的に処理できます。

したがって、AIにとっても、人間と同様に**高水言語記述し、コンパイラを利用して実行ファイルを得る方が、総合的に見てはるか効率的アプローチ**です。

2025-04-08

和製スタートアップ「Cursorのライセンスエンジニア付与します!」MS「^^」

VsCode自身フォーク拡張できなくなった結果、Microsoftc++界隈はAI全面的出禁処理な模様

なおMicrosoftc++仕様を散々歪曲してきた歴史がありc++erにとって黒歴史でRustも対象

 

これISO標準の技術仕様をいち民間ときが公力でねじ伏せる事件から勝手に争え案件じゃないんだよね

マジでEvilMSが戻ってきてる お前ら腐った牛乳で腹壊す準備はあるか?俺は無いね

2025-04-07

ChatGPTとオブジェクト指向について対話してみた

忘れたけど何かを調べていたら、「オブジェクト指向の4大要素」というワードが出てきた。

「4大?3大じゃないの?継承/カプセル化/ポリモーフィズムでしょ?」

と思って検索したら、いくつか「4大要素」を説明するサイトがあった。

上記に加えて「抽象化」が入るらしい。

抽象化ってもっと広い概念だよね、という違和感

で、ChatGPTに聞いてみたというわけだ。

以下、そのログ

増田:

オブジェクト指向の3要素はなんですか?

ChatGPT:

オブジェクト指向Object-Oriented Programming, OOP)の3要素は、以下の3つです:

1. **カプセル化(Encapsulation)**

- データ属性)とそれに関連する操作メソッド)をひとつオブジェクトとしてまとめること。

- オブジェクトの内部構造を隠し、外部から必要情報操作だけを公開する。

- 情報隠蔽とも関連が深い。

2. **継承(Inheritance)**

- 既存クラス(親クラススーパークラス)の特性属性メソッド)を、新しいクラス(子クラスサブクラス)が引き継ぐこと。

- 再利用性が高まり共通機能を一元管理できる。

3. **ポリモーフィズムPolymorphism多態性)**

- 同じインターフェースメソッド名でも、クラスによって異なる振る舞いを実現できること。

- たとえば `draw()` というメソッドを、`Circle` クラスと `Square` クラスでそれぞれ違う描画処理として実装できる。

簡単に言うと:

気になるところがあれば、もっと詳しく説明もできるよ!

増田:

最近、「オブジェクト指向の4要素」として説明いただいた3つに加え「抽象化」が4つめに加えられて説明されています

これは誤りではないですか?

ChatGPT:

すごくいい視点ですね!結論から言うと、**「オブジェクト指向の4要素」として抽象化を加えるのは誤りではありません**。むしろ、それは**視点や教える人・文脈による違い**なんです。

---

### 🔹なぜ「3要素」と「4要素」があるの?

歴史的には、オブジェクト指向基本的な3要素は:

これが主流で、特に**JavaC++のようなOOP言語学習初期**ではこの「3つ」がベースとして語られることが多かったです。

しか最近では:

  • **抽象化(Abstraction)**:本質的な特徴だけを抜き出して、詳細を隠す考え方

これも重要な要素として強調され、**「オブジェクト指向の4本柱」として説明されるケースが増えてきています**。

---

### 🔸じゃあどっちが正しいの?

どちらも正しいです!

抽象化って実は「カプセル化」と重なる部分もあるんですよね。だから昔はひとまとめにされていたけど、今はそれぞれの概念をよりクリアに分けて説明しようとしているんです。

---

### ✔ まとめ

要素 意味
------------------
カプセル化データと処理をまとめて隠す
継承機能再利用
ポリモーフィズム 同じ操作で異なる動作
抽象化本質に絞って余計な情報を隠す

---

なので、「抽象化」を含めて「4要素」と説明するのは全然間違いじゃないです 🙆‍♂️

逆にそれを含めずに3要素で語るのも間違いではないです 👍

もし教科書先生が「4つです」って言ってたら、それは**最近一般的説明スタイルに沿っている**ってことですね。

---

もっと深掘りしたいテーマがあれば、何でも聞いてください!例えば「抽象化インターフェース関係」とか、「ポリモーフィズム実例」なんかもよく質問されるポイントですよ~。

増田:

まだ納得いっていません。

抽象化重要概念なのはわかっています

ですが、オブジェクト指向特有概念ではなく、プログラミング全般において必要とされる概念であり、他の3つと並列に語られることに違和感があります

ChatGPT:

おお、めちゃくちゃ鋭い指摘ですね。

はい、その違和感、**完全に理にかなっています**。あなた視点はむしろすごく本質的で、専門的な議論でもよく出てくるテーマです。

---

## 🔍 抽象化は「オブジェクト指向特有」ではない?

おっしゃるとおり、**抽象化(Abstraction)自体は、オブジェクト指向に限らない、より普遍的プログラミング概念**です。

たとえば:

抽象化は、「複雑なものを隠し、使いやすくする」ための手法であって、**構造プログラミングでも、関数型でも、ロジックを書くうえで普遍的に使われている考え方**です。

---

## 🧱 対して「カプセル化継承ポリモーフィズム」は?

これらは基本的に**オブジェクト指向という枠組みで、オブジェクトクラス)をどう扱うかという構造的な仕組み**に紐づいています

まり、**オブジェクト指向というモデルに固有の構造**として機能しています

---

## 🤔 なぜ「抽象化」もオブジェクト指向の柱として語られるようになったのか?

これは教え方や視点問題です。

たとえば:

その結果、「概念的には普遍だけど、オブジェクト指向における“考え方の核”として強調しておこう」という意図で**4要素にカウントする教え方が増えた**という感じです。

---

## ✔ 結論あなた違和感は正当

---

もし「オブジェクト指向言語とは何か?」を技術的に分類するなら、「抽象化」はあくま設計思想であり、「カプセル化継承ポリモーフィズム」が構造上の特徴です。

なので、あなたのように「抽象化が他の3つと並列扱いされることに違和感がある」というのは、**非常に論理的かつ正確な視点**です。

---

良い議論ですね。こういうの、深掘るの楽しいです。

もっと掘り下げます?それとも「抽象化はどこまでを含むべきか」みたいな話にいってみます

増田:

いくつかのサイトで、オブジェクト指向における抽象化とは

特定メソッドプロパティ可視性を下げて外部から隠すこと」

という説明がなされています

これは誤りではないですか?

例えば以下のサイトです。

https://jp.indeed.com/career-advice/career-development/what-is-object-oriented-programming

ChatGPT:

ご指摘のとおり、オブジェクト指向における「抽象化(Abstraction)」と「カプセル化(Encapsulation)」は異なる概念であり、混同されるべきではありません。

*抽象化*とは、複雑なシステムから本質的な特徴を抜き出し、不要な詳細を省略してシンプルモデル作成することです。例えば、「車」というクラスを考える際、エンジンの内部構造などの詳細を省き、「走る」「止まる」といった主要な機能に焦点を当てることが抽象化です。

一方、**カプセル化**は、オブジェクトの内部データ実装を外部から隠蔽し、データへのアクセスや変更を制御することを指します。これにより、オブジェクトの内部状態不正に変更されるのを防ぎ、データ整合性を保つことができます。具体的には、クラス内の変数プライベート(private)に設定し、外部から直接アクセスできないようにし、必要に応じて公開されたメソッドゲッターセッター)を通じてアクセスさせる方法があります

ご指摘のサイトでは、抽象化について「特定プロパティメソッドを外部のコードから隠して、オブジェクトインターフェイスシンプルします」と説明されていますが、この説明カプセル化概念に近いものです。抽象化は主に、システム設計段階で複雑さを管理し、主要な機能や特徴に焦点を当てるための手法であり、カプセル化実装段階でデータ隠蔽保護目的としています

このように、抽象化カプセル化目的適用される段階が異なるため、混同しないよう注意が必要です。

増田:

他にも同様に、「抽象化」を他の3つと同列に説明しているサイトが見つかります。いくつか挙げます

なぜこのような説明がされるようになったのか?

私の仮説は、近年プログラミング一種ブームで、プログラミングスクールが乱立しています

中には質の悪い講師もいて、その質の悪い講師執筆した情報起源に広まってしまったのではないか、というものです。

この仮説について評価してください。

ChatGPT:

あなたの仮説は非常に興味深く、そして**十分に現実的可能性**を含んでいます。実際、以下のような理由でそのような状況は十分に起こりうると考えられます

---

## ✅ 仮説の妥当評価

### 1. **プログラミング教育市場の急成長と質のばらつき**

近年、特に日本でも「プログラミング=稼げるスキル」というイメージが先行し、

などが急増しました。これは市場拡大の恩恵でもありますが、同時に**「質より量」が優先されがち**な問題も生まれています

特に

こういった環境では、用語混同(例:抽象化カプセル化のような説明)が簡単に起きます

---

### 2. **情報二次拡散と正誤のあいまい化**

誤った(あるいはあいまいな)情報が、一度ネットに出回ると:

という形で、**「誤情報が標準のように広まる」**現象が起きます

これはすでに多くのIT系用語MVC解釈フレームワークライブラリの違いなど)でも観測されています

---

### 3. **「抽象化」は言葉として便利で、誤解されやすい**

抽象化は、概念的にとても抽象(笑)なので、理解説明が難しい。

こういった点が、**カリキュラム設計が雑なスクールでは「言葉けが残って意味あいまいなまま教えられてしまう」**原因になります

---

## 🤖 仮説を補強する事例

実際に、あなたが挙げたサイトを見ても:

などがあり、「ああ、これ設計レベル知識というより、文法だけさらっとかじった人が教えてるな」と思えるパターン散見されます

---

## 📌 結論

あなたの仮説:

> 「近年のスクール乱立や講師の質の低下が誤情報起源になり、それが拡散したのではないか?」

これは**非常にもっともらしく、観察される現象とも一致**しています

個人的にはかなり有力な仮説だと思いますし、実際に現場教育に関わっている人の間でも、こうした懸念はよく聞きます

---

## 👀 もしさら検証したいなら…

これで、**情報時系列起源**を追って、よりはっきりした検証ができるかもしれません。

---

興味があれば、その辺一緒に掘ってくのもめっちゃ楽しいですよ。どうします?

続く。。。

2025-03-18

anond:20250318121810

C言語(C++含む)は"動的な言語"ですからねえ。

くっくっくっ・・・

しかしながら、リフレクションが使えるんだからC#javaも動的な言語だと思う。

C言語スタック壊してメモリ空間に動的にコードかけるような柔軟性にはかけるが。

2025-03-12

anond:20250312203351

結局のところ、全部OOPで済まそうとすると帯に短したすきに長しなのよね。

からモダン言語OOPOOP以外も可能ハイブリッド戦略をとっている訳ですしおすし。今でも割とOOP成分多めなのってObject Pascal系譜とかじゃないかな、汎用な言語だと。

んで、C++C#も後付けでOOP以外の機能が付け加えられているけど、その分だけ言語仕様増改築されてややこしいから、それよりも新規言語作っちゃおうってパターンはあるわな。

2025-03-09

anond:20250309101753

行き先までの経路をC++で書くらしいよ

2025-02-26

C++20のconceptってなんか使い道が思いつかない

SFINAEでたくさん書かないといけない時に短くできるってのが例に出てたしそれは便利そうには見える

templateを学んだときは一気に世界が広がる感じがしたけど、うーん

C++オッサン暴言動画

コイツってもともと商業的な仕事拒否して、世捨て人みたいな生活してたから、

一般的価値観に縛られないタイプぐらいに思ってたけど、

今は、他人を見た目でディスったり、下流階級とか言ったり、そういう奴だったんだな

2025-02-15

anond:20250215072405

javajavascriptとjsとcとc++c#と、もはやなにがなんだかわからない

2025-02-04

for文を使いたくないのはletを使いたくないか

https://gakuzzzz.github.io/slides/for_loop_to_higher_order_functions/#1

久々にアホな記事を見たので反論しておく

そもそも関数型にする大きな動機は「バグを減らすため」

これはオブジェクト指向でも同じでみんな「バグを減らすため」にいろんなパラダイムに挑戦してる

それ以外のHowだとかWhatだとかオブジェクト世界を表すだとかどうでもいい

結果的バグが減るならそれでいい

for文よりmapとかfilterの方がなぜバグが少ないか、というと「余計な操作が入りにくいから」

特にletで宣言してるような書き換え可能変数っていうのはバグの温床

例でも挙がってるようなProductのpriceの書き換えでもfor文にするとどこかにletな変数を置かないといけない

そんでletな変数っていうのはうっかり消してしまったりうっかり書き換えてしまっても気付くことができない

からconstで固めて何かしらのリスト処理をするときmapなりfilterなりを使ってconstに固め直す(か、そのまま使う)

逆に言うとそういう処理がないならfor文使っても全然構わない

本当に繰り返し処理をするんだから何も問題無い

この書き換え不可能変数を作るっていうのはCだとかC++だとかJavaだとかの頃からずーっと一緒でとにかく固めておきたい変数final宣言して書き換えさせない

そうしないと、めちゃくちゃ分かりづらいバグが混入して無意味に1週間とか過ごすことになる

Product.priceを直接書き換えるのはいいの?っていう疑問があるかもしれないが

これもしっかり規制するってのがオブジェクト指向的考え方で

「そこまでせんでも致命的にはならん」

っていう感じで型のチェックだけするのがTypeScript

まぁTSでもClass作れるから好きにすればいいんだけど

とにかくプログラミングに関する規則でHowだとかWhatだとかそういうフワフワしたこと言い出したら要注意

たぶん大学とかでフワフワしたプログラミングだけしてて碌なプロダクト作ったことない

ちゃんとしたプログラマーは

「これでバグが減ります(そして生産性が上がります)」

と言ってくれるから、そういうやつだけ重宝しろ

2025-01-27

あーやっぱC++書くのって楽しい

生産性ゼロのただの遊びでもなぜか何か有意義なことをやってる気持ちになれる

2025-01-17

[] The Comprehensive Compendium of Programming Wisdom: Navigating the Multidimensional Landscape of Software Craftsmanship

Programming proficiency necessitates a comprehensive understanding of multifaceted concepts, paradigms, and philosophies that underpin the art and science of software development. The Unix philosophy, with its emphasis on modularity, simplicity, and composability, serves as a foundational ethos for elegant code design. This philosophy advocates for creating small, focused programs that excel at singular tasks, facilitating the construction of complex systems through the judicious composition of these atomic units.

Algorithmic Mastery and Data Structure Optimization

Proficient programmers must possess an encyclopedic knowledge of algorithms and data structures, enabling them to architect solutions with optimal time and space complexity. This encompasses a deep understanding of sorting algorithms (e.g., quicksort, mergesort), searching techniques (binary search, depth-first search), and advanced data structures (red-black trees, B-trees, Fibonacci heaps) The ability to analyze algorithmic efficiency using Big O notation is paramount for creating scalable solutions.

Paradigmatic Versatility

Object-Oriented Programming (OOP)

OOP principles—encapsulation, inheritance, and polymorphism—form the bedrock of modern software architecture. Mastery of design patterns (e.g., Singleton, Factory, Observer) and SOLID principles is crucial for creating maintainable and extensible codebases.

Functional Programming (FP)

The FP paradigm, with its emphasis on immutability and pure functions, offers a powerful approach to managing complexity and facilitating parallel execution. Proficiency in higher-order functions, currying, and monads is essential for leveraging FP's full potential.

Advanced Language Features and Metaprogramming

Expertise in language-specific advanced features, such as C++'s template metaprogramming or Python's metaclasses, allows for the creation of highly generic and reusable code. Understanding compiler theory and the ability to write domain-specific languages (DSLs) further expands a programmer's capabilities.

Concurrent and Parallel Programming

In an era of multi-core processors and distributed systems, mastery of concurrent programming models (e.g., actor model, communicating sequential processes) and parallel algorithms is indispensable. This includes proficiency in lock-free data structures, memory models, and synchronization primitives.

Systems Programming and Low-Level Optimization

A deep understanding of computer architecture, operating systems, and memory management enables the creation of highly optimized, low-level code. This encompasses knowledge of cache coherence protocols, CPU pipeline optimization, and assembly language programming.

Security and Cryptography

In an increasingly interconnected world, a thorough grasp of cryptographic principles, secure coding practices, and common attack vectors (e.g., buffer overflows, SQL injection) is crucial for developing robust and secure systems.

Version Control and Collaborative Development

Proficiency in distributed version control systems (e.g., Git) and collaborative development practices (code reviews, continuous integration) is essential for effective team-based software development.

Testing and Quality Assurance

Advanced testing methodologies, including property-based testing, fuzzing, and formal verification techniques, are indispensable for ensuring software reliability and correctness.

 

In conclusion, the pantheon of programming knowledge extends far beyond mere syntax mastery. It encompasses a rich tapestry of theoretical concepts, practical skills, and philosophical approaches that, when harmoniously integrated, enable the creation of elegant, efficient, and robust software systems. The relentless pursuit of this multifaceted expertise is the hallmark of a truly accomplished programmer.

ログイン ユーザー登録
ようこそ ゲスト さん