1 पॉइंट द्वारा GN⁺ 2026-01-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Kip एक प्रायोगिक प्रोग्रामिंग भाषा है जो तुर्की भाषा के व्याकरणिक case और mood को type system में एकीकृत करती है, और प्राकृतिक भाषा की morphology तथा type theory के संयोजन की पड़ताल करती है
  • यह तुर्की के संज्ञा case रूपांतरण और vowel harmony को कोड संरचना में दर्शाती है, जिससे function arguments के संबंध case suffixes से अलग किए जा सकते हैं और argument order में flexibility मिलती है
  • pattern matching, polymorphic types, inductive data types, input/output effects जैसी आधुनिक functional languages की प्रमुख विशेषताओं को तुर्की व्याकरणिक रूपों में व्यक्त करती है
  • इसे Foma morphological analyzer और Haskell Stack से build किया जाता है, और यह WASM-आधारित browser runtime तथा bytecode cache (.iz) सुविधा प्रदान करती है
  • यह भाषाविज्ञान और programming language design के संगम को दिखाने वाला research और education के लिए बनाया गया project है, जो प्राकृतिक भाषा-आधारित भाषा डिज़ाइन की संभावनाओं का प्रयोग करता है

Kip का परिचय

  • Kip का नाम तुर्की शब्द ‘kip’(mood) से लिया गया है, और यह एक प्रायोगिक भाषा है जो तुर्की व्याकरणिक case को type system में शामिल करती है
    • तुर्की के संज्ञा case रूपांतरण(ismin halleri) और vowel harmony को programming language design में एकीकृत करती है
    • यह research और educational purpose का project है, वास्तविक deployment के लिए बनी भाषा नहीं
  • इसमें तुर्की और अंग्रेज़ी tutorials उपलब्ध हैं, जिनसे Kip प्रोग्राम लिखना सीखा जा सकता है
  • इसका grammar और व्यवहार अभी प्रयोगात्मक चरण में है, इसलिए आगे बदलाव संभव हैं

भाषा की विशेषताएँ

  • तुर्की व्याकरणिक case को type की तरह उपयोग करना
    • यह 8 case को support करती है: nominative, accusative, dative, locative, ablative, genitive, instrumental, possessive
    • हर case suffix के रूप में चिह्नित होता है और function arguments के बीच संबंध को स्पष्ट रूप से अलग करता है
  • लचीला argument order
    • case suffixes argument संबंधों को स्पष्ट कर देते हैं, इसलिए argument क्रम बदलने पर भी अर्थ वही रहता है
    • उदाहरण: (5'le 3'ün farkını) yaz. और (3'ün 5'le farkını) yaz. का परिणाम समान है
  • inductive data type definition
    • तुर्की syntax में algebraic data types परिभाषित किए जा सकते हैं
    • उदाहरण:
      Bir doğal-sayı
      ya sıfır
      ya da bir doğal-sayının ardılı
      olabilir.
      
  • polymorphic type support
    • generic data structures परिभाषित किए जा सकते हैं
    • उदाहरण: (öğe listesi) रूप में list data type परिभाषित करना
  • pattern matching
    • conditional suffix -sa/-se का उपयोग करके pattern matching किया जाता है
    • nested patterns, binders, wildcard (değilse) का समर्थन
  • constant definition
    • diyelim keyword से named constants घोषित किए जाते हैं
    • उदाहरण: sıfırın ardılına bir diyelim.
  • input/output और effect handling
    • -ip/-ıp/-up/-üp suffix से sequential execution, और olarak से binding
    • उदाहरण:
      selamlamak,
        isim olarak okuyup,
        ("Merhaba "yla ismin birleşimini) yazmaktır.
      
  • basic types
    • integer(tam-sayı): toplamı, farkı, çarpımı जैसे operations का समर्थन
    • string(dizge): uzunluğu, birleşimi, tam-sayı-hali उपलब्ध
    • input/output: yazmak, okumak commands उपलब्ध
  • comments और literals
    • comments: (* ... *)
    • literals: "merhaba"'yı yaz. जैसे case suffix वाले रूप

इंस्टॉलेशन और रन

  • ज़रूरी tools
    • Foma: finite-state morphological analysis toolkit
    • Stack: Haskell build tool
  • build का तरीका
    • install.sh script चलाएँ या stack build command से manual build करें
    • vendor/trmorph.fst में TRmorph converter शामिल है
  • run करना
    • REPL: stack exec kip
    • file चलाना: stack exec kip -- --exec path/to/file.kip
    • PATH installation: stack install

WASM Playground

  • playground/ directory में browser execution build शामिल है
    • kip-playground को wasm32-wasi के लिए compile किया जाता है
    • HTML/JS harness के जरिए browser के अंदर Kip चलाया जा सकता है
    • विस्तृत build प्रक्रिया के लिए playground/README.md देखें

bytecode cache (.iz)

  • हर .kip file के type-checking result को cache करके .iz file में सेव किया जाता है
    • source या dependency न बदलने पर cache दोबारा उपयोग होती है
    • .iz file हटाने पर parsing और type-checking फिर से किया जाता है
    • compiler hash शामिल होने के कारण version बदलने पर यह अपने-आप अमान्य हो जाती है

उदाहरण प्रोग्राम

  • प्राकृतिक संख्याओं की परिभाषा, constants declaration, addition function, और result output का उदाहरण शामिल है
    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.
    

project संरचना

  • app/ : CLI entry point (Main.hs)
  • src/Kip/ : AST, cache, interpreter, parser, renderer, type checker शामिल
  • lib/ : base modules (giriş.kip, temel.kip, temel-liste.kip आदि)
  • tests/ : success(succeed/) और failure(fail/) test cases
  • vendor/ : trmorph.fst morphological converter

टेस्ट

  • stack test command से चलाएँ
    • tests/succeed/: जो tests पास होने चाहिए
    • tests/fail/: जो tests fail होने चाहिए

morphological analysis

  • Kip, तुर्की morphological analysis के लिए TRmorph का उपयोग करता है
    • बहुअर्थी शब्द (जैसे: “takası”) को सभी संभावित व्याख्याओं के साथ parse किया जाता है
    • type-checking चरण में उसका अर्थ तय होता है
    • किसी खास व्याख्या को force करने के लिए apostrophe(') का उपयोग करें (taka'sı, takas'ı)

लाइसेंस

  • LICENSE file देखें

1 टिप्पणियां

 
GN⁺ 2026-01-19
Hacker News की राय
  • सभी को नमस्ते, मैं Kip का डेवलपर हूँ
    मूल रूप से मैं playground और landing page पूरा करने के बाद इसे सार्वजनिक करना चाहता था, लेकिन अभी तक बनाया गया browser-based playground साझा कर रहा हूँ
    https://alpaylan.github.io/kip/
    JavaScript में transpilation अभी बस शुरू हुई है इसलिए अभी काम नहीं करती, लेकिन भाषा खुद अधिकांशतः चलने योग्य है
    अगर कोई bug मिले तो repo issue में बताएं

    • मैंने कुछ साल Turkish पढ़ी है, और उसकी grammatical तथा agglutinative विशेषताओं की वजह से मुझे लगा कि उसे programming language के रूप में बनाना रोचक होगा
      मैं उसे “Ç” कहना चाहता था, लेकिन वास्तव में बनाया नहीं। किसी और को इसे आज़माते देख अच्छा लगा
    • मैंने देखा कि “Kip” का Turkish में मतलब grammatical mood होता है, लेकिन translation services में यह “mode”, “modal”, “tense”, “module” आदि अलग-अलग आया
      व्यक्तिगत रूप से मुझे “tense” सबसे करीब लगता है
      संबंधित संदर्भ के लिए मैंने BBC Bitesize की व्याख्या देखी
    • व्याकरण दिलचस्प है, लेकिन मैं जानना चाहता हूँ कि numeric operation syntax कैसे काम करती है
      उदाहरण के लिए
      (5'le 3'ün farkını) yaz.  
      (3'ün 5'le farkını) yaz.  
      
      ऐसे वाक्यों में ‘farkını’(अंतर) का अर्थ और particles की स्थिति के आधार पर क्या यह 5-3 और 3-5 में फर्क करता है?
      क्योंकि syntax natural language पर आधारित है, यह गणितीय परिभाषाएँ लिखने वाली भाषा जैसा महसूस होता है
    • अपडेट किया गया webpage और playground अब जारी कर दिया गया है
      https://kip-dili.github.io/
    • यह सच में शानदार काम है। मैं लंबे समय से इस तरह के क्षेत्र को explore करना चाहता था
  • भाषा की संरचना अब भी Anglo-Saxon grammar order का पालन करती हुई लगती है
    Turkish grammar के और अनुकूल मैं कुछ इस तरह देखना चाहूँगा

    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.  
    

    फिर भी यह प्रयास अपने आप में एक शानदार शुरुआत है, बधाई

  • यह project वास्तव में कमाल का है
    मैं भी Logicaffeine Studio में इसी तरह के विचार पर प्रयोग कर रहा हूँ
    Logos lang भी देखना अच्छा रहेगा। Haskell चुनना भी मुझे पसंद आया

  • पुरानी पीढ़ी के लोग शायद Lingua::Romana::Perligata को याद करें
    https://metacpan.org/dist/Lingua-Romana-Perligata/view/lib/Lingua/Romana/Perligata.pm

  • मैंने भी कुछ साल पहले ऐसा ही एक विचार आज़माया था
    https://github.com/celaleddin/sembolik-fikir
    मैं अगले कुछ दिनों में इसे और देखूँगा

    • यह दिलचस्प approach है। लगता है यह suffix-आधारित morpheme estimation करता है
      Kip में TRmorph का उपयोग करके morpheme analysis पूरी तरह किया जाता है, और type checking चरण में ambiguity सुलझाई जाती है
      इसलिए लगभग apostrophe की जरूरत नहीं पड़ती। इसे implement करना कठिन था, लेकिन यह एक मजेदार समस्या थी
  • मैं थोड़ी Turkish पढ़ सकता हूँ, और इस project की वजह से मेरा दिन बन गया
    यह दिलचस्प है कि Turkish की case system इतनी मजबूत और standardised है कि इस तरह की language design संभव हो पाती है

    • इस तरह की flexible word order सिर्फ Turkish में ही नहीं, बल्कि अधिक inflection वाली भाषाओं—Slavic भाषाएँ, Sanskrit, Finnish, Hungarian आदि—में भी संभव है
    • वास्तव में English में भी word order की काफी flexibility है
      उदाहरण के लिए “Colonel Mustard killed him in the study at 5:00 with his own knife.” जैसे वाक्य में क्रम बदलने पर भी अर्थ बना रहता है
      Latin या Russian कविता में भी इस तरह का जटिल word order अक्सर दिखाई देता है
  • मैंने शुरुआत में पूर्वाग्रह के साथ लिंक खोला था, लेकिन इसकी परिभाषा साफ़-सुथरी और समझने में आसान है
    इसका German version भी हो तो मजेदार होगा

    • मैंने भी यही सोचा। लगा था कि यह बस Rust जैसी किसी language के keywords को Turkish में बदलने जैसा होगा, लेकिन वास्तव में यह उससे कहीं अधिक परिष्कृत है
  • भाषा से अधिक, grammar संदर्भ के रूप में मैं Language Log लेख साझा कर रहा हूँ

  • मेरी girlfriend Turkish है और मैं Turkish सीख रहा था, अब लगता है कि programming sense के साथ सीखने की गति बढ़ा सकूँगा
    यह सचमुच चौंकाने वाला है

    • मैंने भी एक Turkish व्यक्ति से शादी की है, और इस तरह का tech+language combination मैंने कभी सोचा नहीं था
      intermediate स्तर पर रुक गई पढ़ाई को फिर से शुरू करने के लिए यह अच्छा motivation है
  • AI युग में हर देश अपनी भाषाई परंपरा को दर्शाने वाली programming language बना सकता है
    यह developer culture की स्वायत्तता और विविधता को बहुत बढ़ाने वाली बात है