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.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video