Swift vs Objective-C: The trending up-and-comer vs dinosaur

Sejarah ringkas Swift

Saya ingat betapa pentingnya ketika Swift diperkenalkan pada 2014 WWDC Apple (Worldwide Developers Conference). Itu adalah perbincangan bandar dan semua devs yang saya bekerjasama tidak sabar untuk mencubanya. Komuniti iOS sibuk dan terdapat banyak kegembiraan di sekitar bahasa baru.

Ini dikembangkan untuk menjalankan beberapa konsep yang kita lihat dalam Objektif-C seperti pengaturcaraan yang dapat diperluas. Tetapi ia mendorong pendekatan yang berbeza untuk pengekodan dengan reka bentuk berorientasi protokol dan peningkatan keselamatan dengan menaip statik.

Ini adalah kejayaan besar dan melihat roket langit pertumbuhannya pada tahun-tahun selepas diperkenalkan. Ia adalah bahasa pengaturcaraan yang paling disukai pada tahun 2015, bahasa kedua yang paling disukai pada tahun 2016, bahasa pengaturcaraan ke-11 paling popular pada tahun 2017, mengalahkan Objective-C, dan juga mengalahkan Objective-C pada tahun 2018.

Swift juga menjadi pertaruhan oleh Apple untuk memenangi pemula untuk menjadi pembangun iOS. Harapannya ialah pembangun baru akan mempelajari bahasa dan menggunakannya untuk membina aplikasi iOS. Ini kemudian meningkatkan ekosistem app store. Oleh kerana Swift dioptimumkan untuk berfungsi dengan aplikasi iOS, ini memastikan aplikasi yang ditulis berkualiti tinggi.

Populariti Swift hanya terus meningkat, terutamanya untuk aplikasi dan permulaan yang lebih kecil. Jurang antara Swift dan Objective-C hanya akan terus bertambah. Masa depan cerah untuk bahasa muda ini.

Sejarah ringkas Objektif-C

Objective-C adalah bahasa pengaturcaraan berorientasi objek yang merupakan superset dari C, seperti nama bahasa yang mungkin diungkapkan. Ini bermaksud bahawa setiap program C yang sah akan disusun dengan penyusun Objective-C. Ia memperoleh semua sintaks berorientasikan objek dari C dan sintaks berorientasikan objek dari SmallTalk. Ia dikembangkan pada tahun 1984, sehingga memiliki waktu untuk matang sebagai bahasa dan jauh lebih stabil daripada Swift.

Kebanyakan orang tahu Objective-C sebagai bahasa yang digunakan untuk mengembangkan aplikasi untuk iPhone, tetapi sejarahnya jauh lebih mendalam daripada itu. Saya akan mengesyorkan membaca artikel ini untuk melihat lebih mendalam.

Kekuatan Swift

Swift telah berkembang sangat popular kerana beberapa sebab utama. Pertama, terdapat banyak alat pembangunan hebat yang disediakan Apple untuk bekerja bersama dengan Swift. Salah satu kegemaran peribadi saya adalah Taman Permainan, yang hanya serasi dengan Swift. Apple memperkenalkan Playgrounds pada tahun 2016. Mereka diperkenalkan sebagai cara untuk belajar membuat kod, tetapi saya menyukainya kerana alasan yang berbeza.

Pembangunan mudah alih selalu mempunyai lebih banyak sekatan daripada pembangunan web. Anda memerlukan simulator, anda biasanya memerlukan Persekitaran Pembangunan Bersepadu (IDE), dan anda perlu menyediakan keseluruhan projek hanya untuk menguji beberapa prototaip kecil. Dalam kes Apple, anda juga memerlukan akaun pembangun. Perkara yang baik tentang Taman Permainan adalah anda dapat mengetahui sebahagian daripada perkara ini. Anda memang memerlukan Xcode atau aplikasi Playgrounds, tetapi itu sahaja. Dan anda boleh memulakan pengekodan dan penyusunan kod anda dengan segera.

Namun, satu lagi kelebihan besar Swift adalah hakikat bahawa ia adalah sumber terbuka. Sekiranya anda pernah tertanya-tanya bagaimana bahasa pengaturcaraan berfungsi dengan baik, anda boleh melihat sendiri! Ini adalah kaedah terbaik untuk memahami bahasa pengaturcaraan yang anda gunakan setiap hari pada tahap yang lebih mendalam.

Sebutan terhormat merujuk kepada utiliti yang bagus hanya tersedia untuk Swift, Pengurus Pakej Swift. Swift Package Manager hanyalah pengurus dependensi yang disatukan dengan sistem build Swift. Ini bukan pengubah permainan dengan cara apa pun, kerana CocoaPods dan Carthage telah melakukan pekerjaan ini sejak dulu, tetapi ia adalah penyelesaian lain yang tersedia jika diperlukan.

Banyak bukti di sini menyokong kenyataan bahawa Apple melakukan banyak perkara untuk menjadikan Swift lebih diinginkan sebagai bahasa pengaturcaraan pilihan untuk pembangun iOS. Mereka mencipta utiliti dan alat bantu yang baik untuk menarik minat orang untuk mula menggunakan bahasa tersebut. Ini menunjukkan bahawa Apple mendorong Swift dengan kekuatan penuh.

Ciri bahasa

Mari kita perhatikan beberapa butiran bahasa itu sendiri. Swift lebih selamat kerana menaip statik dan penggunaan pilihan. Di Swift, jika kod anda memerlukan rentetan, ciri-ciri Swift akan menjamin bahawa kod anda mendapat rentetan dan bukan jenis lain, seperti int. Ini tentu bergantung pada jika anda menggunakan bahasa seperti yang dimaksudkan dan tidak memaksa membuka semuanya.

Satu lagi ciri hebat Swift adalah sintaksnya. Terutama jika dibandingkan dengan Objektif-C. Perkataan terbaik untuk menggambarkan sintaks adalah "ringkas". Tidak perlu tanda titik koma, panggilan ke diri sendiri atau tanda kurung jika ada pernyataan. Rasanya seperti anda melewatkan banyak perkara yang sebenarnya tidak anda perlukan. Ini dapat menjadikan proses menaip banyak kod "aliran" lebih baik.

Sebilangan orang mengatakan ini membawa kepada peningkatan kecepatan pembangunan, tetapi saya tidak akan mengatakannya sendiri. Keperluan berterusan untuk membongkar objek untuk mematuhi keselamatan jenis Swift mengimbangi keuntungan pembangunan yang disertakan dengan ringkas.

Swift juga mempunyai banyak pilihan aliran kawalan yang hebat dengan pengawal, jika-membiarkan, pernyataan suis lanjutan, ulangan-sementara dan penangguhan. Saya suka semua pilihan yang berbeza kerana membolehkan orang mengawal aliran kod mereka dengan cara yang masuk akal bagi mereka. Sebilangan besar orang membenci pembela tetapi menyukai penjaga dan sebaliknya. Tidak begitu penting apa yang anda suka atau tidak suka, tetapi pilihannya ada dan anda boleh membuat kod dengan cara yang paling sesuai untuk anda.

Saya tidak dapat melupakan semua fungsi pengaturcaraan yang berfungsi seperti penapis, peta dan pengurangan. Ini bagus untuk mengendalikan koleksi dan sangat berguna.

Kelemahannya

Swift adalah bahasa muda, dan dengan itu, terdapat beberapa perubahan. Penghijrahan antara versi hanya menyakitkan. Di sebuah syarikat kecil, alat migrasi yang disediakan oleh Apple dapat membantu dan merangkumi kebanyakan kes. Menjadi kurang berguna semakin banyak kod yang anda ada. Lebih teruk lagi jika pangkalan kode anda mengandungi kod Objective-C dan Swift yang saling beroperasi.

Di syarikat terakhir saya, usaha penghijrahan memerlukan satu kumpulan khusus sepanjang hujung minggu. Mereka harus melakukannya pada hujung minggu supaya mereka tidak mengalami konflik penggabungan dari kod pemacu devs lain. Ini sangat menyakitkan bagi semua orang yang terlibat.

Alasan untuk migrasi ini adalah hakikat bahawa Swift tidak stabil ABI. Ini bermaksud versi Swift yang lebih baru tidak dapat berfungsi dengan versi Swift yang lebih lama. Itu juga bermaksud bahawa bahasa tidak dapat dikemas dengan OS. Ini adalah masalah besar bagi syarikat dengan aplikasi besar yang secara aktif memerangi ukuran aplikasi kerana Swift disatukan dengan aplikasi dan meningkatkan ukurannya.

Masalah lain ialah Swift tidak bermain dengan baik dengan Xcode. Xcode terasa sangat berombak ketika bekerja dengan Swift dan pelengkapan automatik tidak berfungsi kadang-kadang. Ini pelik memandangkan betapa sukarnya Apple mendorong Swift. Anda akan berfikir bahawa mereka ingin menjadikan pengalaman menggunakan Swift dengan Xcode menggembirakan.

Swift juga mempunyai masalah dengan pengendalian tali, lihat contoh kod di atas. Ia kikuk seperti neraka. Dalam sehari-hari anda, ini tidak terlalu buruk. Perkara yang paling penting adalah semasa temu ramah. Malangnya bagi penyokong Swift, penemuduga suka mengemukakan soalan yang melibatkan manipulasi tali. Ini diburukkan lagi oleh kenyataan bahawa cara penanganan tali telah berubah antara versi Swift.

Kekuatan Objektif-C

Objective-C adalah bahasa yang sangat dinamik dan berorientasikan objek. Secara dinamik, anda boleh menukar kaedah panggilan pada waktu runtime menggunakan teknik seperti Swizzling. Ia dapat melakukan perkara seperti ini kerana paradigma penghantaran mesejnya. Ini membolehkan objek menghantar mesej ke objek lain pada waktu berjalan untuk menentukan pemanggilan kaedah yang dipanggil.

Dalam tujuan praktikal, apakah maksudnya? Nah, satu kelebihan besar adalah kemampuan menyesuaikan diri pada waktu runtime. Ini bererti mengakses API peribadi atau melakukan perkara seperti mengejek objek semasa waktu berjalan menjadi mungkin. Perkara ini sangat berguna ketika melakukan ujian unit. Perpustakaan seperti OCMock menjadikannya lebih mudah dan memungkinkan penyediaan ujian yang sangat terperinci. Mempunyai ujian unit yang baik akan menjadikan aplikasi anda lebih stabil dan boleh dipercayai.

Bercakap tentang kestabilan, Objective-C telah lama wujud yang menjadikannya bahasa yang sangat stabil. Dengan Swift, anda akan menghadapi pepijat yang cukup mengejutkan dan akan mengganggu kestabilan aplikasi anda. Dalam contoh yang saya pautkan di atas, kerosakan ini disebabkan oleh bahasa sebenar yang anda gunakan untuk membuat kod aplikasi anda, bukan disebabkan oleh kesalahan yang dibuat oleh kod yang anda tulis. Ini boleh mengecewakan.

Perkara terakhir, yang lebih penting bagi syarikat tertentu, adalah keserasian dengan perpustakaan C dan C ++. Oleh kerana Objective-C adalah superset dari C, mudah menggunakan kod C dan C ++ dengan Objektif-C. Anda bahkan boleh menggunakan Objective-C ++ jika anda merasa sangat cenderung. Ini penting jika anda bergantung pada perpustakaan C dan C ++ pihak ketiga.

Kelemahannya

Aduan utama pertama yang saya dengar mengenai Objective-C adalah sintaks. Saya memulakan kerjaya profesional saya menggunakan Objective-C jadi saya tidak mempunyai masalah dengannya. Ia adalah verbose dan agak tidak konvensional dengan penggunaan tanda kurung persegi. Tetapi pendapat mengenai sintaks hanyalah pendapat. Saya rasa saya akan menyenaraikan perkara ini kerana ini adalah salah satu perkara pertama yang muncul ketika anda menyebut Objektif-C.

Satu perkara yang saya setuju adalah sintaks blok adalah mengecewakan. Bahkan ada laman web yang dikhaskan untuk menyahkod misteri blok di Objective-C. Saya sebenarnya sering menggunakan laman web ini sebagai rujukan.

Masalah terbesar yang dihadapi Objective-C sekarang adalah kenyataan bahawa suatu hari Apple mungkin akan kehilangan sokongan untuk Objective-C dengan Kakao dan perpustakaan umum lain yang digunakan untuk membuat aplikasi iOS. Oleh kerana Objective-C terutama digunakan untuk membuat aplikasi iOS, ini akan menjadi jalan mati bagi bahasa. Ini juga bermaksud bahawa pendatang baru dalam komuniti iOS takut untuk berkomitmen untuk belajar Objektif-C sekarang kerana mungkin tidak lagi dapat digunakan di masa depan.

Mari kembali ke bahasa itu sendiri. Ia cenderung sukar untuk menyelesaikan masalah kerana sifat bahasa yang dinamik. Keupayaan untuk menghantar mesej ke nihil dan tidak merosot di atas kekurangan menaip yang ketat adalah beberapa contoh perkara yang membawa kepada masalah yang sukar diselesaikan.

Objektif-C tidak memegang tangan anda ketika berkaitan dengan perkara-perkara ini. Walaupun bagus bahawa aplikasi itu tidak hancur ketika anda menghantar mesej ke nihil, aplikasi tersebut mungkin meletakkan aplikasi anda dalam keadaan pelik. Sangat sukar untuk men-debug masalah seperti ini. Fakta bahawa Swift mempunyai ketikan yang ketat dan penggunaan pilihan yang tidak boleh dibungkus menghalang perkara ini pada waktu penyusunan.

Sekiranya saya belajar Swift atau Objective-C?

Jawapan bagi kebanyakan orang adalah Swift. Apple jelas mendorong Swift sebagai bahasa pilihan untuk komuniti pengembangan aplikasi iOS-nya. Swift hanya akan terus menjadi lebih berprestasi apabila kestabilan ABI diperkenalkan dan Swift menjadi kemas dengan OS itu sendiri.

Sekiranya anda ingin mendapatkan pekerjaan sebagai pembangun iOS, Swift akan menjadi bahasa yang ingin anda pelajari. Sebilangan besar syarikat permulaan hingga peringkat pertengahan akan mempunyai aplikasi iOS mereka ditulis sepenuhnya dalam Swift. Ini bermakna anda akan dapat membuat permohonan dan wawancara untuk lebih banyak pekerjaan sekiranya anda belajar Swift.

Walaupun di syarikat-syarikat besar di mana Objektif-C masih banyak digunakan, wawancara masih dapat dilakukan di Swift. Oleh itu, anda boleh belajar Objective-C sebaik sahaja anda menyertai syarikat dan tidak perlu membebankan diri dengan lebih banyak perkara yang perlu dipelajari sebelum wawancara.

Anda ingin mempelajari Objective-C jika anda sudah bekerja di syarikat permulaan atau pertengahan dan ingin melompat ke syarikat yang lebih besar. Kemahiran dengan Objektif-C akan memberi anda pengetahuan khusus dan kelebihan berbanding calon wawancara lain.

Suka dengan apa yang anda baca? Lihatlah beberapa artikel saya yang lain:

Petua untuk temu ramah teknologi pertama anda.

Memulakan kerjaya teknologi dari sia-sia.

Sekiranya anda mendapat ijazah sains komputer?