2千年前の馬のしこりのサイズが、今日のロケットエンジンのサイズを決定しました。
私たちの各決定がどのように未来を決定するのか疑問に思ったことはありますか?時には1年、数十、数百、数千年もの間ではありません。ロケットエンジンを大きくできないのはなぜですか?なぜバイトは正確に8ビットであり、7や16、あるいは48ではないのですか?しかし、それは以前はこれらの数と同じでした!Linux仮想端末にまだ接続ポート速度があるのはなぜですか?過去の決定が私たちの現在をどのように決定するか、そして私たちがどのように私たちの未来に影響を与えることができるかについて話しましょう。
スペースシャトルと馬の群れの幅
これはかなり有名な バイクで、インターネット全体に広がっています。メイン燃料タンクの側面に取り付けられているブースターのサイズがとても小さいのはなぜだと思いますか?これらは、ユタ州の工場で製造された固体推進剤ロケットブースター( MTKKスペースシャトルサイドブースター(英語固体ロケットブースター、SRB))です。エンジニアリングの観点からは、このエンジンを少し厚くしたほうがはるかに良いでしょうが、工場から打ち上げ場所まで電車で輸送する必要がありました。そして、鉄道は山のトンネルを通ります。
したがって、これらのアクセラレータはこのトンネルを通過する必要がありました。トンネル自体は線路より少し広いです。標準の米国レールゲージ(レール間隔)は4フィート8½インチ(1435 mm)です。
この番号はどこから来たのですか?米国は、英国の最初の鉄道からこの基準を継承しました。イギリスの鉄道は、馬の路面電車と呼ばれる鉄道前の路面電車と同じ基準で建設され、4フィート8½ "(1435 mm)のゲージも使用されていました。
車の車輪間のこの距離は、英国の道路の轍に落ちるように選択されたため、車輪の摩耗が少なくなり、英国の線路間の距離は正確に4フィート8.5インチになります。しかし、なぜそうなのですか?なぜ正確にこの数ですか?
イングランドはかつてローマ帝国の一部でした、そして最初の戦争の戦車は帝国ローマによって作られたので、それらはすべて車輪の間で同じ幅でした。
ポンペイのローマの道の歩行者交差点を追跡します。
古代ローマの道の轍の別の例。
この幅は、2頭のローマ軍の戦車のサイズと一致するために選択されました。
ローマの戦車のサイズの例。
進歩の頂点-今日でも天文学は、2000年前のように、2つの幅の広い馬の群れのサイズと密接に関連していることは驚くべきことです! これは実際にはバイクである
ことを理解する必要があります 。 これはそれの良いデバンキングです、私はそれを読むことをお勧めします。しかし、鉄道ベッドの幅のサイズがレールゲージを決定します。そしてそれは鉄道で輸送できる貨物の最大サイズを決定します。
バイトサイズとASCIIコード
今日、学校の多くの人々はまだバイトのサイズが何であるかを知っています、そして私たちにとってこれは明白です:8ビット。しかし、なぜこのサイズが選ばれたのか疑問に思ったことはありませんか?それは何と関係がありますか?
おそらく驚かれることでしょうが、1バイトのサイズは必ずしも8ビットではありませんでした。以前は、1バイトは4〜60ビットでした。たとえば、BESMコンピュータは、48ビットまたは60ビットのマシンワードで6ビットの文字を使用していました。
しかし、なぜ正確に8ビットなのですか?処理に最も便利なのは2の累乗の倍数であるため、理由の1つはバイナリコーディングシステムです。ええと、ええと、教えてください、なぜ4、16、または32ではないのですか?そして、あなたは正しいでしょう。
また、1963年に情報交換のためのアメリカ標準コード(略してASCII)が採用されたことも覚えておく必要があります。この規格は電信コードから開発され、最初の商用利用は電信メッセージを送信するための7ビットのテレタイプコードとしてでした。もともと英語のアルファベットに基づいていたASCIIは、128個の指定された文字を7ビットの整数にエンコードします。 95個のエンコードされた文字を印刷できます。これらには、0から9までの数字、aからzまでの小文字、AからZまでの大文字、および句読点文字が含まれます。さらに、元のASCII仕様には、テレタイプを使用して生成された33の印刷不可能な制御コードが含まれていました。それらのほとんどはすでに古くなっていますが、まだ広く使用されているものもありますが、たとえば、キャリッジリターン、ラインフィード、タブコードなどです。
1972年以前のプリンターマニュアルの7ビットASCIIテーブル。
ここでは、コンピューター業界の発展に影響を与えた電信の歴史である2つのブランチが同時に交差しています。これについては次の章で説明しますが、実際には、バイトの表現そのものについて説明します。
1960年代に、ASCII標準化にも参加したIBMは、システム/ 360ラインのコンピューターに8ビットの拡張バイナリコード化10進交換コード(EBCDIC)を導入しました。 EBCDICとASCIIは異なることを理解する必要があります。 IBM System / 360コンピュータの卓越性により、8ビットバイトが広く採用されるようになりました。
1970年代の8ビットマイクロプロセッサの開発により、このメモリサイズが普及しました。初期のパーソナルコンピュータで使用されていた8080および8086の直接の前身であるIntel8008などのマイクロプロセッサも、4ビットのバイトペアで少量の操作を実行できます。
現在、私たちが毎日ある程度使用しているASCII標準に戻りましょう。このテキストにも、この標準が何らかの形で含まれています。
情報交換のためのアメリカ標準コード(ASCII)は、委員会X3、その小委員会X3.2(後のX3L2)、およびその後のその小委員会のX3と呼ばれるアメリカ標準協会(ASA)委員会の支援の下で開発されました。 2.4ワーキンググループ(現在はINCITS)。 ASAは、アメリカ合衆国標準研究所(USASI)になり、最終的には米国国立標準研究所(ANSI)になりました。
小委員会X3.2は、以前のテレタイプコーディングシステムに基づいてASCIIを開発しました。ASCIIが開発される前は、使用されていたエンコーディングには、26文字の文字、10の数字、および11〜25の特殊なグラフィック文字が含まれていました。このすべてのデータと、1924年のInternational Telegraphic Alphabet(ITA2)標準に準拠する制御文字をエンコードするには、64を超えるASCIIコードが必要でした。ITA2は、Emile Baudotが1870年に発明し、1874年に特許を取得した5ビットの電信コードに基づいていました。
世代間のこのつながりを、何らかの形で感じますか?今日でも、150年前に発明された電信コードの遺産を使用していますか?!
委員会は、6ビットコードで64を超えるコードを表すシフト関数(ITA2のように)を使用する可能性について議論しました。シフトされたコードでは、一部の文字コードによって、次の文字コードのバリエーションからの選択が決まります。これによりコンパクトなエンコードが可能になりますが、シフトコードの送信でエラーが発生すると通常、送信の長い部分が読み取れなくなるため、データ送信の信頼性は低くなります。標準化委員会は移行をあきらめたため、ASCIIには少なくとも7ビットのコードが必要でした。
委員会は、8ビット(オクテット)により2つの4ビットパターンがバイナリ10進数を使用して2桁を効率的にエンコードできるため、8ビットコードを検討しました。ただし、すべてのデータを送信する場合、7ビットで十分な場合は8ビットが必要です。委員会は、データ転送コストを最小限に抑えるために7ビットコードを使用することに投票しました。当時、パンチテープは1つの位置に8ビットを記録できたので、必要に応じてパリティビットを使用してエラーをチェックできました。
最新の8ビットASCIIテーブル。
したがって、バイトのサイズを8ビットにするために、いくつかの要因が一度に収束しました。しかし、私の意見では、主なものは、テキスト情報を最小1バイトにエンコードして保存する機能と、各ニブルに10進数を保存する機能です。
Linux端末デバイス
ホームシステムで、Linux仮想端末を開きます。これは通常、ウィンドウ内で実行され、完全に仮想表現されています。ただし、古い端末との互換性はあります。
ターミナルを開いてsttyと入力すると、このプログラムの接続速度がCOMポートのようになっていることがわかります。そして一般的に、それはCOMポートのためのたくさんのtermios設定を持っています。
「UARTとそれが何を食べているか」という記事のCOMポートの動作に関する私の記事には、すでに十分な詳細があり、 そこで次のように述べられています。
UART (Universal asynchronous receiver/transmitter) , -, ( ) — . UART RS-232 ( – COM-, ). , , . .
, , ( ). . , ASCII, . 60- 8- ASCII, , .
1971 , , PDP Western Digital UART WD1402A. 80- National Semiconductor 8520. 90- , . , , .
いくつかの古代の電信が再びLinuxコンソールを機能させていることに注意してください!なぜ?すべてが非常に単純なので、I / Oの場合、手元にあるもの、つまりテレタイプを使用していました。テレタイプを使用すると、キーボードからテキストを入力し、紙に入力して出力できます。
UARTを介して接続され、情報の入力と出力に使用できるテレタイプ。
結果として、LinuxのI / OがTTYの実際の制御になります。最新の端末規格でさえ、このタイプのテレプリンターと下位互換性があります。さらに、このテレタイプを最新のコンピューターに接続し、端末出力を物理COMポートに構成すると、ソフトウェアを変更しなくても機能することを確信できます(電圧規格がわずかに異なるため、ハードウェアが必要になりますが、重要ではありません)。
COMポートの操作とターミナルファイルデバイスの構成の詳細については、私の記事「 LinuxのCでのCOMポートの操作」を参照するか、記事の最後にある私のビデオをご覧 ください。
結論
もっと多くの例、過去への言及を与えたいと思いました。たとえば、タイプライターの毛むくじゃらの時代からのキーボードレイアウトや、現代の携帯電話の形への言及についてです。しかし、その記事はすでにクレイジーなシートになっていますが、それでも私はその考えを表現することができました。
1888年にタイプライター向けに発明されたQWERTYレイアウトは、現在でも使用されています。
私の記事のアイデアは非常に単純です:今日実装する小さなものでさえ、私たちの将来に最大の影響を与える可能性があります。