2 poin oleh GN⁺ 2024-05-27 | 1 komentar | Bagikan ke WhatsApp

Hurl, bahasa yang berbasis pengecualian

Ikhtisar

  • Hurl adalah bahasa yang dibuat untuk mengeksplorasi bahasa yang menggunakan penanganan pengecualian sebagai satu-satunya alur kontrol.
  • Bahasa ini bermula dari percakapan antara Nicole Tietz-Sokolskaya dan teman-teman di Recurse Center.
  • Situs ini menyediakan dokumentasi penggunaan Hurl, contoh, panduan debugging, dan FAQ.

Instalasi dan cara penggunaan

  • Kode sumber Hurl tersedia di repositori Hurl.
  • Jika Anda menemukan bug atau kesalahan, patch melalui email diterima, tetapi Anda harus menyerahkan semua hak atas patch tersebut.
  • Hal ini dilakukan untuk mempertahankan relisensi dan lisensi komersial.

Sintaks dan filosofi Hurl

  • Hurl adalah bahasa yang berpusat pada penanganan pengecualian.
  • Alur kontrol diimplementasikan hanya dengan penanganan pengecualian.

Pola umum

  • Alur kontrol dikelola melalui penanganan pengecualian.
  • Struktur kontrol tradisional (misalnya if, for) tidak digunakan.

Pustaka standar

  • Hurl menyediakan pustaka standar.
  • Termasuk berbagai fungsi yang berbasis penanganan pengecualian.

Contoh

  • Tersedia berbagai contoh kode.
  • Melalui contoh kode, cara penggunaan Hurl dapat dipahami dengan mudah.

Debugging dan kesalahan

  • Panduan debugging disediakan.
  • Menjelaskan cara menangani kesalahan secara efektif.

FAQ

  • Menyediakan jawaban untuk pertanyaan yang sering diajukan.
  • Membahas masalah umum yang dapat muncul saat menggunakan Hurl.

Pujian untuk Hurl

  • Erika Rowland: "Monster ini indah, dan saya sama sekali tidak ingin menyentuhnya. Saya tidak ingin nama saya dikaitkan dengan ini."
  • Nicole Tietz-Sokolskaya: "Saya memutuskan untuk mewujudkan bahasa ini. Maaf."
  • Mary McGrath: "🤮" (apakah ini kutipan yang bisa digunakan?)
  • nate (@nmoo@mas.to): "Abnormal bersertifikat™!"

Kode sumber

  • Kode sumber Hurl dan situs ini tersedia di repositori Hurl.
  • Patch melalui email diterima, tetapi semua hak harus diserahkan.

Lisensi

  • Proyek ini dapat digunakan di bawah salah satu dari tiga lisensi berikut:
    • AGPL-3.0
    • GAL-1.0 (Gay Agenda License)
    • lisensi komersial
  • Anda dapat memilih salah satu dari tiga lisensi tersebut untuk digunakan.

Opini GN⁺

  • Bahasa yang berpusat pada penanganan pengecualian: Hurl mengambil pendekatan unik dengan menjadikan penanganan pengecualian sebagai pusat alur kontrol untuk menggantikan struktur kontrol tradisional. Ini menuntut cara berpikir baru dari para pengembang.
  • Nilai edukatif: Hurl dapat membantu memahami pentingnya penanganan pengecualian dan cara memanfaatkannya secara lebih mendalam. Secara khusus, ini dengan jelas menunjukkan masalah yang muncul ketika penanganan pengecualian digunakan secara keliru.
  • Masalah kepraktisan: Menggunakan Hurl dalam pekerjaan nyata bisa menjadi tantangan. Bagi pengembang yang terbiasa dengan struktur kontrol tradisional, ini dapat menjadi hambatan besar.
  • Kolaborasi dengan komunitas: Kode sumber Hurl disediakan sebagai open source dan mendorong partisipasi komunitas. Ini dapat memberi dampak positif pada perkembangan proyek dan perbaikan bug.
  • Pilihan lisensi: Dengan menyediakan berbagai lisensi, proyek ini memberi pengguna lebih banyak pilihan. Ini berkontribusi pada peningkatan fleksibilitas proyek.

1 komentar

 
GN⁺ 2024-05-27
Opini Hacker News

Ringkasan kumpulan komentar Hacker News

  • Penting untuk mewajibkan namespace dan import saat merancang bahasa pemrograman

    • Mewajibkan namespace dan import membuat kode lebih mudah dipahami.
    • Sebaiknya tidak mengizinkan efek samping pada level teratas.
  • Pendapat tentang penanganan exception

    • Penanganan exception membuat kontrak antara pemanggil dan yang dipanggil menjadi lebih sulit.
    • Menangani exception melalui nilai kembalian seperti di Go atau Rust dianggap lebih baik.
    • Akan bagus jika IDE bisa mendeteksi semua exception yang belum ditangani secara dinamis, dan memudahkan pencarian titik terjadinya exception.
  • Contoh penggunaan toss

    • toss terutama digunakan saat fungsi mengembalikan beberapa nilai.
    • Tidak terlalu berguna kecuali untuk kasus yang tidak langsung dilanjutkan kembali.
  • Bahasa Hurl dan sistem kondisi

    • Hurl mirip dengan sistem kondisi di Smalltalk/CL.
    • Sistem kondisi menyediakan beberapa opsi restart.
  • Penggunaan ekstensi domain .wtf

    • Dunia mungkin akan menjadi lebih baik jika lebih banyak hal memakai ekstensi domain .wtf.
  • Bahasa yang mirip dengan efek aljabar

    • Mirip dengan bentuk lemah dari efek aljabar, tetapi tetap menarik.
  • Perasaan campur aduk terhadap bahasa Hurl

    • Tidak suka bahasa Hurl, tetapi ada sisi yang agak elegan.
    • Akan lebih baik jika ada sintaks yang membedakan exception yang bisa dilanjutkan kembali dan yang tidak bisa.
    • Pustaka standar seharusnya tidak diganti dengan fungsi pengembalian nilai biasa.
  • Perbedaan toss dan hurl

    • hurl bisa ditangkap, tetapi toss tidak bisa.
    • Khawatir kalau terlalu sering memakai Hurl, orang-orang akan memanggil saya "tosser".
  • Struktur bahasa toss

    • toss menelusuri stack untuk mencari exception handler, lalu melanjutkan eksekusi seolah tidak terjadi apa-apa.
    • Perilaku tambahan bisa disuntikkan saat runtime.
    • Dalam kode berorientasi objek, injeksi dependensi dilakukan melalui konstruktor layanan, tetapi toss memakai toss handler.