概要
TwitterでJavaScriptについて誤った解釈のツイートをしました。
するとそれは違う旨の指摘を頂き、調べてみるとどうやら全く理解出来ていなかったみたいでした。
自戒の意を込めて調べた内容をまとめてみました。
JavaScriptにおけるオブジェクトとは
JavaScriptの広義のオブジェクトは
nullとundefined以外の全て
JavaScriptのオブジェクトは全てがその元となるプロトタイプオブジェクトと呼ばれる、オブジェクトの元となるオブジェクトが存在する。
Rubyなどの、クラスのインスタンスとしてオブジェクトが存在するようなのはクラスベースと呼ばれる。
では、関数型言語ってなに?
Wikipedia曰く
数学的な意味での関数を主に使うプログラミング言語のこと。
関数型プログラミングというのはそういうスタイル(副作用が少ない、参照透過性の高い記述ができる1)で書くことを指す。
よって、関数型の色があってもオブジェクト指向言語ではないということにはならない
現に、JavaScriptは第1級関数2をサポートしているので関数型プログラミングができるが、だからといって関数型言語なだけとはならない。
まとめ。なぜ間違えた?
プログラミングパラダイムの中で分類されていたのを見て、「JavaScriptは関数型が使えるんだから関数型言語に分類されるんだ!ならオブジェクト指向じゃないのじゃなくて関数型言語なのか!(´☆ω☆`)ナルホドネ!」と思ってしまいました。
なんかこの辺の思考回路だけ小学生のまま止まってる気がする。。
とはいえこの機会に(ちょっとは)分かった(つもり)になれたので、良かったです!
指摘してくださった方、ありがとうございました!