Vercel membuat bahasa pemrograman

BBetter Stack
컴퓨터/소프트웨어AI/미래기술

Transcript

00:00:00Vercel baru saja merilis bahasa pemrograman baru bernama Xero, dan konon yang membuat
00:00:03bahasa ini berbeda adalah karena ia dibangun dari awal agar manusia dan agen AI
00:00:07bisa merilis program bawaan kecil bersama-sama. Tapi bukankah itu yang selama ini kita lakukan?
00:00:12Jadi apa yang membuatnya lebih baik, dan apakah ini benar-benar ide yang bagus, atau hanya proyek sampingan
00:00:16yang tidak akan dibahas lagi oleh siapa pun dalam beberapa bulan? Mari kita cari tahu.
00:00:25Xero adalah bahasa sistem seperti Rust atau Zig, jadi mungkin sesuatu yang bisa ditulis ulang oleh Bun suatu hari nanti.
00:00:30Dan sejauh yang saya tahu, seluruh idenya adalah bahwa bahasa saat ini dibuat untuk manusia.
00:00:34Jadi kita membaca pesan kesalahan, peringatan, dan jejak kode, tetapi AI bekerja jauh lebih baik jika memiliki
00:00:38data terstruktur. Jadi dengan Xero, seluruh toolchain telah dibangun dengan mempertimbangkan hal itu,
00:00:43artinya semua yang dihasilkan oleh kompilator dapat dikeluarkan dalam bentuk JSON.
00:00:46Nah, berdasarkan poin-poin itu saja, dan kalimat-kalimat di situs web ini yang jelas-jelas ditulis oleh AI,
00:00:51saya masih cukup skeptis tentang alasan bahasa ini ada dan seberapa baik kinerjanya nanti,
00:00:56tapi saya akan menyimpan opini saya untuk bagian akhir. Pertama, mari kita pelajari bahasanya itu sendiri,
00:00:59karena maksud saya, ini masih cukup keren. Kita akan mulai dengan proyek klasik “saya sedang belajar
00:01:03bahasa baru”, yaitu mencetak string yang sangat sederhana. Sebagian besar ini cukup mudah dipahami.
00:01:08Kita memiliki fungsi main publik sebagai titik masuk ke program ini. Fungsi ini akan mengembalikan
00:01:12void, dan di dalamnya kita mencetak sebuah string. Namun cara string tersebut
00:01:16dicetaklah yang menunjukkan beberapa fitur pertama kita. Kita menggunakan kapabilitas “world”. Anda memerlukan
00:01:21kapabilitas ini jika Anda melakukan operasi I/O, seperti operasi file, mencetak, panggilan jaringan,
00:01:26efek samping I/O apa pun, dan itu semua adalah bagian dari prinsip eksplisit dari bahasa ini.
00:01:31Jika sebuah fungsi memiliki kapabilitas “world” ini, itu adalah sinyal langsung bahwa ia melakukan beberapa operasi I/O,
00:01:37dan jika tidak memilikinya, berarti fungsi tersebut bebas dari efek samping I/O.
00:01:40Kapabilitas “world” juga memungkinkan kompilator untuk menolak kapabilitas yang tidak tersedia berdasarkan
00:01:45target pada saat kompilasi, bukan saat runtime, jadi jika Anda mencoba menggunakan akses sistem file di dalam
00:01:50fungsi ini lalu mencoba menargetkan build web assembly, kompilator akan error terlebih dahulu,
00:01:54sehingga Anda tidak akan dikejutkan oleh kesalahan runtime di kemudian hari.
00:01:57Setelah kapabilitas “world”, dalam program ini kita juga memiliki beberapa kata kunci.
00:02:00Jadi kita memiliki “check” di sini, yang merupakan cara Anda menangani kesalahan. Jika sebuah fungsi bisa gagal,
00:02:05Anda menandainya dengan “raises”, dan kemudian “check” di sini digunakan untuk meneruskan kesalahan tersebut. Ini cukup mirip
00:02:09dengan operator tanda tanya di Rust, tetapi hanya sebagai kata kunci. Jadi itu semua yang perlu kita ketahui
00:02:13untuk program pertama kita di Xero, dan kita bisa menjalankannya sekarang dengan mengetik xero run dan hello.xero.
00:02:19Perhatikan bahwa ini adalah ekstensi file untuk bahasa Xero. Jika saya menekan enter sekarang,
00:02:23Anda dapat melihatnya tertulis halo, subscribe ke Betastack. Sesuatu yang pasti harus Anda lakukan.
00:02:26Beralih dari program halo kita, karena kita semua jelas sudah menjadi ahli Xero sekarang,
00:02:30bahasa ini memiliki beberapa tipe primitif lagi untuk memenuhi kebutuhan aplikasi dasar Anda.
00:02:34Jadi saya membuat program baru di sini yang merupakan aplikasi acak yang akan mengklasifikasikan apakah inputnya berupa teks,
00:02:39numerik, atau campuran, dan Anda dapat melihat bahwa ini menggunakan beberapa fitur seperti pustaka standar yang kita miliki
00:02:43kita memiliki enum di sini, kita memiliki shape, yang cukup mirip dengan struct, lalu kita memiliki fitur bahasa
00:02:47biasa yang Anda harapkan seperti pernyataan if, kita memiliki pernyataan while di bawah sini, Anda juga bisa
00:02:52menggunakan perulangan for, lalu kita juga memiliki match di bawah sini yang sangat mirip dengan pernyataan switch Anda.
00:02:56Jadi tidak ada yang terlalu tidak terduga atau baru. Ketika membahas konsep yang lebih maju seperti memori, sekali lagi dengan Xero
00:03:00semuanya harus eksplisit. Jadi kita memiliki mutable span untuk tampilan yang dapat ditulis dan ada juga span
00:03:05untuk tampilan yang dapat dibaca, dan di bawah sini kita memiliki tipe owned. Ini pada dasarnya menyatakan bahwa nilai ini
00:03:10dimiliki di sini dan ketika keluar dari cakupan, jalankan fungsi drop. Kita mendefinisikan fungsi drop
00:03:14sendiri pada shape di sini jadi di sinilah kita akan menempatkan logika pembersihan kita. Cara lain yang bisa
00:03:18Anda lakukan adalah dengan menggunakan kata kunci defer lalu menempatkan sebuah fungsi di sini. Pada dasarnya apa artinya ini
00:03:22adalah ketika fungsi ini selesai dan keluar dari cakupan, jalankan fungsi ini setelahnya. Jadi bahasa ini
00:03:26pada dasarnya memiliki semua yang Anda butuhkan untuk aplikasi yang sangat dasar saat ini dan ada beberapa fitur lagi
00:03:31tetapi saya tidak ingin ini menjadi tutorial pemrograman, jadi silakan saja tulis bahwa Anda memiliki
00:03:35pengalaman Xero selama tiga menit di CV Anda. Dengan semua hal itu selesai, mari kita fokus pada apa yang
00:03:39menurut saya merupakan nilai jual utama untuk Xero, yaitu toolchain-nya dan fakta bahwa ia dibuat untuk agen AI.
00:03:44Bayangkan sebuah agen AI menulis beberapa kode Xero dan kode itu menimbulkan beberapa bug. Mereka mengklaim bahwa
00:03:49di sebagian besar bahasa, Anda hanya akan mendapatkan tumpukan teks dan pesan kesalahan itu dirancang
00:03:54untuk dibaca manusia. Di Xero, Anda sebenarnya bisa mendapatkan pesan yang dapat dibaca manusia dan tampilannya akan
00:03:58seperti ini, tetapi Anda dapat melihat bahwa itu bukan keluaran yang terstruktur. Jadi mereka telah memastikan bahwa di
00:04:02setiap bagian dari toolchain, sebenarnya ada opsi JSON. Jadi jika kita menjalankan fungsi yang sama lagi tetapi
00:04:07kali ini menggunakan opsi JSON dan saya juga menyalurkannya ke JQ agar terlihat sedikit lebih bagus
00:04:12Anda dapat melihat kita mendapatkan kembali pesan kesalahan keluaran terstruktur yang bagus. Kita memiliki diagnostik di sini seperti
00:04:16tingkat keparahan, kode, dan pesannya. Kita tahu di mana kesalahan itu terjadi, nilai yang diharapkan, dan nilai
00:04:21sebenarnya. Lalu kita memiliki beberapa bantuan untuk LLM itu sendiri serta kolom keamanan perbaikan yang
00:04:26menyatakan ini akan memerlukan tinjauan manusia dan kemudian beberapa informasi tentang bagaimana ini dapat diperbaiki. Jadi
00:04:31bahasa ini hanya mencoba memberikan konteks yang cukup kepada LLM sehingga ia dapat memperbaikinya sendiri. Perintah lain yang
00:04:35menunjukkan hal itu dengan baik adalah perintah xero fix. Yang ini saya gunakan dengan mode plan serta JSON dan juga
00:04:40menyalurkannya ke JQ agar terlihat bagus di terminal kita. Ketika saya menekan enter pada perintah ini, ia pada dasarnya
00:04:44melakukan diagnostik pada file rusak terklasifikasi yang saya berikan dan pada dasarnya menyatakan apa yang
00:04:49perlu saya lakukan untuk benar-benar memperbaiki file ini. Anda dapat melihat kita mendapatkan keluaran terstruktur kembali dengan kolom-kolom yang
00:04:53hampir hanya perlu diketahui oleh LLM seperti tingkat keamanan, mode, penerapan, pengeditan. Kita memiliki hal-hal di bawah sini
00:04:58Di bawah sini ada bagian diagnostik yang hampir sama dengan yang kita lihat di perintah Xero check,
00:05:03dengan apa yang kita lihat di perintah xero check dan di bawah sini kita juga memiliki perbaikan untuk kode kesalahan itu
00:05:07sendiri. Jadi bagaimana ini biasanya diperbaiki? Pada dasarnya sebagian dari idenya tampaknya adalah bagaimana jika bahasa tersebut
00:05:12menyediakan dokumentasinya sendiri saat dibutuhkan. Jadi jika kita mengarahkan LLM ke bahasa baru ini,
00:05:17ia tidak benar-benar perlu mencari dokumentasi apa pun atau menggunakan keahlian apa pun, ia hanya akan bisa mendapatkan
00:05:21informasi yang cukup dari toolchain saat benar-benar dibutuhkan. Jadi untuk mengujinya, saya menaruh
00:05:25file kita yang rusak di direktori baru yang tidak memiliki informasi tentang apa itu bahasa Xero dan sekarang
00:05:30saya hanya meminta Claude untuk memperbaiki file yang rusak itu dan juga memberikannya perintah yang dibutuhkannya untuk
00:05:34diagnostik tersebut karena ia memang butuh beberapa informasi tentang cara menggunakan toolchain-nya. Dengan begitu
00:05:38kita bisa langsung melihat apakah Claude benar-benar bisa memperbaiki file ini. Nah, di sana Anda bisa melihat setelah 31 detik ia
00:05:43berhasil memperbaiki semua kesalahan dalam file tersebut dan saya sebenarnya memasukkan tiga kesalahan dan ia menemukan
00:05:47ketiganya dan memperbaikinya, dan kita bisa menggulir ke atas dan melihat bagaimana ia melakukannya. Ia hanya menjalankan
00:05:51perintah xero fix yang saya berikan. Kali ini kita mendapatkan kembali ok true, jadi begitulah cara ia tahu tidak ada
00:05:56kesalahan tersisa dan jika kita menggulir ke atas, kita bisa melihat bahwa ia melakukan beberapa perubahan kode dan ia melakukannya karena pada
00:06:00langkah sebelumnya ia menjalankan xero fix dan mendapatkan beberapa informasi tentang cara tepat untuk memperbaiki masalah tersebut dan
00:06:05ia melakukannya pada ketiga masalah yang kita miliki. Jadi ia tidak memiliki informasi sebelumnya tentang apa itu
00:06:10bahasa Xero, ia tidak menggunakan pencarian web atau semacamnya untuk mengambil dokumentasi,
00:06:14ia hanya menggunakan informasi yang disediakan toolchain sebagai keluaran terstruktur. Saya sebenarnya
00:06:18sedikit terkesan dengan hal itu, ini adalah bahasa baru yang masih bisa didesiminasikan oleh LLM berkat
00:06:22bagaimana bahasa tersebut dibangun, tetapi ada satu hal yang membuat saya penasaran, apakah ini benar-benar baru? Maksud saya
00:06:28saya mengerti seluruh poin penjualan dari kesalahan dan segala sesuatu di toolchain yang memiliki keluaran
00:06:31terstruktur, tetapi itu bukan konsep baru, kita sudah memiliki pesan kesalahan terstruktur selama beberapa dekade. Maksud saya
00:06:37lihat ini, saya memiliki program terklasifikasi yang kira-kira sama yang dibangun di Rust dan ia memiliki kesalahan serupa
00:06:41dan saya bisa meminta agar keluarannya berupa JSON. Saya tidak begitu yakin bahwa kita membutuhkan seluruh bahasa
00:06:46untuk dibangun di sekitar ide ini dan mungkin Anda bisa saja meningkatkan bahasa yang sudah ada jika Anda merasa
00:06:51ada celah dalam informasi tersebut. Saya juga cukup yakin bahwa jika saya mengambil kode Rust yang rusak itu dan meminta
00:06:55Claude untuk memperbaikinya, dia akan dapat melakukannya dengan mudah dan itu akan terjadi bahkan jika kode itu tidak menggunakan keluaran
00:07:00terstruktur. Saya merasa LLM melakukan pekerjaan yang sangat baik dengan pesan normal atau mungkin saya hanya belum
00:07:05menemukan masalah itu. Selain itu, kita memiliki fakta bahwa LLM telah dilatih pada banyak bahasa
00:07:10coding yang ada seperti Rust sehingga ia akan sangat pandai mendesiminasikannya dan ia memiliki banyak
00:07:14contoh dalam data pelatihannya, tetapi dengan Xero ia sama sekali tidak memilikinya. Sekarang itu tidak berarti Anda harus
00:07:19tidak pernah mencoba dan menambahkan bahasa baru, itu hanya berarti jika Anda membangun aplikasi yang rumit, Anda tidak akan memilih
00:07:24Xero, tetapi sejujurnya mereka juga tidak benar-benar memasarkannya seperti itu. Secara keseluruhan saya
00:07:28pikir ini hanyalah eksperimen yang rapi dan jika ada, ini menunjukkan bahwa Anda masih bisa membangun bahasa baru
00:07:32dan memberikan konteks yang diperlukan kepada LLM tanpa mengharuskan mereka dilatih pada bahasa tersebut, tetapi saya hanya tidak begitu
00:07:37yakin apakah ini memang diperlukan. Semua itu bukan berarti bahwa bahasa itu sendiri tidak keren. Seperti yang saya katakan,
00:07:42sebenarnya tidak terlalu buruk untuk digunakan dan ia memang mengompilasi ke ukuran yang bagus. Saya hanya ragu bahwa saya akan
00:07:47menggunakan ini daripada bahasa yang sudah mapan seperti Rust, Zig, atau Go. Saya yakin akan ada banyak
00:07:51opini tentang hal ini, jadi beri tahu saya pendapat Anda di kolom komentar di bawah atau tekan tombol subscribe itu
00:07:55dan seperti biasa, sampai jumpa di video berikutnya.

Key Takeaway

Xero memangkas ketergantungan agen AI pada data pelatihan eksternal dengan menyediakan dokumentasi dan pesan kesalahan terstruktur dalam format JSON langsung dari toolchain kompilator.

Highlights

  • Vercel merilis bahasa pemrograman sistem baru bernama Xero yang dirancang khusus dari awal untuk kolaborasi antara manusia dan agen AI.

  • Seluruh toolchain Xero menyertakan opsi keluaran berbasis JSON terstruktur untuk semua hasil kompilator dan pesan kesalahan agar mudah dibaca oleh LLM.

  • Fitur kapabilitas “world” di Xero mewajibkan deklarasi eksplisit untuk semua operasi I/O, seperti akses berkas atau panggilan jaringan, sehingga kesalahan target kompilasi terdeteksi sebelum runtime.

  • Model AI Claude berhasil memperbaiki tiga kesalahan sintaksis terpisah pada berkas Xero yang rusak dalam waktu 31 detik tanpa pelatihan data sebelumnya mengenai bahasa tersebut.

  • Bahasa pemrograman modern seperti Rust sudah memiliki kemampuan untuk mengeluarkan pesan kesalahan dalam format JSON terstruktur.

Timeline

Pengenalan Xero dan Konsep Toolchain Ramah AI

  • Xero hadir sebagai bahasa pemrograman tingkat sistem yang setara dengan Rust atau Zig.
  • Arsitektur bahasa pemrograman tradisional dirancang untuk dibaca manusia, sementara Xero dioptimalkan untuk data terstruktur bagi agen AI.
  • Kompilator Xero menghasilkan seluruh data keluaran dan pesan kesalahan dalam format JSON.

Perkembangan agen AI dalam pembuatan kode memicu kebutuhan akan bahasa pemrograman yang menyediakan data ramah mesin. Bahasa pemrograman yang ada saat ini menghasilkan tumpukan teks kesalahan yang membingungkan bagi LLM. Xero menyelesaikan masalah ini dengan mengintegrasikan keluaran JSON terstruktur ke dalam setiap komponen toolchain sejak awal pengembangan.

Sintaksis Dasar dan Manajemen Efek Samping I/O

  • Fungsi entry point utama diatur melalui deklarasi fungsi main publik yang mengembalikan void.
  • Operasi efek samping I/O wajib menggunakan deklarasi kapabilitas “world” secara eksplisit.
  • Kata kunci “check” dan “raises” menangani penerusan kesalahan program mirip dengan operator tanda tanya pada bahasa Rust.

Program pertama diuji dengan mencetak string sederhana ke terminal menggunakan ekstensi berkas .xero. Sistem kapabilitas “world” bertindak sebagai filter keamanan yang menolak kode I/O tidak kompatibel saat kompilasi, seperti memblokir akses sistem berkas ketika melakukan build ke WebAssembly. Eksekusi program dilakukan langsung melalui perintah xero run nama_berkas.xero.

Tipe Data Primitif dan Manajemen Memori Eksplisit

  • Xero menyediakan struktur data standar seperti enum, shape yang mirip struct, serta kontrol alur match.
  • Sistem memori menggunakan mutable span untuk akses tulis, span untuk akses baca, dan tipe owned untuk kepemilikan nilai.
  • Fungsi pembersihan memori diatur melalui fungsi drop kustom atau kata kunci defer.

Pembuatan aplikasi klasifikasi jenis input teks dan numerik menunjukkan pemanfaatan fitur dasar bahasa. Struktur kontrol alur seperti pernyataan if, perulangan while, perulangan for, dan match bekerja secara konvensional tanpa kejutan sintaksis. Sifat eksplisit Xero terlihat pada manajemen memori, di mana tipe owned otomatis memicu logika drop saat variabel keluar dari cakupan operasi.

Uji Coba Perbaikan Kode Mandiri oleh Agen AI

  • Opsi JSON terstruktur menampilkan tingkat keparahan, kode kesalahan, posisi baris, nilai ekspektasi, dan bantuan LLM.
  • Perintah xero fix menyediakan mode rencana berbasis JSON untuk memberikan panduan perbaikan kode secara otomatis.
  • Model Claude memperbaiki berkas Xero tanpa data pelatihan awal dalam waktu 31 detik menggunakan informasi dari toolchain.

Pengujian dilakukan dengan menempatkan berkas Xero yang rusak ke dalam direktori terisolasi tanpa dokumentasi eksternal. Agen AI memanfaatkan keluaran dari perintah xero fix yang dialirkan melalui utilitas JQ untuk membaca parameter pengeditan terstruktur seperti tingkat keamanan dan mode penerapan. Hasilnya, Claude berhasil mendeteksi dan menyelesaikan tiga bug sekaligus berkat konteks dokumentasi mandiri dari toolchain.

Analisis Relevansi Xero Terhadap Bahasa Pemrograman yang Ada

  • Keluaran JSON terstruktur bukan konsep baru karena bahasa lama seperti Rust sudah mendukung format tersebut.
  • Model bahasa besar modern memiliki performa tinggi dalam menganalisis pesan kesalahan teks normal pada bahasa populer.
  • Xero berfungsi sebagai eksperimen validasi konsep lingkungan pengembangan ramah AI.

Perbandingan dengan program serupa di bahasa Rust menunjukkan bahwa ekosistem lama juga mampu mengeluarkan log kesalahan berbasis JSON jika diminta. Keunggulan Xero berkurang karena LLM sudah sangat terlatih dengan jutaan sampel kode Rust, Zig, atau Go yang ada di internet. Meskipun Xero berhasil mengompilasi program ke ukuran kecil, kebutuhan untuk membuat bahasa pemrograman baru secara utuh dipertanyakan jika peningkatan serupa bisa diterapkan langsung pada bahasa yang sudah mapan.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video