Setelah menemukan kalkulus, tabel aktuarial, dan kalkulator mekanik serta menciptakan frasa “best of all possible worlds,” Gottfried Leibniz masih merasa bahwa karya hidupnya belum lengkap. Sejak kecil, polymath abad ke-17 ini bermimpi untuk menciptakan apa yang ia sebut sebagai characteristica universalis—sebuah bahasa yang sempurna mewakili semua kebenaran ilmiah dan akan membuat membuat penemuan baru semudah menulis kalimat yang benar secara gramatikal. “Alfabet pemikiran manusia” ini tidak akan meninggalkan ruang untuk kekeliruan atau ambigu, dan Leibniz akan terus bekerja pada hal tersebut hingga akhir hidupnya.
Sebuah versi dari mimpi Leibniz masih hidup hari ini dalam bahasa pemrograman. Mereka tidak mewakili totalitas alam semesta fisik dan filosofis, tetapi malah hal terbaik berikutnya—bilangan satu dan nol yang terus berubah yang membentuk keadaan internal komputer (biner, penemuan lain Leibniz). Ilmuwan komputer yang cukup berani atau gila untuk membangun bahasa baru mengejar karakteristica universalis mereka sendiri, sebuah sistem yang bisa memungkinkan pengembang menulis kode yang sangat ekspresif sehingga tidak ada sudut gelap bagi bug untuk bersembunyi dan begitu jelas sehingga komentar, dokumentasi, dan pengujian unit menjadi tidak diperlukan.
Tetapi ekspresi, tentu saja, sebanyak tentang selera pribadi seperti itu tentang teori informasi. Bagi saya, sama seperti mendengarkan Countdown to Ecstasy ketika remaja menguatkan ketertarikan seumur hidup saya pada Steely Dan, selera saya dalam bahasa pemrograman paling dipengaruhi oleh yang pertama saya pelajari sendiri—Objective-C.
Untuk mengatakan bahwa Objective-C mirip dengan bahasa ilahi secara metafisik, atau bahkan bahasa yang baik, seperti mengatakan Shakespeare paling dihargai dalam pig latin. Objective-C, paling baik, memecah belah pendapat. Diperolok-olok karena keberlebihan kata-katanya yang tak henti-hentinya dan tanda kurung kotak anehnya, ia hanya digunakan untuk membangun aplikasi Mac dan iPhone dan pasti akan tenggelam dalam ketidakjelasan pada awal tahun 1990-an jika tidak karena kejadian sejarah yang tidak mungkin. Meskipun begitu, dalam waktuku bekerja sebagai insinyur perangkat lunak di San Francisco pada awal tahun 2010-an, saya berkali-kali menemukan diri saya di bar dives di SoMa atau di komentar HackerNews membela pilihan desain yang paling merepotkan.
Objective-C datang kepada saya ketika saya paling membutuhkannya. Saya adalah seorang mahasiswa senior yang naik dan menemukan minat dalam ilmu komputer terlambat untuk menjadikannya bidang studi. Sebagai orang dewasa yang cukup tua untuk minum, saya melihat remaja berputar-putar di sekitar saya dalam kelas teknik perangkat lunak tingkat dasar. Ponsel pintar baru saja mulai berkembang, tetapi saya menyadari sekolah saya tidak menawarkan kelas pengembangan seluler—saya menemukan niche. Saya belajar Objective-C musim panas itu dari seri buku bertema koboi berjudul The Big Nerd Ranch. Pertama kali saya menulis kode di layar besar dan melihatnya menerangi piksel di layar kecil di tangan saya, saya jatuh cinta pada Objective-C. Hal itu membuat saya merasakan kekuatan ekspresi diri tanpa batas dan membuat saya percaya bahwa saya bisa menciptakan apa pun yang saya bisa bayangkan. Saya telah menemukan bahasa universal yang benar-benar dan mencintai segalanya tentang itu—sampai saya tidak lagi.
Putaran Nasib
Objective-C muncul dalam masa awal yang heboh dari era pemrograman berorientasi objek, dan menurut semua laporan, seharusnya tidak pernah bertahan melewati itu. Pada tahun 1980-an, proyek perangkat lunak telah tumbuh terlalu besar bagi satu orang, atau bahkan satu tim, untuk mengembangkan sendiri. Untuk memudahkan kolaborasi, ilmuwan komputer Xerox PARC Alan Kay menciptakan pemrograman berorientasi objek—sebuah paradigma yang mengorganisir kode ke dalam “objek” yang dapat digunakan ulang yang berinteraksi dengan mengirimkan “pesan” satu sama lain. Misalnya, seorang programmer dapat membuat objek Timer yang bisa menerima pesan seperti start, stop, dan readTime. Objek-objek ini kemudian dapat digunakan kembali di berbagai program perangkat lunak. Pada tahun 1980-an, kegembiraan tentang pemrograman berorientasi objek sangat tinggi sehingga bahasa baru muncul setiap beberapa bulan, dan ilmuwan komputer berpendapat bahwa kita berada di ambang “revolusi industri perangkat lunak.”
Pada tahun 1983, Tom Love dan Brad Cox, insinyur perangkat lunak di International Telephone & Telegraph, menggabungkan pemrograman berorientasi objek dengan sintaks yang populer dan mudah dibaca dari bahasa pemrograman C untuk membuat Objective-C. Pasangan tersebut memulai perusahaan singkat untuk melisensikan bahasa dan menjual perpustakaan objek, dan sebelum bangkrut mereka mendapatkan klien yang akan menyelamatkan penciptaan mereka dari jatuh ke dalam ketidakjelasan: NeXT, perusahaan komputer yang didirikan Steve Jobs setelah dia dipecat dari Apple. Ketika Jobs kembali ke Apple dengan gemilang pada tahun 1997, ia membawa sistem operasi NeXT—dan Objective-C—bersamanya. Selama 17 tahun berikutnya, penciptaan Cox dan Love akan menggerakkan produk dari perusahaan teknologi paling berpengaruh di dunia.
Saya menjadi akrab dengan Objective-C satu setengah dekade kemudian. Saya melihat bagaimana objek dan pesan memiliki struktur mirip kalimat, ditandai dengan tanda kurung siku, seperti [self.timer increaseByNumberOfSeconds:60]. Ini bukan kalimat yang pendek seperti Hemingway, tetapi panjang, bermakna, seperti Proust, secara sintaksis kompleks dan membangkitkan gambaran yang hidup dengan nama fungsi seperti scrollViewDidEndDragging:willDecelerate.