日本でハリウッドVFXを制作! 「経産省アイディアボックス」 結果:  
●まとめエントリはこちら ●FAQ ●お問い合わせは左のメールフォームから

2009年8月17日月曜日

コンピュータ専門用語の理解

webサーフィンをしているときに以下のエントリを見つけた。

今日は私のAPI記念日ギークなお姉さんは好きですか


タイトルからわかるようにめずらしく女性プログラマのブログです。
実は、以前から、いろいろと調べているときに、時々検索にひっかかるブログだったので気になっていたブログの一つです。

その理由は、めずらしく初心者(非プログラマー)からプログラマーになるときのぶつかる問題や、初心者の気持ちにたった内容になっているからで、その内容には、なるほどなと思うことが多かったからです。

上記のエントリを読んで、自分でも大きく同意できることが書いてあったので取り上げることにしました。

--------------------
じつは、上記のエントリにある「API」という言葉、同じように気になり調べたことがある。

そのときに、やはり他のサイトや辞書を読んだだけでは理解できず、じぶんなりの答えを見つけるのに苦労した覚えがある。

そしてエントリを読んでいて、他の人もやはり同じなのだなと思うと同時に、その理由が書かれていたのを見て、なるほどなと思った。



分かってる人からしたら「他のサイトにも同じようなこと書いてあるじゃん」って思うかもしれないけど、全く分からない側からすると、ちょっと表現が違うだけで理解に至らないことがある。
なんだろね、きっと頭の中にインデックスされてる知識や語彙が違うからだろね。
だから私に理解できる説明を探す必要があるのです。
今日は私のAPI記念日より)



「人によって、知識や語彙が違う。」

ここにこそ、プログラミングの入門書を万人向けの物とできない理由だと思う。

大学の教授や会社が何年も研究してきて、その過程で生まれた「専門用語」。

プログラミング用語は特に、数多くの専門知識や経験に裏打ちされている。
そのため、初心者が、とまどうのは、その専門用語を理解する為に、複雑、多用な知識が必要となることである。


以前、坂村 健氏の「痛快!コンピュータ学」がコンピュータの基礎知識を理解する上で非常に役に立ったと言うことを書いたが、それはコンピュータを説明するのに、専門用語や専門知識を分野外の人にも、なじみのある言葉と知識から始め、段階をおって理解を深める形になっていたからだと思う。


通常の入門書はそこがうまくできていない。
いきなり専門用語を使ったり、言葉は平易でも説明している内容はけっこう専門的(説明している側からすると、単純化しているらしいが)だったりして、ついていけないことが多い。

ある程度の知識を持った人からすると、上記のように、「同じようなことが書いてあるのになんでこの人は理解できないの?」となってしまう。
それだけならいいが、「やる気が無いんじゃないの?」と思われることさえあるかもしれない。

しかも、同じ説明でも理解できる人もいるので、話がややこしい。

そのような状況では、「他の人が理解できる入門書でも、自分には理解できない。きっと自分はプログラミングには向いていないんだ。」という気持ちにさえ、なってしまう。

特に、「入門」とついた記事や本だとそのような気持ちになりやすい。
そういう文章に限って、最初は非常にわかりやすく書かれている(またはそのように見える)ことが多いのも落とし穴だと思う。



そしてそれは、このブログで書かれているように、「知識や語彙が違う」ということで理解できる。

人によって知識や語彙の「種類」も「量」も大きく異なる、特にコンピュータが普及するにつれて異なる分野の人も増え、ますますそのバリエーションは増加しているのではないかと思う。
また、同じ言葉でもその意味する範囲が異なったりもする。
そういった諸々の理由で、入門書などに説明されている言葉、専門用語を解説した辞書やサイトを理解できなくても何ら不思議ではない。
リアリティーが異なる次元で説明されているので仕方がない。
むしろ初心者はそのようなことの方が多いのだと思う。

自分の理解力の無さをなげくことも、「自分に納得できる理由付けとする」という意味では、まったくの無駄ではないかもしれないが、大半の場合は「あきらめ」にたどり着くだけだろう。

--------------------
ではどうすればいいのか?

コンピュータの専門用語を理解すると言うことに絞って言えば「検索して情報を集めること」に限る
ただ「検索」は広い意味での「検索」で、印刷された文献を自分で探すことも含める。
以下に自分が主として使う方法をまとめてみた。番号は振ってあるが整理のためで、順番ではない。


1)その用語が元々普通の言葉からきたものであれば、語源を含めて、その意味を先に理解する。
通常は英語から派生していることが多い。

Interfaceを調べてみると、

Interface(gooディクショナリー
━━ n. (異なる物の)境界面, 中間共通面; 共有領域;

そして、そもそもinter-とは以下の意味があり、
━━ pref. 「の間の;相互の[に]」の意.

faceとは、表面とか外観といった意味を持つ。

そして専門用語の意味では以下のような意味が生じてくる。
Interface(e-words
インターフェースとは、二つのものの間に立って、情報のやり取りを仲介するもの。また、その規格。


2)その用語を解説したいろいろなサイトを検索してみる。
使えるキーワード例:「*****(調べたい専門用語)」、「とは」、「意味」、「初心者」、「わかりやすい」、「難しい」「説明」など。
他にも、調べている途中で、含めたい単語はどんどん入れていけばよい。
Googleなら「初心者にわかりやすい説明をしている」などの文章で入力してもOKだったりする。


3)その用語が生まれた背景(歴史)を読んでみる。
Interfaceの意味を調べているとして、たとえばマウスの開発の歴史を紹介したサイトなどを呼んでいくと
「マン・マシン・インターフェイス」の意味が辞書で紹介されている以上に生き生きとした形で、理解することができる。
マウスを開発していたときに研究者が「インターフェイス」と言う言葉を選んだ理由、そしてその言葉を使うときの彼らの感情や感覚さえ、わかるかもしれない。

暇なときに、今やっていることに関係ない事でも歴史を読むようにしていると、意外なところでその知識に助けられることがある。
そして、それは生き生きとした血の通った知識となることが多い。


4)その用語を分解して、普通の用語として、各単語を調べる。
その専門用語が合成されて生まれたギークな用語だったりすると、辞書にもでてこない事がある。
しかも、それがあまり説明されていなければ各単語を調べていくことでわかることもある。



5)英語のサイト検索で調べる。
通常google.co.jpで検索しているなら、google.comで、キーワードを英語で入力してみると、異なる検索結果が見つかったりする。
google.co.jpの検索結果にも「Web全体から検索」という選択肢があるが、ここから検索される結果と「google.com」で見つかる結果は異なることがある。

またオンラインで使える英英辞書などを使ってみるのも良いだろう。

Oxford Dictionaries Online


そのほか英英辞書へのリンク集



6)推測する。
どうしてもわからなければ、集めた情報から推測していくことも可能だ。
ただ正確では無い可能性もあるので、将来それを明確にする必要があるかもしれない。
時として保留にしておくことが時間の節約になることがある。
あまり枝葉のことを追求していくと、きりがなくなる。

その場合は、おそらく心の片隅で疑問が残り続けるので、後になって思い出しときにでも調べなおせば、もしかしたらもっといい説明が見つかるかもしれない。(インターネットの情報は日々、更新されている)



--------------------
べにじょさんのブログで強調されている点をもう一つ。

「つまりAPIは「特定の機能を持つプログラム部品」なのです。(元ネタへのリンク)」


このAPIに関しては、自分の理解は少し異なった。
APIの説明を読んでいる時点で、
「Interface」「関数」といった概念を理解していたので、「Application Programming Interface」という言葉から容易に理解することができた。

あえてこのことを書いたのは、やはり人によって持っている知識と語彙が異なる。
そしてそれは同じ用語でもことなる理解に導くことがあると言うことの例を示したかったからだ。
本筋において、言葉は違えど、同じ物を示している。


自分では、APIとは、プログラムの部品というよりも、あるソフトウエアやOSの機能を使うためのインターフェイス。すなわち歯車や配線を使った機械装置でいえば「スイッチや、レバー、ダイヤル」にあたるものとして、とらえている。

この理解は100%では無いかもしれないが、本筋においては間違っていないだろう。


APIを「プログラム部品」と理解したとしたら、自分の性格上、APIを使うときに、それぞれの部品の機能をくわしく調べないと気が済まなくなる。

それに、そもそもプログラムの部品ととらえると、他のプログラムの部品とどう違うのかという疑問が生じるてしまう。

しかし、文字通り「インターフェイス」として理解すれば内部構造は理解しなくても、「インプットするためのインターフェイス(コマンド)」、「それにより引き起こされる働き(アウトプットなど)」さえ理解すれば良いという安心感を与えてくれるので自分にとってはこの理解で良いと思っている。

この「ブラックボックス」は「ブラックボックス」のまま使うという考えは「関数」という言葉を「リレースイッチ」と関連づけて理解したときから始まる。

(関連エントリ)
スイッチ=関数=ノード=CPU
初心者プログラミング教育のブレイクスルーになるか?


そして、「ブラックボックス=関数=リレー・スイッチ」考え方はプログラミングに深くコミットしたくない自分には便利な考え方で、いろいろなものをシンプルにして理解することが出来る。
また、何より覚えることが少なくて済む。
これは、Melスクリプトのノードを理解するときにも役に立った。

 

0 件のコメント:

コメントを投稿