HeadlinesBriefing favicon HeadlinesBriefing.com

Pemarah mencoba server bahasa

Hacker News •
×

Saya menulis kode dengan cara yang kurang lebih sama seperti sepuluh tahun lalu: membuat edit di editor teks saya, beralih ke terminal, dan menjalankan perintah untuk mengompilasi dan mengeksekusi. Saya melihat hasilnya, lalu kembali ke editor saya. Jika tidak yakin, saya menambahkan cetakan pelacak atau memulai ulang di debugger. Jika pengecualian membuat program saya crash, saya memperbaikinya dan memulai ulang.

Saya iri dengan apa yang dilakukan programmer Lisp. Pengembangan Lisp terjadi dengan mengetik kode langsung ke repl untuk menambah, menghapus, dan mengganti bagian dari sistem yang hidup dan berjalan. Programmer Lisp tidak perlu "beralih" karena mereka sudah berada di dalam proses program mereka. Mereka tidak pernah "mengompilasi dan mengeksekusi" karena kode sudah berjalan, dan mereka mengedit dengan hot-swapping. Mereka tidak memulai ulang di debugger karena mereka dapat memeriksa apa pun. Mereka tidak memulai ulang pada pengecualian karena sistem kondisi memungkinkan melanjutkan dari mana saja.

Konsekuensinya adalah di awal proyek Lisp, mungkin tidak ada kode sumber; definisi yang berkembang hanya ada di image memori. Ini seperti cara orang memperlakukan database relasional di awal—skema hanya ada di database yang berjalan. Akhirnya, itu dibuang ke file di bawah kontrol versi.

Saya bukan pengembang Lisp, jadi saya akan tetap iri. Tetapi saya menyadari bahwa saya belum mencoba untuk lebih dekat. Di Haskell, ada kemenangan parsial: sistem tipe mengurangi pengecualian, dan server bahasa Haskell (hls) dengan Eglot dari Emacs memberikan introspeksi yang lebih baik. ghcid mengawasi perubahan dan mengompilasi ulang dengan cepat.