goo blog サービス終了のお知らせ 

gooブログはじめました!

写真付きで日記や趣味を書くならgooブログ

Prita Diary 02092025

2025-09-02 20:24:54 | 日記

デスクトップコンピュータ パート1
デスクトップコンピュータ(略してデスクトップとも呼ばれることが多い)は、そのサイズと電源要件から、ポータブルコンピュータではなく、机の上または机の近くに固定して日常的に使用するように設計されたパーソナルコンピュータです。最も一般的な構成は、電源、マザーボード(中央処理装置としてのマイクロプロセッサ、メモリ、バス、特定の周辺機器、その他の電子部品を搭載したプリント基板)、ディスクストレージ(通常は1台以上のハードディスクドライブ、ソリッドステートドライブ、光ディスクドライブ、初期モデルではフロッピーディスクドライブ)、入力用のキーボードとマウス、出力用のモニター、スピーカー、そして多くの場合プリンターを収納したケースです。ケースは水平または垂直に設置でき、机の下、横、または上に置くことができます。

 

ケースが垂直に設置されたデスクトップコンピュータはタワー型と呼ばれます。1990年代半ば以降に提供されたケースの大部分がこのフォームファクターであるため、「デスクトップ」という用語は、従来の水平方向で提供される最新のケースを指すために、レトロニム的に使用されています。

 

歴史
起源
マイクロプロセッサが広く普及する以前は、机の上に収まるコンピュータは非常に小型であると考えられていました。最も一般的に使用されていたコンピュータはミニコンピュータでしたが、その名前にもかかわらず、かなり大きく、いわゆる「ビッグアイアン」と比べると「ミニ」という程度でした。初期のコンピュータ、そして後に登場した汎用性の高い高スループットの「メインフレーム」は、部屋全体を占有するほどのスペースを占めていました。一方、ミニコンピュータは一般的に冷蔵庫サイズのラック1つまたは数個に収まり、少数の小型のものは、かなり大きな机の上に置くのではなく、机に組み込まれていました。

 

机の上に完全に収まる完全にプログラム可能なコンピュータが登場したのは、1970年代になってからでした。1970年には、キーボードとモニターを備えた「スマート」なコンピュータ端末であるDatapoint 2200が登場しました。メインフレームコンピュータに接続できるように設計されていましたが、それでもユーザーは内蔵の計算機能をスタンドアロンのデスクトップコンピュータとして使用していました。 HP 9800シリーズは、1971年にプログラム可能な電卓として発売されましたが、1972年にはBASICでプログラム可能になりました。ROMメモリをベースにしたミニコンピュータ設計の小型版で、小型の1行LED英数字ディスプレイとプロッタによるグラフィックス表示機能を備えていました。1973年のWang 2200は、フルサイズのブラウン管(CRT)とカセットテープ記憶装置を搭載していました。1975年のIBM 5100は小型CRTディスプレイを搭載し、BASICとAPLでプログラム可能でした。これらは、一般的にビジネス用途や科学研究用途向けに販売された高価な専用コンピュータでした。

 

成長と発展
Apple II、TRS-80、Commodore PETは、1977年に発売された第一世代のパーソナルコンピュータで、ビジネスマンやコンピュータ愛好家ではなく、一般消費者市場を対象としていました。Byte誌はこれら3機種を「1977年のパーソナルコンピュータの三位一体」と呼びました。 1980年代から1990年代にかけて、デスクトップコンピュータが主流となり、最も人気を博したのはIBM PCとそのクローンで、次いでApple Macintoshが続きました。3位のCommodore Amigaは1980年代半ばに一定の成功を収めましたが、1990年代初頭には衰退しました。

 

初期のパーソナルコンピュータは、初代IBMパーソナルコンピュータと同様に、「デスクトップケース」に収められており、ディスプレイ画面を上部に配置することで、ユーザーの机上のスペースを節約していました。ただし、これらのケースは、当時普及していたCRTディスプレイの重量を支えるだけの頑丈さが必要でした。1990年代を通じて、デスクトップケースは徐々に人気が薄れていき、机の上ではなく、机の下や横の床に設置できる、よりアクセスしやすいタワー型コンピュータが主流となりました。タワー型コンピュータは拡張性が高いだけでなく、年々大型化するモニターのための机上のスペースも確保しました。デスクトップケース、特にコンパクトなフォームファクタは、企業のコンピューティング環境やキオスク端末で依然として人気です。コンピュータケースの中には、横置き(デスクトップ)と縦置き(ミニタワー)のどちらでも設置できるものがあります。

 

1990年代には、DoomやQuakeといった影響力のあるゲームが登場し、ゲーマーや愛好家はこれらのアプリケーションを実行するために、デスクトップ(通常はタワー型)用の最新のCPUとグラフィックカード(3dfx、ATI、Nvidia)に頻繁にアップグレードするようになりました。しかし、2000年代後半以降は、Intel統合型グラフィックスの人気の高まりによりゲーム開発者が規模を縮小せざるを得なくなったため、この傾向は鈍化しました。Creative TechnologyのSound Blasterシリーズは、1990年代にはデスクトップPC用サウンドカードの事実上の標準でしたが、2000年代初頭にはOEMデスクトップPCのマザーボードにサウンドボードが直接統合されたため、ニッチな製品へと転落しました。

 

Link 1  Link 2  Link 3  Link 4  Link 5  Link 6  Link 7  Link 8  Link 9  Link 10  Link 11  Link 12  Link 13  Link 14  Link 15  Link 16  Link 17  Link 18  Link 19  Link 20  Link 21  Link 22  Link 23  Link 24  Link 25  Link 26  Link 27  Link 28  Link 29  Link 30


Prita Diary 01092025

2025-09-01 17:46:49 | 日記

コンピュータ パート 13
ネットワークとインターネット
コンピュータは1950年代から、複数の物理的な場所間での情報調整に使用されてきました。米国軍のSAGEシステムは、そのようなシステムの最初の大規模な例であり、Sabreのような多くの特殊用途の商用システムにつながりました。

 

1970年代、全米の研究機関のコンピュータエンジニアは、通信技術を用いてコンピュータを相互に接続し始めました。この取り組みはARPA(現在のDARPA)によって資金提供され、その結果生まれたコンピュータネットワークはARPANETと呼ばれました。ARPANETを可能にした技術は普及し、進化しました。やがて、このネットワークは学術機関や軍事機関を超えて広がり、インターネットとして知られるようになりました。

 

ネットワークの出現は、コンピュータの性質と限界の再定義を伴いました。コンピュータのオペレーティングシステムとアプリケーションは、周辺機器や保存情報など、ネットワーク上の他のコンピュータのリソースを個々のコンピュータのリソースの拡張として定義し、アクセスする機能が追加されました。当初、これらの設備は主にハイテク環境で働く人々だけが利用していましたが、1990年代には、電子メールやワールド・ワイド・ウェブ(WWW)といったアプリケーションの普及と、イーサネットやADSLといった安価で高速なネットワーク技術の発展により、コンピュータネットワークはほぼあらゆる場所で利用されるようになりました。

 

ネットワークに接続されるコンピュータの数は驚異的に増加しています。多くのパーソナルコンピュータが、通信や情報の受信のために定期的にインターネットに接続しています。携帯電話網を利用することが多い「ワイヤレス」ネットワークの登場により、モバイルコンピューティング環境においてもネットワークはますます普及しつつあります。

 

将来
光コンピュータ、DNAコンピュータ、ニューラルコンピュータ、量子コンピュータなど、多くの有望な新技術を用いて、従来とは異なるコンピュータを開発するための研究が活発に行われています。ほとんどのコンピュータは汎用性が高く、あらゆる計算可能な関数を計算でき、メモリ容量と動作速度のみが制限となります。しかし、コンピュータの設計によって、特定の問題に対するパフォーマンスが大きく異なる場合があります。例えば、量子コンピュータは、量子因数分解によって、一部の最新の暗号化アルゴリズムを非常に速く解読できる可能性があります。

 

コンピュータアーキテクチャのパラダイム
コンピュータアーキテクチャには多くの種類があります。
量子コンピュータ vs. 化学コンピュータ
スカラープロセッサ vs. ベクトルプロセッサ
NUMA(非均一メモリアクセス)コンピュータ
レジスタマシン vs. スタックマシン
ハーバードアーキテクチャ vs. フォン・ノイマンアーキテクチャ
セルラーアーキテクチャ
これらの抽象マシンの中で、量子コンピュータはコンピューティングに革命をもたらす可能性を最も秘めています。論理ゲートは、上記のデジタルまたはアナログパラダイムのほとんどに適用できる一般的な抽象化です。プログラムと呼ばれる命令のリストを保存・実行できる能力は、コンピュータを非常に汎用性の高いものにし、計算機とは一線を画しています。チャーチ=チューリングのテーゼは、この汎用性を数学的に表現したものです。最低限の能力(チューリング完全)を持つコンピュータは、原理的には、他のコンピュータと同じタスクを実行できます。したがって、十分な時間とストレージ容量があれば、あらゆる種類のコンピュータ(ネットブック、スーパーコンピュータ、セルラーオートマトンなど)は同じ計算タスクを実行できます。

 

人工知能
20世紀において、人工知能システムは主にシンボリックであり、ソフトウェア開発者によって明示的にプログラムされたコードを実行していました。しかし、機械学習モデルは、与えられたデータに基づいてタスクを達成するように学習するため、トレーニングを通して調整されるパラメータを備えています。機械学習(特にニューラルネットワーク)の効率は、主にグラフィックス・プロセッシング・ユニット(GPU)を中心とする並列コンピューティング用ハードウェアの進歩により急速に向上しました。一部の大規模言語モデルは、コンピュータやロボットを制御できます。AIの進歩は、少なくとも人間と同等の能力で、事実上あらゆる知的タスクを実行できるタイプのAIである汎用人工知能(AGI)の創出につながる可能性があります。

 

職業と組織
コンピュータの利用が社会全体に広がるにつれ、コンピュータに関連する職業も増加しています。
コンピュータが互いに連携し、情報を交換できるようにする必要性から、公式・非公式を問わず、多くの標準化団体、クラブ、協会の必要性が高まっています。

 

Link 1  Link 2  Link 3  Link 4  Link 5  Link 6  Link 7  Link 8  Link 9  Link 10  Link 11  Link 12  Link 13  Link 14  Link 15  Link 16  Link 17  Link 18  Link 19  Link 20  Link 21  Link 22  Link 23  Link 24  Link 25  Link 26  Link 27  Link 28  Link 29  Link 30


Prita Diary 30082025

2025-08-30 16:04:52 | 日記

コンピュータパート12
低水準言語
機械語と、それを表現するアセンブリ言語(総称して低水準プログラミング言語)は、一般的にコンピュータの中央処理装置(CPU)の特定のアーキテクチャに固有のものです。例えば、スマートフォンや携帯型ビデオゲームに搭載されているARMアーキテクチャのCPUは、PCに搭載されているx86 CPUの機械語を理解できません。歴史的には、Zilog Z80に加え、MOS Technology 6502および6510など、他の多くのCPUアーキテクチャが開発され、広く使用されました。

 

高水準言語
アセンブリ言語は機械語よりもはるかに簡単ですが、長いプログラムを書くのはしばしば難しく、エラーが発生しやすくなります。そのため、実用的なプログラムのほとんどは、プログラマーのニーズをより簡単に表現できる(したがって、プログラマーのエラーを減らすのに役立つ)より抽象的な高水準プログラミング言語で書かれています。高水準言語は通常、コンパイラーと呼ばれる別のコンピュータプログラムを使用して、機械語(または場合によってはアセンブリ言語から機械語)に「コンパイル」されます。高水準言語は、アセンブリ言語ほど対象コンピュータの動作とは関係がなく、最終的なプログラムが解決する問題の言語と構造に大きく関係しています。そのため、多くの場合、異なるコンパイラを用いて、同じ高水準言語プログラムを様々な種類のコンピュータの機械語に変換することが可能になります。これは、ビデオゲームなどのソフトウェアを、パーソナルコンピュータや様々なビデオゲームコンソールなど、異なるコンピュータアーキテクチャで利用できるようにするための手段の一つです。

 

プログラム設計
小規模なプログラムのプログラム設計は比較的単純で、問題の分析、入力の収集、言語内のプログラミング構造の利用、確立された手順とアルゴリズムの考案または利用、出力デバイスへのデータの提供、そして必要に応じて問題の解決策の提供が含まれます。問題が大規模かつ複雑になるにつれて、サブプログラム、モジュール、形式文書化、そしてオブジェクト指向プログラミングなどの新しいパラダイムといった機能が求められます。数千行以上のコードを含む大規模プログラムには、形式的なソフトウェア方法論が必要です。大規模なソフトウェアシステムの開発は、大きな知的課題を伴います。予測可能なスケジュールと予算内で、許容できるほど高い信頼性を持つソフトウェアを作成することは、これまで困難でした。ソフトウェア工学という学術分野と専門分野は、この課題に特に重点を置いています。

 

バグ
コンピュータプログラム内のエラーは「バグ」と呼ばれます。バグは無害でプログラムの有用性に影響を与えない場合もあれば、影響がわずかである場合もあります。しかし、場合によっては、プログラムまたはシステム全体が「ハング」し、マウスクリックやキー入力などの入力に反応しなくなったり、完全に機能しなくなったり、クラッシュしたりすることがあります。そうでなければ無害なバグであっても、悪意のあるユーザーがエクスプロイト(バグを利用してコンピュータの正常な実行を妨害するように設計されたコード)を作成することで、悪意を持って利用されることがあります。バグは通常、コンピュータのせいではありません。コンピュータは与えられた命令を実行するだけなので、バグはほとんどの場合、プログラマーのエラーやプログラム設計上の見落としが原因です。アメリカのコンピュータ科学者であり、最初のコンパイラを開発したグレース・ホッパー提督は、1947年9月にハーバード大学のマークIIコンピュータで死んだ蛾がリレーをショートさせているのが発見された後、コンピューティングにおいて「バグ」という用語を初めて使用した人物として知られています。

 

Link 1  Link 2  Link 3  Link 4  Link 5  Link 6  Link 7  Link 8  Link 9  Link 10  Link 11  Link 12  Link 13  Link 14  Link 15  Link 16  Link 17  Link 18  Link 19  Link 20


Prita Diary 28082025

2025-08-28 16:16:24 | 日記

コンピュータパート11
ストアードプログラムアーキテクチャ
このセクションは、一般的なRAMマシンベースのコンピュータのほとんどに適用されます。

 

ほとんどの場合、コンピュータ命令は単純です。例えば、ある数値を別の数値に加算する、あるデータをある場所から別の場所に移動する、外部デバイスにメッセージを送信する、などです。これらの命令はコンピュータのメモリから読み出され、通常は与えられた順序で実行されます。しかし、プログラム内の別の場所にジャンプしたり戻ったりして、そこから実行を継続するようにコンピュータに指示する特殊な命令が通常存在します。これらは「ジャンプ」命令(または分岐)と呼ばれます。さらに、ジャンプ命令は条件付きで実行されるように設定できるため、以前の計算結果や外部イベントに応じて、異なる命令シーケンスが使用されることがあります。多くのコンピュータは、ジャンプ元の場所を「記憶」するジャンプ命令と、そのジャンプ命令の次の命令に戻るための別の命令を提供することで、サブルーチンを直接サポートしています。

 

プログラムの実行は、本を読むことに例えることができます。人間は通常、各単語や各行を順番に読みますが、時にはテキストの前の部分に戻ったり、興味のない部分を飛ばしたりすることもあります。同様に、コンピュータもプログラムのあるセクションに戻って、何らかの内部条件が満たされるまで、命令を何度も繰り返すことがあります。これはプログラム内の制御フローと呼ばれ、これによりコンピュータは人間の介入なしにタスクを繰り返し実行することができます。

 

比較すると、ポケット電卓を使う人は、2つの数を足すなどの基本的な算術演算を数回のボタン操作で実行できます。しかし、1から1,000までのすべての数を足し合わせるには、何千回ものボタン操作と多くの時間がかかり、ほぼ確実に間違いを犯します。一方、コンピュータは、わずか数個の簡単な命令でこれを行うようにプログラムできます。

 

このプログラムを実行するように指示されると、コンピュータはそれ以上の人間の介入なしに、繰り返しの加算タスクを実行します。間違いを犯すことはほとんどなく、現代のPCであれば、このタスクをほんの一瞬で完了できます。

 

マシンコード
ほとんどのコンピュータでは、個々の命令はマシンコードとして保存され、各命令には固有の番号(オペレーションコード、略してオペコード)が割り当てられます。2つの数値を加算するコマンドには1つのオペコードが割り当てられ、2つの数値を乗算するコマンドには異なるオペコードが割り当てられ、といった具合です。最も単純なコンピュータは、少数の異なる命令のいずれかを実行できますが、より複雑なコンピュータでは、それぞれ固有の数値コードを持つ数百の命令から選択できます。コンピュータのメモリは数値を保存できるため、命令コードも保存できます。このことから、プログラム全体(これらの命令のリスト)を数値のリストとして表現でき、数値データと同じようにコンピュータ内で操作できるという重要な事実が導き出されます。プログラムを、それが操作するデータと共にコンピュータのメモリに保存するという基本的な概念は、フォン・ノイマン・アーキテクチャ、つまりストアード・プログラム・アーキテクチャの核心です。場合によっては、コンピュータはプログラムの一部またはすべてを、操作するデータとは別のメモリに保存することがあります。これは、ハーバード・マークIコンピュータにちなんでハーバード・アーキテクチャと呼ばれています。現代のノイマン型コンピュータは、CPUキャッシュなど、その設計にハーバード・アーキテクチャの特徴をいくつか備えています。

 

コンピュータプログラムを長い数値のリスト(機械語)として記述することは可能であり、この手法は初期のコンピュータの多くで使用されていましたが[i]、実際には非常に面倒で、特に複雑なプログラムの場合はエラーが発生しやすい可能性があります。代わりに、各基本命令に、その機能を示し覚えやすい短い名前(ニーモニック、例えばADD、SUB、MULT、JUMPなど)を与えることができます。これらのニーモニックは総称してコンピュータのアセンブリ言語と呼ばれます。アセンブリ言語で記述されたプログラムをコンピュータが実際に理解できるもの(機械語)に変換するのは、通常、アセンブラと呼ばれるコンピュータプログラムによって行われます。

 

プログラミング言語
プログラミング言語とは、コンピュータプログラムを作成するためのソースコードを記述するための記法体系です。プログラミング言語は、コンピュータで実行するプログラムを指定するための様々な方法を提供します。自然言語とは異なり、プログラミング言語は曖昧さを許さず、簡潔になるように設計されています。これらは純粋に記述言語であり、読み上げるのが難しい場合が多いです。一般的には、実行前にコンパイラまたはアセンブラによって機械語に変換されるか、実行時にインタープリタによって直接変換されます。場合によっては、この2つの手法を組み合わせた方法でプログラムが実行されることもあります。

 

プログラミング言語は数千種類あり、汎用プログラミングを目的としたものもあれば、高度に特殊化されたアプリケーションにのみ役立つものもあります。

 

Link 1  Link 2  Link 3  Link 4  Link 5  Link 6  Link 7  Link 8  Link 9  Link 10  Link 11  Link 12  Link 13  Link 14  Link 15  Link 16  Link 17  Link 18  Link 19  Link 20  Link 21


Prita Diary 27082025

2025-08-27 21:16:10 | 日記

コンピュータパート10
マルチタスク
コンピュータは、メインメモリに格納された1つの巨大なプログラムを実行しているように見える場合がありますが、システムによっては、複数のプログラムを同時に実行しているように見せかける必要があります。これはマルチタスクによって実現されます。つまり、コンピュータが各プログラムを高速に切り替えて実行することです。これを実現する方法の一つは、割り込みと呼ばれる特殊な信号を使用することです。割り込みは、コンピュータが実行中の命令を定期的に停止させ、別の処理を実行させます。割り込み発生前に実行していた場所を記憶しておくことで、コンピュータは後でそのタスクに戻ることができます。複数のプログラムが「同時に」実行されている場合、割り込みジェネレータは1秒間に数百回の割り込みを発生させ、そのたびにプログラムを切り替える可能性があります。現代のコンピュータは通常、人間の知覚よりも数桁速く命令を実行するため、ある瞬間に実際に実行されているのは1つのプログラムだけであるにもかかわらず、複数のプログラムが同時に実行されているように見えることがあります。このマルチタスク方式は、各プログラムに順番に時間の「スライス」が割り当てられるため、「タイムシェアリング」と呼ばれることもあります。

 

安価なコンピュータが登場する以前、マルチタスクの主な用途は、多くの人が同じコンピュータを共有することでした。一見すると、マルチタスクによって複数のプログラムを切り替えながら実行するコンピュータは、実行中のプログラムの数に比例して動作が遅くなるように思われますが、ほとんどのプログラムは、低速な入出力デバイスがタスクを完了するのを待つことに多くの時間を費やしています。プログラムがユーザーによるマウスのクリックやキーボードのキーの押下を待っている場合、待機中のイベントが発生するまで「タイムスライス」を取る必要はありません。これにより、他のプログラムの実行時間が確保され、許容できない速度低下なしに多くのプログラムを同時に実行できるようになります。

 

マルチプロセッシング
一部のコンピュータは、マルチプロセッシング構成において複数のCPUに処理を分散するように設計されています。この技術は、かつてはスーパーコンピュータ、メインフレームコンピュータ、サーバーなどの大規模で強力なマシンでのみ採用されていました。現在では、マルチプロセッサおよびマルチコア(単一の集積回路上に複数のCPUを搭載)を搭載したパーソナルコンピュータやラップトップコンピュータが広く普及しており、その結果、ローエンド市場でもますます利用されるようになっています。

 

特にスーパーコンピュータは、基本的なプログラムストアードアーキテクチャや汎用コンピュータとは大きく異なる、非常に独特なアーキテクチャを持つことが多い。数千個のCPU、カスタマイズされた高速インターコネクト、そして特殊なコンピューティングハードウェアを備えている場合が多い。こうした設計は、利用可能なリソースの大部分を一度に使用するために大規模なプログラム構成が必要となるため、特殊なタスクにしか役立たない傾向がある。スーパーコンピュータは通常、大規模シミュレーション、グラフィックスレンダリング、暗号化アプリケーション、そしていわゆる「驚異的並列」タスクで利用される。

 

ソフトウェア
ソフトウェアとは、コンピュータシステムの一部であり、データやデータ処理方法に関する命令など、コンピュータの動作を決定する符号化された情報で構成される。システムを構築する物理的なハードウェアとは異なり、ソフトウェアは実体を持たない。ソフトウェアには、コンピュータプログラム、ライブラリ、そしてオンラインドキュメントやデジタルメディアなどの関連する非実行データが含まれる。ソフトウェアは、システムソフトウェアとアプリケーションソフトウェアに分けられることが多い。コンピュータハードウェアとソフトウェアは互いに必要不可欠であり、どちらも単独では役に立たない。 IBM PC互換機のBIOS ROMのように、簡単に変更できないハードウェアに格納されているソフトウェアは、「ファームウェア」と呼ばれることもあります。

 

プログラム
現代のコンピュータを他のあらゆる機械と区別する決定的な特徴は、プログラム可能であることです。つまり、何らかの命令(プログラム)をコンピュータに与えれば、コンピュータがそれを処理します。フォン・ノイマン・アーキテクチャに基づく現代のコンピュータは、多くの場合、命令型プログラミング言語の形で機械語を備えています。実際には、コンピュータプログラムは、ワードプロセッサやウェブブラウザなどのプログラムのように、わずか数個の命令で構成される場合もあれば、数百万個の命令で構成される場合もあります。典型的な現代のコンピュータは、1秒間に数十億個の命令(ギガフロップス)を実行でき、長年の運用でもほとんどエラーが発生しません。数百万個の命令からなる大規模なコンピュータプログラムは、プログラマーのチームで何年もかけて作成する必要があり、その複雑さゆえに、ほぼ確実にエラーが含まれます。

 

Link 1  Link 2  Link 3  Link 4  Link 5  Link 6  Link 7  Link 8  Link 9  Link 10  Link 11  Link 12  Link 13  Link 14  Link 15  Link 16  Link 17  Link 18  Link 19  Link 20  Link 21