- Belajar selama 5 tahun di sekolah komputer di Prancis dan bekerja selama 20 tahun sebagai pengembang lepas
- Terutama mengerjakan proyek klien dengan Ruby on Rails
- Saat mulai mempelajari Common Lisp, menulis protokol manajemen server yang menghasilkan parser ASN.1
- Menghasilkan kode C dari Common Lisp untuk mengembangkan server SNMP
- Setelah itu menulis berbagai proyek berbasis Common Lisp:
- cl-unix-cybernetics – proyek dengan bintang terbanyak di GitHub
- Mengembangkan cl-streams dan cffi-posix
- cl-facts – triple store yang berfungsi sebagai basis data graf Common Lisp
- Cepat, mendukung transaksi atomik dan transaksi yang bisa dinest
- Kompatibel dengan
unwind-protect
- Bisa digunakan hanya dengan mempelajari 3 makro
- Dipresentasikan di European Lisp Symposium (ELS)
- Saat fokus pada pengembangan Common Lisp, ia kehilangan klien, tetapi tetap sangat yakin pada potensi Lisp
Batasan mesin virtual (VM) dan container
- Para ahli menunjukkan berbagai masalah pada VM dan container:
- VM membuang CPU dan bandwidth secara tidak perlu
- Container berbasis cgroups di Linux memiliki kerentanan remote code execution (RCE) dan privilege escalation
- Setiap tahun ditemukan kerentanan keamanan baru
- Sambil lebih memilih OpenBSD, ia menghindari masalah pada alat DevOps seperti Terraform dan Ansible
Batasan Common Lisp dan masalah performa
- Di Clojure dan lainnya, GC (garbage collector) menimbulkan masalah performa:
- Ada kasus gagal saat mengembangkan game strategi yang memproses ribuan unit
- GC pada JVM membawa masalah performa dan biaya
Keputusan beralih ke C
- Menyadari keterbatasan performa dan portabilitas Common Lisp:
- Linux, OpenBSD, GTK+, dan GNOME semuanya ditulis dalam C
- Pada akhirnya beralih ke C untuk menyelesaikan masalah performa dan portabilitas
Pengembangan bahasa baru KC3
- Mengembangkan pustaka utilitas libc3 → bahasa C3 → lalu berganti nama menjadi KC3
- Fitur KC3:
- Memiliki interpreter (ic3) dan compiler (c3c)
- Membuat dan mengonversi balik struktur data dari buffer UTF-8
- Defensive programming → meminimalkan bug sejak awal
- Tidak memiliki masalah keamanan
- Sistem tipe data berbasis tagged union enum
Hasil berbasis KC3
- Mem-porting cl-facts ke C89:
- Pengembangan selesai selama masa Covid-19
- Mengimplementasikan penambahan triple, penghapusan, sistem kueri rekursif, transaksi, logging, persistensi, dan lainnya
- Menulis parser dan generator untuk jenis algoritmik:
- Mencakup struct, linked list, map, hash table, complex number, tuple, code block, dan lainnya
- Sangat terinspirasi oleh José Valim (pencipta Elixir)
- ikc3 – REPL yang menampilkan hasil evaluasi KC3
- kc3_httpd – mengembangkan web server berbasis framework MVC
- Halaman blog saat ini juga dilayani oleh kc3_httpd
- Menulis situs web dokumentasi → menggunakan konverter Markdown ke HTML milik KC3
Kesimpulan
- Beralih dari Common Lisp ke C berdasarkan pengalaman yang diperoleh
- KC3 menunjukkan hasil yang sangat baik dalam performa, keamanan, dan portabilitas
- Ke depan akan menyediakan makro tambahan dan contoh yang berkaitan dengan KC3
1 komentar
Opini Hacker News
Saya justru berpendapat sebaliknya. Setelah banyak menggunakan VB saat kecil, saya belajar Java, C, dan C++ di universitas, lalu terutama memakai C. Saya menjadi pengembang inti Xfce dan bekerja selama 5 tahun
Saya sangat memahami perasaan itu. Selama beberapa tahun saya merasakan dorongan kuat untuk membangun sesuatu dengan C murni
Dulu sekali saya mulai pemrograman dengan C, dan sampai sekarang kadang ingin kembali ke masa itu
Setelah membaca tulisan blog itu, saya bingung apa yang sebenarnya ingin disampaikan penulis
Contoh kode kc3 diberikan
C adalah bahasa pertama saya, dan saya pernah membuat aplikasi konsol sederhana serta game kecil
Kadang saya ngoding dengan C sebagai hobi. Tapi terlalu banyak pekerjaan berulang yang membuatnya membosankan
C berhasil karena bersifat praktis
Saya tidak paham apa pun
Tulisan ini terasa seperti kisah peringatan tanpa akhir yang bahagia