Swiftの哲学。
まずこの本、良い本ですよ。実はw。
清水美樹『はじめてのSwiftプログラミング』工学社
ネットのレビューでは、あまり評判がよくないです。どうしてそーゆー評価になったのか、これを解釈するに、次のような背景があるんじゃないかな。
その1 アップルのレファレンスでいいじゃん(英語)
その2 まだ言語に仕様変更があるなか本にすんなよ
その3 この本買う奴、そういうの分かってない情弱www
・・・ってなコトなんだろう。しかしそれは違うと思うんだ。これらの意見に反論しておこう。
その1。確かにアップルの英語解説は充実しているけれど、未知の言語を慣れない言語で学ぶのは効率が悪い。
その2。仕様変更にともなう本書のコードのエラー箇所とその対処策はネットでサポートされている。
http://supportdoc.net/support-swift/change.html
むしろ仕様変更の具体例を見ることができて、メタな話だが、それすら勉強になる。
その3。ごちゃごちゃ言ってないで、やれよ、俺。プロの現場でもSwiftへの移行は進んでいないが、だからこそチャンスなのかも。例えば、りんごWATCHのアプリ開発はSwift限定!とか・・・しかし、あり得る話なんですよ。Appleならやりかねない。
本書は、淡泊な書き方で誤解されているけれど、すごくわかりやすいです。「デリゲート」のところもなかなかイイ解説です。初心者はこれを何か具体的な機能だと思いがちだけど、この誤解を正して、うまく導いてくれます。文法を淡々と解説している部分は多いものの、本質が分かっている人の文章ではないかなっと。
——————
で、哲学的な話なんだけど、Objective-CからSwiftに移行するとき「可読性が上がる」とよく言われる。ところでコードにおける「可読性」とは何だろうか? 個人的見解としてこの「可読性」の「読」は、さらに三つに細分化できると思う。
その1 意味論的な「読」
SmalltalkやObjective-Cの可読性は、コード自体を本当に意味のある文章として読ませようとする。こうして文字通りコードを読んで、その意味を把握できるわけだが、その反面コードが長ったらしく見た目がゴチャゴチャする。それでもSmalltalkではそれなりの秩序が存在していた。しかし、C言語ベースのObjective-Cは、なんか、もう、凄まじいものがあるわけですよw Swiftがある今となっては、そう言わざるを得ない。さらに、英語ネイティブじゃいない者にとってはこれを読むスピードはさらに遅くなる。これは日本人固有の問題もありますね。
その2 視覚的な「読」
コードを読むとき、視覚的にぱっと見て分かる事は重要です。適度な記号性がそれを可能にするのですが、それはいわゆる「C言語系のシンタックス」になります。広い意味で、Swiftもここに落ち着いたと言えるでしょう。
その3 論理的な「読」
記号の抽象度をより高めていくとき、行き着く先の一つは機械語やアセンブラになります。コーディングにおける人間的思考を脇に追いやり、ハードウェアの論理が主となります。そして、もう一つの方向性が、人間的論理の徹底としての言語、つまり数学的なプログラミング言語があります。ここで「数学的」というのは正確には離散数学のことで、「ツリー」や「リスト」の処理が得意なLISPがその代表格です。
LISPは、独りで前代未聞の問題にチャレンジするときには絶大な効果を持ちます。いや使ったこと無いけどさ(汗)。でも実際にアルゴリズム開発するときに、もしLISPだったら・・・なんて本気で思ったことはありました。所詮、LISPはグラハム専用機です。天才が天才的な事を考えるとき、どうぞ。でも、そこで得られた悟りは他人にはシェアされません。そもそも悟りとはそーゆーもんですw 他人の書いた((()))だらけのLISPコードなんて読みたくねーよ。
その後、LIPSの機能をより視覚的に読みやすくする形で、つまりC言語っぽい文法を採用する形でJavaScriptやRubyが生み出され、その後これらの言語が普及していくのはある意味で必然だったと言えます。はてさて、Swiftはこの先生きのこることかなふなりや?