【第05回授業のQ&A】
Q. HTML とXMLの違いがよくわかりません。解説お願いします。
A. 大変良い質問です.
どちらの言語も,いわゆるタグで記述するものです.例えば〈html〉とか〈body〉みたいなものですね.簡単に言いますと,それぞれの言語は目的が少し異なります.具体的にはHTMLはウェブコンテンツを記述するためのものです.またXMLはタグを自由に拡張することができるもので,身近なところではMicrosoft社のWordやExcelの文書ファイルの記述に応用されています.
ポイント:
HTMLはウェブ用のマークアップ言語
XMLは「拡張可能な」マークアップ言語
ということを押さえてください.
Q. 授業の動画の中でソースコード、ソースプログラムは「機械には理解できないやつ」とおっしゃっていたのですがその後の過去問題では「コンピュータに対する命令を、プログラム言語を用いて記述したもの」とおっしゃっていたのですが機械には理解できないものではなくそれを機械が理解できるプログラム言語で記したものをソースコードまたはソースプログラムというのでしょうか?
A. 説明します.
この件に関しては,具体的にプログラミングを学んでいない段階では十分に納得することは難しいと思いますが,重要なポイントとして,
“コンピュータ(CPU)が直接的に理解できる言語は機械語である”
という事実があります.そして機械語は数値(2進数または16進数)で表記されるものであり,人間にとっては扱いにくいものであるということがあります.
それに対して「高水準言語」というのは,人間にとって扱い易いものでして,プログラミングする際には,高水準言語で記述したソースプログラムを「コンパイラ」あるいは「インタプリタ」といったソフトウェアで機械語に翻訳します.
今の段階では,「機械語」と「高水準言語たち」という分類で覚えておいてください.
参考までに,高水準言語で記述したソースプログラムと,それを機械語(アセンブラ言語)に翻訳したものをお見せします.
例として取り上げる高水準言語は「CommonLisp」です.この言語で足し算を実行する関数 tasu が次のようなソースプログラムとして記述されているとします.
(defun tasu (x y) (+ x y))
変数として x と y が用いられており,LISP独特の前置型演算表記で計算が定義されています.意味はわからなくて結構ですが「何となく」の雰囲気はおわかりいただけるかと思います.ただ,このプログラムをIntelのx86系の機械語(アセンブラ言語)に翻訳すると次のようなプログラムになります.
; 92: 498B5D10 MOV RBX, [R13+16]
; 96: 48895DF8 MOV [RBP-8], RBX
; 9A: 840425F8FF1020 TEST AL, [#x2010FFF8]
; A1: 498BD0 MOV RDX, R8
; A4: 488BFE MOV RDI, RSI
; A7: FF1425B0000020 CALL QWORD PTR [#x200000B0]
; AE: 488B75E8 MOV RSI, [RBP-24]
; B2: 4C8B45F0 MOV R8, [RBP-16]
; B6: 488BE5 MOV RSP, RBP
; B9: F8 CLC
; BA: 5D POP RBP
; BB: C3 RET
; BC: CC10 INT3 16
ご覧のように,大変複雑な機械語のプログラムになっています.ただし,このプログラムを2進数に変換(アセンブル)すると,x86系マシンが直接理解して実行することができます.
あくまで参考ということで眺めてください.
Q. ITパスポート試験の教科書を使って独学で勉強するときに単語を覚えるというよりも内容を重視して覚えるほうがいいですか?
A. その通りです.
過去問題を見ていただくとわかりますが,単語の意味に立ち返って考えさせる問題も多いので,是非とも内容の理解に重きを置いてください.