Advanced Swift メモ - 2. Introduction (1)
Advanced Swift を読んでのメモ。 www.objc.io
英語レベルは低いので間違っている箇所は普通にあると思います。
Swiftはあなたが選択したプログラミング言語と似ているように見える。
- 低レベルなビット操作(とパフォーマンスチューニングができる点)は、C言語に似ている。
ただし、たくさんの未定義動作の落とし穴は除外されている。 - mapやfilterなどの軽量な接尾クロージャは、Rubyプログラマにお馴染みのもの。
- SwiftのジェネリクスはC++のテンプレートに似ている。
ただし、型制約は使用時ではなく宣言時に正しいことが保証される。 - 柔軟な高階関数や演算子オーバーロードは、HaskellやF#のようなコードを書けることを意味する。
@objc
キーワードを使用すれば、Objective-Cのセレクタや動的ランタイムが使用できる。
これらの類似は、他の言語のイディオムを採用できることを意味する。
- 適例として、Objective-Cのプロジェクトの機能の殆どはSwiftに移植できる。
- JavaやC#のデザインパターンをSwiftで実装する本はすぐに出版された。
- ニューウェーブとして、Monadのチュートリアル的なブログ記事が生まれた。
しかし、(これらの類似は同様に)フラストレーションももたらした。
- なぜ、Protocol Extensions の関連型は、Javaのインターフェースのように使えないのか。
- なぜ、配列は私達の期待通りに共有されないのか。
- なぜ、Fanctor(ファンクター)が書けないのか。
- 時々ある答えとして、Swiftではまだ実装されていないというものがある。
- (ここから先は自信が無いので後で)
Swiftは多くのプログラミング言語の複合体になっている。
- しかし、上手に複雑さを隠している。
- あなたがSwiftでアプリを開発し始める時に、ジェネリクスやオーバーロード、静的ディスパッチと動的ディスパッチの違いを理解している必要はない。
- たぶんあなたは、Cで書かれたライブラリを呼び出したり、自前のコレクション型を書くことは無いだろう。
- しかし、しばらくして、最終的には以下の様なことを知る必要がでてくる。
- コードのパフォーマンスを改善したり、
- よりエレガントに表現したり、
- 特定の事を実現するために
こうやって日本語に落としてみると、翻訳という作業がいかに大変なのかに気づく。
つづく?