Pebble's Diary

プログラマーの作業メモ

swiftの好きなところ、嫌いなところ

swiftの好きなところ嫌いなところです。 比較対象はObjectiveCなので、ObjectiveCにある機能やC++にある機能は除きます。

swiftの好きなところ第3位

未初期化の変数があるとコンパイルが通らない。

f:id:pebble8888:20151205122745p:plain

よくある言語実装のように、変数があったらデフォルト値で初期化するという方法もありますが、 swiftは未初期化の変数があったらコンパイルエラーにするという手法を選びました。

swiftの好きなところ第2位

C言語の機能をほぼ内包している。 C言語の関数ポインタも直接扱えるし、mallocと同じこともでき、ポインタは専用のクラスがある。

swiftの好きなところ第1位

typealiasとextension

以下のようなことができます。 クラスを作らずにtypealiasとextensionだけでそれに近いことができて感動しました。

import Foundation

typealias Price = Int64

extension Price {
    func tax() -> Price
    {
        return Int64(Float(self) * 0.08)
    }
}

class Book
{
    var price:Price
    init()
    {
        price = 100
        print(price.tax())
    }
}

swiftの嫌いなところ第3位

objcと併用した場合、コンパイラが不安定。ビルドが遅い。 徐々に改善されるのを待つしかないですね。

swiftの嫌いなところ第2位

C++が使えない。 C++の資産が一切使えないのが痛いです。 swiftに移植するか、ObjC++のラッパーを作るかですが、どちらも多大なコストが発生します。 将来的には対応されるかもですが、swift3ではないようです。

swiftの嫌いなところ第1位

コンカレント対応が皆無。 変数アクセスのatomic性さえ保障されていません。 C++ですら対応されているので、atomic性くらいは 言語サポートがあってもいいんじゃないかなと思います。 swift3ではなさそうです。