Swift vs Objective-C

Blog

Bir iOS projesine başlamak, önemli bir karar vermeyi içerir: gelişim için dili seçmek. Yerel mobil uygulama geliştirmeye gelince , iki olasılık var: Objective-C ve Swift. Aralarındaki farklar nelerdir? Her birinin artıları ve eksileri nelerdir? Ve nihayet projeniz için hangi dil daha iyi olacak?

 

Dillerin temel özellikleri ve özellikleri

Objective-C, 1980'lerin başında Stepstone şirketi tarafından oluşturulan uzun süredir devam eden bir programlama dilidir. 1988 yılında Brad Cox ve Tom Love, “Nesneye Yönelik Programlama: Evrimsel Bir Yaklaşım” adlı bir kitap yayınladığında halka duyuruldu. 1980'lerin sonunda, Objective-C, NeXTStep çerçevelerini geliştirmek üzere NeXT Computer, Inc. tarafından lisanslandı ve sonunda Apple tarafından satın alındı. İOS uygulamaları geliştirme alanında yıllarca standart hale geldi.

Objective-C, diğer iki programlama dilinin etkisi altında yaratıldı: C ve Smalltalk. Bu yüzden böyle karmaşık ve ayrıntılı bir sözdizimine sahip. Nesne yönelimli olmayan işlemler için sözdizimi C ile aynı iken, nesne sözdizimini Smalltalk'ten türetir. Objective-C, dinamik yazma ve ileti iletimini kullanır . Ayrıca sınıfları iki kod bloğuna bölmeyi gerektirir: arayüz ve uygulama.

Swift nispeten yeni bir programlama dilidir. Apple, 2010 yılında Swift üzerinde çalışmaya başladı ve 2014 yılında halka açıldı. 2015'te Swift açık kaynak oldu. Smalltalk ve C mirasını ortadan kaldırır ve modern programlama dillerinin sahip olduğu tüm özelliklere sahiptir: jenerik , opsiyonel , tip çıkarımı ve üst düzey fonksiyonlar .

Gelişim hızı

Bir dilin özellikleri teknik olarak kulağa gelebilir, ancak iş geliştirme yönlerinde, özellikle de gelişme hızlarında çok büyük bir etkiye sahiptir. Swift'deki uygulama geliştirme Objective-C'den daha hızlı. Jenerik ve yüksek dereceli fonksiyonların kullanılması, daha temiz, daha fazla yeniden kullanılabilir kod sağlar. Opsiyonlar ve tür çıkarımı, programlayıcıdan derleyiciye aktarılan kod güvenliği sorumluluğuyla sonuçlandı. Daha kısa ve özlü sözdizimi ve bir sınıf arayüzü ve uygulaması için iki kod bloğu oluşturmaya gerek kalmadan programcıların Objective-C ile aynı etkiye sahip daha az kod satırı yazmasına izin verin.

Bütün bunlar gelişimi daha hızlı hale getirir. Bu sadece bir teori değil - ve resmi bir araştırma olmasa da, bu gerçeği kendi tecrübelerimden ve iOS geliştirici meslektaşlarımın deneysel deneyimlerinden doğrulayabilirim .

Diğer artılar ve eksiler

Swift'deki gelişim daha hızlıdır, ancak önemli iş kararları alırken göz önünde bulundurmanız gereken tek faktör bu değildir. Bu iki dilin diğer avantajları ve dezavantajları nelerdir?

Objective-C'nin Artıları:

  • Uzun yıllar boyunca var olmuştur ve iyi bir şekilde test edilmiştir. Objective-C de yazılmış milyonlarca kod satırı vardır. Pek çok iyi belgelenmiş, üçüncü parti çerçeve var ve hemen hemen her soru için bir cevap var.
  • C ve C ++ ile iyi uyumluluk. Objective-C, C'nin bir üst kümesi olduğundan ve bu nedenle C veya C ++ koduyla çalışmak nispeten sorunsuz çalışır.
  • Kararlı. Objective-C'de bir uygulama geliştirirseniz, muhtemelen birkaç ay sonra uygulamayı yeni bir dil sürümüne geçirmek için para harcamanıza gerek kalmayacak.

Objective-C Eksileri

  • Öğrenmesi zor. Objective-C, diğer popüler programlama dillerinden önemli ölçüde farklıdır ve bellek yönetimi oldukça karmaşıktır. Bu yüzden Swift'i öğrenmek, Objective-C ile aşina olan geliştiriciler tarafından tam tersine daha kolaydır.
  • Geliştiricilerin sayısını azaltmak. Objective-C öğrenmesi zor olduğundan, Swift'i Objective-C öğrenmekten daha yeni öğrenen geliştiriciler var. Öte yandan, Objective-C'yi tanıyan deneyimli geliştiriciler genellikle Swift'i bilir veya en azından öğrenmeye hazırdır.
  • Objective-C'de geliştirilen bir uygulama, Swift alternatifinden daha kolay kesmek için daha kolay olabilir. Objective-C iyi bilindiğinden ve yıllarca var olduğundan, tersine mühendislik araçlarının da iyi bir şekilde geliştirildiği anlamına gelir.

Swift'in Artıları

  • Swift daha güvenlidir. Özellikleri nedeniyle - jenerik, isteğe bağlı ve tip enterferans - Swift'de geliştirilen uygulamalar, Objective-C'de geliştirilen uygulamalardan daha az hataya ve çökmeye eğilimlidir.
  • Apple Swift üzerinde duruldu. Apple bu dili sürekli geliştirir ve toplumu destekler. Her WWDC'de Swift hakkında inanılmaz teknik konuşmalar var; Swift'in ciddiye alınması gerektiğini belirten öncül.
  • Geliştirici ekibinizle daha popüler olacaksınız :). Bir göre 2017 yığın taşması Geliştiriciler Anketi Objective-C en korkulan biri iken, Swift, en çok tercih edilen programlama dilleri ön planda yer almaktadır.

Swift Eksileri:

  • Göçler ve değişimler. Bu muhtemelen Swift ile uygulama geliştirmenin en zayıf noktası. Ancak, halihazırda ABI istikrarını sağladıktan sonra eskisi kadar ağrılı değil ve kesinlikle iyileşmesi gerekiyor . Dilde yapılan sürekli değişiklikler nedeniyle daha problemlidir. Geliştiricilerin uygulamaları en yeni sürümlere geçirmeleri gerekiyordu. Bu zaman ve paraya mal olur. Neyse ki, zaman geçtikçe, dilin sonraki sürümlerinde değişiklikler daha da küçülüyor.

Davaları kullanın

Kamilah Taylor ve Kyle Sherman, LinkedIn’de Swift kullanımı hakkında etkileyici bir konuşma yaptı . Onların vardığı sonuçlar Swift'in küçük, yepyeni uygulamalar için harika olduğu, ancak büyük, zaten var olan Objective-C kod tabanlarına sahip büyük projeler için en iyi çözüm olmayabilir. Bu konuşma yaklaşık iki yıl önce gerçekleşti. Bugün, Swift daha olgunlaşmış ve daha önce artan acılarından çok daha fazla büyüdü.

öneriler

Çoğu durumda, Swift'de bir uygulama geliştirmek daha iyi bir seçimdir. Ancak, Objective-C'yi seçmeniz gereken iki durumu düşünebilirim:

  • Bir uygulama zaten Objective-C dilinde yazılmıştır ve yalnızca yeni özellikler eklemeniz gerekir. Swift, Objective-C ile birlikte çalışabilir, bu iki dili bir projede başarıyla kullanabilirsiniz. Ancak, bu en iyi seçenek olmayabilir. İki dille geliştirilen bir uygulamayı sürdürmek sorunlara neden olabilir. Bazı uç vakaların olabileceğinin farkında olmalısınız. Her iki dilde de yetkin bir geliştiriciye ihtiyacınız var. Bunun ötesinde, bağlam geçişi, geliştirici için işi yavaşlatır, çünkü günlük programlama dilleri arasında geçiş yapması gerekir.
  • Kapsamlı bir C veya C ++ üçüncü taraf çerçevesi kullanmanız gerekir. Bu durum nispeten nadir görülür. Böyle bir durumda, Objective-C, C'nin bir üst kümesi olduğundan, bu dili kullanmayı düşünmeye değer olabilir.

özet

Yeni bir iOS projesi başlatmak söz konusu olduğunda, hangi programlama dilinin kullanılacağına dair karar çok önemlidir. Mimari veya kullanılan çerçeveler gibi diğer seçenekleri de etkileyecektir. Swift'deki gelişim, geliştiricinin bakış açısından daha hızlı, daha güvenli ve daha zevklidir. Öte yandan, kararlar her zaman belirli bir bağlamda alınmaktadır . Swift harika, ama gümüş bir kurşun değil. Objective-C'nin doğru seçim olabileceği bazı durumlar hala var.