//tips
ふとなぜITは利益率が高いんだっけと考える時間があった。おそらく注射のせい。
人間の生活は基本衣食住の物資で完結することができるが、これらの物資生産が飽和した際には価値が下がり、労働にトレードや技術転移・資源転移が発生することになる。
トレードは均衡し、技術移転・資源転移で新たな商品が生まれ、それらは前のものより品質がアップしたり、時間・労力を短縮する。それらの商品が出回ると時間・労力が浮き、新たなものに注ぎ込めるようになる。
ITが実現したのは、効率化による労力短縮と接触者の増加で、個人的には接触者の増加の方が面白い要因かと考えている。
(人は衣食住では足らずに、交流も一つの生きるための要素になった。逆かもしれないが。交流が少なくなった結果交流を条件に入れざるを得なくなったのかも)
電話(電話かけまくる)、インターネット(ダイレクトの門が開かれた)で、消費者側からも、販売者側からも、競争をベースに新規参入者を増やしたし、購入者も増やした。情報が拡散し、コネクションの優位は相対的に低下した。
技術の進歩で定量観測が可能になり、かなりのビジネスの飽和スピードは速くなり、最終的には個人全てがビジネス参入することになっていく。
今発生しているいけてるITの高利益率は人件費の浮いた分というより、新規参入のベースとなるツールの利用料の重みの気がする。つまり、定量観測した知見体系を販売している。
これを踏まえてメタバースは、個人の信用度を一つの制度上で可視化する必要があるというのもあるが、年齢、性別、国籍、人種、宗教問わず個人参入可能にするマーケットなので、ツールが整備され、スマホ端末レベルで実現すれば今後くる。
まだ微熱がある模様。
//基本情報理解
ロックを複数の共有資源に対して行おうとすると、互いに相手が占有している資源の解除を待ち合うデットロック状態に陥る可能性がある。
タスクはUNIXのOS系ではプロセスとも呼ばれ、ある時点での並行処理の際のプロセスとプロセスを細分化したスレッドとの違いを確認する。
プロセスは一つのプログラムを実行する処理単位なのでプロセスごとにスタックとCPUレジスタ群を持つ。
スレッドは一つのプロセスから生成される並行処理単位で1つのプロセスの中に複数スレッドを動作させることができる。
スレッドはプロセスとは異なり、CPU資源のみを割り当てられ、その他の資源はプロセスから継承する。プロセス内にスレッドを複数持った場合互いに独立して共有しているプログラムを実行できる。class内でのメソッドがグローバル変数を参照できるようなものか。
主記憶装置のアドレス空間割り当て方式には、下記がある。
・主記憶を一つのタスクだけに割り当てる方式
・主記憶装置をあらかじめいくつかの固定長区画に分割し、並行実行するそれぞれのタスクに必要とする大きさの区画を割り当てる方式。この方式では区画の大きさとそこで実行するタスクの大きさが一致しなければ未使用領域が発生してしまうので注意が必要。
・タスクの大きさに合わせて主記憶領域を可変長の区画に区切り割り当てる方式。複数のタスクの実行と終了を繰り返すと、主記憶上に不連続な未使用領域が発生してしまうので注意。未使用領域を一つの十分な長さの連続領域にまとめるメモリコンパクション(ガーベジコレクション)という処理が必要になる。
この際に未使用領域を割り当てるアルゴリズムとして必要量以上の大きさを持つ未使用領域のうち最小のものを割り当てる最適適合アルゴリズムが用いられ、未使用領域の大きさの順序を管理するリスト構造や大きさをキーとする2分探索木が根拠となる。
・主記憶よりお大きなプログラムを実行させる際、プログラムを排他的に実行できる複数個のセグメントに分割しておき、実行時に必要なセグメントを主記憶に読み込んで実行する方式。必要なプログラムのみをロードしようという考え方。
樹形図の片方の枝を先に済ませた後にもう片方の枝に移るなどの、実行作業自体を分割することで主記憶で使う領域を限定している。
他にも実行中のプログラムが何らかの理由で中断され、放置されている場合、実行状態のままで補助記憶上の領域に退避(スワップアウト)し、他のプログラムを補助記憶から主記憶に読み込んで実行する。
スワップは主記憶の容量不足を補うためにハードディスク上に確保された領域で、Linuxでは主記憶の2倍の領域を通常スワップが確保しているよう。
仮想記憶方式は磁気ディスクなどの補助記憶を利用することで主記憶の物理的な容量より遥かに大きなアドレス空間を提供する方法。
プログラム実行の際には仮想アドレスから主記憶のアドレスへアドレス変換が行われており、これをメモリ管理ユニット(MMU)が管理している。実行されない限り、プログラムで扱われるアドレスは仮想アドレスであることを覚えておく。
言語プロセッサとは、エディター上で記述されたプログラムをコンピュータ上で実行するためのプログラムを表し、機械語に直すもの。
コンパイラはCなどの高水準言語で記述されたプログラムを機械語の目的プログラムに変換・翻訳する言語プロセッサで、ソースプログラムを字句解析、構文解析、意味解析、最適化、コード生成をして実際の機械を動かすための目的プログラムが生成される。
コンパイラによって生成された目的プログラムを実行可能なプログラムにするために、プログラムで使用されているライブラリモジュールなど実行に必要なものを連結させる必要があり、それを行うプログラムをリンカという。
ここでいうライブラリは、多くのプログラムが共通に使う機能を部品化し、まとめたファイルのこと。
複数のソースプログラムから一つの実行ファイルを生成する場合、どのプログラムを修正したのか、コンパイルすべきプログラムは何かといった管理が必要になり、それを管理するのがコンパイルリンクの自動化ツール(make)で最小の手順で実行ファイルを生成する。
IDEと呼ばれる統合開発環境は、エディタでソースコードを書き、ソースコードからコンパイラとリンカを使って実行ファイルを作成し、テスト支援ツールを使用したデバックで検証する機能を一つの環境下で一貫して行えるようにしたパック。
Visual Studio Codeはエディタ側で、Visual StudioはWebやWindowsアプリーケーションなどを構築するため統合開発環境に入るよう。
リポジトリは、データベースで各工程での成果物をメタ情報として管理する。githubを考えればわかりやすい。
ここからはデータベースについてみていく。
データベースの設計は、概念設計、論理設計、物理設計の順に行われる。
実世界にあるデータ構造をできるだけあるがまま表現するものをE-R図といい、概念設計の段階で用いられる。