4 पॉइंट द्वारा GN⁺ 2024-05-01 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Borgo programming language का परिचय

  • ऐसी application development language चाहिए जो Go से ज़्यादा expressive हो, लेकिन Rust जितनी complex न हो
    • Go सरल और intuitive है, लेकिन अक्सर लगता है कि यह और अधिक type safety दे सकता था
    • Rust के साथ काम करना अच्छा है (कम से कम single-threaded code के मामले में), लेकिन यह बहुत व्यापक और जटिल है, और कभी-कभी काफ़ी painful भी
  • Borgo एक नई language है जो Go में transpile होती है, और मौजूदा Go packages के साथ पूरी तरह compatible है
  • Borgo का syntax Rust जैसा है, जिसमें semicolon optional है

मुख्य विशेषताएँ

  • algebraic data types और pattern matching
  • nil की जगह Option का उपयोग
  • multiple return values की जगह Result का उपयोग
  • ? operator के साथ error handling

लोकल में चलाना

  • Borgo, Rust में लिखा गया है, इसलिए cargo की ज़रूरत है
  • मौजूदा फ़ोल्डर की सभी .brg files को compile करने के लिए:
    • $ cargo run -- build
  • compiler .go files generate करता है, और उन्हें सामान्य रूप से चलाया जा सकता है

GN⁺ की राय

  • Rust एक शक्तिशाली language है, लेकिन इसका learning curve काफ़ी steep है और adoption barrier भी ऊँचा है। Borgo, Rust के फ़ायदों को Go ecosystem में इस्तेमाल करने की एक दिलचस्प कोशिश लगती है। हालांकि, यह अभी शुरुआती चरण में है, इसलिए ecosystem सीमित होने की संभावना है
  • Option और Result के ज़रिए nil और error handling को बेहतर बनाना, और ? operator से error handling को आसान करना, ऐसे हिस्से हैं जो Go developers की आम परेशानियों को कम कर सकते हैं
  • मौजूदा Go libraries को वैसे ही इस्तेमाल कर पाना एक बड़ा फ़ायदा है। लेकिन Rust syntax अपनाने की वजह से Go developers को इसके साथ सहज होने में समय लग सकता है
  • चूँकि यह transpile approach है, इसलिए debugging या runtime performance जैसे मामलों में native Go code की तुलना में कमज़ोरी हो सकती है। बड़े पैमाने के production code में इसे लागू करना अभी थोड़ा जल्दी लग सकता है
  • जैसे Kotlin ने JVM ecosystem में अपनी हिस्सेदारी बढ़ाई है, वैसे ही Borgo को Go के लिए एक ठोस solution बनने के लिए code quality, developer productivity, learning curve जैसे कई पहलुओं में लगातार सुधार की ज़रूरत होगी। अगर इसका विकास लगातार होता रहा, तो यह Go ecosystem का एक आकर्षक alternative बन सकता है

1 टिप्पणियां

 
GN⁺ 2024-05-01
Hacker News टिप्पणियाँ

सारांश:

  • Borgo भाषा को लेकर सकारात्मक प्रतिक्रियाएँ, जो Go भाषा की कमियों को पूरा करती है
    • Enum, Optional type जैसी वे सुविधाएँ जो Go में खलती थीं, जोड़ी गई हैं
    • वे लगभग सभी फीचर शामिल हैं जिनकी Go डेवलपर्स इच्छा रखते थे
  • Borgo के कुछ design decisions, Go की विशेषताओं की तुलना में Rust से अधिक मिलते-जुलते लगते हैं
    • impl का उपयोग करके method definition, channel और goroutine syntax, zeroValue() built-in function आदि
    • इसके बावजूद, Go की तुलना में Borgo में development करना अधिक पसंद किया जाएगा, ऐसा लगता है
  • इसी तरह की कोशिश करने वाले अन्य projects का परिचय
    • braid, have, oden आदि जैसे Go में transpile होने वाली भाषा बनाने के प्रयास हुए थे
  • ऐसा लगता है कि Rust के फायदों में से Borrow Checker को छोड़कर type system और error handling जैसी खूबियाँ अपनाई गई हैं
  • ऐसी भाषा होने की इच्छा जताई गई जिसमें dynamic typing और static typing दोनों के फायदे हों
    • शुरुआती development में Python जैसी dynamic typing के फायदे मिलें, और बाद में धीरे-धीरे static typing में बदला जा सके तो अच्छा होगा
  • Go के runtime और tooling ecosystem के फायदों के साथ Rust के Enum जैसी type safety जुड़ी हुई महसूस होती है
  • Struct के field visibility को बड़े-छोटे अक्षरों से अलग करने वाले Go के तरीके की जगह pub/private keywords लाना भी सकारात्मक माना गया
  • यह Gleam भाषा की तरह type safety और complexity के बीच एक संतुलित समझौता खोजने जैसा लगता है, लेकिन Erlang या JS के बजाय Go में compile होने के कारण performance का लाभ है
    • हालांकि compile error messages, Rust या Gleam जितने user-friendly होंगे या नहीं, इस पर संदेह है