参考書を読んでると、スクリプト型言語とコンパイル型言語がよく出てくるのですが、どう違うのか教えて下さい。
よろしくお願いします。

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

A 回答 (4件)

すでに皆さんが説明されている通りですので、別のたとえを使って見ましょう。



アメリカ人が英語で書いた原稿を日本人の聴衆に聞かせるとします。
一つの方法は、前もって日本語に翻訳しておきこれを読むことにします。スムーズでいいですね。
もう一つの方法は、アメリカ人が1行づつ英語を読んで、通訳がぶっつけ本番でそれを日本語に直してしゃべることにします。まどろっこしいですね。

コンピュータの世界でも人間にわかる言葉で書いたソースプログラムを事前に一括して機械語に翻訳しておく方法(コンパイラー型)と実行時に逐次通訳で機械語に直しながら実行する方法(スクリプト型)が有ります。翻訳なのか通訳なのかがその違いです。

スクリプト型は通訳としてインタプリタというソフトを使いますので従来はインタプリタ型と呼ばれていました。
    • good
    • 3

スクリプト型というのは一行ずつ機械語にしていきます


コンパイル方は全て一度で機械語にします
スクリプト型は速度は遅いがエラーがあるとすぐそこで止めて修正することができます
コンパイル型は速度は速いけど修正するのが面倒になります
    • good
    • 0

スクリプト型というのはperlに代表されるようなもので


人間が読める書式でかかれたソース(=スクリプト)を
インタプリタ(実行プログラム)が読んで実行結果を返します。
つまり、実行ごとにソースを読む→マシン語に解釈する→実行となります。

コンパイル型は大代表がCですね。
人間が読める書式で書いたプログラムを
マシン語(0101101010...みたいな)にコンパイルします。
実行するときはそのコンパイルされたプログラム自体が実行されます。
だからスクリプトに比べると実行が早いんですが...難易度が高いです。

という様に私は認識しているんですが、間違っているかも。
専門家の意見を待った方が良いです。いい加減でごめんなさい(汗)
スクリプトしか経験がないもので...
    • good
    • 1

こんにちは.


スクリプト型言語とはインタプリタ(実行されると上から処理を行うもの)で実行するもので,コンパイル型言語とはコンパイラで実行形式になったものを実行するものだと思います.また,スクリプト型言語で記述したものはテキスト形式になっていますが,コンパイラ型言語でコンパイルされたものはバイナリ形式になっているため,元のソースは開発者以外見ることができません.あと,スクリプト言語で作成したものよりも,コンパイル言語で作成したものの方が実行処理が早いです.

例えば
JavaScriptの場合:
 HTML内に記述し,そのままの状態をアップロードする.ブラウザでそのページを表示させた時に,上から順に処理をさせていく.
 ソースファイル -> 実行(インタプリタ)

C言語の場合:
 ソースを作成し,Cコンパイラで実行形式に変換を行う.
 ソースファイル -> コンパイラ -> 実行ファイル
    • good
    • 0

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

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

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

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

Qc型肝炎はHしたらうつるのでしょうか?

今c型肝炎がテレビのニュースとかに出てるのですけど血液感染以外にエイズみたいにHしたら相手にうつるのでしょうか?
まったく知識がないので教えていただけませんか?
 

Aベストアンサー

C型肝炎が性行為で感染する確率は低いとされています。
しかし、血液感染するものですから、コンドームの使用をお勧めします。
性交渉の際、目には見えないような細かな傷が多数できるのです。そういった傷からの血液感染という可能性を否定することができませんから。
以上kawakawaでした

Qコンパイル言語とインタープリター言語の違いについて

コンパイルするプログラミング言語とインタープリターする
プログラミング言語の違いについて教えてください。
特に、開発上および運営上の利点・欠点についてお願いします。

また、CGIでは、PHPやPERLなどのインタープリター言語が
主流ですが、その理由とC言語などで組むのと比較して、
どのような利点があるのか教えてください。

Aベストアンサー

現在ではもはや古典的な「コンパイル言語」「インタープリタ言語」の区別は意味を持たないでしょう。
Cは確かにターゲットのCPU/OSの環境専用のマシン語にコンパイルされ、実行されますが、Javaや.NET用言語では、ソースプログラムをそれぞれの仮想マシンの仮想マシンコードにコンパイルしてオブジェクトファイルを作り、仮想マシンがそのコードをインタープリトします。

また、PerlやRuby等に置いてもソースを中間コードにコンパイルしてからその中間コードをインタープリトします。

従って、
・純粋なコンパイル言語・・・CPU/OS等環境依存のマシン語ファイルをつくり実行する
・その他のいわゆるコンパイル言語・・・あらかじめ中間コードファイルにコンパイルしておき、その中間コードをインタープリトして実行する
・いわゆるインタープリター言語・・・実行の最初に中間コードにコンパイルしそれをインタープリトして実行する

運営上の問題
・いわゆるコンパイル言語・・・ソースファイルとオブジェクトファイルの関連づけをきちんと管理する必要がある。管理しないとエラー発生時にどのソースファイルを調べればいいかわからない
・純粋なコンパイル言語・・・上記に加えて、異なる環境で動かすためには再コンパイルとテストが必要
・いわゆるインタープリタ言語・・・何度も何度も実行される場合、コンパイルの時間が実行速度に影響する(ウェブアプリでの利用では一度できた中間コードをHTTPサーバープログラム中に保持することでコンパイルの繰り返しを防ぐ工夫がされることが多い)

特定のOS環境でのみ使える機能をつかったプログラムは、どの形式であろうが、その特定の環境でしか使えません。

現在ではもはや古典的な「コンパイル言語」「インタープリタ言語」の区別は意味を持たないでしょう。
Cは確かにターゲットのCPU/OSの環境専用のマシン語にコンパイルされ、実行されますが、Javaや.NET用言語では、ソースプログラムをそれぞれの仮想マシンの仮想マシンコードにコンパイルしてオブジェクトファイルを作り、仮想マシンがそのコードをインタープリトします。

また、PerlやRuby等に置いてもソースを中間コードにコンパイルしてからその中間コードをインタープリトします。

従って、
・純粋なコ...続きを読む

QB型肝炎のキャリアです。うつる??

19歳、遺伝性のB型肝炎のキャリアです。Hするときは相手の方にうつりますか??付き合って2ヶ月の彼氏がいて、きっとバレンタインに初Hすると思います。処女なので、出血するかもなんですが、その血で感染。。。なんてことはないですか?コンドームは絶対に使うつもりですが、心配です・・・。

Aベストアンサー

同じくキャリアです
Hしましたが、
ナニも起こりませんでした
相手の体の都合にもよるのでは?
感染の可能性はありますが、抗体を持つことが出来る
体質であれば何も問題は起きないものです
でも一応相手の了解は取ったほうがいいかと・・・

Q手続き型言語からオブジェクト指向型言語にコンバート

COBOLで書かれたプログラムをC#、JAVAなどのプログラムに書き換えるって簡単ですか?

COBOLは構造化プログラミングと呼ばれ、JAVAなどはオブジェクト指向でタイプが違うのではないかと思うのですがいかがでしょう?

Aベストアンサー

がるです。
このあたりは、「リファクタリング」というものについて調べると、色々と出てくるかと思うのですが。
以下、我流ですが「一つの方法」として捕らえていただけると。

1クラスを「ある意味のあるデータの塊を表す」ものであると仮定します。わかりやすいところですと、DBの1テーブルの1レコードを1インスタンスにするイメージです。
構造体でもよいのですが、後々を考えて、クラスにされるとよろしいかと思います。この場合、構造体に+αしたものがクラスである、程度の認識でよろしいかと。

そうすると「このデータを扱うときはこのクラス」という感じで集約することが出来るので、後々楽に処理をしたりすることが出来るようになります。

以上、参考になれば幸いです。

QC型肝炎は尿でもうつるの?

身内にC型肝炎の患者がいるのですが、
便座についていたその患者の尿に気づかず
その上に座ってしまいました。血液で感染することは
知っているのですが、尿でも感染するのかと
気になっています。どうか、教えてください。

Aベストアンサー

気になるのなら調べましょうよ
C型は基本的に血液感染です むかーーーしは輸血とかってのが多かったですけどね こっちに関しては今は無いです
今あるのは麻薬とかの針の使いまわしですかね。
性行為感染とか母子感染とかもなくは無いですがほぼないと思ってください。

つまりその尿が血尿とかで今すぐでた物であり あなたの体内に入り直接粘膜に触れなければ感染しません。
便座についていた程度であれば感染確率は0です

Q初めて関数型言語を学ぶとしたら、どの言語がお奨めですか?

初めて関数型言語を学ぶとしたら、どの言語がお奨めですか?
JavaScriptをやっていて、関数型言語に興味を持ちました。

いままで、勉強した言語はC < Java < Python < JavaScriptです。(右側の方が比重・興味が大きい)
現在、Web系志望の学生なので、その辺を踏まえてアドバイスいただけると助かります。

今のところ興味を持ってるのは、Common Lisp/Haskellあたりです。

よろしくお願いします。

Aベストアンサー

C言語が「関数型」?なのか、と言われると多分違うと思うんですけどね。普通は命令型/手続き型に分類されるんじゃないか、と思います。

ちなみに、JavaScriptはSchemeに影響を受けてる言語です。それで言うと、SchemeかCommon Lispがいいんじゃないのかな、とは思いますがね。ただ、あんまり関数型、って感じで書かれている本は少ないと思います。

Web系志望と言う事なんで、Common Lispですと、

ANSI Common Lisp: http://www.pej-hed.jp/washo/288.html
にHTML生成のトピックあり。

実践Comon Lisp: http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1
にAllegro Serveと言うライブラリを利用したWebプログラミングの例があり。HTML生成の例もあり。
原著のサイトでは、
http://www.gigamonkeys.com/book/practical-web-programming-with-allegroserve.html
http://www.gigamonkeys.com/book/practical-an-html-generation-library-the-interpreter.html
http://www.gigamonkeys.com/book/practical-an-html-generation-library-the-compiler.html
辺り。

プログラミング言語Lisp: http://ascii.asciimw.jp/books/books/detail/4-7561-3926-4.shtml
CL-HTTPと言うライブラリを用いたWebサーバーの説明が載っています。
ただし、本自体はMacintosh用の商用実装、Mac Common Lisp

Mac Common Lisp:
http://www.digitool.com/

を用いたものなんで、注意する必要があります。Macを持ってないならあまりお薦めしません。また、若干古い本ですね。

Haskellの方は良く分かりませんが、Common LispならそれなりにWeb関係の簡単なアプリの書き方も紹介されている、と言う事です。

参考までに。

C言語が「関数型」?なのか、と言われると多分違うと思うんですけどね。普通は命令型/手続き型に分類されるんじゃないか、と思います。

ちなみに、JavaScriptはSchemeに影響を受けてる言語です。それで言うと、SchemeかCommon Lispがいいんじゃないのかな、とは思いますがね。ただ、あんまり関数型、って感じで書かれている本は少ないと思います。

Web系志望と言う事なんで、Common Lispですと、

ANSI Common Lisp: http://www.pej-hed.jp/washo/288.html
にHTML生成のトピックあり。

実践Comon Lisp: http://s...続きを読む

QB,C型肝炎が歯科治療でうつる可能性は?

 上記の通りです。
ポイントは、歯医者での口腔処置の場合、一人一人使い捨てでない機器があると思うのですが、処置時に出血もありますのでB,C型肝炎の感染の可能性があるのではないかと思うのですがいかがでしょう?

Aベストアンサー

使い捨てでない機材であっても、リンク先のような消毒を行えば
ウイルスは除去されるようです。

しかしながら、消毒をされていない機器であれば、感染の可能性はあるということになります。
消毒していない機器を使っているような歯科があったとしたら、
ウイルスを撒き散らしているようなものです。

歯科の機器や理髪店のかみそりなど消毒が十分であると祈っています。

参考URL:http://www.mhlw.go.jp/bunya/kenkou/kekkaku-kansenshou09/02-10.html

Qc言語のコンパイル後のエラ-について

Unix,window98を使用しています。
#include<stdio.h>
main()
{
doublea,b,x,y;
a=1.0 ;
b=2.0 ;
x=a+1.0/b ;
y=(a+1.0)/b ;
printf(" a=%f\n b=%f\n x=%f\n y=%f\n",a,b,x,y);

}

を  gcc ファイル名.c    でコンパイルして、
% ./ファイル名      で実行すると、  
./ファイル名; コマンドがみつかりません。 
と表示され、
% ./ファイル名.c     で実行すると、
./ファイル名.c; アクセス権がありません
と表示され、
% ./ファイル名.out    で実行すると、
./ファイル名.out; コマンドが見つかりません。
となり、困っています。
お答えを頂ければ、嬉しいです。  

Aベストアンサー

ファイル名.exeとファイル名.outが存在しないのではないでしょうか。

その2つが存在しないのは何らかの理由でコンパイルが完了せずに中断された
ことが考えられます。
コンパイル時点でエラーメッセージが何か出ていませんでしたか?
また、出ているようならそのメッセージを書いてもらえると答えやすいです。

Qキスでうつるものは

ある風俗嬢のブログにこう書かれていました。
¨キス感染¨
A型肝炎、B型肝炎、C型肝炎。
咽頭クラミジア、咽頭淋病。
HIVウィルス感染=エイズ。

キスでうつります。
キスで簡単にうつる。

あ、、歯周病も歯肉炎もね!!

みんなにありえる可能性。
SEXよりも身近な可能性。
キス感染。


とありましたが、この中で本当にキスで感染する可能性のあるもの

そしてそれに感染した場合に完全に直る病気なのか
完治は難しいのかを教えてください。

Aベストアンサー

咽頭クラミジア、咽頭淋病、口腔ヘルペスは移ります
歯周病は歯周病菌を持っていない人(赤ちゃんなどです。風俗に行く方で歯周病菌を持っていない、という方がいるとは思えませんが…)なら移ります

ヘルペスなど痒痛いブツブツができてかなり辛いです
確かに防ぎようがないという点でHIVより身近でキケンといえますね

QDELPHI 5でコンパイルできたソースがDELPHI 6でコンパイルできない

DELPHI 5(英語版)でコンパイルできたソースが、DELPHI 6(personal、無償版、日本語版)でコンパイルをしようとするとエラーが出てコンパイルできません。一般的に、5から6へ移行する際に注意することがありますでしょうか?あるいは、英語版と日本語版で異なるという可能性はありますでしょうか?

ソースの一部は以下の通りです。

**********
IMPLEMENTATION

USES Windows, Messages, Dialogs, FileCtrl;

CONST BUFLEN = 10240;
FindSortMax = 1024;
SHIFT_RECHTS = 1; (* Flags f・ Sondertasten *)
SHIFT_LINKS = 2; (* Flags f・ Sondertasten *)
CTRL = 4; (* Flags f・ Sondertasten *)
ALT = 8; (* Flags f・ Sondertasten *)
SCROLL = 16; (* Flags f・ Sondertasten *)
NUM_LOCK = 32; (* Flags f・ Sondertasten *)
CAPS_LOCK = 64; (* Flags f・ Sondertasten *)

TYPE BufAr = ARRAY [1..BUFLEN] OF BYTE;
TextFiles = RECORD
open : BOOLEAN;
Name : STRING[255];
buffer : ^BufAr;
END;
Zeichen = RECORD C : CHAR; A : BYTE; END;
Screen = ARRAY [1..25] OF ARRAY [1..80] OF Zeichen;
(* Entspricht der EGA/VGA Bildschirmstruktur *)

VAR TF : ARRAY[1..MAXFILES] OF TextFiles;
i : INTEGER;
VGA : Screen ABSOLUTE $0B800; (* VGA-Screen-Adresse *)
sommerzeit : BOOLEAN;
stmp : STRING;
FindSortNr : INTEGER;
FindSortP : INTEGER;
FindSortRecs: ARRAY[1..FindSortMax] OF ^TSearchRec;
ActTextForeGround, ActTextBackGround : BYTE;

**********

エラーは、「VGA : Screen ABSOLUTE $0B800; (* VGA-Screen-Adresse *)」の行にて、
 [エラー] Alib.pas(605): 変数名が必要です
と言うエラーが出ます。

他人からもらったソースの為、問題を簡略化して示すことができないのですが、もし上記の情報だけで何かしら問題点があるようでしたらお教えいただければ幸いです。

DELPHI 5(英語版)でコンパイルできたソースが、DELPHI 6(personal、無償版、日本語版)でコンパイルをしようとするとエラーが出てコンパイルできません。一般的に、5から6へ移行する際に注意することがありますでしょうか?あるいは、英語版と日本語版で異なるという可能性はありますでしょうか?

ソースの一部は以下の通りです。

**********
IMPLEMENTATION

USES Windows, Messages, Dialogs, FileCtrl;

CONST BUFLEN = 10240;
FindSortMax = 1024;
SHIFT_RECHTS ...続きを読む

Aベストアンサー

D5のソースをそのままD6では通らないものはあります。
VCLのファイルが分割、移動、追加されたようですね。
定義を見るとなんだかDOSレベルかドライバのような記述に見えますが,
USESに書いてあるD5のpasファイルに関連しそうな定義がどのような表記になっているのか探してはどうでしょう。

ABSOLUTE $0B800
を除いてコンパイルしてみてはどうでしょうか。
ABSOLUTE の記述が変わったのかもしれませんがコンパイルスイッチで
引っかかっているかもしれません。
またD6のHELPに何か載っているかもしれません。

私は何かあると困るので必ずVCLソース付きを購入していますが、このような場合はソースを確認しています。
また
http://www.torry.net/
でVCLソースを落としてD5とD6の違いを見てみてはいかがでしょう。
なにか判るかもしれません。


人気Q&Aランキング

おすすめ情報