動的プログラミング脳
Heart of Swiftを読んでる。
コンピュータサイエンスだったりはちゃんと学んだことがなかったので言語の振る舞いに関するキーワードには弱いのだけど、丁寧に用語が説明されていて参考になる。
自分の経歴的にはScratch/Processing/C++(openFrameworks) → Ruby/JavaScript → (Swiftちょっと) → TypeScript → Swift(今) という感じになっていて、Swiftを書いていた時期も単純なアプリケーションではあったから、Protocolってinterfaceの代わりだよね、くらいの緩い理解でいた。(それである程度のコードは書けてしまうものだ)
ただ、GenericsとProtocolを組み合わせていると思ったようにコードが書けない(コンパイルが通らない)ことが趣味のSwiftプロジェクトで発生していて、困っていたところだった。そうした問題をこのWebサイトは解決してくれる。
Heart of Swiftを読んで、Swiftを書くときはコンパイラがどのように解釈するのかをある程度想像しながら書いていった方がスムーズに書けそうだなと感じた。RubyやJSを書いていたときは、例えばArrayに何を突っ込んだとて、何らかのメソッドが生えていれば(メッセージに応答できれば)何だっていいだろう、みたいな雑な考えていたけれども、Swiftの場合はもう少し丁寧に扱ってやる必要がある。(そう考えるとTypeScriptは色々すごい。)
個人的なイメージとしてはTypeScriptはギプスやサポートツールみたいな立ち位置もので、型という言語レベルのドキュメントをコードに落とし込むことができて、ある程度のチェックがあり、それをエディタ(実態はLanguage Serverかもだけど)がサポートしてくれていることが嬉しいポイントなのだろうと思った。いざとなればas/anyとか色々抜け道はあるわけだし。
自分のルーツというか軸は動的プログラミング言語にあったのかもしれないなということを思ったのでした。