Swift ve Objective-C Arasındaki Farklar

Son bir kaç senenin geliştiriciler arasında en gözde sorularından birisi olan “Swift ve Objective-C arasındaki farklar” sorusuna mobil uygulama geliştiren geliştiriciler kendilerine göre cevap vermektedirler fakat bu işe yeni başlayacak olan kişilerin hangi dili neden tercih etmeleri konusunda herhangi bir bilgi vermemektedirler.

Bende bu konuya bilgim dahilinde bu işe yeni başlayacak ya da kafasında soru işareti olanlar için elimden geldiğince cevap vermeye çalışacağım.

Objective-C Nedir?

Danimarkalı bilgisayar bilimci Bjarne Stroustrup C++’ı henüz geliştirme aşamasındayken, Brad Cox‘da 1982’de Objective-C dilini geliştirmeye başladı. Cox ve takım arkadaşı Tom Love, uzun çalışmalar sonucu nihayet 1986’da Objective-C’yi resmen yayınladılar.

Bu sırada 1985 tarihinde Apple şirketinden kovulan Steve Jobs, NeXT isimli bir şirket kurmuş ve NeXTstep isimli bir bilgisayar üretmeye çalışıyordu. NeXT mühendisleri NeXTstep’de çalışacak işletim sistemini Objective-C programlama dili ile yazmaya karar verdiler ve oluşturdukları kütüphanelerde ön ek olarak bilgisayarın ismine ithafen “NS” kısaltmasını kullandılar. Zaman içinde bu kütüphanelerde çok büyük değişiklikler olsa da “NS” kısaltması sabit kaldı.

1990’lı senelere gelindiğinde Apple pazar payını kaybetmeye başlamıştı ve Mac OS beklentileri artık karşılayamıyordu. Apple yeni işletim sistemi projeleri başarıya ulaşamayınca 1996’da NeXT’i satın aldı ve Mac OS X, NeXT’in tecrübesi ve kütüphaneleri dolayısıyla Objective-C ile geliştirilmeye başlandı. Objective-C OS X’in temelini oluşturması nedeniyle Apple içerisinde kalıcı hale geldi. Apple 2006 yılında çeşitli özellikler eklediği Objective-C 2.0’ı yayınladı ve iOS işletim sisteminde de Objective-C programlama dilini ana programlama dili olarak belirledi.

Swift Nedir?

Swift’in tarihçesi Objective-C diline göre epey kısa. Swift dili Apple’da geliştirici araçları biriminde çalışan (ve daha sonra bu birimin başına geçen) Chris Lattner’ın uğraşları sonucu 2010 yılında gizlice Swift’i geliştirmeye başlayan ve Lattner’ın Swift dilinin temel özellikleri çalışır hale getirdiği 2011 yılında Apple’da ki üstlerine sırrını açıklıyor ve ardından kısa bir süre sonra Swift üzerinde çalışan ekip büyüyor. Şirket içinde yürütülen yaklaşık 2.5 yıllık gizli çalışmanın ardından da Swift geliştiriciler için Apple tarafından duyuruluyor.

Swift ve Objective-C Yetenek Farkları

Swift henüz yeni çıkmış diyebileceğimiz bir dil olması sayesinde Objective-C’ye oranla daha yeteneklidir. Bu dilde geliştiriciler diğer dillerde bulunan ve sevilen özellikleri bir araya toplamış. Bir fonksiyondan birden çok değer döndürme (Tupple), değişken tanımlarken her seferinde tipini yazmaya gerek olmaması (Type Inference), Class-Struct-Enum içerisinde başka Class-Struct-Enum tanımlayabilme (Nested Types), +, -, *, / gibi standart operatörleri kendi tanımlarının dışında kullanabilme (Operator Overloading) ve hatta kendi operatörünü tanımlama gibi Objective-C dilinde bulunmayan pek çok özellik bu programlama diline eklenmiş.

Elbette ki yapacağınız işe bağlı olarak Objective-C dilinde pointerlara doğrudan erişilebiliyor olması ve preprocessor komutları yaptığınız işi kolaylaştırabilir fakat bunları gerçekleştirmenin de Swift üzerinde çeşitli yolları mevcut.

Swift ve Objective-C Söz Dizimi Farkları

Objective-C, uzun zamandır farklı söz dizimi yüzünden geliştiriciler tarafından sürekli eleştirilmektedir. Özellikle C# yada Java gibi modern dillere alışmış programcılar için Smalltalk ve C’nin birleşiminden doğan söz dizimi tam bir fiyasko. Aşağıda verdiğim örnekte çok daha rahat bir şekilde anlayabiliriz.

Objective-C ile hazırlanan bir kod örneği;
NSArray * dizi = [[NSArray alloc] initWithArray: @[@"Selam", @"Koddit"] copyItems: NO];

Swift ile hazırlanan bir kod örneği;
let dizi = Array(count: 5, repeatedValue: "MertDoğan(MythDev)");

Örneğe bakacak olursak tek bir satır içerisinde “*”, “[]”  ve “@” gibi tanıdık gözükmeyen ve okumayı zorlaştıran pek çok karakter mevcut. Swift ise Objective-C’ye nazaran daha “tanıdık” bir söz dizimine sahip.

Swift ve Objective-C Arasındaki Esneklik

Swift ile kod yazmak Objective-C’ye göre çok daha esnek. Apple’ın resmi dökümanlarında neredeyse her konu için “isterseniz bu şekilde de kodlayabilirsiniz” şeklinde bir örnek var. Mesela aşağıdaki örneğe baktığımızda 4 satır da String’lerden oluşan bir dizi tanımlıyor;

let dizi = [String]();
let dizi2 = Array()
let dizi3: [String] = Array();
let dizi4: Array = [String]()

Elbette Objective-C dilinde diziyi birden çok şekilde tanımlamak mümkün fakat Objective-C’de farklılıklar genel olarak söz diziminden değil, farklı metotların çağrılmasından kaynaklanıyor. Bu arada örnek kodda noktalı virgülün bazı satırlarda olmaması da bir hata değil, noktalı virgül kullanımı tıpkı JavaScript de olduğu gibi Swift’de de isteğe bağlı.

Swift ve Objective-C Arasındaki Performans

Apple Swift’in Objective-C’ye göre çok daha hızlı olduğunu iddia ediyor fakat bunu kesin olarak doğrulayan bir bulgu henüz yoktur. Zaten teorik olarak da Objective-C’nin çalışma şekli nedeniyle Swift’in biraz daha hızlı olması çok normal bir durum.

Sonuç

Objective-C söz dizimi biraz korkutucu gözükse de Swift’in püf noktalarını öğrenebilmek daha zor. Diğer yandan zaten iOS’a yada OS X’e nasıl uygulama hazırlayacağınızı öğrenirken vaktinizin çok büyük kısmını Apple kütüphanelerini öğrenerek harcayacaksınız.

Eğer kendi uygulamanızı hazırlamak istiyorsanız ve yeterli vaktiniz varsa Swift öğrenmenizde fayda var fakat vaktiniz kısıtlıysa Objective-C öğrenmeniz daha mantıklı olacaktır.

Swift’de Objective-C’de mükemmel değil. İkisinin de kusurları illa ki mevcut. Aralarındaki fark, Swift 2010 senesinde geliştirilmeye başlamasının etkisiyle daha modern çözümler sunmaktadır.

Önerilen Gönderiler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir