bbs
oopers.com
5459 OOPer: 2015-12-18 07:21:45 1
Evolution
Evolutionって言葉を見聞きするたびにウルトラマンティガの「エボリュー細胞」が出てくる回を思い出してしまうのだが…。

思ったよりも意思決定のプロセスは素早く進行しているようで。

現在Review中:
(swift-evolutionのMLは先に書いたようにカオスなんで(英語読みが好きな人はケイオスと読むように)、「Reviewの開始」みたいな情報を見逃さずに追っかけたいなら、swift-evolution-announce の方をチェックしといた方が良いらしい。)

December 15--17, 2015: SE-0008 (後数時間で終了)
LazyなflatMapをOptionalなSequenceTypeに追加しようって案。あっても実害はないが、私的にはOptionalにメソッドが存在すること自体が気にくわない。

December 16--20, 2015: SE-0009
インスタンスメンバーのアクセスにself.の付加を必須にするって提案。単にObjective-Cのメソッド呼び出し構文やプロパティ構文に慣れてるだけの奴の戯言だと思っていたが、あっという間にReviewフェースに上がってしまった。後数日でReviewも締め切られる。皆様「反対」に清き一票を。

間も無くReview開始:

December 18--21, 2015: SE-0014
AnySequenceのイニシャライザに制約を追加して、ベースになるSequenceTypeのメソッドとかをもうちょっと使いやすくしましょうという提案。あんまりAnySequeceとかは使ってなかったんで、影響もよくわからないし、私的には実害はない。

すでにSwift3.0(来年秋の予定)に採用が決まったもの:

カリー化func定義の廃止
 「関数型言語っぽいことができるよ」のデモ以外にはあまり使われていないから仕方ないだろう。

関数パラメーターやcase文・for文のパターンからvarを廃止する
 ちょくちょく使われてるんだけどね。inoutとの違いがわかりにくい(ってか、初心者が間違いやすい)ってのは確かにそうなんだが。

++演算子と--演算子の廃止
 能書きはあれこれ書いてあるんだが、私的には廃止しないといけないほどの理由なのかどうかわからんかった。オブジェクト指向的に純化したいんなら、ほかの全ての演算子の位置付けももう一度考え直してみて欲しいぞ。

C形式のfor文の廃止(これはオープンソース後のReviewを通過しちまった)
 for var i =0; i ※見ればわかるように多くのプログラムで「これたくさん使ってるよ」的な機能や構文が廃止予定。今後の議論にはいっちょかみしとかないと、Swiftがあなたの好きな言語ではなくなっちゃうかもですよ。

Swift2.2に採用が決まったもの:

(ほとんど)全てのキーワードを関数・メソッドの外部名に使用できるようにする
 コンテキスト依存の構文解析をうまくやることで、今まで``が必要だった外部名から``を省けるってだけ。

と言うわけで、Swift3.0でも、また既存のコードに大幅な修正が必要になる超破壊的な変更が行われることは間違いないようで。Swift2.1が出て、「そろそろSwift移行を本気で検討しても良いんじゃないですか」なんてあちこちで言っていたのだが、何万行もある巨大ソースのアプリを抱えている開発者は、もうちょっと待った方が良いかもしれない。同時にMigratorもオープンソース化されているわけだが、新機能の提案に比べてmigratorのメンテ・改良はあまり興味の湧かない題材みたいだから、大きな期待はしない方が良いと思うぞ…。

とりあえず、NDAとか気にせずにSwiftネタを自由に書けるというのは良いもんだ。オープンソース万歳だな。