- ベストアンサー
スクリプトとは?
スクリプトがよく分かりません。 下記ページには、「プログラムはプログラマの書いたソースコード(設計図)をもとにコンピュータの理解できる機械語に変換して実行されるが、そのプロセスを自動化して簡単に実行できるようにしたものをスクリプトという」とあるのですが、「機械語に変換」はコンパイルのことですよね? コンパイルという1ステップが省略される、ということなのでしょうか?ただ、コンピュータに実行させる以上、コンパイルはされるのですよね? そのへん、よく分かりません。よろしくお願いします。 http://e-words.jp/w/E382B9E382AFE383AAE38397E38388.html
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ああ~~~。 いや、厳密には「スクリプト言語」なんてありませんよ。あるのは「プログラミング言語だけ」です。 元々、「スクリプト」って誰が言い出したのか……。一つは「流行り言葉」なんです。どーしても「プログラミング言語」と呼ぶと 「難しいんで、しゃちほこばって使わなければならない道具」 ってイメージがあるんで、スクリプト(記述)言語、って言い出しただけ、です。 一つはマーケット戦略ですよね。スクリプト言語、って言えば、まあ、英語文化圏では 「簡単そう」 と言うイメージが出来るんで流行りやすい、と。同時に「あまりマジメに使うことが出来ない劣った道具」と言うイメージも付くんですが。 まあ、「浸透させたい」って事があるんでしょうね。ユーザーが増えればデファクトスタンダードとして主導権も握れるでしょうし。 (まさにこれがNetScapeが「JavaScript」と名づけた理由でしょう) もう一つは。慣用的には昔はインタプリタ言語、に分類されたものがほぼスクリプト言語に当てはまりますが、技術的には色々とややこしいです。むしろ、「単純なインタプリタと呼べない」言語をスクリプトと呼ぶ傾向もありますね。 例えば、 >「機械語に変換」はコンパイルのことですよね? と書いてますが、「一気にまとめて機械語に変換」するのがコンパイル、「一行一行機械語に逐次変換」がコンパイル、だとされています。 ただ、これは結構古典的な言い方で、機械語じゃなくってバイトコードと呼ばれる「一段上のレイヤー」にコンパイルするものもあります。これを通称「バイトコンパイル」と言って、SUNのJavaで言うコンパイルはこれに近いです。 ところが、PerlやPython等のいわゆる「スクリプト言語」に分類されている言語なんかもこの「バイトコンパイル」はしてるんですよ。見た目1行1行づつ実行してるように見えますが、内部的には一旦バイトコンパイルして、新規同名ファイルとの差分比較をして裏でバイトコンパイルやってたり、とかなり複雑な事を行っています。 つまり、技術的には従来型の「コンパイル型」「インタプリタ型」と分類し辛い言語が増えてきた、と言うのも背景にはあるんでしょうね。そう言う「新勢力の言語」を敢えてスクリプト言語、と好んで呼ぶ言語設計者も多い模様です。
その他の回答 (3)
- cametan_42
- ベストアンサー率62% (162/261)
おっとしまった。 >「一行一行機械語に逐次変換」がコンパイル インタプリト、ですね。 タイポです。失礼致しました。
- zwi
- ベストアンサー率56% (730/1282)
インタプリタは機械語に翻訳すると言うからややこしいので、簡易なインタプリタは文字列を構文解析して命令ごとに用意されたサブルーチンを呼び出しているだけです。高度なインタプリタはもっと色々工夫してますけど。
- wildcat-yp
- ベストアンサー率37% (303/813)
コンパイルは機械語に変換するための方法の一つです。 これは、あるプログラムをまとめて機械語に変換して実行ファイルを作っておく作業です。 それに対して、スクリプト言語というのは実行する直前に機械語化して実行します。 インタプリタ方式とか呼ばれます。 コンパイルが本を翻訳すると考えるとインタプリタは同時通訳のようなものだと思っていただければいいと思います。