【メモリとストレージ】プログラミングに必要な保存と計算の区別
記事更新日:2024-02-02

区別する

意味としては、区別してるけど
何を保存し、何を計算するかを決定することは、プログラムの読みやすさ、柔軟性、およびパフォーマンスに影響します。
imprementation Patterns
Deciding what to store and what to compute affects the readability, flexibility, and performance of programs.

Deciding(決定)が重要
「保存と計算」の区別

「2つを明確に区別すること」が大事だと言われてる
- store
- 保存
- 取得するときは、「メモリの読み取り」
- 静的な情報
- computation(calculation)
- 計算
- 取得するときは、「関数の呼び出し」
- 動的な情報

保存されたものを取得するのか、計算するのか

それぞれの動きを理解することが、決定に役立つ
1.メモリの読み取り

「メモリの読み取り」とは、データを「特定のメモリアドレスから取得」すること
メモリ(memory)とメモリアドレス
- メモリ
- memory、コンピュータの主記憶装置
- 変数などの小さいものも、すべてメモリに配置される
- 特徴
- 高速にアクセスできる
- 電源が切れたらデータは消える(短期記憶)
- メモリアドレス
- memoryを取り出すための住所
- データがメモリに配置されるときに、アドレスが作られる
- アドレスは、コンピュータのOSが管理している
memory:思い出すこと、思い出、記憶、記憶の機能
コンピュータでは主に、短期記憶の意味をとる

思い出は、常にメモリの中
メモリの割り当て(allocation)・解放(freeing)

メモリの一部分を占領して使い、最後は解放する
- プログラムの実行中
- メモリ割り当て:memory allocation
- 日本語では「メモリ領域の確保」ともいう
- 英語は、割り当ても確保も allocation
- allocationとは、資源(土地、財産、予算、人員、時間)を割り当てること
- メモリ割り当て:memory allocation
- プログラムの終了後
- メモリ解放:freeing memory

メモリを自由にしてあげることが、解放
値の取得(retrieving a value) = メモリへのアクセス(accessing memory)

メモリにアクセスするから、値が取得できる
- テーブルや配列は、メモリに格納されている
- 値の取得時は、メモリアドレスでメモリにアクセスして読み取る

人間はなかなか思い出せないけど、コンピュータはアドレスですぐに思い出せる

住所がないと、手紙も送れない
2.関数の呼び出し

メモリにアクセスするのは同じ、そのあとが違う
- 関数もメモリにあるため、メモリにアクセスして取得する
- 関数の取得後
- 関数の実行中:関数用のメモリが割り当てられる
- 関数の終了後:関数用のメモリは解放される
- メモリの解放によって、計算結果は消える

コンピュータは計算結果を消しちゃう

だから、こっちで結果を管理(保存)するしかない
管理方法を決定するのがストレージ決定(ストレージ管理とも呼ばれる)
imprementation Patterns
ストレージの決定は、プログラマーによって異なる役割を果たす
Storage decisions play a different role for different programmers.

つまり、答えは常にわからない
ストレージの決定
デジタルな保存場所としてのストレージ

ストアも、ストレージも、保存場所のこと
- store
- 商品やアイテムの保存、保存場所
- 物理的な場所
- storage
- データを保存する場所
- デジタルな場所
- ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)など

コンビニエンス・ストアは、商品を保存する場所
プログラミングでは様々な意味をもつ
- データを保持する場所は、すべてストレージと見なせる
- データベース、ファイルシステム、コンポーネント、配列など
- データの保存、読み込み、削除を実施することもストレージと呼ぶ

ストレージ管理が、人間の役割
ストレージを管理する、決定する

いろいろ決めなきゃいけない
- ストレージの決定
- どこに保存するかを決める
- 保存する方法を決める
- メモリにどうアクセスするかを決める
- コードの書き方を決める

そのときの内容によって、自分で考えて決める

たとえば、こういうこと
ストレージ決定の例
変数に直接アクセスするのか、クラス・オブジェクト・関数・メソッドを介してアクセスするのか
普遍的なルールはありません。プログラマーは考え、コミュニケーションし、学ぶ必要があります。それがプロであることの一部です。
imprementation Patterns
There is no universal rule. Programmers need to think, communicate, and learn. That’s part of being professional.

さまざまな手法は、ストレージ管理の工夫によるものだった
オブジェクトの目標の1つは、ストレージを管理することでした。
imprementation Patterns
One of the goals of objects was to manage storage.

とにかく、どう書くかを決めるために学ぶ
区別して
ストレージを決定する
2024-02-02
編集後記:
この記事の内容がベストではないかもしれません。