2 पॉइंट द्वारा GN⁺ 2025-03-14 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • फ़्रांस के एक कंप्यूटर स्कूल में 5 साल पढ़ाई की और 20 साल तक फ़्रीलांस डेवलपर के रूप में काम किया
  • मुख्य रूप से Ruby on Rails के साथ क्लाइंट प्रोजेक्ट्स पर काम किया
  • Common Lisp सीखना शुरू करते हुए ASN.1 parser जनरेट करने वाला server management protocol लिखा
    • Common Lisp से C code जनरेट करके SNMP server विकसित किया
  • उसके बाद Common Lisp आधारित कई प्रोजेक्ट लिखे:
    • cl-unix-cybernetics – GitHub पर सबसे ज़्यादा stars पाने वाला प्रोजेक्ट
    • cl-streams और cffi-posix विकसित किए
    • cl-facts – एक triple store, जो Common Lisp graph database की तरह काम करता है
      • तेज़, atomic transactions, और nested transactions का समर्थन
      • unwind-protect के साथ संगत
      • सिर्फ 3 macros सीखकर इस्तेमाल किया जा सकता है
      • European Lisp Symposium (ELS) में प्रस्तुत किया गया
  • Common Lisp development पर ध्यान केंद्रित करते हुए क्लाइंट खो दिए, लेकिन Lisp की संभावनाओं पर गहरा विश्वास बना रहा

वर्चुअल मशीन (VM) और कंटेनरों की सीमाएँ

  • विशेषज्ञों ने VM और कंटेनरों की समस्याओं की ओर इशारा किया:
    • VM अनावश्यक CPU और bandwidth बर्बाद करते हैं
    • Linux के cgroups-आधारित containers में remote command execution (RCE) और privilege escalation की कमजोरियाँ मौजूद हैं
    • हर साल नई security vulnerabilities मिलती हैं
  • OpenBSD को पसंद करते हुए Terraform, Ansible जैसे DevOps tools की समस्याओं से बचा

Common Lisp की सीमाएँ और performance समस्याएँ

  • Clojure आदि में GC (garbage collector) के कारण performance समस्याएँ हुईं:
    • हज़ारों units संभालने वाले strategy game को विकसित करते समय असफलता के मामले सामने आए
    • JVM का GC performance और cost दोनों समस्याएँ लाता है

C की ओर जाने का फैसला

  • Common Lisp की performance और portability सीमाओं को पहचाना:
    • Linux, OpenBSD, GTK+, GNOME सब C में लिखे गए हैं
    • आखिरकार performance और portability समस्याओं को हल करने के लिए C की ओर गए

नई भाषा KC3 का विकास

  • libc3 utility library विकसित की → C3 भाषा → नाम बदलकर KC3 किया
  • KC3 की विशेषताएँ:
    • interpreter (ic3) और compiler (c3c) मौजूद हैं
    • UTF-8 buffers से data structures बनाना और उन्हें वापस बदलना
    • defensive programming → शुरुआत से bugs को न्यूनतम करना
    • कोई security problems नहीं
    • enum-tagged union आधारित data type system

KC3 आधारित उपलब्धियाँ

  • cl-facts को C89 में port किया:
    • Covid-19 अवधि के दौरान development पूरा हुआ
    • triples जोड़ना, हटाना, recursive query system, transactions, logging, persistence आदि लागू किए
  • algorithmic types के लिए parser और generator लिखे:
    • structs, linked lists, maps, hash tables, complex numbers, tuples, code blocks आदि शामिल
    • José Valim (Elixir के creator) से बड़ी प्रेरणा मिली
  • ikc3 – KC3 evaluation results दिखाने वाला REPL
  • kc3_httpd – MVC framework आधारित web server विकसित किया
    • मौजूदा blog page भी kc3_httpd से serve की जा रही है
  • documentation website लिखी → KC3 के Markdown to HTML converter का उपयोग

निष्कर्ष

  • Common Lisp से मिली सीख के आधार पर C की ओर गए
  • KC3 ने performance, security, और portability में बेहतरीन परिणाम दिए
  • आगे KC3 से जुड़े अतिरिक्त macros और examples देने की योजना है

1 टिप्पणियां

 
GN⁺ 2025-03-14
Hacker News राय
  • मैं असहमत हूँ। बचपन में मैंने VB बहुत इस्तेमाल किया, फिर कॉलेज में Java, C, C++ सीखी, और मुख्यतः C का उपयोग किया। मैं Xfce का मुख्य डेवलपर बना और 5 साल तक उस पर काम किया

    • बाद में backend development में गया और Java, Scala, Python इस्तेमाल किए। इन भाषाओं की अपनी अलग समस्याएँ हैं, लेकिन उनकी standard library और dependency management systems मुझे पसंद आए
    • 12 साल बाद फिर Xfce पर लौटा, लेकिन C अब भी कठिन है। memory leak, NULL pointer dereference, data race जैसी बहुत समस्याएँ हैं
    • Rust इस्तेमाल करने पर मेरी productivity C से ज़्यादा रही
  • मैं उस भावना से पूरी तरह सहमत हूँ। कई सालों से pure C में कुछ बनाने की तीव्र इच्छा महसूस की है

    • मेरी मुख्य भाषा C++ है, लेकिन पुरानी C libraries का उपयोग करना सचमुच आनंददायक है। interfaces सरल और बुनियादी हैं
    • pure C में methods विकसित करते समय algorithm पर 100% ध्यान दे पाना अच्छा लगता है
    • C मुझे खुद काम करने के लिए मजबूर करती है। यह जादू और complexity को छिपाती नहीं है
    • आसपास के लोग modern C++ features इस्तेमाल करना चाहते हैं, लेकिन मैं धीरे-धीरे C++ features हटाने की कोशिश करता हूँ
  • बहुत पहले C से programming शुरू की थी, और आज भी कभी-कभी उस दौर में लौटने का मन करता है

    • लेकिन जब सच में C में production-grade application लिखने की कोशिश करते हैं, तो समझ आता है कि क्यों छोड़ा था
    • कंप्यूटर की मदद के बिना खुद करने वाले काम बहुत ज़्यादा हैं
    • अगर आज low-level language चुननी हो, तो शायद Ada चुनूँगा। यह C जैसी है, लेकिन compiler support ज़्यादा है
  • ब्लॉग पोस्ट पढ़ने के बाद मुझे समझ नहीं आया कि लेखक क्या कहना चाहता है

    • मुझे संदेह था कि लेखक का प्रोग्राम इस्तेमाल नहीं होने का कारण भाषा है या नहीं
    • memory consumption से जुड़ी समस्याएँ हो सकती हैं
    • लेखक ने सीखे गए lessons या user statistics का ज़िक्र नहीं किया
    • कोई नया feature जोड़ा नहीं गया, बस अभ्यास के तौर पर rewrite किया गया लगता है
  • kc3 code example दिया गया था

  • C मेरी पहली भाषा थी, और मैंने इससे simple console apps और छोटे games बनाए थे

    • लेकिन मैं वापस नहीं जाना चाहता। build tools और dependency management पुराने लगते हैं
    • Zig मेरा नया C है। इसमें C compiler शामिल है, और C headers को wrappers के बिना इस्तेमाल किया जा सकता है
    • Go का उपयोग तब करता हूँ जब सरल भाषा चाहिए होती है, और Rust तब जब performance और safety चाहिए होती है
  • कभी-कभी शौकिया तौर पर C में coding करता हूँ। लेकिन दोहराए जाने वाले काम इतने ज़्यादा हैं कि उबाऊ लगते हैं

    • C में compiler लिखना tagged unions से निपटने जैसा है
    • repetitive work कम करने के लिए generator लिखने का सोचा था, लेकिन अभी तक किया नहीं
    • C में project बनाते समय prototyping के लिए embedded language इस्तेमाल करने पर विचार किया था
  • C सफल रही क्योंकि यह practical है

    • यह safe नहीं है, लेकिन आप जो चाहें वह कर सकते हैं
  • मुझे कुछ भी समझ नहीं आया

    • killer app क्या है, CL से जुड़ी समस्या क्या है, और क्या C ही एकमात्र विकल्प है—इस पर सवाल है
    • यह भी सवाल है कि क्या KC3 code चलाने में कोई security issue नहीं होगा
  • यह लेख बिना happy ending वाली एक चेतावनी भरी कहानी जैसा लगता है