GUIになれてしまっていますが、MS-DOSの世界に入っていくことが必要になるときもありますよね。先日も新しいPCを職場のLANにつなぐとき、作業担当者はMS-DOSの世界に入って作業をしていました・・・WINDOWSというOSとMS-DOSの関係って、どう考えたらいいんでしょうか。
 それから、UNIXとの関係も知りたいのですが。

 丁寧に説明していただいたら長くなってしまわざるを得ないのでしょうが、ごく簡単に教えていただければ幸いです。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは、honiyonです。



 UNIXも、MS-DOSも、MS-WINDOWSも見た目が違うだけで出来る事は一緒です。
 OSの基本的な要素は、メモリ管理や、プログラムの起動、終了管理になりますが、どれでもこれは出来ます。
 ワープロや、表計算ソフト等、各種ソフトウエアは、OSに依存し、全てのOSで動くという事はありません。UNIX用、MS-WINDOWS用、MS-DOS用など、各OS専用のソフトが存在します。

 但し、MS-DOSとMS-WINDOWSについては密接な関係があり、この2つのOSはいつも一緒になっています。厳密に言えば、MS-WINDOWS NT系ではMS-DOSは存在しないのですが、MS-DOSのエミュレーターのような物が同梱されており、MS-DOSの一部プログラムが動作出来る仕組みになっています。
 MS-DOSで、MS-WINDOWS用のソフトが起動できたり、またその逆も可能です。MS-DOS用のソフトを起動する様命令すれば、勝手にMS-DOSが開いたりします。
 GUIでOSに命令するか、CUIでOSに命令するか選択できる、というようなイメージでしょうか?(ちょっと違う?

 さて、UNIX, MS-DOSは、CUI、MS-WINDOWSはGUIになります。GUIは、視覚的に操作が可能な反面、複雑な命令を与えるのは面倒です。CUIは全てコマンドで命令しますが、このコマンドをいくつか組み合わせて複雑な命令を与える、なんていう事も出来ます。 また、CUIはキーボードで操作するので、的確に命令を与える事が出来ます。 CUIに慣れると、マウスをコロコロ転がして命令するのが煩わしく思えてしまう事があります。因みにシステムに関わる一部のプログラムは、CUIで作成されているという事があります。特に文字出力の多いものは、ウインドウ表示にする理由がなく、CUIで出力した方が便利だし、シンプルだからです。 そのような理由もあって、LANの作業担当者はMS-DOSで作業をしたのでしょう。

 因みに最近UNIXもGUI化されている・・・ように見えますが、あれは X-WINDOW SYSTEMという、UNIX向けのGUIソフトです。UNIXの基本はCUIであり、これは今も変わりません。最近のLinux等のディストリビュージョンがX-WINDOW SYSTEMを標準でインストールし、起動するので、GUI化されたように見えます。
 GUI, CUIはそれぞれ一長一短であり、双方は共存していくと思います。

 なんだか支離滅裂な内容になっちゃった気がしますが・・・せっかく書いたので送信します笑

 こんなのでよければ、参考になれば幸いです(..
    • good
    • 0
この回答へのお礼

ごていねいな解説ありがとうございます。

お礼日時:2002/03/30 00:31

昔はMS-DOSの上にWindowsが乗っていたんですよ.わかりにくいかもしれませんが,"Windows"というアプリケーションだったってことです.今のMicrosoft Officeとかと同じレベルですね.それがMS-DOSでは使いにくい(コマンドラインなので)ので,WindowsがOSとなりMS-DOSを吸収していったといった感じです.


LANにつなげるときにコマンドプロンプトで作業をするというのはpingというコマンドやtracert, ipconfig等のコマンドを使えるからです.やはりGUIでは"確認"することができないのが現状ですね.フリーソフトでそのようなコマンドをGUIでやるものもありますが,たいていの人はコマンドプロンプトからコマンドを発行します.
UNIXとは無関係です.UNIXの方が古くからあり,cogitoさんが使っているメールサーバーやほとんどのWebサーバーで使われています.非常に安定していて,Windowsの用にフリーズすることが滅多にありません.また,遠隔で操作できるのも魅力的ですね.最近はLinuxのようなフリーのUNIXもあって,かなりGUIになっていますが,これも同様にコマンドが主流です.
コマンドを勉強してみてはいかがでしょうか?必ず役に立ちますよ.
    • good
    • 0
この回答へのお礼

御助言に感謝します。

お礼日時:2002/03/30 00:28

MS-DOSの発展版がMS-Windowsです。


Windows98系(95,98,Me)のOSは根底にMS-DOSが組み込まれていると思ってください。
WindowsNT系(NT,2000,XP)はMS-DOSが組み込まれていませんが、擬似MS-DOS(コマンドプロンプト)が搭載されています。

UNIXはMS-DOSやWindowsとはまったく別のOSです。
WindowsとUnixの違いは、WindowsとMacくらいの違いがあります(^^;

ちなみに最近のUNIXはGUIになってますね。昔はMS-DOSのようにコマンドラインで使うのが普通でした。
    • good
    • 1
この回答へのお礼

早々の御回答に感謝します。

お礼日時:2002/03/30 00:33

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMS-DOSって何?

題のとおり、MS-DOSとは何なのでしょうか?
私はそこそこにPCを使えるのですが、この間知り合いに、「MS-DOSって何?昔親父が会社で使っていたけどよくわからん。」と聞かれました。
OSだと言うのは当然わかるのですが、改めて問われるとよくわかりません。
名前で調べてみたのですが、難しい言葉が並んでおり、ぱっと見た感じ、「windows95の前のバージョン?MS-DOSにいろいろのせれば95になるのかな」とか思ってしまいました。

「じゃあ、95、98、2000、XP、vistaと変わってきているが、何が変わったの?」
と言う疑問がさらに浮かび上がり、わけがわからなくなってしまいました。

多少使ったことがある程度の人に以上のような
・MS-DOSとは?
・今までOSがいろいろ変わってきて何が変わったの?
などをうまく説明するにはなんと言えばいいのでしょうか?

Aベストアンサー

MS-DOSとは、今のような「Windows」が出る前に、文字の入力を基本として(というと語弊がありますがとりあえず)でディスクの操作などを行っていたOSです。イメージとしては、「コマンドプロンプト」しかないOSだと思ってもらえばいいです。もちろんこのOS上でワープロや表計算、ゲームなどのアプリケーションが動作していました。

OSが変わってきて何が変わったか、ですが、操作性や機能、性能が変わった(上がった、とは敢えて言いません)という程度です。
たとえば新しい技術を見つけたのだけれど、前のOSではその技術を組み込むのが大変だ。じゃあ新しいのを作ろう、みたいな感じで捉えてもらっていいと思います。

Qaptでインストールしたプログラムはどのディレクトリに?(Ubuntu)

Ubuntuを使っています。

aptでインストールしたプログラムはどのディレクトリにインストールするのでしょうか?また、aptでインストールしたプログラムを確認する方法(どんなプログラムをインストールしたのかを確認する方法)はあるでしょうか?

Aベストアンサー

>aptでインストールしたプログラムを確認する方法

見逃してました。

# dpkg -l

とかで。

QUbuntuに必要なSSDの容量について

こんにちは。
UbuntuかLinux mintをインストールするパソコンについてです。
64GBのSSDを使うつもりなのですが、Linuxだとどれくらいの容量のシステムドライブを用意しておくべきなのでしょうか?
Windows8だと100か200は必要なようですが。

あと、無線LAN環境でもSSDの速度を体感できますか?
ネットにつながる速度がボトルネックとなってSSDの意味がなくなったりしますか?
私がパソコンでする作業といえば、ほぼGoogle Chromeで完結しています。

よろしくおねがいします。

Aベストアンサー

質問者さんは恐らくLinuxについては初心者さんという前提で解答します。

>64GBのSSDを使うつもりなのですが
十分ですね。十分すぎます。

ウブンツをインストールしても4Gも使用しないでしょうから、後の60G使いたい放題でしょう。

>Windows8だと100か200は必要
絶対必要じゃありませんね。Windows8をインストールするのに必要は容量はせいぜい20G位でしょう。

あとは、アプリケーションや、データをワンサカ入れれば100や、200はいっぱいになってしまいますから、
そういう意味では、100でも200でも足りない可能性があります。

結局何がやりたいのかによります。

例えば、冷蔵庫を買うとして、冷凍室が400mlで足りるか否かは、どのように使用するかによりますよね?
ひとり暮らしなのか、家族4人で暮らすのか、もしくは飲食店で使用したいのか?

どうように、ウブンツで何をしたいのかによって、必要な容量が変わってきます。

ただ、ウブンツをインストールしてちょっと使ってみる程度であれば64Gもあれば十分です。

また、SSDにするのは正解です。無線LANだろうが、優先LANだろうが、同じ容量であればHDとSSDで比べれば
大抵の場合SSDのほうが早いです。つまりはPCのスペックがよくなりますので、
SSDを搭載できるのであれば、SSDにしたほうがいいです。

質問者さんは恐らくLinuxについては初心者さんという前提で解答します。

>64GBのSSDを使うつもりなのですが
十分ですね。十分すぎます。

ウブンツをインストールしても4Gも使用しないでしょうから、後の60G使いたい放題でしょう。

>Windows8だと100か200は必要
絶対必要じゃありませんね。Windows8をインストールするのに必要は容量はせいぜい20G位でしょう。

あとは、アプリケーションや、データをワンサカ入れれば100や、200はいっぱいになってしまいますから、
そういう意味では、100でも200でも足りない...続きを読む

Q1ピクセルって何ミリですか?

1ピクセルって何ミリなのでしょう?
至急、お答えお待ちしております。
かなり急いでます。よろしくお願いいたします。

Aベストアンサー

1ピクセルが何ミリかという質問の答えになるかどうか分かりませんが、
WEB制作上に限って言えば、横100ピクセルの画像を作りたい場合、
Photoshop等では単位をピクセルで作れますが、Illustrator等の場合は、
100pointで作ります。
1pointは、0.35277ミリです。

Qinterface,extend,implementのちがい

お世話になります、

Javaを勉強しているのですが、
interface,extend,implementの使い分けがわかりません。

私の解釈としては、
(1)interfaceは、グローバル変数の定義、グローバルメソッドの定義(実装はしない)。

(2)extendは、extendクラスを親クラスとして親クラスの機能を使用できる。

(3)implementは…,implementもextendと同じような意味だと解釈しているんですが、違う点は、implementで定義してあるメソッドは、使用しなくても、実装しなければならないという点でしょうか?

とにかくこの3つのを使い分けるコツとかあれば教えてください。
よろしくお願いします。

Aベストアンサー

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば、getStringLength()メソッドなどが
あったほうが良いでしょうか。
このgetStringLength()メソッドは、2バイト文字も1バイト文字も「1文字」
と数えてくれると言う点で、まさに、日本語クラス用のメソッドだと言えるでしょう。

例えば、Java的に記述すると、、、
class Japanese {
public int getStringLength() {
  ・・・
return strlength;
 }
 ・・・
}

class TextField {
・・・
}

class JTextField extends TextField, extends Japanese {
・・・・
}

C++ではそのように実装するでしょう。
しかし、Javaにはこのような高度な機能はありません。

そこで、生まれた苦肉の策が、「interfaceとimplements」です。

interface Japanese {
public int getStringLength(); // interfaceは実装を含まない!
                 // すなわち「実装の継承」ができるわけではない。
}

class TextField {
・・・
}

class JTextField extends TextField implements Japanese {
・・・・
public int getStringLength() {
  ・・・
return strlength; //implementsの実装を「各クラスで」実装してやる必要がある。
 }
}


結局のところ、Javaでは、複数のクラスを親クラスには持ち得ないため、継承できなかったクラスは「各クラスで実装してやる必要性」があるのです。


ではどのように使うのが効果的か?

なまえのままです。「代表的なインターフェイス」にたいしてinterfaceを使うのが良いと思います。

例えば、プレイヤー系であれば、ビデオ・コンポ・ウォークマン・などにかかわらず、
interface controlpanel {
public play();
public stop();
public next();
public back();
}
というような基本的インターフェイスを「持っているべき」です。

こうすることで、それぞれのクラス宣言の際に、これらの「インターフェイスを持っているべきであり、実装されるべきである」ということを「強く暗示」することができます。
class videoplayer extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

こうすることで、同様のクラスを作成するユーザーは、
「プレイヤー系は、4つ操作が出来るコントロールパネルをインターフェイスとして持つべきなのだな!?」という暗示を受け取り、自分のクラスでもそれを模倣するでしょう。

class mp3player extends player implements controlpanel {
public play() {・・・}
public stop() {・・・}
public next() {・・・}
public back() {・・・}
}

また、これらのクラスを使用するユーザーも、「implements controlpanel」という
表記を見て、「4つの基本操作は押さえられているのだな!」という基本中の基本動作を抑えることが出来ます。

まとめると、クラスに「こういう特徴もたしてください!」「こういう特徴持ってますよ!」という一種の暗示的警告や方向性を与えることができるわけですね。

バラバラに理解してもしょうがないッス。

まず、
(1)interface と implements
(2)class と extends

が対応しているわけっす。

JavaはC++と違って、比較的言語仕様を「簡単」にしたので「多重継承」という
概念がないです。
多重継承っていうのは、複数のクラスを親クラスにして継承するってことですね。

たとえば、 「TextFieldクラス」と「Japaneseクラス」を多重継承すると、
「JTextFieldクラス」ができるっていうのが自然な考え方でしょう?

まぁ、例えば、日本語クラスであれば...続きを読む

Q他言語で言うcontinue文

他言語で言うcontinue文に相当する命令はVBに用意されているのでしょうか?

continue文とはループ中の後続の処理をやめループの先頭に戻るという命令です。

なんか探したけど無かったもので…。どんな言語にも用意されてそうな基本的な命令なので質問してみました。

バージョンは
Winエクセル2002 SP3
VBA Retail:6.4.8869, Version:9969
です。基本エンジンはVB6です。

よろしくお願いします。

Aベストアンサー

> continue文の解説でも、貴方のご指摘の動作(ループの先頭に戻る)はしているようには思えません。

ループの最後へジャンプという感じですね。
VBなら、Nextへ飛ばすのと同じです。

For i = 1 To 5
    If i = 3 Then goto Next_i
    Debug.Print i
Next_i:
Next i

Q文字列として"(ダブルコーテーション)を表示させる方法

こんにちは。文字列として、ダブルコーテーションを表示させるには、どうすればよいのか教えてください。m(__)m


例えば、
<font size="2">あいうえお</font>

というタグの「あいうえお」の部分が、セルA1にあった場合、

="<font size="2">"&A1&"</font>"という表示にしたいのです。

"2"のダブルコーテーションも文字列として表示させるには、どうすればよろしいのでしょうか。

教えてください。よろしくお願い致します。

Aベストアンサー

こんにちは~

表示形式は 「標準」 のままで、
ダブルコーテーションを、ダブルコーテーションで囲んでください。

""2""

="<font size=""2"">"&A1&"</font>"

としてみてください。

Qルーターにつながっている全ての器機のIPアドレスを調べる方法

DHCP機能で振り分けらた全ての器機のIPアドレスを調べる方法はありませんか??

コマンドプロンプトから調べれるコマンドのようなものがあれば教えて頂きたいのですが、、、。


ルータはNTT製品の NVIIIです。

Aベストアンサー

DHCPからの貸し出し先だけでよければおそらく
DHCPのサーバーに貸し出し中のリストをもっています。
ルータがDHCPサーバーでしたら説明書をよんでみて
ください。
dhcpdなど立てていたらvarのどこかにdhcpd.leases
があるとおもいます

Qmain関数終了時のreturnの意味は?

質問の題名通り、main関数終了時のreturnの意味が知りたいです。いつもは参考書に書いてある通り、return 0とやっていたのですが、参考書のサンプルプログラムでreturn 1というのがでてきた為、少し混乱しました。
参考書に説明が載っていないのでmain関数内でのreturnの意味をご教授願いたいです。よろしくお願いいたします。

Aベストアンサー

# 4です。

まず、0を返そうが、1を返そうが、そのプログラム自体の内部的な動作は通常変わりません。
戻り値で動作が変わる可能性があるのは「そのプログラムを呼び出したプログラム側」です。

例えば、make から呼び出された場合にそのプログラムが0以外が返したら、makeは「そのプログラムは失敗した」と考えて、処理を中断したりします。(続けて欲しいなら「成功」を返す、こういうために使います)
コマンドラインからあなたが手で入力したのなら、何も起きないかもしれません。

1を伝えられたOSが何をするかは環境(OS)によります。
gccは、Windows版もLinux版も各UNIX版もあるようなコンパイラですから、その版によって違う可能性があります。
ちなみに、手元の Minimalist GNU for Windows では 1 は EXIT_FAILURE でした=つまり前述のような失敗。
別のOS上のgccでは別の値にポートされている可能性も否定はできません。

C言語が保証しているのは、EXIT_SUCCESSを返したとき、その環境では成功と判断してくれるだろう値を返すことと、EXIT_FAILUREのときは失敗と判断してくれるだろう値を返すことだけです。
0は通常EXIT_SUCCESSですが、1はEXIT_FAILURE とは限りません(現実的には 0 と 1 が大半だと思いますが、EXIT_FAILUREが-1とかでも違反ではないです)。
但し、実際に判断できるかはOSにもよりますし、呼び出したプロセスがどう判断するかにもよります。

なお、Windows や Linux, その他私の知っている UNIX では、1を返されたからといって必ず何かが行われるということはありません。
前述のように、別のプログラム等から呼び出された場合に、そのプログラムが失敗と判断して何か処理を行う可能性はありますが、これらはあくまで呼び出し元のプログラムによります。
ITRON等の組込みOSでは、main が値を返す事は通常ありません。

憶測ですが、参考書のサンプルで return 1;となっているのは、例えば argv が求めているものと違うとか、fopen に失敗したとか、そういうケースではありませんか。
そういう異常処理が発生した場合に、もしも呼び出したプログラムがいたらそれを伝えられるように、EXIT_SUCCESS (0)以外の値を返すのは慣習です。
具体的にどんな値を返すかは、プログラムの設計次第になってしまいますが、1や-1を返したり、失敗原因ごとに決めた値を返したりします。
汎用性を重視するならEXIT_FAILURE等もありますが、知名度もやや低いですし、0以外なら何でもいいという認識の人も多いように思いますので、サンプルは単に1を返しているのではないかと。

# 4です。

まず、0を返そうが、1を返そうが、そのプログラム自体の内部的な動作は通常変わりません。
戻り値で動作が変わる可能性があるのは「そのプログラムを呼び出したプログラム側」です。

例えば、make から呼び出された場合にそのプログラムが0以外が返したら、makeは「そのプログラムは失敗した」と考えて、処理を中断したりします。(続けて欲しいなら「成功」を返す、こういうために使います)
コマンドラインからあなたが手で入力したのなら、何も起きないかもしれません。

1を伝えられたOSが...続きを読む

Qシェルスクリプトでファイル内の数値文字列を数値として扱うには

失礼します。
シェルスクリプトでファイル内のテキスト(数値文字列)を取得して、それを使って計算するにはどうすれば良いでしょうか?

str:ファイル内のテキスト(数値文字列)

res=$(( $str + 1 ))

・エラー
")syntax error: invalid arithmetic operator (error token is "


よろしくお願いします。

Aベストアンサー

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをexprに書き換えたところ
$ ./test2.sh
Using expr
09:19:00.302748000
09:19:19.259990000

exprだと19秒ですが、$(( 演算 )) だと10秒程度なので、演算が多くなれば確かにexprは不利ですね。

bashをご使用と判断して

res=$(( $str + 1 ))
ではなく、
res=$(( str + 1 ))
だと思います。

> exprもやってみたのですが、処理が遅くなるので使いません。
興味があって以下のシェルで検証してみました。

#!/bin/bash

str=1
i=0

echo 'Using $((str + 1))'
date '+%H:%M:%S.%N'

while [ $i -lt 10000 ]
do
str=$(( str + 1))
i=`expr $i + 1`
done

date '+%H:%M:%S.%N'

exit

$ ./test.sh
Using $((str + 1))
09:18:46.290418000
09:18:56.929345000
これをe...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報