"Akhir Pemrograman" akan sangat mirip dengan pemrograman

Jan 03 2023
Komunikasi ACM memiliki artikel baru berjudul “The End of Programming” oleh Matt Welsh. Ini berpendapat bahwa program tradisional “akan digantikan oleh sistem AI yang dilatih daripada diprogram” (penekanan pada aslinya).

Komunikasi ACM memiliki artikel baru berjudul “The End of Programming” oleh Matt Welsh. Ini berpendapat bahwa program tradisional “akan digantikan oleh sistem AI yang dilatih daripada diprogram ” (penekanan pada aslinya). Welsh adalah “CEO dan salah satu pendiri Fixie.ai, sebuah startup yang baru didirikan yang mengembangkan kemampuan AI untuk mendukung tim pengembangan perangkat lunak”.

Saya umumnya skeptis terhadap klaim luas ini. Lebih dari segalanya, saya pikir ketika orang membayangkan mengintegrasikan AI (dan terutama LLM) ke dalam pengembangan perangkat lunak (atau proses lainnya), mereka cenderung terlalu optimis. Tapi saya ingin fokus pada sesuatu yang khusus di sini. Welsh mengatakan "[kita] dengan cepat bergerak menuju dunia di mana blok bangunan dasar komputasi adalah agen yang temperamental, misterius, dan adaptif."

Saya pikir ini adalah hasil yang paling tidak mungkin. Jika Anda harus mendeskripsikan karakteristik yang membuat pengguna menjauh dari produk, perilaku sistem yang "temperamental dan misterius" akan menempati urutan teratas dalam daftar itu (biasanya kami menyebutnya "kereta"). Terutama karena di dunia ini, orang-orang di balik produk tersebut kemungkinan besar akan berkata, “Ah, maaf, AI yang melakukannya. Kami akan melihat apakah kami dapat menjelaskan kepadanya apa yang perlu diperbaiki dan mungkin akan diperbaiki jika kami menanyakan hal yang benar”.

Secara umum, banyak AI mengambil saya melihat menegaskan bahwa AI akan dapat memikul seluruh tanggung jawab untuk tugas yang diberikan untuk seseorang, dan secara implisit berasumsi bahwa akuntabilitas orang tersebut untuk tugas tersebut akan semacam… menguap? Seperti, jika AI salah, itu bukan salahmu? Namun jika Anda tidak memiliki cara nyata untuk memastikan tugas dilakukan dengan benar, mereka mungkin akan mencari orang lain untuk menyelesaikan tugas tersebut setelah gagal beberapa kali.

Jadi di dunia di mana perangkat lunak masih harus benar-benar melakukan hal yang diminta, mari bayangkan seperti apa jadinya jika kita tidak lagi membutuhkan pengembang perangkat lunak manusia. Manusia bertindak sebagai manajer produk, mendikte persyaratan bisnis mereka ke AI, yang kemudian membangun perangkat lunak. Mari kita asumsikan bahwa perangkat lunak yang dihasilkan sebagian besar berfungsi (yaitu, bebas dari bug tingkat rendah) — Saya rasa ini masih jauh, dan masih banyak yang bisa dikatakan tentang tampilannya sampai saat itu, tetapi itu terpisah diskusi.

Jika Anda pernah bekerja sebagai pengembang perangkat lunak, Anda tahu bahwa persyaratan bisnis sering kali datang sebagai ide yang tidak jelas, tidak jelas, bahkan kontradiktif yang ditulis dalam bahasa yang ambigu. Pertanyaan utama tentang pengembangan perangkat lunak khusus AI ini adalah, bagaimana ia akan membuat perangkat lunak yang mengimplementasikan apa yang diinginkan oleh manajer produk dari perangkat lunak tersebut?

Saya pikir ada dua arah umum, yang tidak saling eksklusif.

Yang pertama adalah AI harus bertanya kepada manajer produk tentang setiap pilihan dan ambiguitas individu. Itu harus dilakukan karena cukup baik untuk mengetahui apa pilihan dan ambiguitasnya, tetapi tidak cukup baik untuk secara konsisten menebak jawaban yang benar. Bolak-balik ini akan dimulai dengan bahasa sederhana, dan menghabiskan banyak waktu untuk manajer produk. Seiring waktu, perancang AI akan mulai menawarkan pintasan yang memungkinkan persyaratan input berarti hal-hal tertentu ketika dibingkai dengan cara tertentu, sehingga manajer produk dapat membuat pilihan mereka jelas sejak awal. Jadi kami punya metode untuk mengekspresikan perilaku sistem dengan jaminan formal. Artinya, kami telah menemukan bahasa pemrograman baru. Pada titik ini, manajer produk sekarang menjadi pengembang perangkat lunak.

Yang lainnya adalah bahwa AI cukup baik untuk secara konsisten menebak dengan benar jawaban yang tepat untuk pilihan dan ambiguitas dalam persyaratan dan cukup baik untuk mengetahui ketika tidak percaya diri dapat menebak dengan benar. Untuk melakukan ini diperlukan sejumlah besar pengetahuan budaya manusia dan mungkin pengetahuan tingkat tinggi dari orang tertentu yang bertindak sebagai manajer produk. AI sedang melakukan pekerjaan menerjemahkan persyaratan bisnis ke dalam persyaratan perilaku sistem formal, serta mengimplementasikannya. Pada titik ini, AI sekarang menjadi pengembang perangkat lunak.

Anda dapat berargumen bahwa yang kedua sama dengan visi Welsh tentang "akhir pemrograman", karena Anda masih bekerja tanpa bahasa formal. Saya mengatakan ini berbeda, karena ini bukan "temperamental dan misterius" seperti halnya pengembang perangkat lunak (yang Anda suka bekerja dengannya) - ini dapat diandalkan dan konsisten.

Saya pikir arah kedua, AI-sebagai-pengembang perangkat lunak, cukup jauh, khususnya karena konteks budaya dan kesadaran diri adalah hal yang sulit. Saya ragu Anda membutuhkan AGI untuk mendapatkannya, tetapi sepertinya itu akan menjadi bagian yang bagus untuk mencapainya. Jadi jika Anda optimis pada AGI, Anda bisa berharap kami akan mendapatkannya lebih cepat daripada nanti.

Saya ingin melihat arah pertama diambil secara eksplisit. Salah satu masalah saya dengan GitHub Copilot (dan sistem serupa) adalah Anda masih memiliki kode yang dihasilkan, dan tidak memberikan jalur apa pun untuk mendapatkan keyakinan bahwa kode tersebut telah memberi Anda implementasi yang benar, meskipun Anda memiliki kebenaran kode yang dihasilkannya. (ini juga menjamin artikelnya sendiri, menurut saya). Saya ingin mengidentifikasi pola umum dan memformalkannya, sehingga pengembang dapat menggunakan singkatan untuk mengekspresikan logika yang rumit itu dan memiliki keyakinan bahwa mereka mendapatkan apa yang mereka harapkan. Mungkin itu bisa dilakukan dengan sistem yang ada, atau mungkin itu adalah bahasa pemrograman berorientasi Copilot yang sama sekali baru.

Saya pikir takeaway utama saya di sini adalah bahwa, ketika melihat klaim AI akan mengotomatiskan beberapa proses, mencari apa yang benar-benar sulit, kompleksitas yang melekat dari proses itu, dan apakah proses tersebut akan berhasil jika tingkat (baru) yang besar ketidakpastian disuntikkan ke dalam kompleksitas itu. Untuk pengembangan perangkat lunak, saya pikir jawabannya adalah tidak. Itu tidak berarti AI tidak akan berhasil, itu hanya berarti kita perlu melihat lebih dalam untuk menyempurnakan apa dan bagaimana (dan kapan) otomatisasi akan berperan di dalamnya.