Setelah menciptakan kalkulus, meja aktuaria, dan kalkulator mekanis dan menciptakan frasa “terbaik dari semua dunia yang mungkin,” Gottfried Leibniz masih merasa pekerjaan hidupnya tidak lengkap. Sejak masa kanak-kanak, polymath abad ke-17 telah bermimpi menciptakan apa yang disebutnya a Karakteristik universal—Sebuah bahasa yang secara sempurna mewakili semua kebenaran ilmiah dan akan membuat membuat penemuan baru semudah menulis kalimat yang benar secara tata bahasa. “Alfabet pemikiran manusia” ini tidak akan meninggalkan ruang untuk kepalsuan atau ambiguitas, dan Leibniz akan mengerjakannya sampai akhir hidupnya.
Versi impian Leibniz hidup hari ini dalam bahasa pemrograman. Mereka tidak mewakili totalitas alam semesta fisik dan filosofis, tetapi sebaliknya, hal terbaik berikutnya-yang terus menyentuh dan nol yang membentuk keadaan internal komputer (biner, penemuan Leibniz lainnya). Ilmuwan komputer berani atau cukup gila untuk membangun bahasa baru mengejar sendiri Karakteristik universalsebuah sistem yang dapat memungkinkan pengembang untuk menulis kode yang begitu ekspresif sehingga tidak meninggalkan sudut gelap untuk disembunyikan dan terbukti dengan sendirinya bahwa komentar, dokumentasi, dan tes unit menjadi tidak perlu.
Tetapi ekspresi, tentu saja, adalah tentang selera pribadi seperti halnya teori informasi. Bagi saya, sama seperti mendengarkan Menghitung mundur ke ekstasi Ketika seorang remaja memperkuat afinitas seumur hidup untuk Steely Dan, selera saya dalam bahasa pemrograman paling banyak dibentuk oleh yang pertama yang saya pelajari sendiri-objektif-c.
Untuk berargumen bahwa Objective-C menyerupai bahasa ilahi metafisik, atau bahkan bahasa yang baik, seperti mengatakan Shakespeare paling dihargai dalam babi Latin. Objective-C, paling-paling, adalah polarisasi. Diejek karena verbositasnya yang tak henti -hentinya dan tanda kurung persegi yang aneh, ini hanya digunakan untuk membangun aplikasi Mac dan iPhone dan akan memudar menjadi ketidakjelasan pada awal 1990 -an seandainya bukan karena kekhasan sejarah yang tidak mungkin. Namun demikian, pada waktu saya bekerja sebagai insinyur perangkat lunak di San Francisco pada awal 2010 -an, saya berulang kali menemukan diri saya di bar selam di Soma atau dalam komentar Hackernews mempertahankan pilihan desain yang paling rumit.
Objective-C datang kepada saya ketika saya sangat membutuhkannya. Saya adalah senior perguruan tinggi yang sedang naik daun dan telah menemukan minat pada ilmu komputer terlambat untuk mengambil jurusan di dalamnya. Sebagai orang dewasa yang cukup tua untuk diminum, saya menyaksikan remaja berlari di sekitar saya di kelas rekayasa perangkat lunak entry-level. Smartphone baru mulai berkembang biak, tetapi saya menyadari sekolah saya tidak menawarkan kelas pengembangan seluler – saya telah menemukan ceruk. Saya belajar Objective-C musim panas itu dari seri buku bertema koboi berjudul Peternakan Nerd Besar. Pertama kali saya menulis kode di layar lebar dan melihatnya menyalakan piksel di layar kecil di tangan saya, saya jatuh keras untuk Objective-C. Itu membuat saya merasakan kekuatan memabukkan dari ekspresi diri tanpa batas dan membiarkan saya percaya saya bisa menciptakan apa pun yang saya bayangkan. Saya telah menemukan bahasa yang benar -benar universal dan menyukai segalanya tentang hal itu – sampai saya tidak melakukannya.
Twist of Fate
Objective-C muncul di masa-masa awal yang hiruk-pikuk dari era pemrograman yang berorientasi objek, dan bagaimanapun, itu seharusnya tidak pernah bertahan melewatinya. Pada 1980 -an, proyek perangkat lunak telah tumbuh terlalu besar untuk satu orang, atau bahkan satu tim, untuk berkembang sendirian. Untuk membuat kolaborasi lebih mudah, ilmuwan komputer Xerox PARC Alan Kay telah membuat pemrograman yang berorientasi objek-paradigma yang mengorganisir kode menjadi “objek” yang dapat digunakan kembali yang berinteraksi dengan mengirim satu sama lain “pesan.” Misalnya, seorang programmer dapat membangun objek pengatur waktu yang dapat menerima pesan seperti Start, Stop, dan Readtime. Objek -objek ini kemudian dapat digunakan kembali di berbagai program perangkat lunak. Pada 1980-an, kegembiraan tentang pemrograman yang berorientasi objek sangat tinggi sehingga bahasa baru keluar setiap beberapa bulan, dan para ilmuwan komputer berpendapat bahwa kami berada di jurang “Revolusi Industri Perangkat Lunak. “
Pada tahun 1983, Tom Love dan Brad Cox, insinyur perangkat lunak di International Telephone & Telegraph, menggabungkan pemrograman berorientasi objek dengan sintaksis populer dan dapat dibaca dari bahasa pemrograman C untuk membuat Objective-C. Pasangan ini memulai sebuah perusahaan yang berumur pendek untuk melisensikan bahasa dan menjual perpustakaan objek, dan sebelum naik perut mereka mendaratkan klien yang akan menyelamatkan kreasi mereka dari jatuh ke dalam ketidakjelasan: selanjutnya, perusahaan komputer Steve Jobs yang didirikan setelah pemecatannya dari Apple. Ketika pekerjaan dengan penuh kemenangan kembali ke Apple pada tahun 1997, ia membawa sistem operasi berikutnya-dan Objective-C-dengan dia. Selama 17 tahun ke depan, ciptaan Cox dan Love akan memberi daya pada produk -produk dari perusahaan teknologi paling berpengaruh di dunia.
Saya berkenalan dengan Objective-C satu setengah dekade kemudian. Saya melihat bagaimana benda dan pesan mengambil struktur seperti kalimat, diselingi oleh kurung persegi, seperti [self.timer increaseByNumberOfSeconds:60]. Ini bukan kalimat yang singkat dan hemingwayesque, tetapi yang panjang, bunga, prousian, secara sintaksis kompleks dan membangkitkan citra hidup dengan nama fungsi seperti ScrollViewDenddragging: Willdecelerate.
Objek Objective-C, sementara itu, dihiasi dengan awalan semua-caps yang dengan bangga mengidentifikasi penciptanya. Beberapa nama rumah tangga, seperti tombol untuk masuk ke layanan lain dengan akun Anda (twtrloginbutton) atau pop-up add-friends-from-facebook (fbfriendpickerViewController). Pada saat saya belajar Objective-C, Next tidak ada selama lebih dari 15 tahun, tetapi kode dari sistem operasi NextStep begitu mendarah daging dalam produk Apple sehingga awalannya muncul dalam lusinan objek dan fungsi yang saya gunakan setiap hari-NSDICTIONARY, NSARRAY, NSSTRING, NSLOG.
Objective-C bertele-tele-terlalu berlebihan-dan kecenderungan ini segera merayap ke pandangan saya sendiri. Bagaimana mungkin seorang insinyur memberi tahu komputer apa yang harus dilakukan tanpa menggunakan banyak kata? Bagaimana mungkin bahasa bisa ekspresif secara universal tanpa secara maksimal? Kecerobohan Objective-C tidak ketinggalan zaman-itu adalah etos yang layak diperjuangkan, tidak peduli seberapa banyak itu melukai pergelangan tangan saya.
Raksasa yang sudah tua
Pekerjaan rekayasa perangkat lunak pertama dan satu -satunya yang saya miliki (sebelum akhirnya berangkat ke dunia kebijakan teknologi yang lebih licin) yang mengembangkan aplikasi iPhone untuk raksasa yang menua dari Silicon Valley. Perusahaan ini sangat panas tak lama setelah era dialup internet tetapi melewatkan beberapa booming teknologi sejak saat itu dan pada 2013 bertekad untuk tidak melewatkan kegemaran terbaru: aplikasi seluler.
Aplikasi yang saya kerjakan baru berusia beberapa tahun, tetapi basis kode-nya mengatakan kepada seluruh sejarah perusahaan dengan kejujuran yang menggigil dalam garis-garis prosa objektif-C. Awalan yang berbeda memberikan kode mana yang telah diwarisi dari startup yang diperoleh dan mengungkapkan konflik pahit atas switching analitik. Nama fungsi hiasan yang diceritakan tentang pivot produk dan layar pop-up mati yang mereka tinggalkan.
Tetapi semakin lama saya menghabiskan waktu menulis Objective-C, semakin saya merasa bersembunyi daripada terungkap. Nama fungsi yang panjang dan seperti kalimat mengubur informasi yang paling relevan di bawah kabut klausa dependen. Fitur-fitur kecil membutuhkan permintaan tarik bertele-tele, memudahkan para insinyur untuk terganggu selama ulasan dan kehilangan bug. Kata kelebihan Objective-C, dikalikan di ribuan file dan jutaan baris kode, dibuat untuk basis kode yang melelahkan.
Tak lama kemudian, kasih sayang saya untuk teori “lebih banyak” Objective-C “ekspresi diri menghilang sepenuhnya. Ketika basis kode diperluas, jaring objeknya tumbuh menjadi semak kusut hubungan berbelit -belit yang membesarkan superbug misterius dan tidak dapat dilacak. Buzz pesan di antara objek naik ke hiruk -pikuk, dan sebagian besar pekerjaan saya menjadi mencari tahu objek apa yang mengirim pesan apa yang membuat aplikasi crash atau layar pengaturan terkutuk terlihat sangat buruk.
Hampir satu setengah tahun ke dalam menulis Objective-C secara profesional, saya sudah mengalami krisis iman. Saya menjadi insinyur perangkat lunak untuk mengejar kekuatan yang menggembirakan untuk mengubah kata -kata menjadi gambar di layar, tetapi kata -kata itu telah berubah dari memberdayakan menjadi memberatkan. Bahkan awalan Objective-C, yang pernah saya rasakan menceritakan kisah yang mempesona, merasa dekaden-mengapa saya harus mengetik “ns” ratusan kali sehari untuk memberi penghormatan kepada startup Steve Job yang sudah lama tidak berfungsi? Saya tidak sendirian: Pengembang Mac dan iPhone di mana -mana frustrasi dengan dipaksa menggunakan bahasa kuno yang mengoceh ini. Apple, ternyata, juga siap untuk diubah. Namun, saya tidak.
Kematian dan Kelahiran Kembali
Leibniz pertama kali menulis tentang Karakteristik universal Dalam tesis gelar doktor ketika dia berusia 19 tahun dan mengerjakannya selama hampir 50 tahun sampai tak lama sebelum kematiannya pada usia 68 tahun. Dia menata kembali gagasan tentang “alfabet pemikiran manusia” yang tak terhitung jumlahnya, mengambil inspirasi dari matematika, logika simbolik, hieroglif, catatan musik, tanda -tanda astronomi, dan empat elemen (Bumi, Air, Api, dan Air). Ketika pengetahuannya tentang dunia fisik dan metafisik tumbuh, Leibniz harus terus -menerus merekonseptualisasikan apa artinya membangun sistem yang dengan sempurna mencerminkan alam semesta.
Pemrogram, dalam mengejar kode yang lebih ekspresif dan efisien, mengalami kelahiran kembali yang serupa. Ketika kekurangan bahasa pengkodean tertentu menjadi jelas, bahasa reaksioner baru hiper-fixated dalam memecahkan masalah-masalah itu meningkat, sampai juga menjadi hegemonik, dan siklus berlanjut. Prinsip yang diterima dari apa yang membuat kode ekspresif berkembang dan berubah bersama kemajuan teknologi, membuat programmer menjadi pengembara linguistik.
Akhir datang untuk Objective-C pada bulan Juni 2014, ketika Apple mengumumkan debut Swift, bahasa pemrograman baru untuk membangun aplikasi asli di semua produk Apple. Swift tidak melakukan apa yang paling dibenci oleh pengembang iPhone dan Mac tentang Objective-C: No More Square Braket! Tidak ada lagi ns! Kode pendek, deklaratif untuk semua! Meskipun masih berorientasi objek ( kultus pemrograman fungsional belum menegaskan dominasinya), Swift memiliki filosofi ekspresi diri yang berlari langsung melawan Objective-C: Verbosity menyembunyikan makna, konsisi mengungkapkan kebenaran.
Terlepas dari ketidaksukaan saya yang semakin besar terhadap Objective-C, gagasan belajar bahasa baru gagal untuk menggairahkan saya, dan saya tahu bahwa hari-hari saya sebagai insinyur perangkat lunak diberi nomor. Pekerjaan programmer, saya pelajari, adalah untuk selamanya mengejar Anda Karakteristik universalmeskipun tahu itu akan selalu menghindari Anda, seperti halnya Leibniz. Saya ingin mengejar hal-hal lain, dan akan menulis Objective-C sampai akhir hari rekayasa perangkat lunak saya.
Sebelum saya berhenti dari pekerjaan saya di raksasa yang sudah tua dan kembali ke sekolah, lulusan ilmu komputer baru -baru ini bergabung dengan tim saya. Dia telah menghabiskan musim panas belajar Swift dan ingin menulis ulang basis kode kami dari awal. Mengenakan hoodie yang belum diwarnai, dia melihat Swift sebagai bahasa ilahi, bersih dalam komunikasinya. Dia kebetulan menemukan bentuk ekspresi universal, dan dia bisa melakukan apa saja.
