• ベストアンサー

OSを書いている言語と、昔の言語。

こんにちは。質問があります。 1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? 2.昔MSXというパソコンで学習していた、ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? つまり・・ 理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? つまりそういう意味で、同質のものでしょうか? 変な質問で済みません。

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

  • ベストアンサー
  • LOHA
  • ベストアンサー率52% (203/388)
回答No.2

>1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? 概ねあっているかと。 ただ、ウィンドウズOSというのが、どっからどこまでなのかの問題もあるので、一概に正しいとは言えないかもしれません。 ハード制御はアセンブラで書いていると思われます。 http://q.hatena.ne.jp/1121131416 http://okwave.jp/qa/q83429.html >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? ニーモニックとはアセンブリ言語のことでしょうかね。 アセンブリ言語は機械語と1対1の最下層の言語ですから作れます。 Basicではメモリが直接扱えるよう独自拡張でもしなければ出来ません。 「階層」という表現がよくわかりませんが、高水準言語、低水準言語という分け方が一般的かと。 http://ja.wikipedia.org/wiki/%E9%AB%98%E6%B0%B4%E6%BA%96%E8%A8%80%E8%AA%9E

sheep67
質問者

補足

こんにちは、いろいろお返事ありがとうございました。 自分で書いてて変ですが、 OSと、言語の関係は、はっきりしたものはあるのでしょうか? OSの上で走る言語、なるものは存在しますか? つまり、言語とOSはどちらが本質的なんでしょうか? あるいはそんな定義はないのかも知れないのですが、疑問なので、質問させてくださいー。 いえ違いますねーVBなどは、OSの上で動きますものねー。 でも・・ いわゆるインタープリンタとしてのベイシックやニーモニック、高級言語であるCやフォートランなどと、OSとの比較、という意味の質問にさせてください。

その他の回答 (5)

  • qaqa013
  • ベストアンサー率27% (17/62)
回答No.6

BASICでハードウェア制御ができる(特にCPU制御やメモリ制御)ならOSを書くのも不可能ではないかもね。 ただしほかの人が書いているようにMSXとx86系ではアーキテクチャーがまったく違う。 昔のZ80時代にはBASICで高速化したいところをマシン語で書くのは定番の技法でしたね。 後回答者の中に勘違いしている人がいてBASICはインタプリタ型のみと思いこんでいる人がいるけどコンパイラ型のBASICも過去には存在していました。(VBではなくて)有名どころだと富士通のF-BASIC386が有名ですかね。

sheep67
質問者

お礼

>BASICでハードウェア制御ができる(特にCPU制御やメモリ制御)ならOSを書くのも不可能ではない そうですか!そうですよねー。詳しい方に念を押してもらってすっきりしました! >Z80時代にはBASICで高速化したいところをマシン語で書くのは 僕もやりましたー、画面を印刷するプログラム作ったときにvramの読み込みだけマシン語で組みました、なつかしいー。 は~~一歩前進です。 またしょーもない質問させてもらうかも知れませんが、よろしくお願いします!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>Cや、C++のかわりに、ベーシックで置き換えることはできるでしょうか?そういう意味で同じレベルのものと考えられるでしょうか? BASICの文法を捨てて、OSの記述のための文法に変えたらインタープリタ言語でOSが記述出来るか?って事ですよね。 書けることは書けると思いますが、実際OSに必要な動作を記述しているのがインタープリタを記述しているアセンブラなので、実質OSを操っているのはインタープリタと言う機械語プログラムの部分となります。分かりますかね?

sheep67
質問者

お礼

こんにちは! >書けることは書ける これが聞きたかったんですー! 納得ですー。 下の説明なんとか分かります。 確かインタープリンタは、逐次読み込んで1行ごとマシン語に変換して実行するんですよねー、大まかに。うんうん。 ありがとうございましたー。

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

1. マイクロソフトのシステム記述言語は、アセンブラ(MASM)、Microsoft Pascal、Microsoft C(当初はLattice-CのOEM)、Visual C、C++と移行していたと思います(最近の部分は、私のリタイア後なナので怪しいです)。現在は、C++が主力の筈ですが、カーネルの一部に古いの(OS/2時代の記述)が残っているはずです(もう無いかも)。現在でも、カーネルのLow-Levelな部分、ブートローダーやイニシャルデバイスのドライバはアセンブラで書かれているはずです。 なお、ホストでは事情が異なり、かなり早い時期から高級言語がシステム機じゃ津に使われます。有名なのはBurroughsのAlgolですが、IBMもPL/Iを使っていますし、他のメーカーもマクロアランブラのスーパーセットのようなのを使います。これは、x86のセグメント64Kにくらべ、IBMなどはページング1024バイトだったので、アセンブラで書くのは煩雑すぎるという理由もあります。 2. MSXはZ80用のOSですから、アセンブラもザイログニーモニックになり、x86で使っているマイクロソフトニーモニック(MASM)やインテルニーモニック(ASM86など)とは違いますから、そのままでは書くことはできません。 BASICには、ネイティブインタープリタと中間コードインタープリタ(p-code interpreterが代表的)があり、MSXも中間コードインタープリタですから、x86用のコードは出力不可能です。 知識として対応できるかと言えば、一番基本的な考え方は一緒ですから可能でしょうが、ハードルはとてつもなく高いです。 回送というのが、カーネル、デバイスドライバ、シェルという意味であれば、カーネルとデバイスドライバをすべて高級言語で書くのは現実的ではありません。シェルは高級言語だけで記述できます。 なお、MS-DOSでCが使われているのは一部の外部コマンドだけだったはずです。 後、インタープリタでOSが書けそうなのはFORTHくらいでしょう。

sheep67
質問者

お礼

回答ありがとうございます。 >1 お詳しいですねー!マイクロソフトにいるプログラマーの方がこつこつ作られてるんでしょうねー。(こつこつ?) >2 はい、僕が知りたかったのは、知識として対応できるか、と言う方ですが、理屈では可能、ということですね。やってやれないことはない・・みたいな。 だいぶすっきりしました!!

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

1. 大部分はそうだと思われますが、ソースコードが全部公開されているわけではないので、断定はできません タイミングのシビアなものとかは、アセンブリを使っているでしょう。 2. ニーモニックをいうのは機械語を人間がわかるような表現にしたもので、言語としては「アセンブリ言語」と呼ぶのが普通です。 >ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? 「階層」ってどんな意味で使っているかがよくわかりません。 >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? PCが理解し実行できるのは機械語だけです。  C言語はコンパイルして最終的に機械語に変換します。 機械語はニーモニックと1対1で対応しています。 ゆえに、アセンブリ言語だけでVistaを書くことは可能です。 が、現在の複雑で大規模なプログラムを全部アセンブリ言語だけで記述するのは、まったく非現実的です。

sheep67
質問者

お礼

こんにちは、遅くなり済みません。 階層という言葉は、・・なんというか、オブジェエクト志向のクラスや、あるいはネットのプロトコルの、階層がありますが、ああいう風な意味なのですが、 あまりそう言うことは一般的には、パソコン全体やプログラミング言語では言及されてるのを聞いたことがないので、無理に作った言葉です。すみません。 アセンブリ言語で書くことはやはり可能ですか・・ なんかだいぶ分かってきた気がします!

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

>1今のウィンドウズOSは、調べたら、Cや、C+等で書かれている、とあるのですか、これでいいでしょうか? CやC++をメインとして、一部には、C#かVB.NET、C++/CLIなどが使われています。 >2.昔MSXというパソコンで学習していた、ニーモニックやベーシックは、現在のOSを作っている言語と同じ階層でしょうか? ニーモニックはアセンブラですね。MSXはZ80でウィンドウズはx86系なので規模が全く違いますが、WindowsOSの一部にはアセンブラも使われています。 ベーシックはインタプリタです。CやC++はコンパイラでアセンブラの出力と同じ機械語を出力します。なので同じ階層ではありません。 >理屈上では、ニーモニックやベーシックを使って、vistaOSを書くことはできるでしょうか? Z80の知識では書くことはできません。ベーシックでは記述することが出来ないほど複雑です。ちなみにMSX-DOSを作るにもアセンブラとC言語が必要です。 こんな答えでよろしいでしょうか?

sheep67
質問者

補足

MSXーDOSって、C言語で書かれてたんですかー。知らなかった。 あんな昔からあったんですねー。 パソコンが複雑に成りすぎて、自分が何が分かってないのかも分からなくなっていました。 というか回答文を読んで、アセンブラとコンパイラが違うのに気付きました。というか、今まで区別してなかったことの自覚もなかったので、たらーです。 wikiの方には、アセンブルもコンパイルも同じマシン語に直すこととありながら、 コンパイルは、一度アセンブリ言語に直してアセンブラにかけるんだ、という記述もあるのですが、いかがなものなんでしょうか? 後者が本当であれば、アセンブリ言語を元にして、高級言語が組み立てられている、という理解でいいのでしょうか? Z80といまのCPUはもちろん違うのですが、 もし、ベーシックが言語として非常に充実していていて、過不足ないとしたら、 処理速度の問題も除いたら、 Cや、C++のかわりに、ベーシックで置き換えることはできるでしょうか? そういう意味で同じレベルのものと考えられるでしょうか? (コンパイラとインタープリンタの違いは横に置いておいて) 同じものを作れる(厳密じゃないですが)という意味では、同じものでしょうか? OSは、大きなソフトだと考えるなら、インタープリタもコンパイラも、OSを記述することができるという意味で、OSより本質的なものと言えるでしょうか? アバウトな質問が続き済みません。

関連するQ&A

  • OS自体について。

    OSを作成したい、と思うようになりました。 どこから手をつけていったらよろしいでしょうか? プログラマー暦はありません。 C言語も今は分かりません。 昔ベーシックを使ったことがあるくらいです。(MSX2+にて) どこから手をつけたら良いでしょうか? 厳しい現実を突きつけていただけるととてもうれしいです。 ぜひどうぞよろしくお願いいたします。

  • C言語の次のステップは?

    現在、C言語を学習していてコンソールアプリケーションや Web上のCGI等は作れるようになってきました。 次の学習ステップとしてWindowsのアプリケーション作成 か、C++の言語学習にするかを悩んでいます。 C言語でのWindowsアプリケーション開発であれば、SDK(Win32API)に よる開発になると認識しています。この場合であれば特にC++の知識は 不要でしょうか?それともSDKでの開発の場合でもC++の知識は必須に なるのでしょうか? MFCとかを使うのであれば、C++の知識は必須ですよね? あるいはこれからの開発ではオブジェクト指向の知識は必須である ということでC++の学習を経て、Windowsアプリの開発について学習した 方がよろしいでしょうか? 最終的な目標はC/C++にてWindows/Linuxアプリの開発ができるように なりたいと思っています。 当面Windowsアプリを開発するにあたって、C→SDKもしくは C→C++→SDK/MFCのどちらが効率的な学習ステップになるのでしょうか? 皆さんのアドバイスをいただければ幸いです。

  • c言語でウィンドウズアプリケーションの作成

    cでウィンドウズアプリケーションを作りたいと思っています。サイトをいろいろ検索してみましたがいまひとつしっくり来るものがありません。 そこで質問なのですがウィンドウズアプリケーションを作るにはなにが必要ですか??できれば無償でやりたいと思っています。 borland社のC conpilarはインストールしてあり、コンパイルはできます。これだけではウィンドウズアプリケーションは作れないのでしょうか?もし可能ならbccだけで作る方法を紹介しているページなど教えていただければ幸いです。 学校で一通りc言語を学習し、ある程度は使えるようになったつもりではいます。OSはwinXPです。 よろしくお願いします。

  • C言語 お勧めの学習用Linux系OS

    現在わたしは大学でプログラミング(C言語)の勉強をしているのですが、使っている自分のPCはWindowsです。 デュアルブートをするのは、難しそうなので、1CD Linuxを使用したいと思っております。 1CD LINUXでC言語学習にちょうど良いOSを教えてください。

  • C言語学習の始め方

    本当に初歩的な質問で申し訳ないのですが、どうか教えてください。 これから独習でプログラミングを始めようとしている、まったくの初心者です。 それで、C言語から入りたいのですが、「始め方」が良く分かりません。リファレンス本なども何種類か見てみたのですが、どの本も、「main{}・・・から初めて・・」のように、いきなりプログラミングの説明から始まっています。 具体的な質問としましては、 1.window2000を使用しているのですが、C言語を学習するためにはC言語ベースのosを新たにインストールしなくてはいけないのか。あるいは、その方が学習しやすいのか。 2.学習する環境をつくるためには、どのようなモノ(ソフト)が必要なのか。 ・・・などです。 どうぞよろしくお願いします。

  • C言語のコンパイラ教えて

    お世話になります。OSは WindowsXP SP3 です。 昔(?)、UNIX 上でC言語を便利に使ってたんですが、パソコン上でも使えるのでしたら、お勧めのコンパイラ(の他に必要なものも)を教えてください。なるべくならフリーソフト希望。 Cといっても色々あるようですが Brian W. Kernighan & Dennis M. Ritchie "THE C PROGRAMMING LANGUAGE" で学習したものを使いたく、宜しくお願いします。

  • どのプログラミング言語を学習しようか迷っています

    こんにちは、プログラミング言語のことで質問させて頂きます。 私は情報学部の一年生です、この夏休みに堕落した生活を送るのも無駄なので、学校ではやらないプログラミング言語を少しでも学習し、何かを作って遊んでみようと考えています。 目的もどのような会社に就職したいかの希望も今のところは無く、何かを学習したいから、とりあえずどれかを学んでみようかという考えです。 ですがどの言語を学ぶべきかがわかりません、大学ではC言語を「明解C言語」の関数の範囲まで完了し、後期で残りをやる予定となっています。 また、二年次にJavaをやる予定です。 なのでJavaとC以外のどれかの言語を学ぼうと思っているのですが、C++やC#やCOBOLなど、種類も多く、どれも使い方が違い、どれを学ぶべきかで迷っています。 どの言語を学ぶにしても、C言語と混ざってC言語が使えなくなる、といったこともあるでしょうし・・・・どの言語を学ぶのがいいのでしょうか。

  • Linuxでc言語を学習したいのですが!

      Linuxでc言語を学習したいのですが、色々調べてみても、GUIでの操作ができるという、”Gtk”が候補に挙がっていました。  因みに、LinuxはRed Hat8~Fedora Core3まで使用して、ネットワークサーバーを組んでいます。しかし、GUIで動かしてみると、CPUがCeleron-1.2GHzでも 重いです。  Linuxでc言語を始めようと、考えているのは、組み込みLinuxを選択したいからです。osのカーネルの部分を組み替えるには、c言語が必要だと思ったのです。  まずは、c言語かなと、考えて、windowsでも出来る CPad for Borland C++Compilerを導入して、少しだけ、学習を始めました。このまま、windowsペースのcの学習では、Linuxでのc言語に入れないと考え始めたのです。  他のものもあると思いますが、Linuxでのviエディターベースでcが出来る方法は、何でしょうか?  デストリビュウションに付属のコンパイラーは使ったことも、使い方もしりませんが、lanレベル3の状態でこれらを呼び出すにはどうすればいいのでしょうか? 以上のことについてお伺いします。  1、Linux用のcコンパイラーできれば、デガッパもついてるものはありませんか?別々のはありますが!  2、vi エディターベースで出来ませんか?sshでやれれば一番やりやすいのですが?  3、デストリビュウションに付属のコンパイラーのテキストペースでの使用方法  4、tarペースのインストール方法が良く分かりません。1、の新たなコンパイラーのインストールにrpmであれば助かります。もしtarペースのインストールにつて必要ならば、教えてください。あつかましいですが。 以上4つに、ついてお願いします。

  • 今流行りのプログラム言語は?

     今まで少し学習したのはBASIC, Fortran, AWKです。どれもほんの少しです。とりたててプログラム言語を学習しなければならないというわけではありません。  Windows 7でBASICは使えるのでしょうか。何を用意しなければならないのでしょうか。  Perlもほんの少しだけ学習はしました。  今流行りの言語はCでしょうか。C++でしょうか。Rubyでしょうか。漠然とした質問でスミマセン。

  • C言語の必要性について

    C言語を取得しなければならない目的および必要性について具体例と共に聞かれたのですが、はたして確かな答えがあるのでしょうか。言語は何もCだけではないし、必要に応じて使い分けをするべきだと思っています。C言語は組込み向きで簡単に組みやすく、使いやすいとも聞いたのですがその説明にはぴんときませんでした。 C言語の学習を始めた際、「何故C言語なのだろう」と、少し疑問は持ったのですが、普及されてるからで済ましてしまっていたので改めて聞かれても答えにつまりました。 纏まりの無い質問ですが、みなさんのお考えを教えて頂けたらありがたいです。