ゴーゴーカンダチメ

自称"文系プログラマ"のkandachime11による備忘録。

「HTMLはプログラミング言語ではない」と説明するための具体例についての試案

Hello, World!

 

私は新米プログラマである。

そもそもそれまで四半世紀近く、文学で学士号を取得したぐらいの正統派文系として生きてきたのだが、今から約2ヶ月前、突如”召命”を受けてプログラマの端くれとなった。

今になって思えば、幼少のみぎりから可愛くない動物が表紙の本がそこかしこに転がっていたり、前兆はいたるところにあったのだが、とにかく私はプログラミングとは無関係なところに生きていた。LifeHackとか、ハッカーとクラッカーの違いは知っていたが、私は文系だった。

それがある日、somethingなgreatの思し召しにより、私はJavaという言語を勉強することになったのである。運命とは残酷なものである。

 

とにかくそういうわけで、私の身の回りもプログラミングとは無縁な人が多かった。そんな人々に、「色々あってプログラミングを勉強することになった」と話したところ、結構な数の友人が、「HTML*1なら知っているよ」と答えてきた。

実を言うと私もHTMLぐらいならその時点でかろうじて知っていたのだが、ふと違和感が湧いた。HTMLはプログラミング言語なのか、と。

 

ただその時点ではそもそもプログラミングの何たるかなど今以上に全く知らなかったので、肯定も否定もせず受け取っておいたのだが、今になって改めて、やはりHTMLはプログラミング言語ではないと理解している。そもそもHTMLはマークアップ言語である。

 

Wikipediaによればプログラミング言語とは「コンピュータプログラムを記述するための形式言語*2」、マークアップ言語とは、「視覚表現や文章構造などを記述するための形式言語*3」とある。つまりどちらも形式言語というわけだが、とにかく違うものなのだ。

 

……と、辞書的説明を駆使したところで、実感など湧くはずがない。というわけで、もうちょっと具体例を挙げて説明しなければいけないわけだが、そうなると相手がプログラミング言語を知らない場合、話にならない。

 

というわけで、例えば単純な例を使って

 

プログラムっぽいプログラム(Java)
1 class JavaProgram{
2  public static void main(String[] args){
3   int a = Integer.parseInt(args[0]);
4   int b = Integer.parseInt(args[1]);
5   int ans = a + b;
6   System.out.println(ans);
7  }
8 }

 

このargs[0]とargs[1]はコマンドライン引数というやつで……なんて説明をして、実行するときに、

 

 >java JavaProgram 1 2   

 

と入力してやれば、プログラムの方で計算をして、

 

3

 

という結果を吐き出してくれる。……などと言って、それに対して例えばHTMLでは、

 

一見何かを計算してくれそうなHTML文書(HTML)
1 <html>
2 <body>
3 <form action="xxxxxxxxxx">
4 <p>
5 number1
6 <input type="text" name="num1">
7 </p>
8 <p>
9 number2
10 <input type="text" name="num2">
11

</p>

12 <p>
13 <input type="submit" value="送信">
14 <input type="reset">
15 </p>
16 </form>
17 </body>
18 </html>

 

と入れても、一見submitボタンを押せば何かが起きそうだが、num1とnum2に入力されたパラメータの処理を行うのはHTML自身ではなく、form要素のaction属性で示された送信先である。……なんて言えば良いのかもしれない。伝われば、だが。

 

というわけで、この記事のtable部分を書くだけで20分ぐらいかかる素人だが、だんだん成長していけたらと考えていたりする。よろしくお願いしまする。

*1:HyperText Markup Languageのこと。

*2:プログラミング言語 - Wikipediaより

*3:マークアップ言語 - Wikipediaより。