8 पॉइंट द्वारा GN⁺ 2024-03-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Dada का लक्ष्य Rust जैसी भाषा बनाना है, लेकिन उसका अनुभव Java या JavaScript जैसा हो और वह C++ की तुलना में कम जटिल हो — यह एक thought experiment है
  • यदि हम ऐसी भाषा की कल्पना करें जो kernel या छोटे embedded devices पर चलने के लिए न बनी हो, लेकिन जिसे न्यूनतम runtime की आवश्यकता हो, तो वह कैसी दिखेगी?
  • Dada एक ownership-आधारित भाषा है और इसमें Rust से कुछ समानताएँ हैं:
    • Rust की तरह Dada को garbage collector की आवश्यकता नहीं होती।
    • Rust की तरह Dada memory safety और data race free होने की गारंटी देता है।
    • Rust की तरह Dada data structures stack पर allocate होते हैं और flat memory layout का उपयोग करते हैं।
  • लेकिन Dada कई मायनों में अलग भी है:
    • TypeScript की तरह Dada एक gradually typed भाषा है:
      • type annotations के बिना interpreter में Dada का उपयोग करके भाषा के काम करने के तरीके को समझा जा सकता है।
      • जब आप परिचित हो जाएँ, तब type annotations जोड़कर Rust जैसी performance देने वाले compiler का उपयोग कर सकते हैं।
    • Dada का मुख्य target WebAssembly है:
      • Dada के लिए native targets बनाए जा सकते हैं, लेकिन इसका FFI system WebAssembly interface types पर आधारित है।
    • Dada object-oriented है, लेकिन पूरी तरह शुद्ध रूप में नहीं:
      • Dada OO और pattern matching जैसी अच्छी सुविधाओं को मिलाता है और Scala जैसी भाषाओं से प्रेरणा लेता है।
  • Rust की तुलना में Dada की कुछ सीमाएँ भी हैं:
    • Dada में एक अनिवार्य runtime है और यह "bare metal systems" या kernel को target नहीं करता।
    • Dada inline assembly या मनमाने unsafe code को support नहीं करता।

Dada की वर्तमान स्थिति क्या है?

  • इस समय Dada वास्तव में मौजूद नहीं है, बल्कि इसके कुछ experimental prototypes हैं:
    • PLT Redex में implement किया गया एक experimental operational semantics dada-lang/dada-model में पाया जा सकता है।
    • Rust में लिखा गया interpreter dada-lang/dada repository में उपलब्ध है, और Dada playground में इसका WebAssembly-आधारित build आज़माया जा सकता है।

GN⁺ की राय

  • Dada आधुनिक programming languages के रुझानों को दर्शाता है। यह Rust की मुख्य खूबियाँ, जैसे memory safety और data race prevention, बनाए रखते हुए gradual typing और object-oriented approach के जरिए एक developer-friendly भाषा बनने की कोशिश करता है।
  • WebAssembly को मुख्य target बनाना यह दिखाता है कि web-based application development में Dada की संभावनाएँ हो सकती हैं, और यह browser compatibility तथा platform independence को महत्व देने वाले आधुनिक web development trends के अनुरूप है।
  • यदि Dada वास्तव में विकसित होकर व्यापक रूप से इस्तेमाल होने लगे, तो यह मौजूदा Rust developers को उच्च स्तर का abstraction और सुविधा दे सकता है, और Java या JavaScript developers के लिए system programming languages की ओर बढ़ना आसान बना सकता है।
  • लेकिन Dada अभी शुरुआती चरण में है और production environments में इसकी performance तथा stability की पुष्टि नहीं हुई है, इसलिए कंपनियों और developers को इसे अपनाने से पहले सावधानी बरतनी होगी।
  • Dada जैसे समान लक्ष्यों वाली अन्य भाषाओं में Kotlin और Swift शामिल हैं, जो पहले से व्यापक रूप से उपयोग में हैं और developers के लिए अच्छे विकल्प हो सकते हैं।

1 टिप्पणियां

 
GN⁺ 2024-03-07
Hacker News राय
  • "thought experiment language" की अवधारणा के प्रति लगाव

    • वास्तव में एक भाषा बनाना बड़ा बोझ है, और यह सोचना मज़ेदार है कि एक आदर्श भाषा कैसी दिखेगी.
    • "high-level Rust" को लेकर कई तरह की कल्पनाएँ हैं; व्यक्तिगत रूप से, dynamic runtime और simple types पसंद हैं, लेकिन दूसरे लोगों की ज़रूरतें अलग हैं.
    • gradual type system जैसी अतिरिक्त सुविधाएँ कुछ भाषाओं के लिए उपयुक्त हो सकती हैं, लेकिन शुरुआत से पूरी तरह static typed codebase की गारंटी को प्राथमिकता दी जाती है.
  • "Hello, Dada!" उदाहरण पर सवाल

    • Python उपयोगकर्ता के रूप में, जब लक्ष्य console में output करना है, तो await की चिंता क्यों करनी चाहिए, यह सवाल है.
    • लगता है कि जटिलता और cognitive load पहले से ही शुरू हो रहे हैं.
  • इसके उलट तरह की भाषा की इच्छा

    • Rust का expressive type system और syntax हो, लेकिन उसमें garbage collector और runtime जोड़ा गया हो, ऐसी भाषा चाहिए.
    • performance cost चुकाना नहीं चाहते, और Rust के type system वाली Go जैसी भाषा को पसंद करते हैं.
  • "async/await" पर आपत्ति

    • high-level language में Go के green threads अधिक उपयुक्त लगते हैं.
    • gradual typing दिलचस्प है, लेकिन अनिवार्य नहीं. static typing बोझिल नहीं है और performance पर तर्क करना कठिन बना सकती है.
    • gradual typing की तुलना में type inference बेहतर होगा, ऐसा माना गया.
  • Java और JavaScript जैसी feel पर टिप्पणी

    • यह बताया गया कि Java और JavaScript की feel बहुत अलग है.
  • GC का न होना Rust को embedded systems में सुखद अनुभव बनाता है

    • दूसरे प्रोग्रामों से आसानी से जुड़ सकता है, और प्रोग्राम का तेज़ startup Rust के बड़े फायदों में से एक है.
    • garbage collection वाला Rust इस लाभ को छोड़ने जैसा हो सकता है.
  • Rust उपयोग अनुभव पर मिले-जुले भाव

    • memory safety patterns पसंद हैं, लेकिन C++ की तुलना में syntax अधिक कठिन लगता है.
    • कोड को मानसिक रूप से पढ़ना कठिन महसूस होता है.
    • यदि decorator magic और symbol-based syntax कम हों, तो शुरुआती लोगों के लिए समझना आसान होगा.
  • type annotations जोड़कर Rust जैसी performance पाने के दावे में रुचि

    • JavaScript की तरह आसानी से लिखा जा सके, और जब अतिरिक्त काम को उचित ठहराया जा सके तब Rust जितनी तेज़ भाषा बन सके.
  • ट्यूटोरियल के "print_point" method पर भ्रम

    • async और await के अर्थ पर अधिक विस्तृत व्याख्या चाहिए.
    • सवाल है कि क्या async/await lazily computed values जैसी भूमिका निभाते हैं, और क्या अलग-अलग संयोजन type errors पैदा करते हैं.
  • नई programming language के syntax उदाहरण खोजने पर असंतोष

    • नई programming language बनाते समय landing page पर तुरंत "Hello World" syntax उदाहरण देने का अनुरोध.