Swift ?

Swift သုံးသင့်ပြီလား ?
ရေးသားသူ : saturngod

Apple က Swift ကို ကြေငြာပြီးတဲ့ နောက်တနေ့မှာပဲ Swift စာအုပ်ကို iBooks store ကနေ ပထမ နေ့မှာ တင် ၃၇၀,၀၀၀ ရှိပါတယ်။ Swift ဟာ modern langauge ဖြစ်ပြီးတော့ ရေးရတဲ့ အခါမှာ Safe ဖြစ်တယ်။ နောက်ပြီး Unicode ကို variable အဖြစ်ပေးလို့ရတယ်။

var 🙏: String? = "မြန်မာ font ကို iOS မှာ ရပါစေ"

if let တောင်းဆု = 🙏 {
    var ရလဒ် = ""
    for ရက် in 0...6 {
        //၁ ပတ်ပြည့်လျှင် ပြည့်စေ
        if( ရက် == 6 )
        {
            ရလဒ် = "သင့် တောင်းဆု ဖြစ်သော '\(တောင်းဆု)' သည် iOS 8 ထွက်လာလျှင် ပြည့်စေ"
        }
    }
    ရလဒ်
}

Swift ကို Production App အတွက် အသုံးပြုမယ်ဆိုရင် အသုံးပြုလို့ရ ပြီလား ဆိုရင်တော့ ရပါပြီ။ သို့ပေမယ့် Risk များပါတယ်။ Swift က beta အဆင့်ပဲ ရှိသေးပြီးတော့ Yosemite နဲ့ Xcode 6 beta 2 မှာ SourceKitService က CPU usage များပြီး Xcode ကို နှေးစေပါတယ်။ ဒါကြောင့် တခါတလေ auto complete နဲ့ syntax highlighting တွေက ပျောက်သွားတတ်ပါတယ်။

Swift VS Objective-C

နောက်ပြီးတော့ လက်ရှိ အချိန်မှာ Swift က Objective-C လောက် မမြန်သေးပါဘူး။

အောက် က Code ၂ ခုဟာ တစ်ခုက swift နဲ့ ရေးထားပြီးတော့ တစ်ခုက Objective-c နဲ့ပါ။ စမ်းထားတဲ့ စက်ကတော့

MacBook Pro 15-inch Late 2011

OSX 10.9.3

Processor 2.2 GHz Intel Core i7

Memory 8GB 1333 MHz DDR3

ပါ။

let start = NSDate()
for var i = 0; i <= 1000000; ++i {

}

var end = NSDate()        
var timeTaken = end.timeIntervalSinceDate(start) * 1000        
println(timeTaken)
NSDate * start = [NSDate date];    
for (int i=0; i<=100000; i++) {

}
NSDate * end = [NSDate date];
double timeTaken = [end timeIntervalSinceDate:start] * 1000;
NSLog(@"%f",timeTaken);

Swift အတွက် Compiler flag ၃ ခု နဲ့ စမ်းထားပါတယ်။ Release လုပ်တဲ့ အခါမှာ -O (Fastest) ကို Swift က အသုံးပြုပါတယ်။ Debug မှာတော့ None ပါ။ အချိန်တွေ အားလုံးက Millisecond value တန်ဖိုးတွေပါ။

Swift [None -Onone] 18.4089541435242
(Release)Swift [Fastest -O] 0.723004341125488
Swift [Fastest , Unchecked -Ofast] 0.00602006912231445

Objective-C အတွက်ကတော့ Compile Flag ၆ မျိုးရှိပါတယ် ။ Release လုပ်တဲ့ အခါမှာ Fastest Smallest ကို အသုံးပြုပါတယ်။ အကုန်လုံးနဲ့ စမ်းထားတဲ့ ရလဒ်ကတော့

Objective-C [None] 0.312984
[Fast -O, O1]  0.007987
[Faster -O2] 0.011981
[Faster -O3] 0.008047
(Release)[Fastest Smallest] 0.007033
Fastest,Aggressive Optimizations [-Ofast] 0.008047

Swift နဲ့ Objective-C ဟာ Debug လုပ်တဲ့ အချိန်မှာ အတော်ကို ကွာပါတယ်။ Swift ကို Unchecked -Ofast နဲ့ compile လုပ်ဖို့ recommend မလုပ်ကြပါဘူး။ Compile အဆင်ပြေပေမယ့် Safe မဖြစ်လို့ပါ။

Release version နဲ့ Swift နဲ့ Objective-C မှာ အစ ၁၀၀ နီးပါး ကွာခြား နေတာကို တွေ့နိုင်ပါတယ်။ Looping နဲ့ မဟုတ်ပဲ အခြား code တွေနဲ့ စမ်းသပ်ထားတာတွေကိုလည်း online မှာ ရှာကြည့်နိုင်ပါတယ်။ လက်ရှိ မှာတော့ Swift ဟာ Objective-C ထက် နှေးပါတယ်။ Apple ပြောသလို Swift က လက်ရှိ မှာတော့ Objective-C လောက် မမြန်သေးပါဘူး။

only Swift ? Is it enought ?

Swift တစ်ခုပဲ လေ့လာရင် လုံလောက် မလား မလုံလောက်ဘူးလား ဆိုတာကတော့ ကိုယ်လုပ်တဲ့ အလုပ်နဲ့ ဆိုင်ပါတယ်။ တကယ်လို့ Company မှာ လုပ်နေရင်တော့ Company က လက်ရှိ Objective-C နဲ့ library တွေ ရေးထားခဲ့ရင် Objective-C ကော Swift ပါ လေ့လာသင့်ပါတယ် ။ အခုမှ Swift ကို စမယ် တကိုယ်တော် ရေးတယ်ဆိုရင် Swift တစ်ခု တည်း လေ့လာရုံနဲ့ ရပါတယ်။

Swift ကို Objective-C နဲ့လည်း တွဲသုံးနိုင်ပါတယ်။ iOS Development ကို လုပ်တော့မယ်ဆိုရင် language ထက် framework က အရေးပါပါတယ်။ Swift language စာကို ဖတ်ပြီး swift ကို သိသွားပေမယ့် iOS SDK နဲ့ သူ့မှာပါတဲ့ framework တွေကို မသိရင် iOS app ရေးလို့ မရပါဘူး။

လက်ရှိ လူသုံးများတဲ့ library တွေက Objective-C နဲ့ ရေးသားထားတာပါ။ Objective-C ကို အရင် လေ့လာထားရင် iOS Development အတွက် အထောက် အကူပြုပါလိမ့်မယ်။ Objective-C ရဲ့ Syntax , Control Flow တွေကတော့ Swift လောက် ရိုးရှင်း လွယ်ကူမူတော့ မရှိဘူး။

Apple အနေနဲ့ လက်ရှိ Framework တစ်ခုလုံးဟာ Swift ကိုမပြောင်းသေးပါဘူး။ နောက်ပြီး WWDC 2014 ရဲ့ App ကို Swift နဲ့ ရေးထားတယ် ဆိုပေမယ့် တစ်ခုလုံးကို ရေးထားတာ မဟုတ်ပါဘူး။ တစိတ်တပိုင်းကို သာ Swift အသုံးပြုပြီး ရေးသားထားပါတယ်။

တကိုယ်တော် သမားတွေ အတွက် Swift သီးသန့် က လုံလောက်ပါတယ်။ တကယ်လို့ အများနဲ့ အလုပ်လုပ်မယ် iOS framework တွေ ကို ကောင်းမွန်စွာ သုံးတတ်ချင်တယ်ဆိုရင်တော့ Objective-C ကို secondary အနေနဲ့ လေ့လာထားသင့်ပါတယ်။