5 पॉइंट द्वारा GN⁺ 2024-05-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Try Clojure ब्राउज़र में Clojure expressions को तुरंत evaluate करके देखने के लिए 5 मिनट का अनुभव पेज है
  • स्क्रीन के दाईं ओर REPL में डाला गया इनपुट read-eval-print loop के रूप में चलता है
  • (+ 1 2) जैसे example expressions आप सीधे टाइप कर सकते हैं या code snippets पर क्लिक करके उन्हें अपने-आप insert कर सकते हैं
  • (help) से commands देखे जा सकते हैं, और तैयार होने पर (start) टाइप करके अनुभव शुरू किया जाता है
  • यह पेज Clojurescript से बनाया गया है, और निर्माण जानकारी में Elia Scotto, Michiel Borkent और Clojure community शामिल हैं

ब्राउज़र में तुरंत चलने वाला Clojure

  • Try Clojure “Got 5 minutes?” संदेश के साथ Clojure का छोटा-सा अनुभव देने के लिए बनाया गया है
  • दाईं ओर के REPL में यूज़र द्वारा डाले गए Clojure symbolic expressions evaluate किए जाते हैं
  • अनुभव का flow सरल है
    • (+ 1 2) जैसे expressions सीधे टाइप करें
    • code snippets पर क्लिक करके उन्हें अपने-आप insert करें
    • (help) से commands देखें
    • (start) से शुरू करें

निर्माण जानकारी

  • पेज में Rich Hickey का यह quote शामिल है: “If you want everything to be familiar, you'll never learn anything new.”
  • Try Clojure Clojurescript से बनाया गया है, और Elia Scotto को निर्माता के रूप में दिखाया गया है
  • Michiel Borkent और Clojure community के प्रति आभार भी शामिल है

1 टिप्पणियां

 
GN⁺ 2024-05-23
Hacker News की राय
  • इसे वापस देखकर खुशी हुई। बहुत पहले मौजूद इसके एक version ने मुझे Clojure आज़माने दिया था, और वह चुनाव मेरे करियर पर सबसे ज़्यादा असर डालने वाला निर्णय बन गया
    आज भी मैं काम पर और घर पर लगभग रोज़ Clojure इस्तेमाल करता हूँ—कभी standard Clojure, तो कभी Make जैसे task runner या Zsh scripts के बेहतरीन विकल्प के रूप में Babashka
    जब single binary में compile करना ज़रूरी हो, तब Go भी एक मज़बूत दूसरा विकल्प है, लेकिन Clojure मुझे सबसे सहज लगता है, क्योंकि इसका REPL-based development flow सामान्य write-compile-run loop के बजाय program से बातचीत करने जैसा महसूस होता है
    इसके साथ JVM पर चलने वाली बात जोड़ दें, तो यह खुशी-खुशी काम पूरा करने वाला toolset बन जाता है। Lisp और functional programming में ज़रा भी दिलचस्पी हो तो इसे ज़रूर आज़माने की सलाह दूँगा, और अगर आप VSCode इस्तेमाल करते हैं तो Calva plugin बहुत मददगार है

    • “यह कुछ समय के लिए गायब क्यों था” इसकी वजह यह है कि इसे बनाने वाले Anthony Grimes(https://github.com/Raynes) का 7 साल पहले निधन हो गया था: https://www.reddit.com/r/Clojure/comments/5gyyxw/clojure_ope...
    • Clojure, Rust, TS जैसी अत्यधिक expressive languages इस्तेमाल करने के बाद भी लोग आसानी से Go पर switch कर लेते हैं, यह मुझे हमेशा हैरान करता है
      कम expressive language पर जाना दर्दनाक और झुंझलाहट भरा था; मुझे याद है Python से Java 5 पर जाने पर वही बात व्यक्त करने वाला code 3–5 गुना लंबा हो गया था
      शायद असली बात यह है कि कम expressive language में सिर्फ छोटी चीज़ें लिखी जाएँ—जैसे shell scripts, performance या foreign function interface के लिए छोटे C functions, या छोटे Go utilities
    • Clojure सीखने से मुझे हमेशा उसके नाम का “j” रोकता रहा। JDK और JVM के साथ इतने बुरे अनुभव रहे हैं कि अगर उसका मतलब JavaScript नहीं है, तो “J” वाली चीज़ से मैं हज़ार किलोमीटर दूर रहना चाहूँगा
  • अगर आप Clojure से पहली बार परिचित हो रहे हैं और तुरंत उपयोगी तरीके से प्रयोग करना चाहते हैं, तो scripting के लिए Babashka runtime की मैं जोरदार सिफारिश करता हूँ: https://babashka.org
    यह मज़ेदार और आसानी से अपनाने योग्य है, और Clojure ecosystem के ज़्यादा polished हिस्सों में से एक है
    पूरे JVM Clojure के उलट इसका startup time बहुत तेज़ है, इसलिए यह अच्छा entry point है, और शुरुआती लोग पहले से परिचित file watching/reloading tools—जैसे nodemon—के साथ interactive जैसा काम कर सकते हैं
    बाद में editor में REPL connection इस्तेमाल करने वाली पूरी interactive setup पर जाना अच्छा रहेगा, लेकिन शुरुआती लोगों के लिए वह flow अपरिचित होता है और setup भी झंझट भरा हो सकता है

    • अगर आप मज़े को web तक बढ़ाने के लिए तैयार हैं, तो Biff देखें: https://biffweb.com
    • Babashka की सबसे अच्छी बात यह है कि आजकल यह सचमुच batteries included है
      मुझे work app के stats दिखाने के लिए एक छोटा UI बनाना था, इसलिए मैंने इसे HTMX के साथ इस्तेमाल किया और अनुभव बहुत अच्छा रहा
      Babashka में basic web app के लिए ज़रूरी लगभग सब कुछ built-in है, और HTMX इस्तेमाल करने पर JavaScript frontend सँभाले बिना भी page में dynamic loading कर सकते हैं
      साथ ही bb --nrepl-server से nREPL शुरू करके Calva जैसे editor को जोड़कर script को interactively develop किया जा सकता है, इसलिए अगर आपको simple web UI चाहिए तो इसे देखना बनता है
  • इसी दिशा की एक और site https://www.maria.cloud/ भी है
    यह पूरी तरह शुरुआती लोगों को programming सिखाने पर ज़्यादा केंद्रित है, लेकिन मुझे लगता है कि बुनियादी paredit-style operations और form-by-form evaluation असल में इस्तेमाल होने वाली REPL-driven development के कहीं ज़्यादा करीब हैं
    REPL terminal window में सीधे type करना ergonomics के लिहाज़ से बहुत खराब है, और आम तौर पर VSCode के Calva या Emacs के CIDER जैसी चीज़ों से cursor के नीचे वाले form को किसी REPL process में भेजना ज़्यादा व्यावहारिक होता है

  • Clojure सीखने की सबसे अच्छी वजह Reagent है, और मेरे हिसाब से React इस्तेमाल करने के तरीकों में यह साफ़ तौर पर सबसे बेहतरीन है: https://reagent-project.github.io/
    shadow-cljs npm लाइब्रेरीज़ का इस्तेमाल आसान बना देता है: https://github.com/thheller/shadow-cljs
    डिफ़ॉल्ट सेटअप के तौर पर मैं Go backend और Reagent frontend पर टिक गया था: https://github.com/nathants/aws-gocljs

    • Reagent अच्छा है और करीब 10 साल से चला आ रहा है, लेकिन React खुद ही पहले से complex है, और उसके ऊपर बहुत ज़्यादा extra complexity जुड़ती लगी, इसलिए मैं React के thin wrapper की तरफ़ चला गया
      मैं अंदर क्या हो रहा है, यह ज़्यादा साफ़ देखना चाहता था और native React components के साथ ज़्यादा सरल interoperability चाहता था
      लगता तो है कि यह React 18 experimental support के साथ catch up कर रहा है, लेकिन Reagent नए React flow से पीछे रह गया है और शायद सभी performance optimization benefits न मिलें
      यह अभी भी class component इस्तेमाल करता है, hooks नहीं, और यह चिंता भी है कि Hiccup runtime conversion performance घटा सकता है
      हालांकि ज़्यादातर मामलों में शायद यह महसूस होने वाली समस्या नहीं होगी, और अगर आप बहुत fancy चीज़ें नहीं कर रहे हैं तो ठीक रहेगा। Hiccup का UI-as-data model याद आता है, इसलिए हो सकता है कभी Reagent पर वापस लौटूं
      state management के लिए re-frame की ज़ोरदार सिफ़ारिश करता हूं: https://day8.github.io/re-frame/
      शुरू में यह भारी लग सकता है, लेकिन documentation शानदार है, और समझ आने के बाद model बहुत साफ़ है
      Helix(https://github.com/lilactown/helix) या UIx(https://github.com/pitch-io/uix) जैसे विकल्प भी हैं, और refx(https://github.com/ferdinand-beyer/refx) भी है, जिसने Reagent dependency लगभग हटा दी है
      या UIx/Helix में interoperability code जोड़कर re-frame लगा सकते हैं: https://github.com/pitch-io/uix/blob/master/docs/interop-wit...
    • Elixir backend भी BEAM VM की ताकत की वजह से अच्छी तरह फिट बैठा
    • उस setup में code splitting या static site generation हो पाता है या नहीं, यह जानने की उत्सुकता है
      2024 में खाली HTML file serve नहीं की जा सकती, और वह search optimization खराब कर देती है; अगर ऐसा न हो तो इसे आज़माना चाहूंगा
  • Clojure इस्तेमाल करने का समय वाकई अच्छा रहा और मैं इसकी ज़ोरदार सिफ़ारिश करता हूं: https://eli.thegreenplace.net/2017/clojure-the-perfect-langu...

  • Daniel Higginbotham की Clojure for the Brave and True Clojure सीखने के लिए सचमुच बेहतरीन resource है, इसकी ज़ोरदार सिफ़ारिश करता हूं
    इसे online मुफ़्त में पढ़ा जा सकता है: https://www.braveclojure.com/clojure-for-the-brave-and-true

    • मुझे इसकी writing style बहुत लंबी-चौड़ी लगती है, लेकिन समझता हूं कि कुछ लोगों को ऐसा style पसंद आता है
      इस किताब की असली समस्या Clojure नहीं, बल्कि यह है कि यह Emacs से पढ़ाना शुरू करती है
      आजकल कई beginners VSCode से आते होंगे, और उनके लिए यह बड़ा distraction बन जाता है
    • Aphyr की Clojure from the ground up series भी मुझे बहुत पसंद है: https://aphyr.com/posts/301-clojure-from-the-ground-up-welco...
    • अगर Emacs का अनुभव नहीं है, तो VSCode में Calva plugin इस्तेमाल करना बेहतर हो सकता है
  • कुछ साल पहले एक सहकर्मी ने कहा था कि Clojure न भी आज़माओ तो History of Clojure ज़रूर पढ़ो, लेकिन मैंने टाल दिया था: https://dl.acm.org/doi/pdf/10.1145/3386321
    फिर Rich Hickey - Greatest Hits देखने के बाद https://changelog.com/posts/rich-hickeys-greatest-hits, मैंने History of Clojure पढ़ी और तुरंत सीखना शुरू कर दिया
    Clojure कुछ बनाने के लिए सबसे मज़ेदार languages में से एक है और सबसे सुंदर languages में भी एक है
    बात syntax की नहीं, बल्कि अच्छे design और composition के ज़रिए अपने विचार व्यक्त करवाने के तरीके की है, जो दिमाग को अच्छा-सा stimulate करता है
    अगर आप अब भी ऐसा चमकदार tool ढूंढ रहे हैं जो बिल्कुल fit बैठे और अब तक कुछ भी click नहीं हुआ, तो Clojure आज़माने लायक है। अब तक देखी languages में यह सबसे concise और powerful में से एक है

    • कुछ महीने पहले Common Lisp सीखते समय मुझे similar feeling मिली थी
      सोच रहा हूं कि Clojure सीखने से उसके अलावा कुछ और मिलता है, या यह कुल मिलाकर काफ़ी similar है
  • सोच रहा हूँ कि क्या Clojure का कोई ऐसा version है जो LLVM जैसी किसी चीज़ में compile होता हो
    यह कुछ वैसा ही लगता है जैसा Scala Native मूल रूप से करने वाला था, लेकिन असल में वह उस तरह जम नहीं पाया
    functional programming पसंद है, लेकिन 2024 में Java ecosystem इतना पुराना लगता है कि सहना मुश्किल है

    • Clojure runtime को Clang/LLVM से implement करने पर काम चल रहा है, और hot reloading जैसे दिलचस्प features भी target हैं
      https://jank-lang.org/ पर देखा जा सकता है
      अभी यह पूर्ण JVM Clojure के साथ feature parity तक नहीं पहुँचा है, लेकिन मैं इसके development को ध्यान से देख रहा हूँ
    • अभी के हिसाब से top comment https://babashka.org/ की ओर इशारा करता है, लेकिन यह LLVM नहीं बल्कि GraalVM आधारित है
      दरअसल, यह कोई बहुत बड़ी समस्या नहीं होनी चाहिए
    • जल्द आने वाला है: https://jank-lang.org
    • https://jank-lang.org/
  • संबंधित links:
    Try Clojure – An interactive tutorial in the browser - https://news.ycombinator.com/item?id=30423856 - फ़रवरी 2022, 93 comments
    Try Clojure in your browser - https://news.ycombinator.com/item?id=3366526 - दिसंबर 2011, 26 comments
    Try Clojure - https://news.ycombinator.com/item?id=1359682 - मई 2010, 60 comments

  • Mexico में Clojure लोकप्रिय हो रहा है, और Brazil में भी Nubank की वजह से शायद ऐसा ही trend हो
    यह वह जगह है जहाँ computer scientists काम करने जाना चाहते हैं, और लगता है वे मुख्य रूप से Clojure में काम करते हैं
    लगता है उन्होंने language के कुछ core members को hire किया था, और याद है कि किसी समय Elixir के creator José Valim की company को भी acquire किया था
    फिर भी यह अब भी मुख्य रूप से Clojure इस्तेमाल करने वाली company लगती है

    • Nubank ने 2020 में Clojure के पीछे की consulting company Cognitect को acquire किया, और José Valim के employer Platformatec को भी acquire किया
      बाद वाला acquisition Platformatec की project management expertise हासिल करने के लिए था(https://building.nubank.com.br/tech-perspectives-behind-nuba...), और जहाँ तक मुझे पता है, Nubank में चलने वाला कोई Elixir code नहीं है
      ETL pipeline के “दूसरे side” पर Python है, लेकिन user-facing area में जहाँ तक मुझे पता है backend Clojure है, और Android व iOS apps TypeScript में हैं
    • चीनी-भाषी क्षेत्र के names जैसे दिखने वाले Clojure users अक्सर दिखते हैं
      सोच रहा हूँ कि क्या China में भी Clojure का कोई meaningful trend है