アイツの好きなプログラミング言語 その1(JavaScript)

http://temocompany.seesaa.net/article/449734248.html
にて、しばらくプログラミングに関して考察を記述したい、
とか言っておきながら、全然できていなかったので。

今年始めに、割りとじっくり手を出したのが、JavaScript。

C++やC#といったC言語系を触ってきた身からすると、
ほどよいユルさが良い感じ。

また、関数ポインタやらdelegateなどの文法を使うことなく、
作った関数(メソッド)を、変数に突っ込める合理性がある。
むしろ最近の言語では、結構そうかも!?

ところで、他言語で言う「連想配列」「ハッシュテーブル」に相当するのが、
JavaScriptの「オブジェクト」。

これは「キー:バリュー(値)」の組み合わせを、
まとめて格納しておくもの。

例えば、「生徒オブジェクト」であれば、
・氏名:山田太郎
・性別:男
・偏差値:72
などと格納する具合。

このオブジェクトから、例えば名前を知りたければ、
氏名「キー」を使ってアクセス
・・・で、もちろん正しい。

だが、もし上記オブジェクトに、
・挨拶する:(自分で作ったメソッド)
という「キー:バリュー」も追加していた場合には?
(↑というのも、メソッド自身を変数に突っ込めるのと同様に、
 バリューそのものにできるから)

名前を知るには、「あたかもクラス的な概念」の生徒オブジェクトの
氏名「プロパティ」にアクセスだし、
挨拶するなら、挨拶メソッドにアクセス。

つまり、
「あ… ありのまま、今起こったことを話すぜ!
 おれは、連想配列(ハッシュ)を利用していると思ったら、
 いつの間にかクラス的なものを利用していた」
という状態。

ドットインストールのJavaScript入門で言うと、
#17 → #18でこの感触を初めて味わい、驚愕した。

ちなみにアクセス方法も、以下のどちらでも良い。
・生徒オブジェクト["氏名"]
・生徒オブジェクト.氏名

そうか! クラスなんてモノ、この世に存在しなくても良かったのか!?
(※ 違います)

※最新のJavaScript仕様であるES2015(ES6)では、
 本物の「クラス」が搭載される模様。

JavaScriptは、そんな合理性や、進化具合が、
なかなか素晴らしい言語である。

ただし、以下の点から「名前の付け方」は、
先々まで混乱を招き、非常にけしからんと思う。
・「最近Javaが流行っているから、全く関係ないけど、JavaScriptって名前にしようぜ!」
・連想配列的なやつ(=上記クラス的な概念)の名前は「オブジェクト」だ!

JavaScriptの解説を読んでいて、
「オブジェクト」という言葉が出てきた時、
例の概念のヤツそのものを指しているのか、
他言語で言うインスタンス的なオブジェクトなのか、
ときに混乱しだす。

この記事へのコメント


この記事へのトラックバック