コンパイラかく語りき

import { Fun } from 'programming'

JavaScript : The Good Parts (良いパーツによるベストプラクティス)を読む①

どうも!chuckです。

ずっと欲しかったJavaScript GoodPartsを買いました!なので今日から1章ずつ読み進め、適宜メモしていきたいと思います(`・ω・´)ゞ

 

f:id:chuck0523:20150805221952j:plain

 

 

本日は第一章「良いパーツ」です。

 

 

引用しつつ、所感をメモしていきます。

1章 良いパーツ

まえがき

それぞれには「良いパーツ」と「悪いパーツ」があるらしい。悪いパーツが残留している理由は、すでにそれを使って動いているサービスがあるからとのこと。でも僕らはどのパーツを使うか選べるんだし、良いパーツ使っていいプログラマーになろうね!とのことです。

 

1.1 なぜJavaScriptなのか

Webブラウザとの関わりの中で、JavaScriptは台頭していった。しかし、それは同時に不等な非難を浴びることにもなったらしい。なぜならブラウザの提供するDOMは扱いが難しく、JavaScriptでさえその扱いに困難を極めているからだ。

そういった意味で、JavaScriptは他の言語と全く異なっている。とりわけ特徴的なのは、プログラミングについて詳しく知らなくても書けてしまう点にある。(たしかに!最近ではWebデザイナーさんがJavaScriptを書けたりするもんね!)

 

1.2 JavaScriptを解析する

JavaScriptにはいくつかの非常に良いアイデアと、2,3の非常に悪いアイデアがある。

良いアイデアとはつまり、緩い型付け・動的なオブジェクト・強力なオブジェクトリテラルなどがある。悪いアイデアにはグローバル変数に依存したプログラミングモデルなどが含まれる。

JavaScriptの関数はレキシカルなスコープを守るファーストクラスオブジェクトらしい。最初にメジャーになったラムダ言語とのこと(ラムダ言語って何。Javaのラムダと関係あるのかな)そしてJavaScriptJavaよりもLispやSchemaに似ている。(関数型言語の文脈でLispって出てくるよね!)

JavaScriptは弱い型付けを行っているので、コンパイラがエラーをチェックしてくれることはない。でも、しっかりテストはするべき。そしてそれ以上に、キャストや型システムとの格闘をしなくて済むのは大きすぎる利点と言える(分かる!Javaのキャスト地獄に泣かされてるっから、すごくわかる…)

他にも有名なJSONに代表されるような強力なオブジェクト記法や、プロトタイプ継承が特徴となっている。

欠点であるグローバル変数に頼っている点について触れていく。トップレベルに存在する変数は全てグローバルオブジェクトと呼ばれる名前空間に突っ込まれてしまう。一方で、グローバル変数は必要不可欠なものなので厄介である。

ではなぜJavaScriptを使うのか。それには2つの理由がある。1つは他に選択肢がないから。JavaScriptは全てのブラウザで利用できる唯一の言語であり、Webアプリケーション開発のプラットフォームになっている。もう1つは非常によくできた言語だからだ。JavaScriptは軽量で表現豊かな言語である。そして一度JavaScriptを習得したら関数型のプログラミングは非常に楽しく感じられる。(そうなんだ!関数型のプログラミング気になってた!嬉しい!)

そのためにも「悪いパーツ」を避けて「良いパーツ」を身につけていこう。

 

1.3 プログラムをテストするカンタンな手法

15行ほどなので省略。

 

 

まとめ

まあ1章なので軽めですね。それでもサイ本では語られなかったJavaScriptの姿が見えてきて、ワクワクしていますヽ(=´▽`=)ノ

2章からは言語仕様的な内容に入っていくので、しっかり頭に叩き込みたいと思います。

では!