5 puan yazan GN⁺ 2023-09-18 | 1 yorum | WhatsApp'ta paylaş
  • Catala, yasama metinlerinden faithful-by-construction algoritmalar türetmek için geliştirilmiş alan-özel bir dil ve sosyal ile mali mevzuat için literate programming'e göre tasarlanmış bir programlama dilidir
  • Yasalar, uygulama yönetmelikleri, içtihatlar gibi uygulanacak sosyal ve mali mekanizmalara ilişkin kaynaklar toplandıktan sonra, uygulama her satırın anlamı madde madde kodla açıklama olarak işlenerek yazılır
  • Catala derleyicisi, tamamlanmış ve test edilmiş koddan avukatların okuyabileceği PDF sürümünü üretebilir; dil, hukuk uzmanlarının inceleyip doğruluğunu onaylayabilmesi için hukuk uzmanlarıyla işbirliği içinde tasarlanmıştır
  • Temel kavramlar, Prof. Sarah Lawsky'nin A Logic for Statutes çalışmasına dayanan definition-under-conditions ve default logic'tir; hukukun mantıksal yapısı, dilin mantıksal yapısı tarafından taklit edilir
  • Geliştirme araçları olarak çeşitli metin düzenleyiciler için sözdizimi vurgulama, VSCode eklentisi, özel LSP sunucusu, kod gezinme, otomatik tamamlama, test paketi UX'i ve catala-format biçimlendiricisi sunar
  • Öğrenme ve başvuru için Catala book, Catala tutorial, Fransızca ve İngilizce dilbilgisi cheat sheet ve en güncel master sürümünün derleyici belgeleri kullanılabilir
  • Derleyici ve depo içindeki kod, alt dizinlerde ayrı bir lisans belirtilmediği sürece Apache license version 2 ile dağıtılır
  • Catala, Inria'nın bir araştırma projesidir; derleyicisi hâlâ kararsızdır ve bazı özellikleri eksiktir

1 yorum

 
GN⁺ 2023-09-18
Hacker News yorumları
  • Bu proje, yasa maddelerini biçimsel olarak belirtmenin ve mevzuatın büyük ölçüde mekanik biçimde yorumlanabildiği bir sistemin iyi bir şey olduğunu örtük olarak varsayıyor gibi görünüyor.
    Daha da ileri gidersek, takdir payı ve hata marjı olan mevcut insan yorumlayıcılar sistemini aşılması gereken bir sorun olarak görüyor demektir; bu varsayıma tamamen karşı değilim ama doğru olduğu da açık değil, yazarların bunu destekleyen argümanlar sunduğunu da sanmıyorum.

    • Bu projenin motivasyonunun bu kadar felsefi olmaktan çok daha pratik olma ihtimali yüksek görünüyor; ayrıca yasaların eyalet yönetimi bilişim sistemlerinde çalışan koda ne kadar sık dönüştürüldüğünü hafife alıyor gibi.
      Mevzuatı koda dönüştürme sürecini bilen biri olarak, sağladığı değer yazılım geliştiricilere netlik kazandırmakla sınırlı olsa bile bu projenin yapmaya çalıştığı şeyi anlayabiliyorum.
    • Bu oldukça doğal görünüyor ve hukukun zaten hedeflediği şeyin de bu olduğunu düşünüyorum. Ne de olsa içtihat yoluyla çok hassas bir hukuka ulaşılıyor, ama oraya varmak yüksek hukuki maliyetler gerektiriyor. En azından Catala ana sayfasında ayrıca kanıtlanması gereken bir şey gibi görünmüyor.
      Bunun hukukun üstünlüğü ile de yakından ilgili olduğunu düşünüyorum. https://www.britannica.com/topic/rule-of-law adresine göre hukuk kamuya açık ve açık olmalı, genel bir biçime ve evrensel uygulanabilirliğe sahip olmalı, insanların harekete geçmeden önce başvurabileceği kesin koşullar içermeli ve hukuki yükümlülükler geriye dönük olarak oluşturulmamalı. Muğlak hukukun avantajının ne olduğunu merak ediyorum.
    • Vergi dilimi hesaplaması gibi bazı yasalar için sorun olmayabilir, ama çoğu yasanın bu şekilde kodlaştırılmaması gerektiğini düşünüyorum.
    • Bu, Fransız hukuk geleneğiyle oldukça iyi örtüşüyor. Montesquieu’nün “yargıç, yasanın ağzından başka bir şey değildir” sözünü hatırlamak yeterli.
      Hukuk diploması okurken bir programcı olarak bu alana epey ilgi duymuştum ve Fransızca konuşulan dünyada bu tür hukukçu/pozitivist çalışmalar yapan büyük bir topluluk keşfetmiştim. Üniversitemde bu alana ilgi duyan profesör de o etki alanına yakın duruyor gibiydi.
  • Birkaç yıldır avukat bir arkadaşımı tam olarak böyle bir şeyin olmasının iyi olacağına ikna etmeye çalışıyordum; meğer muhtemelen zaten hep varmış.
    Gerçekten harika olduğunu düşünüyorum. Tüm yasalar böyle bir dille yazılmalı ve sözdizimi vurgulama ile tutarlı biçimlendirme kurallarıyla yayımlanmalı. Ardından okul müfredatına bu hukuk dilini öğrenme konusu eklenmeli. Böylece insanların yasayı okuyup kendi anlayışlarından emin olma becerisi büyük ölçüde gelişir ve bu toplum açısından da büyük bir kazanç olur.

    • Bu, gerçek hukukun nasıl işlediğine dair oldukça büyük bir yanlış anlama gibi görünüyor; anlaşılması güç laf oyunlarını öne çıkaran avukat dizileri de bunu pekiştirmiş gibi.
      Gerçek hayattaki yasalar zaten nispeten sıradan bir dille yazılır ve kelimeler de neredeyse her zaman genel İngilizcedeki anlamlarıyla kullanılır. Sorun, bu kelimelerin açıkladığı hukuk kavramlarının kendisinin karmaşık olması ve çoğu zaman başka yasalar, düzenlemeler, içtihatlar vb. ile yapılan atıfların iç içe geçmesidir.
    • İlke olarak katılıyorum, ancak hukuk genellikle yorum ve içtihada o kadar çok dayanır ki, beklenen şekilde ifade etmek ve anlamak zordur.
    • Bağlantılar işin özü olabilir. İçtihadı, gerekçeleri ve atıfları Hammurabi’nin ilk söz edimine kadar geriye izleyebilsek oldukça öğretici olurdu.
    • Büyük sorun, hukuku yorumlamış olan tüm içtihat hukukunu kaybetmek olur. Bu, iki yüzyıllık hata raporlarını ve yamaları atmaya benzer.
      Öte yandan Uniform Commercial Code gibi hukukun kanunlaştırıldığı durumlar da var. Yani içtihat hukukunun tutarlı biçimde yeniden yazılıp yamaların birleştirilerek düzenlendiği bir örnek.
  • Test vakalarının da birlikte “dokunarak” eklenmesi ilginç olurdu. Mantıksal cümlelerin birbirine değdiği çalışma yüzeyi, hataların tam da girdiği yerdir.
    Bu özellikle zamansal olayların çevresinde böyledir; burası biçimsel modele uzanır ve daha fazla hata da doğurur. Genelde bir anahtarla ilgili kural varsa en az üç test gerekir¹: daha büyük durum, eşit durum, daha küçük durum. Tipler vb. yoksa negatif değer, null, maksimum/minimum sınır girdileri de gerekir.
    Örneğin “düzenleme 3 ay sonra kabul edildiğinde, tarafların B’yi kullanması engellenmiş olsa da yine de ‘17 ton’ atık boşaltıldığında…” gibi zaman çizelgesi tabanlı testler konabilir. Bir model denetleyici entegre edilirse çok faydalı olur. Biçimsel olarak doğrulanmış yasama, en azından dili koda kodlama sürecinde DevOps benzeri bir pipeline da kurulabilir.
    ¹ https://en.m.wikipedia.org/wiki/Equivalence_partitioning

    • Derlenmezdi; tabii şaka.
      Birçok yasa bol miktarda çift anlamlı ifade içerir. Rus araçlarına izin verilip verilmeyeceğine ilişkin son AB düzenlemesi iyi bir örnek. Yine de hukuku bir programlama diliyle “dijitalleştirmeye” çalışırken olası çift anlamlılıkları veya muğlak tanımları bulmak için iyi bir fikir olabilir.
    • Çok iyi. Legacy kodun nasıl kullanılması gerektiğini anlamak için sık sık birim testlerine bakarım. Hukuk, hukuki belgenin parçası olan somut örneklerle birlikte sunulursa, hem kuralların mantıksal olarak tutarlı olup olmadığını hem de bizim anlayışımızın doğru olup olmadığını test edebiliriz.
      Bu, kodun çalıştığına reviewer’ı ikna etmek için birim/entegrasyon/uçtan uca testlerle kanıtlamaya çalışmaya benzer. Hukuk sisteminde de uçtan uca testler bulundurmak gibi olur.
    • Hayal edersek, test odaklı geliştirmeyi hukuka uygulamak demek.
      Bir adım daha ileri gidip test paketleri yazabilir ve bu testleri karşılayan olası hukuk kapsamını otomatik olarak üretebiliriz.
    • Birim testleri olsa iyi olurdu.
  • Yasanın niyetini açıkça belirten standart test paketi formatını daha fazla görmek isterim
    Eskiden yaşadığım eyalette iyi niyetle çok basit bir çocuk pornografisi yasağı önerilmişti, ama fazlasıyla basitti. Kabaca “telefonuyla bir reşit olmayanın müstehcen fotoğrafını gönderen kişi çocuk pornografisi iletme suçunu işlemiş olur” gibi bir şeydi; hukuki terimlerle yazılmıştı ama bundan çok daha ayrıntılı değildi. Tasarıyı sunan kişiyi arayıp, varsayımsal kızım kendi çıplak fotoğrafını erkek arkadaşına gönderirse yeni yasaya göre ağır suçlu olmayacak mı diye sordum; “Ah, kahretsin, kastettiğimiz bu değildi!” gibi tepki verdi ve sonunda yeniden yazmak üzere tasarıyı geri çekti
    Bunu program kodu gibi ele alıp “bu yasa, reşit olmayan birinin kendi fotoğrafını göndermesi durumunda uygulanmaz” gibi testler eklediğimizi hayal edebiliriz. Yasa koyucuları niyetlerini netleştirmeye zorlar; “çevrimiçi çocuk güvenliği yasasını trans yanlısı içerikleri yasaklamak için kullanmayacağız” diyorlarsa, “tamam, bunu test case olarak ekleyelim” denebilir. Siyasetçilerin bu kadar net biçimde bağlanmaktan hoşlanmaması belirleyici engel
    Ayrıca niyeti yansıtan yasa yazmak kolaylaşır ve gelecekteki mahkemeler yasanın niyetini değerlendirirken bunu kullanabilir. Lafzen 15 yaşındaki birinin selfie göndermesine uygulanıyor olsa bile, test bunun amaçlanmadığını açıkça belirtiyorsa beraat edebilir. Yüzlerce nedenle imkânsız olurdu, ama hayal edebiliriz

    • Bu yaklaşımın etkili olabilmesi için gerçek yasama niyetinin doğru şekilde kodlanması gerekir; dolayısıyla bu örnek çözülmemiş olabilir ve yasa koyucuların iyi niyetle hareket etmesi gerekir
      Yani bilerek geniş kapsamlı olsun diye muğlak yasalar yapıp insanların bunu mahkemede tartışmasına bırakmak şeklinde olmamalı
    • İşin %99’u sınır vakaları bulmaktır ve hukukta bu sınır vakaları açıkça yazmak en yaygın şeydir. O yasa koyucu muhtemelen geri dönüp “reşit olmayan birinin kendi fotoğrafını göndermesi bu maddeyi ihlal sayılmaz” gibi bir hüküm eklemiştir
      Yasanın bilgisayarda çalıştırılabilir olması gerekmez. Niyet ve onun yorumu ile ilgilidir; bu yüzden test paketi de fiilen yasanın bir parçasıdır ve doğrudan yasanın içine konabilir
    • Teoride bir ölçüde hoşuma gidiyor, ama gerçek mahkeme sisteminden daha iyi bir “test paketi” oluşturmanın kelimenin tam anlamıyla %100 imkânsız olduğunu düşünüyorum
    • Hukuki testler iyi olurdu, ama muhtemelen bunları uygulayan aynı mekanizmayla “değerlendirmek” gerekir. Yani mahkemeyle
      Şahsen, herhangi bir ülkede yasaların kendisine yasama amacı eklenirse memnun olurum. Mümkünse çalışıp çalışmadığını gösteren temel performans göstergeleri de eklense iyi olur. Böylece ileride yasanın gerçekten işleyip işlemediği, ters etki yaratıp yaratmadığı, başlıca uygulama örneklerinin baştaki getirilme gerekçesinden farklı olup olmadığı yeniden değerlendirilebilir
    • Bir milletvekilinin tasarıyı geri çekecek kadar farkında olması harika. Minnesota gibi bazı eyaletler reşit olmayanların sexting’ini gerçekten aktif biçimde kovuşturuyor gibi görünüyor
      [1] https://www.aclu.org/news/juvenile-justice/minnesota-prosecu...
  • Greg Bear’ın Moving Mars (1993) kitabında Legal Logic adıyla buna benzer bir şey kısaca geçer. İnsan Marslılar, yeni bağımsız toplumlarının yasalarını oluştururken yapay zekanın yardımıyla bunu kullanır
    Greg Bear, bir yıldan kısa süre önce hayatını kaybeden ünlü bir bilimkurgu yazarıydı; o dönemde burada da ölüm ilanı tartışılmıştı. Ergenlik yıllarımda beni çok etkileyen yazarlardan biriydi; özellikle Moving Mars’taki bu unsurun hayal gücümü harekete geçirdiğini hatırlıyorum ve Catala’nın ne sunduğunu okumak istiyorum
    [1] https://en.wikipedia.org/wiki/Greg_Bear
    [2] https://en.wikipedia.org/wiki/Moving_Mars
    [3] https://news.ycombinator.com/item?id=33679668
    [4] https://news.ycombinator.com/item?id=33675708

  • Bu dili açıklayan bir makale var: https://hal.inria.fr/hal-03159939. Kısa bir video özeti de var: https://youtu.be/OiaFTFSAa1I

  • Programcılar hukuka “programlama dili” gibi bir şey kullanmayı önermeyi sever
    Ama bu, muğlaklığın bazı açılardan hukukun temelden önemli bir parçası olduğunu gözden kaçırıyor. Çünkü dünyanın kendisi de bazı açılardan temelde muğlaktır, bazı açılardan ise net biçimde ayrılır. Elbette her tür muğlaklık arzu edilir değildir
    Ancak “kod yasadır” hâline gelirse açıkları istismar etme biçiminin daha da kötüleşeceğini düşünüyorum. Hatta birçok yasa, ayrıntılı uygulama biçiminden çok korunması gereken değerlere odaklanmalıdır; bu da doğası gereği daha az kesin ve daha muğlak olmak zorundadır

    • Katılıyorum. Kötü bir fikir olduğunu düşünmüyorum, ama kusursuz tanımlanmış ve kusursuz uygulanabilir yasa fikri ürkütücü geliyor. Bugün var olan tüm yasalar kusursuz uygulanabilse ve kusursuz denetlenebilseydi hayatımız tamamen sefil olurdu
      Bunun hukukun mu yoksa uygulamanın mı sorunu olduğunu tartışmayacağım; ama her hâlükârda toplumumuz muğlaklık ve eşitsiz uygulama üzerine kurulu
    • Bu tür projelerle muğlaklığın çatışması için bir neden görmüyorum. concepts bölümündeki value.fair_markete bakın [0]. Avukatlar bunun anlamı üzerinde tartışabilir, ama rekabet eden tanımlar da program olarak tanımlanabilir
      Hukuka dair ilginin uygulama ayrıntılarından çok sonuçlara odaklanması gerektiğine katılıyorum. Bunun için yeni yasaların sonuçlarını ölçecek değerlendirme fonksiyonları oluşturmanın bir yolu gerekir; Catala gibi sistemler beklenen sonuçları modellemeye ve rakip yasa tasarıları arasında seçim yapmaya yardımcı olabilir. Örneğin sonuç “kirliliği azaltmak istiyorum” ise politika “kirleten sektörleri yasaklamak” da olabilir, “kirlilik dışsallıklarını vergilendirmek” de; ikisi de karmaşık sonuçlar doğuracağından otomatik analiz ve ampirik ölçüm daha iyi olur
      [0] https://github.com/CatalaLang/catala#concepts
  • Bilgisayarların hukuk metinleri üzerinde gerçekten akıl yürütmesi konusunda çözeceği büyük bir sorun olup olmadığından pek emin değilim. Karmaşık kısım hakkaniyetin tartılması ve bunun için hâlâ insanlara ve avukatlara ihtiyaç var

    • Doğru. Yine de vergi tarifelerinden algoritma çıkarıldığında netlik yardımcı olabilir; bazen ifadeler muğlak da görünebiliyor. Muhtemelen çok sayıda örneğe de ihtiyaç olacaktır. Yani bir bakıma birim testleri gerekiyor
    • Bu dilin bir faydasını görüyorum. Vergi ve maaş hesaplayan programlar yazmayı çok daha kolaylaştırabilir. Bunun dışında ne sunabileceğini bilmiyorum
      Yasama organlarından, avukatlardan veya hâkimlerden bunu bekleyen var mı, yoksa sadece programcılar mı bekliyor, merak ediyorum
    • “İnsanlar, avukatlar ve rüşvetler” demek istemişsin sanırım
      Hukuk sistemimize pek güvenmiyorum. Neden sorduğunu bilmiyorum
  • Katalanca konuşan biri olarak, yazıda bahsedilen dille olan isim çakışması bana çok talihsiz geliyor

    • Neden talihsiz olduğunu merak ediyorum. Kullanıcı adını da beğendim. Sırf o ada bakıp Katalanca konuşacağını tahmin eden çok kişi olmuştur herhâlde
  • İsim seçimi gerçekten çok talihsiz. Bir programlama diline “français”, “Deutsch” ya da “English” adını vermeye benziyor
    readme’nin aşağılarında “Bu dil adını Pierre Catala’dan almıştır” deniyor. Bunun yerine PierreLang olarak değiştirilmesini öneririm

    • “Bu dil adını, hukuk olayları için bilgisayar veri tabanı Juris-Data’yı oluşturarak Fransız legaltech alanına öncülük eden hukuk profesörü Pierre Catala’dan almıştır” deniyor
      Katalancayı ana dili olarak konuşan biri olarak adı görünce epey şaşırdım, ama yaygın bir soyadıysa mantıklı