chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

JavaScriptを改めて学ぶ -> JSは苦渋の仕様に思える

自分はCとかPython(MicroPython)を普段使っていて*1JavaScriptは使う機会がほとんどなかった。が、、node.jsを使う必要が出てきて、JavaScriptが分かっていないと小修整やデバッグもできないので、JavaScriptを勉強することにした。

今まではJavaScriptによる画面制御と言語仕様をごっちゃ混ぜにしてしまって、JSはわけわからん!!と毛嫌いしていたのだけど、JavaScriptの言語仕様だけを説明した本を読むとJavaScript(ECMAScript2015~)はちゃんとした言語なのだなーと改めて思いました。しかし、、varによる変数宣言はあってもなくてもいいって、、それでいいんですかね。。。変数宣言文がどっちでもいい。。いや、それの深い意味があるのかもしれない。とりあえず勉強を進めよう。。*2

解説本をまだ最後まで読んでないけど、、ECMAScript2015になってから、他の言語に近い形に仕様追加されたようですが、、古いバージョンのJavaScriptに準拠する場合、いろいろJavaScript特有の考え方があって、その思想でソースを書く(読む)必要があるような印象。。クセが強い言語という印象です。仕事でJavaScriptを使う人は苦労が多いのではなかろうか。。

JavaScriptの言語仕様自体はつらい過去からのしがらみ?で苦渋の仕様なのだけど、JavaScriptの存在意義はブラウザオブジェクト(HTMLで定義された文書をオブジェクトとして操作する(と理解))を自由に操って、UIの質を高める所にあると再認識しました。だから、、ブラウザ上で動作するJavaScriptは適材適所だけど、サーバ側でJSを動かすって、、別にJavaScriptでなくてももっと書きやすい言語があるだろうに。。JavaScriptのエンジニアがブラウザだけの仕事にとどまらず、サーバサイドでも仕事できるようにという目的で、node.jsが作られたのだろうか。。

Linuxアカデミー様の記事初心者向け!3分で理解するNode.jsとは何か? より引用。。

Node.jsは Manhattan (Yahoo!のPaaS) の中核です。一つの言語を使って一つのコードベースを
構築することを可能にします - それは開発者にとってのパラダイスです。
Renaud Waldura

*1:EmacsではLispを使うこともある。。EmacsLispも化石みたいなもんですな。。

*2:letを使うとブロックスコープが有効になる、、と解説されていて、varだったらブロックスコープがないのか!? letとvarで動作が違うと、バグになりやすい印象が。。。