• ベストアンサー

OS以前のコンピュータ

ちょっとした疑問なのですが、 UnixなどのOSが開発される以前のコンピュータというのは、どのようにして動かされていたのでしょうか。 たとえば、 ・1+1の計算をするのにどうしていたのか。 ・条件分岐でのプログラミングをどうしていたのか。  (SpaceWar!のプログラムとかどうやって書いていたのでしょうか?) といったことをどのようにして実現していたのでしょうか。  また、計算や、プログラム以外のどういった用途に使われていたのでしょうか。  なんとなく、穴の開いた紙をガーっと読み込ませて、デバッグとかがえらく不便だったららしい、という程度のイメージしか無いです。素人のなんとなしの疑問ですので、暇な時にお答えいただければ幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ultraCS
  • ベストアンサー率44% (3956/8947)
回答No.4

元システム研究者(今は体をこわしリタイヤ)です 一番初期には、ワイヤードロジックで実現していました。プログラムを変更するためには配線を変更するしかありませんでした。 次の段階では、これをトグルスイッチで変更できるようになります。これは大変な進歩です。 次に来るのが、プログラムを蓄積できるようになった時代で、最初はジャガード織機に使われていたパンチテープが応用され、次にホレリス型カードが使われます(カードリーダよりテープリーダの方が作りやすかったため)。この段階で、現在のストアードプログラムは外部記憶とはいえ実現されていたとしていいでしょう。 これが、そのうち、磁気媒体(磁気ドラム、磁気ディスク、磁気テープ、磁気バブル)や電子媒体(メモリコア、半導体)、光学媒体(光ディスク、光テープ、ホログラム記憶)に収納されるようになります。この段階で、トポロジーとしては現在と同じです。 なお、最初のパーソナルコンピュータであるAltairは8つのトグルスイッチで1ステップ8ビットずつ入力しますが、これは、各スイッチがテープの一列に相当しています。 OSの最大の役割は、これらの周辺機器を統合して(仮想化)扱えるようにしたことと、複数のプロセスを整理して運用できるようにしたことです。 なお、世の中にはアナログコンピュータというのがあります、これは、積分器や計量器として専用に設計された物で、現在のデジタルコンピュータとはちがうものです。

その他の回答 (4)

  • maguro999
  • ベストアンサー率21% (59/273)
回答No.5

多くの人が業務向けの方を答えてくれていますので 個人向けの方の説明をしますか。 パソコンとしてx86系CPUでDOSが使われだす前は Z80なんかのCPUを利用したパソコンと言う言葉が出てくる前の マイコンと呼ばれていた時代にはROMにBASICが書き込まれていて それを利用したものです。 このBASICをOSと呼ぶかどうかは論議が時々されたりしていますが その前の時代にはOSは無いTK-80に代表されるような時代ですね。

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

>UnixなどのOS 正確に言うと「Unixなどの*汎用*OS」となります。 それ以前にはメーカー毎の「専用OS」の時代が有ります。 >OS抜きでコンピュータを制御するとしたら、どういうやり方 >になるのでしょう 異なる計算を行う毎にケーブルによる配線を切替えて.... というのがあります。 または実行するプログラム毎に入力し直す、読み直しをするなど。 >穴の開いた紙をガーっと読み込ませて 紙テープとパンチカード http://www.chiba-kc.ac.jp/user/~iseri/siryo/card.html パンチカードの場合、1枚で80文字までの文字が記述でき FORTRANやCOBOLのプログラム作成に使用されました。 この辺だと既に専用OSで動いています。

  • goold-man
  • ベストアンサー率37% (8365/22183)
回答No.2

>1+1の計算をするのにどうしていたのか 初期のコンピュータは、電磁石で動く3種類のスイッチの組み合わせで、1+1=2になるという人間が決めたルール(論理式)で計算した。 >穴の開いた紙をガーっと読み込ませて、デバッグとかがえらく不便だったららしい、という程度のイメージ 1889年 ホレリスがパンチカード方式の自動集計機を実現させた のイメージですか?それとももっと後のことですか? >UnixなどのOSが開発される以前のコンピュータ Unix以前のコンピュータは、1952年米IBM社が商用のプログラム内蔵式コンピュータを発売、 1948年 マンチェスター大学のウィリアムスとキルバーンが、初のプログラム内蔵式コンピュータを発明 >計算や、プログラム以外のどういった用途に使われていたのでしょうか 下記のような理由もあります。 1943年 暗号機によるドイツ軍の「暗号を解読するため」、イギリスで発明 1956年日本初の電子計算機FUJICを富士フイルム社が「レンズの設計用として」開発 1962年 デモンストレーションプログラムとして、世界初の「シューティングゲーム用」のスペースウォー!開発 http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF#.E3.82.B3.E3.83.B3.E3.83.94.E3.83.A5.E3.83.BC.E3.82.BF.E3.81.AE.E6.AD.B4.E5.8F.B2

  • SRitchie
  • ベストアンサー率21% (103/470)
回答No.1

マシン語!? いまいち、質問の意味(意図)が理解できません。

compequal
質問者

お礼

うーん、じゃあこういう質問の仕方でどうでしょう 「OS抜きでコンピュータを制御するとしたら、どういうやり方になるのでしょう(あるいは、そういう時期があったのでしょうか)」 とか。

関連するQ&A

  • C言語についてどうしてもわからない疑問

    プログラミング初心者です。 C言語を勉強中に疑問に思ったことが2つあります。 まず1つ目。 C言語以外のプログラミング言語、例えばjavaとかC#とかjsとかpythonとかrubyとかPHPとか、には開発者にとって便利なライブラリとかフレームワーク(僕にはこの2つの明確な違いがわかりません。が、どちらも「開発者が定義しなくてもよい関数やオブジェクトの集合」という認識があります)がありますよね。 そのおかげで色んな人達がプログラミングし易くなりました。 ネット(はてぶのホットエントリとか)でも「馬鹿な俺がプログラミングを勉強して〇〇を作った」といった記事をよく目にします。 でも「C言語を使って」というのは聞いたことがありません。 そもそも、C言語はそいういったライブラリやフレームワークが少ないように感じます。 検索してもrailsとかjqueryのようなフレームワーク(ライブラリ?)は見つかりません。 これが無かったらプログラムなんて作れないのでは? しかし、世間にはC言語で作られたプログラムが多いのもまた事実。 C言語ではいったいどのように開発が行われているのか教えてください。 2つ目 unixとかlinuxといったOSはC言語で書かれている聞いたことがあります。 しかし、プログラムの開発は「コードを書く→コンパイル(→デバッグ)→実行」という流れですよね。 ではOSを開発するときに、そのコードをどうやってコンパイルするのでしょうか? コンパイラはOSの上に立っているとするなら、OSがない状態でコンパイラはどこに立てばいいのか。 そこがわかりません。 誰かこの2つの疑問に答えてください。 お願いします。

  • Shell開発ツール

    いつもお世話になっています。 表題の件で、シェルプログラミングの開発ツールがないか探しています。 簡単にプログラムのデバッグが出来ればと思っています。 Windows環境での開発ツールでもよいので、何か良いものがあれば教えて下さい。 よろしくお願いします。

  • OSの教材の正解がわかりません。

    JSTのオーぺレーティングシステムコースのレッスン2. OSの関係する各種の接点をやっています。 それの自己診断テスト2がわかりません。 問2.ユーザとコンピュータのインタフェースに関して、正しいものをすべて選びなさい。 1.UNIX系のOSではプログラムの実行は常にコマンドを使う必要があるので、GUIを利用できない。 2.対話型のコンピュータ利用では、プロンプティング文字が出てくるが、これは、次の入力を促している。 3.GUIとはディスプレイとマウスを使用するユーザインタフェース全般をさす。 4.GUIのアイコンはプログラムの内容を図や絵にして理解しやすくしており、機能を呼び出したりプログラムを開始することができる。 5.UNIX系で利用されるコマンドはカーネルの持つ機能である。 私は 1,2,3,4が正しいと思いました。 ですが不正解でした。 解説を読んだのですが何が違うのかよくわかりません。 解説 UNIX系のOSでは、ユーザは端末からコマンドを入れて操作するのが基本である。この方法は文字をベースとするインタフェースなので、CUIと呼ばれている。文字をベースにする不便さを改善するために、また、複数の作業を効率高く行えるようにするために、ウインドウシステムが開発された。古くはX-WindowなどでありGUIの一つである。その後、複数のGUIがデスクトップ環境として開発されている。 プロンプティングは次の入力を促すメッセージである。 GUIではビットマップディスプレイと位置を示すマウスやトラックボールのようなポインティングデバイスが通常使用される。そして、ディスプレイにはアイコンを表示して理解しやすい利用法を提供するのが一般的である。 コマンドは一種のアプリケーションプログラムであり、UNIXではシェルと呼ばれている。シェルは、その処理においてカーネルコールを利用することで処理を進め、ユーザの要求を果たす。 私の答えの何が違うのか教えてください。 よろしくお願いします。

  • 数学教育におけるコンピュータの利用について

    こんばんわ。 題名の通りなんですが、皆さんはどう思われますか? (なんかすごい題名だ・・・) 高校ではコンピュータのプログラムや言語についてすこしですが 学習します。中学校でも数学の時間、JAVAなどで 空間図形や2次関数のグラフでコンピュータを使ったりします。 でも、私的に言えば、「あまり意味のないもの」のように 思えてなりません。 鉛筆と紙があれば数学の問題は解けます。 それを何故、あえて学習指導要領に位置づけているのか わけわかりません。 コンピュータのしくみや用語、プログラミングを数学として 履修するのはどうしてなんでしょう。 中学校で道具としてコンピュータを使うことは わかるとしても、高校でのコンピュータの位置づけには 納得いきません。 私だけがそう考えているのでしょうか。

  • 組込みOS

    いつもお世話になっています。 組込み分野によく、OSを搭載するという話を聞きます。 私自身、Keilという会社のIDEであるμVisionという統合開発環境を使って、ARM7TDMIコアCPUのプログラムをC言語で書いています。特に、グラフィックLCDを使ったので、1ライン(8bit)を書くのに費やす時間を極限まで(自分でできる限り^^;)縮小して、メインのループの邪魔にならないように、処理しました。 OSを使えば、タスク処理ができるとの情報を得て、興味がわき、調べてみました。LCDを使ってたので、処理を個別に記述して、あとはタスクに任せれば、メインのループ処理とのかねあいをあまり気にせずプログラミングできるのではないかとの漠然とした考えからです。 私の使用しているCPU自体は、どうやらOSというものを搭載することができるそうなのですが、OSを使用してののプログラミングのイメージがつかみにくい、またそもそもOSとはバイナリで提供され、それをCPUへダウンロードするのか? 等々、いろいろな本を買い漁ったり(会社経費^^;)、WEBを探したりしましたが、やはり漠然としかわからないままでいてます。 OSを使って開発するというのは、いま私が使用しているKeil開発環境以外のものを使って開発・デバッグするということでしょうか? また気軽にOSを入れて(?)プログラミングができるようなお試し環境などあるのでしょうか? せめて、「こういう本読め」のようなご意見でもかまいませんので、よろしくご指導お願いいたします。

  • コンピュータって?

    ずっと疑問だったけど、私考なんだけど、CPUが500MHZとか CPUの性能を表すけど、これって、添付画像の下の波というか タイミングの回数で、感知する時間、しない時間を1サイクルとして 1秒間に500MHZだったら、1秒間に、0と1を5億回分まで認識出来ますってことでしょうか? また、プログラムでは、なんちゃら言語とかあるけど、これは わかりやすいように言葉(単語)になってるのだとおもうけど { } \ だったり、print だったり、そういう単語や記号を 0011001011(←適当)に変換したのがマシン語だと思うのだけど この0と1だけで、計算したり判断したりできるのがずっと 不思議なんだけど、たとえば、もし、printが0011001011だったと したら、0011001011は印刷をすることと、決められてるのしょうか? それぞれの記号やプログラム単語などには、それぞれに、0と1の 羅列がきめてあり、それに伴った動きをするってことでしょうか? そこが、未だにわからないです。 だとしたら(勝手にこうかな?って思ってるので違うかもしれないけど) プログラムの単語ほどに、0と1の組み合わせがあるってことに なるんでしょうか? だとすると、誰がそれを決めてるんだろう? 新しい用語が増えるたびに、決まるのだろうか?とか もし、そうなら、新しい用語が決まる前のコンピュータは その紐付けがないから動かないとなるとおもうから、 いや、これはやっぱり違うのかなって思っちゃう。 どうして1と0で動きが決まるのかがずっと疑問です。

  • リモートシェルで起動したプロセスのデバッグ

    現在VC.NET2003で開発を行っております。 Service For UnixをWindows2000にインストールし、 リモートシェルコマンドを使用できるようにしました。 そして、あるプログラム(起動元)から、リモートシェルを用いて 別のプログラム(こちらもVC.NET2003で開発)を起動しています。 起動元と起動先のプログラムは、ソケット通信を行っていますが、 通信処理にバグがあるようで、デバッグが必要な状況です。 (どこかでメモリが壊れている) 起動元のデバッグは行えるのですが、起動先のプログラムは どのようにデバッグを行えば良いのでしょうか。 現状は、ログを仕込んで調査しています。 非効率なので、もっと効率的な方法があれば、アドバイスお願いします。 読んでいただいて、ありがとうございました。

  • unixのプログラミング

    授業で、Xvisionを使って、unixのプログラミングをやっているのですが、どうもうまくいきません。 xemacsで書いた簡単な計算プログラムを実行させるなどやっているのですが、どこかに細かいミスがあるらしく、できないのです。 何か、いいHPや、参考になる本があったら教えてください。お願いします。

  • PerlとUnixの関係

    現在、Perlを勉強しているものです。バッチプログラムやVBScriptを使って、コマンドラインで便利に開発するようにしています。近々PCを購入し、UNIXでの開発をしようとおもっています。その際には、シェルプログラムなるものを覚えて便利に開発したいなあとおもっています。 話はそれますが、私はコンピュータ専門書籍の本屋さん(名古屋で一番の品数があるとおもわれます)に勤めているのですが、返品の棚にやや古めの「Unix&Perl」みたいな題名の本がありました。 本題に戻りますが、UnixではPerlをコマンドラインの機能の一部としてつかえたりするのですか?Windowsだとバッチプログラムで足りないところはJScriptやVBScriptで補ったりしなくてはならないのですが、Unixのシェルではその役目はPerlが果たしてくれたりすることがあるんでしょうか?要するに、シェルプログラムの機能強化としてPerlを使えたりするのでしょうか? あと、これは本題とは関係ないのですが、Unixを入れるならばFreeBSDやSoralisなどがあるみたいですが、どのディストリビューション?を選択すれば一番いいとおもいますか? 分かる方、回答をお願いします。よろしくお願いします。

    • ベストアンサー
    • Perl
  • デバッガをデバッガに掛けたい

     GDBを使ってとあるプログラムをデバッグしているんですが、GDBの動作に疑問があって詳細を調べたくなりました。そこで、デバッグ中のGDBをまたGDBに掛けてデバッグすることを考えたのですが、これを単純にやると二番目のGDBに端末を取られちゃって、一番目のほうは入力がブロックされてしまうようです。  GDBのソースを変更せずに、こういうことを実現する方法はないでしょうか?