プログラミング全般のお話
こんな言葉があります。
「できる人は自分でやる。できない人は他人に教えたがる。」
まさに私にピッタリの言葉だと思います。身近な例でいうと,心理学科に入りたての学生は何かと人の相談に応じようとします。またスポーツや学問でも多少の知識や技術を習得するとそれをやたらと周りに見せびらかそうとします。そう,中途半端にできる人ほどいきがってチョーシこくんですよね。
私の場合,まさにこれに当てはまるのですが人に教えるつもりで「どうしたら分かり易く理解できるか」ということをまとめながら学習していくと自分でもよく理解できるのです。まぁ要するにノート代わりにwebサイトを立ち上げているといっても間違いではないでしょう。だから私のいうことはあまり信用しきらない方が無難です(なんせ私はプログラミングの初心者ですらないタダのド素人なのですから、、、)。
しかしそうはいっても,インターネット上で情報を公開するという行為は「情報公開の自由」というものと同時に「情報を受け取る側に正しく伝える責任」というものもあります。例えば私が故意にこのページを見た人を混乱させたり,あるいは誤った知識を取り入れるようなことはしてはいけないということです。 ・・・と,その辺りのことは肝に銘じているのであまり突っ込まないようにお願いします。
+-------------------
さて講釈が終わった所で本題に入りましょう。
最近は一家1台というよりも1人1台というほどのパソコンが普及していると思います。そんな中でもコンピュータに関する用語,例えば「ラン」「サーバ」「プロトコル」「クッキー」などをきちんと理解できている人はそう多くないでしょう。そのようなことまで1つ1つ説明しておくわけにも行きませんが,プログラミングをしていく上でどのような言語があるのかくらいは把握しておいた方がよいでしょう。
+-------------------
1. 言語には2種類ある
この世には形式言語と自然言語があります。自然言語とは私たちが日常的に使っている日本語や英語,ドイツ語,中国語などのことです。一方,形式言語にもいろいろと定義があるのですがプログラミング言語はこの形式言語に属しています。
形式言語 ・数式 ・プログラミング言語 |
自然言語 ・日本語 ・英語 ・ドイツ語 |
2. プログラミング言語の種類
プログラミング言語といっても,いったいどれほどの言語が存在しているのか見当もつきません。有名なものでC,Visual Basic,Java,HTML,Perl,...などありますが,こういったプログラミング言語は翻訳しなければコンピュータ側が理解してくれません。
どういうことかというと,コンピュータといっても実際にはCPU(中央演算処理装置)という人間でいう脳ミソにあたる部分が処理をおこなっています。しかし,このCPUは機械語を母国語としているのでCやVBのような外国語は翻訳してあげないと分からないのです。
[プログラミング言語]⇒⇒⇒[機械語] 翻訳 |
3. 翻訳するということ
プログラミング言語は機械語に翻訳しなければCPUが処理することができません。そこで翻訳をしてくれるプログラムが必要となるわけですが、、、
コンパイラ言語 ・C ・C++ ・FORTRAN |
インタプリタ言語 ・AWK ・Perl ・Ruby ・VB |
4. 低級言語と高級言語
プログラミング言語は低級言語と高級言語とに別けることができますが,機械語に近い言語のことを低級言語といい,より自然言語に近い言語のことを高級言語といいます。前者に当てはまるのがアンセブリ言語で,それ以外は高級言語となります。
機械に近い(低級言語) ・機械語 ・アンセブリ言語 |
人間に近い(高級言語) ・アンセブリ言語以外 ex.CやVBなど |
+-------------------
まぁ結果としてプログラミング言語には大きく別けてコンパイラ言語とインタプリタ言語の2つがある。コンパイラ言語にはCやFORTRANがあり,インタプリタ言語にはVBやPerlがある。ということを覚えておけば良いでしょう。
〜付記として〜
コンパイラ型言語はあるプログラムを実行するためのソースコードをまとめてコンパイルしてプログラムを動かします。一方でインタプリタ型言語は1行ずつソースコードを実行していくのでコンパイラは必要ありません。また,コンパイラ型言語は面倒だが実行速度が速いという利点があり,インタプリタ型言語は手軽だが実行速度が遅いという欠点があります。
実行速度については最初はワカランでしょうが,コンパイラ言語とインタプリタ言語の違いはC言語とR言語を使ってみると両者の違いがよく分かると思います。
C言語の場合:このようなソースコードをいっぺんにコンパイルする。途中で間違いがあればプログラムは実行できない。
#include<stdio.h> main(){ int a,b,c,sum; a=10; b=20; c=30; sum=a+b+c; printf("%d",sum); }
R言語の場合:ソースコードを1行ずつ解釈して実行する。途中で間違いがあればプログラムとしては不完全であるが,例えばsum=a+b+cの部分が間違っていてもそれまでのコードは正常に実行されている。
mysum<-function(){ a=10 b=20 c=30 sum=a+b+c print(sum) }