GoSuda

Bahasa Modern era AI

By Rabbit Princess
views ...

Bahasa Modern

Bahasa modern merujuk pada bahasa yang menawarkan produktivitas, stabilitas, keamanan, dan kemudahan pemeliharaan yang lebih tinggi dibandingkan bahasa-bahasa sebelumnya. Bahasa-bahasa ini secara aktif mengadopsi teknik dan konsep terbaru, serta menyediakan alat pengembangan yang lebih efisien dan aman bagi pengembang. Contoh bahasa modern yang representatif meliputi Java, Rust, Python, TypeScript, dan lainnya, yang memiliki karakteristik sebagai berikut.

1. Desain Berorientasi Objek ( OOP )

Sebagian besar bahasa modern dirancang berdasarkan konsep berorientasi objek. Berorientasi objek mendukung prinsip-prinsip seperti enkapsulasi, pewarisan, dan polimorfisme, serta membuat struktur program menjadi jelas dan fleksibel dengan membagi sistem yang kompleks menjadi objek-objek unit kecil untuk dikelola. Hal ini efektif dalam mengendalikan biaya pengembangan dan upaya, serta mengurangi masalah yang mungkin timbul selama pemeliharaan, terutama dalam pengembangan perangkat lunak berskala besar.

2. Sugar Sintaksis dan Ekspresi

Bahasa modern menyediakan berbagai sugar sintaksis dan sintaksis berbasis ekspresi untuk meningkatkan keterbacaan kode dan produktivitas pengembangan. Fitur-fitur seperti operator ternary, ekspresi lambda, dan pencocokan pola mengurangi kode boilerplate, membuat kode lebih dapat diprediksi, dan meningkatkan produktivitas pengembang.

3. Sistem Modul

Bahasa modern memungkinkan program dikelola dengan membaginya menjadi beberapa unit melalui sistem modul. Hal ini memfasilitasi penggunaan kembali kode dan pengelolaan ketergantungan, serta membuat pemeliharaan lebih mudah bahkan ketika skala proyek bertambah besar. Contoh representatif termasuk Maven/Gradle pada Java, Cargo pada Rust, dan npm/yarn pada TypeScript.

4. Bahasa Perantara dan Mesin Virtual

Bahasa modern mengadopsi bahasa perantara dan mesin virtual untuk platform independensi, optimisasi kinerja, dan keamanan. Contoh representatif meliputi JVM, LLVM, WASM, GraalVM, dan lainnya.

Pengembangan di Era AI dan Keterbatasan Bahasa Modern

Bahasa modern muncul dengan asumsi bahwa sebagian besar kode ditulis oleh manusia. Secara alami, tujuan bahasa modern adalah mengurangi pekerjaan berulang, meningkatkan produktivitas, dan secara efektif mengimplementasikan perangkat lunak besar melalui struktur yang memungkinkan pengembang berkolaborasi. Namun, di era AI, asumsi ini semakin runtuh. Alat berbasis AI seperti Copilot dan Cody mengotomatiskan banyak bagian penulisan kode, dan jumlah kode yang dapat dihasilkan oleh satu pengembang meningkat secara drastis. Akibatnya, karakteristik bahasa modern yang sebelumnya dianggap sebagai keunggulan, kini secara bertahap berubah menjadi kekurangan yang ketinggalan zaman.

Desain Berorientasi Objek

AI dapat menganalisis struktur di mana semua informasi dinyatakan secara eksplisit dalam satu fungsi atau modul dengan cepat dan akurat. Sebaliknya, seiring bertambahnya konteks, area untuk inferensi meningkat, sehingga produktivitas dan akurasi AI menurun. Kode yang ditulis dengan OOP mendistribusikan logika ke berbagai objek, alih-alih mengelolanya di satu tempat, dan ini pada akhirnya menuntut lebih banyak konteks dari AI. Mari kita lihat kode di bawah ini.

 1public class AnimalHandler {
 2    public void handle(Animal animal) {
 3        animal.speak();
 4    }
 5}
 6
 7public class Main {
 8    public static void main(String[] args) {
 9        AnimalHandler handler = new AnimalHandler();
10
11        Animal a1 = new Dog();
12        Animal a2 = new Cat();
13        Animal a3 = new Horse();
14
15        handler.handle(a1);
16        handler.handle(a2);
17        handler.handle(a3);
18    }
19}

Dalam kode di atas, AI harus mengulangi inferensi berikut untuk mengetahui tindakan apa yang sebenarnya akan dilakukan oleh metode speak():

  1. Instance kelas konkret apa itu animal?
  2. Di mana metode speak() yang di-override dalam kelas tersebut didefinisikan?
  3. Di mana definisi kelas Dog dan Cat, dan apa tindakan di dalamnya?
  4. Apakah ada kemungkinan kelas Dog dan Cat di-override oleh kelas lain?

Informasi ini tidak terkumpul dalam satu file atau satu fungsi, dan hanya dapat dipahami dengan mengikuti hubungan antar file kelas dan struktur pewarisan. Terlebih lagi, elemen yang ditentukan saat runtime, seperti reflection atau dynamic loading, seperti kotak hitam bagi AI, sehingga analisisnya praktis tidak mungkin.

Sugar Sintaksis dan Ekspresi

AI lebih menyukai tindakan eksplisit daripada tindakan implisit, dan lebih menyukai kombinasi struktur sederhana untuk menciptakan satu jawaban daripada menggunakan struktur yang kompleks. Sebaliknya, sugar sintaksis memungkinkan berbagai ekspresi, namun perilaku internalnya seringkali sama atau serupa. AI harus mempelajari makna dari berbagai ekspresi ini satu per satu, dan mungkin sulit untuk menentukan prioritas sintaksis mana yang harus direkomendasikan dalam situasi tertentu.

Bahasa Perantara dan Mesin Virtual

AI sebagian besar belajar dari kode sumber. Di sisi lain, bahasa perantara (bytecode) kehilangan makna seperti nama variabel selama proses kompilasi, dan harus diinterpretasikan ulang oleh mesin virtual saat eksekusi. Ini adalah tugas yang sangat sulit bagi AI untuk dipahami atau diubah. Misalnya, AI dapat mengubah dari TypeScript ke Go, tetapi mengubah bytecode mesin V8 menjadi bytecode JVM atau kode mesin praktis mustahil.

Bahasa Modern yang Sejati di Era AI

Melalui konten di atas, kita dapat melihat bahwa karakteristik bahasa modern sebenarnya adalah elemen yang ketinggalan zaman dan tidak cocok di era AI. Jadi, bahasa apa yang bisa menjadi bahasa modern yang paling cocok di era AI? Petunjuknya dapat diperoleh dari elemen-elemen yang dihindari oleh bahasa modern di masa lalu. Bahasa modern di era AI seharusnya:

  1. Memiliki sintaksis yang eksplisit dan alur yang alami.
  2. Menghindari struktur OOP yang berlebihan dan memiliki struktur yang datar dan sederhana.
  3. Menciptakan berbagai fungsi hanya dengan kata kunci dasar yang terbatas, daripada sugar sintaksis atau pola implisit yang tidak perlu.
  4. Memiliki sistem build yang sederhana dan dapat diprediksi, bukan sistem build yang kompleks.

Bahasa yang paling sesuai dengan kriteria ini adalah Golang. Bahasa Go dirancang untuk mengimplementasikan sebagian besar fungsi praktis hanya dengan kata kunci inti minimal dan kombinasi sintaksis sederhana, serta secara ketat menghindari abstraksi yang tidak perlu dan perilaku implisit. Ini adalah struktur yang menguntungkan tidak hanya bagi pengembang manusia, tetapi juga bagi AI untuk menafsirkan dan menghasilkan kode.

Dengan demikian, karakteristik Go yang mengutamakan struktur yang dapat diprediksi dan datar, alur yang eksplisit, dan sintaksis yang konsisten, lebih cocok untuk lingkungan pengembangan di mana AI berpartisipasi secara aktif, berbeda dengan bahasa modern yang ada yang dirancang berdasarkan pengembang manusia. Filosofi desain Go yang konservatif, yang dulunya dianggap ketinggalan zaman, kini justru menjadi pilihan yang paling maju di era AI.