1 poin oleh GN⁺ 2026-01-19 | 1 komentar | Bagikan ke WhatsApp
  • Kip adalah bahasa pemrograman eksperimental yang mengintegrasikan kasus tata bahasa dan modus (mood) bahasa Turki ke dalam sistem tipe, untuk mengeksplorasi perpaduan morfologi bahasa alami dan teori tipe
  • Dengan mencerminkan perubahan kasus nomina dan harmoni vokal bahasa Turki dalam struktur kode, Kip membedakan relasi argumen fungsi melalui sufiks kasus dan mendukung fleksibilitas urutan argumen
  • Fitur utama bahasa fungsional modern seperti pattern matching, tipe polimorfik, tipe data induktif, dan efek input/output diekspresikan dalam bentuk tata bahasa Turki
  • Dibangun menggunakan penganalisis morfologi Foma dan Haskell Stack, serta menyediakan lingkungan eksekusi browser berbasis WASM dan fitur cache bytecode (.iz)
  • Sebagai proyek riset dan edukasi yang menunjukkan persilangan linguistik dan desain bahasa pemrograman, Kip menjadi contoh eksperimen kemungkinan desain bahasa berbasis bahasa alami

Ikhtisar Kip

  • Kip adalah bahasa yang namanya diambil dari kata Turki kip (modus), sebuah bahasa eksperimental yang memasukkan kasus tata bahasa Turki ke dalam sistem tipe
    • Mengintegrasikan perubahan kasus nomina (ismin halleri) dan harmoni vokal (vowel harmony) bahasa Turki ke dalam desain bahasa pemrograman
    • Merupakan proyek untuk tujuan riset dan edukasi, bukan bahasa untuk distribusi produksi
  • Tersedia tutorial dalam bahasa Turki dan Inggris untuk mempelajari cara menulis program Kip
  • Tata bahasa dan perilakunya masih berada pada tahap eksperimental, sehingga dapat berubah di masa depan

Fitur bahasa

  • Menggunakan kasus tata bahasa Turki sebagai tipe
    • Mendukung 8 kasus: nominatif, akusatif, datif, lokatif, ablatif, genitif, instrumental, dan posesif
    • Tiap kasus ditandai dengan sufiks, sehingga relasi antar argumen fungsi dibedakan secara eksplisit
  • Urutan argumen yang fleksibel
    • Karena sufiks kasus memperjelas relasi argumen, makna tetap sama walau urutan argumen diubah
    • Contoh: (5'le 3'ün farkını) yaz. dan (3'ün 5'le farkını) yaz. menghasilkan hasil yang sama
  • Definisi tipe data induktif
    • Mendefinisikan tipe data aljabar dengan sintaks Turki
    • Contoh:
      Bir doğal-sayı
      ya sıfır
      ya da bir doğal-sayının ardılı
      olabilir.
      
  • Dukungan tipe polimorfik
    • Dapat mendefinisikan struktur data generik
    • Contoh: tipe list dalam bentuk (öğe listesi)
  • Pattern matching
    • Melakukan pattern matching menggunakan sufiks kondisional -sa/-se
    • Mendukung nested pattern, binder, dan wildcard (değilse)
  • Definisi konstanta
    • Mendeklarasikan konstanta bernama dengan kata kunci diyelim
    • Contoh: sıfırın ardılına bir diyelim.
  • Input/output dan penanganan efek
    • Eksekusi berurutan dengan sufiks -ip/-ıp/-up/-üp, binding dengan olarak
    • Contoh:
      selamlamak,
        isim olarak okuyup,
        ("Merhaba "yla ismin birleşimini) yazmaktır.
      
  • Tipe dasar
    • Bilangan bulat (tam-sayı): mendukung operasi seperti toplamı, farkı, çarpımı
    • String (dizge): menyediakan uzunluğu, birleşimi, tam-sayı-hali
    • Input/output: mendukung perintah yazmak, okumak
  • Komentar dan literal
    • Komentar: (* ... *)
    • Literal: bentuk seperti "merhaba"'yı yaz. yang menyertakan sufiks kasus

Instalasi dan menjalankan

  • Alat yang dibutuhkan
    • Foma: toolkit analisis morfologi finite-state
    • Stack: alat build Haskell
  • Cara build
    • Jalankan skrip install.sh atau build manual dengan perintah stack build
    • Menyertakan transduser TRmorph di vendor/trmorph.fst
  • Menjalankan
    • REPL: stack exec kip
    • Menjalankan file: stack exec kip -- --exec path/to/file.kip
    • Instal ke PATH: stack install

WASM Playground

  • Direktori playground/ berisi build untuk dijalankan di browser
    • kip-playground dikompilasi ke wasm32-wasi
    • Dapat menjalankan Kip di browser melalui harness HTML/JS
    • Lihat playground/README.md untuk prosedur build terperinci

Cache bytecode (.iz)

  • Menyimpan hasil type checking tiap file .kip ke file .iz sebagai cache
    • Cache digunakan kembali jika source atau dependensi tidak berubah
    • Jika file .iz dihapus, parsing dan type checking akan dijalankan ulang
    • Menyertakan hash compiler, sehingga otomatis tidak berlaku saat versi berubah

Contoh program

  • Mencakup contoh definisi bilangan alami, deklarasi konstanta, fungsi penjumlahan, dan output hasil
    Bir doğal-sayı
    ya sıfır
    ya da bir doğal-sayının ardılı
    olabilir.
    
    sıfırın ardılına bir diyelim.
    birin ardılına iki diyelim.
    ikinin ardılına üç diyelim.
    
    (bu doğal-sayıyla) (şu doğal-sayının) toplamı,
      bu sıfırsa,
        şu,
      öncülün ardılıysa,
        (öncülle) (şunun ardılının) toplamıdır.
    
    (ikiyle üçün toplamını) yaz.
    

Struktur proyek

  • app/ : titik masuk CLI (Main.hs)
  • src/Kip/ : mencakup AST, cache, interpreter, parser, renderer, dan type checker
  • lib/ : modul dasar (giriş.kip, temel.kip, temel-liste.kip, dll.)
  • tests/ : kasus uji sukses (succeed/) dan gagal (fail/)
  • vendor/ : transduser morfologi trmorph.fst

Pengujian

  • Jalankan dengan perintah stack test
    • tests/succeed/: pengujian yang harus lulus
    • tests/fail/: pengujian yang harus gagal

Analisis morfologi

  • Kip menggunakan TRmorph untuk melakukan analisis morfologi bahasa Turki
    • Kata ambigu (contoh: “takası”) diparsing sambil mempertahankan semua interpretasi yang mungkin
    • Makna ditentukan pada tahap type checking
    • Untuk memaksa interpretasi tertentu, gunakan apostrof (') (taka'sı, takas'ı)

Lisensi

  • Lihat file LICENSE

1 komentar

 
GN⁺ 2026-01-19
Komentar Hacker News
  • Halo semuanya, saya adalah pengembang Kip
    Awalnya saya ingin merilisnya setelah playground dan landing page selesai, tetapi untuk sekarang saya membagikan playground berbasis browser yang sudah saya buat sejauh ini
    https://alpaylan.github.io/kip/
    Transpilasi ke JavaScript baru saja dimulai jadi belum berfungsi, tetapi bahasanya sendiri sebagian besar sudah bisa dijalankan
    Jika ada bug, saya akan senang jika Anda melaporkannya di issue repo

    • Saya sudah mempelajari bahasa Turki selama beberapa tahun, dan karena sifat tata bahasanya yang gramatikal dan aglutinatif, saya pikir akan menarik jika dijadikan bahasa pemrograman
      Saya sempat ingin menamainya “Ç”, tetapi tidak benar-benar membuatnya. Senang melihat ada yang mencobanya
    • Saya mencari tahu karena “Kip” dalam bahasa Turki berarti mood gramatikal, tetapi tiap layanan terjemahan memberi hasil berbeda seperti “mode”, “modal”, “tense”, “module”, dan sebagainya
      Secara pribadi saya merasa “tense” adalah yang paling dekat
      Sebagai referensi terkait, saya membaca penjelasan BBC Bitesize
    • Tata bahasanya menarik, tetapi saya penasaran bagaimana sintaks operasi numeriknya bekerja
      Misalnya
      (5'le 3'ün farkını) yaz.  
      (3'ün 5'le farkını) yaz.  
      
      Dalam kalimat seperti ini, saya penasaran apakah makna ‘farkını’ (selisih) dan posisi partikel menentukan apakah itu berarti 5-3 atau 3-5
      Karena sintaksnya berbasis bahasa alami, ini terasa seperti bahasa untuk mendeskripsikan definisi matematis
    • Halaman web dan playground yang diperbarui baru saja dirilis
      https://kip-dili.github.io/
    • Ini benar-benar karya yang keren. Saya sudah lama ingin mengeksplorasi wilayah seperti ini
  • Struktur bahasanya masih tampak mengikuti urutan tata bahasa Anglo-Saxon
    Saya ingin melihat bentuk seperti berikut yang lebih sesuai dengan tata bahasa Turki

    Fibonacci-Dizisi (n):  
      n 0'a eşitse: dur.  
      değilse:  
        bu-sayıyı yazdır.  
        şu-sayıyı, (bu-sayı + şu-sayı), (n - 1) ile Fibonacci-Dizisi'ne devam et.  
    

    Upaya seperti ini sendiri sudah merupakan titik awal yang sangat baik, jadi selamat

  • Proyek ini benar-benar keren
    Saya juga sedang bereksperimen dengan ide serupa di Logicaffeine Studio
    Mungkin ada baiknya juga melihat Logos lang. Saya juga suka pilihan menggunakan Haskell

  • Generasi lama mungkin ingat Lingua::Romana::Perligata
    https://metacpan.org/dist/Lingua-Romana-Perligata/view/lib/Lingua/Romana/Perligata.pm

  • Saya juga pernah bereksperimen dengan ide serupa beberapa tahun lalu
    https://github.com/celaleddin/sembolik-fikir
    Saya berencana melihatnya lebih jauh dalam beberapa hari ke depan

    • Pendekatannya menarik. Sepertinya ini melakukan estimasi morfem berbasis sufiks
      Di Kip, analisis morfem dilakukan sepenuhnya dengan TRmorph, dan ambiguitas diselesaikan pada tahap pemeriksaan tipe
      Karena itu, hampir tidak perlu menggunakan apostrof. Implementasinya sulit, tetapi masalahnya sangat menarik
  • Saya bisa membaca sedikit bahasa Turki, dan proyek ini membuat hari saya menyenangkan
    Menarik bahwa sistem kasus bahasa Turki begitu kuat dan terstandarisasi sehingga desain bahasa seperti ini dimungkinkan

    • Urutan kata yang fleksibel seperti ini mungkin bukan hanya di bahasa Turki, tetapi juga di bahasa-bahasa dengan infleksi kuat—bahasa Slavia, Sanskerta, Finlandia, Hungaria, dan lain-lain
    • Sebenarnya bahkan dalam bahasa Inggris pun fleksibilitas urutan kata cukup besar
      Misalnya, kalimat seperti “Colonel Mustard killed him in the study at 5:00 with his own knife.” tetap mempertahankan makna meskipun urutannya diubah
      Dalam puisi Latin maupun Rusia, urutan kata yang kompleks seperti ini juga sering muncul
  • Awalnya saya mengklik tautannya dengan prasangka, tetapi definisinya rapi dan mudah dipahami
    Sepertinya versi Jerman juga akan menarik

    • Saya juga berpikir begitu. Saya kira ini hanya sekadar mengganti kata kunci bahasa seperti Rust ke bahasa Turki, tetapi ternyata jauh lebih canggih
  • Saya membagikan artikel Language Log sebagai referensi terkait tata bahasa daripada tentang bahasanya sendiri

  • Pacar saya orang Turki dan saya sedang belajar bahasa Turki, jadi sekarang rasanya saya bisa mempercepat belajar dengan intuisi pemrograman
    Benar-benar mengejutkan

    • Saya juga menikah dengan orang Turki, dan kombinasi teknologi + bahasa seperti ini sama sekali tidak pernah saya bayangkan
      Ini menjadi motivasi yang bagus untuk melanjutkan lagi pembelajaran saya yang berhenti di tingkat menengah
  • Di era AI, tiap negara bisa membuat bahasa pemrograman yang mencerminkan tradisi kebahasaannya sendiri
    Ini akan sangat memperluas otonomi dan keberagaman budaya pengembangan