CodeSpeak - Kotlin के निर्माता की नई भाषा: अंग्रेज़ी की जगह spec से LLM के साथ बातचीत
(codespeak.dev)- यह LLM पर आधारित अगली पीढ़ी की प्रोग्रामिंग भाषा है, जो कोडबेस को 5~10 गुना छोटा कर सकती है
- डेवलपर कोड की जगह संक्षिप्त spec लिखते हैं, और
codespeak buildकमांड से कोड अपने-आप जनरेट हो जाता है - spec बदलने पर सिस्टम spec diff को code diff में बदलकर लागू करता है
- मैन्युअल कोड और जनरेटेड कोड के मिश्रित प्रोजेक्ट भी सपोर्ट करता है, और वास्तविक open source उदाहरणों में test pass rate में सुधार देखा गया है
- यह जटिल software पर काम करने वाली टीम-आधारित engineering पर फोकस करता है, और spec-केंद्रित maintenance के ज़रिए मानव-अनुकूल development environment को लक्ष्य बनाता है
CodeSpeak का अवलोकन
- CodeSpeak एक LLM-संचालित अगली पीढ़ी की प्रोग्रामिंग भाषा है, जिसका लक्ष्य कोडबेस को 5~10 गुना कम करना है
- साइट के विवरण के अनुसार, “Shrink your codebase 5–10x” वाक्य के ज़रिए इसकी दक्षता पर ज़ोर दिया गया है
- यह भाषा production-grade systems बनाने के लिए एक टूल है, और सिर्फ साधारण prototype नहीं बल्कि लंबे समय के प्रोजेक्ट के लिए डिज़ाइन की गई है
- इसके मुख्य उपयोगकर्ता जटिल software विकसित करने वाली engineering teams हैं; यह व्यक्तिगत डेवलपर-केंद्रित प्रयोगात्मक coding के बजाय collaboration-केंद्रित development को लक्ष्य बनाता है
spec-आधारित development तरीका
- CodeSpeak का मूल दर्शन है “Maintain Specs, Not Code”
- डेवलपर संक्षिप्त spec लिखते हैं, और
codespeak buildकमांड से कोड अपने-आप जनरेट हो जाता है - spec में बदलाव होने पर सिस्टम spec का diff अपने-आप code diff में बदल देता है
- डेवलपर संक्षिप्त spec लिखते हैं, और
- यह approach इस बात पर ज़ोर देती है कि कोड की तुलना में spec को maintain और manage करना इंसानों के लिए अधिक आसान है
मिश्रित प्रोजेक्ट सपोर्ट
- CodeSpeak ऐसे प्रोजेक्ट्स को सपोर्ट करता है जहाँ मौजूदा मैन्युअल कोड और जनरेटेड कोड साथ-साथ मौजूद हों
- उदाहरण के तौर पर Microsoft के MarkItDown repository को fork करने का मामला दिखाया गया है
- मिश्रित प्रोजेक्ट्स को चरण-दर-चरण संभालने के लिए tutorial guide उपलब्ध है
code → spec रूपांतरण फीचर (जल्द)
- CodeSpeak मौजूदा कोड का विश्लेषण करके उसे spec में बदलने वाले फीचर पर काम कर रहा है
- इसके ज़रिए मौजूदा कोड के कुछ हिस्सों को 5~10 गुना छोटे spec से बदला जा सकता है
- यह फिर से रेखांकित करता है कि spec maintenance, कोड maintenance की तुलना में ज़्यादा मानव-अनुकूल है
वास्तविक case studies
- CodeSpeak ने कई open source project codebases को spec में बदलकर टेस्ट किया है
- yt-dlp का WebVTT subtitle support: 255 LOC → 38 LOC, 6.7 गुना कमी, 37 tests जोड़े गए
- Faker का Italian SSN generator: 165 LOC → 21 LOC, 7.9 गुना कमी, 13 tests जोड़े गए
- beautifulsoup4 का encoding auto-detection: 826 LOC → 141 LOC, 5.9 गुना कमी, 25 tests जोड़े गए
- markitdown का EML→Markdown converter: 139 LOC → 14 LOC, 9.9 गुना कमी, 27 tests जोड़े गए
- हर case में test pass rate बना रहा या बेहतर हुआ, जो spec-आधारित approach की व्यावहारिक उपयोगिता दिखाता है
सारांश
- CodeSpeak एक spec-केंद्रित AI प्रोग्रामिंग भाषा है, जो automatic code generation और maintenance efficiency को जोड़ती है
- LLM-आधारित code generation, spec-code synchronization, और mixed project support इसकी मुख्य विशेषताएँ हैं
- वास्तविक उदाहरणों में code reduction और बेहतर testing साबित होने से, यह टीम-आधारित software engineering productivity बढ़ाने की संभावना दिखाता है
4 टिप्पणियां
इसे भाषा कहना बस attention खींचने के लिए है, या सच में ऐसा ज़माना आ गया है।
मैं सिद्धांततः इससे सहमत हूँ, लेकिन यह आलोचना कुछ ऐसी लगती है जैसे शुरू से ही यह मानकर कोशिश की आलोचना की जा रही हो कि कोई पूर्ण product मौजूद होगा—जबकि स्वाभाविक रूप से, Gödel के प्रमाण की तरह, शुरू से ही पूर्णता जैसी कोई चीज़ नहीं होती।
यह MDD(Model Driven Dev.) की याद दिलाता है।
Hacker News की राय
जैसा Joel Spolsky ने Yale के एक व्याख्यान में कहा था, ‘spec से program generate’ करने की कोशिशें हमेशा विफल रही हैं
अगर spec इतनी विस्तृत हो कि वह program को पूरी तरह परिभाषित कर दे, तो उस spec को लिखना खुद program लिखने जितना ही कठिन हो जाता है
मूल व्याख्यान लिंक
अब अपूर्ण prompts से भी program generate किया जा सकता है, और prompts को व्यवस्थित रूप से संभालने पर शोध को मूल्यवान माना जा सकता है
scalability अब features जोड़ने से ज़्यादा behavior constraints और structural invariants को परिभाषित करने की दिशा में जा रही है
जैसे “1. user से जानकारी लो, 2. HTTP request भेजो, 3. error आए तो report करो”,
लेकिन ऐसे में मुझे लगता है कि सीधा script लिखना कहीं तेज़ और deterministic है
यह कोई नई language नहीं, बल्कि LLM-based development के लिए workflow और tooling है
code की जगह Markdown spec files maintain की जाती हैं, और
codespeakspec diff के आधार पर code बदलता हैफ़ायदा यह है कि prompts code के साथ version control में रहते हैं, और नुकसान यह कि spec code की हर detail को reflect नहीं कर पाती
codespeak takeoverनाम के tool से code को spec में बदलने और agent session के prompts को reflect कराने पर प्रयोग हो रहा हैइसे short-term ‘sprint mode’ से long-term ‘marathon mode’ में बदलाव की अवधारणा के रूप में समझाया गया है
संबंधित ब्लॉग लिंक
idea इतना सरल है कि कोई भी इसे जल्दी दोबारा बना सकता है, और open source version जल्द ही इसकी जगह ले लेगा — ऐसा अनुमान है
‘छोटे बदलाव’ की अनुमति देने वाली policy की ज़रूरत बताई गई
कुल मिलाकर incremental pseudocode compiler का विचार दिलचस्प लगा
5 साल बाद शायद लोग इस तरह code नहीं लिखेंगे; English-level technical spec ही काफ़ी होगी
यह approach language से ज़्यादा spec को code से map करने वाली tooling है
लेकिन model nondeterministic है, इसलिए एक ही spec से हर बार अलग result आ सकता है
spec मूल रूप से बहुत information loss वाला summary है, इसलिए बड़े codebase में consistency बनाए रखना मुश्किल है
मैं जो देखना चाहता हूँ, वह text spec → formal spec → code तक जाने वाली एक verifiable pipeline है
अहम बात code खुद नहीं, बल्कि behavioral outcomes की consistency है
spec जितनी abstract होगी, उतनी तरह की implementations संभव होंगी, इसलिए determinism फिर भी सुनिश्चित नहीं होता
मेरा मानना है कि automated tests को ही असली spec की भूमिका निभानी चाहिए
seed fix करने पर एक ही input से वही output मिल सकता है — ऐसा माना गया
Cursor और Antigravity इंसान-केंद्रित ‘vibe coding’ के लिए optimized हैं, लेकिन Kiro agent-centric spec-based development के लिए विशेष है
यह EARS, INCOSE जैसे structured formats इस्तेमाल करता है, और automatic consistency checks तथा property-based testing (PBT) generate करता है
अगर spec मज़बूत हो, तो implementation लगभग अपने-आप पीछे आ जाती है
कई CLI agents को parallel चलाकर उच्च गुणवत्ता वाले results मिल रहे हैं
formal prompt language की समस्या ambiguity नहीं, बल्कि model की context समझने की कमी है
एक ही prompt context के हिसाब से अलग results दे सकता है
prompt को formal बना देने से भी कोई फ़ायदा नहीं, अगर model codebase को ही ग़लत समझे
क्योंकि model conversational language के लिए optimized है, इसलिए formal language सीधे लिखने के बजाय ज़रूरत पड़ने पर ही उसका उपयोग बेहतर माना जाता है
बस यह इच्छा जताई गई कि काश deterministic और formal तरीके से computer को अपनी intent बताना संभव होता
यह concept LLM की internal structure को ग़लत समझने वाली premise से शुरू होता है
हाल की research के अनुसार LLM में encoding और decoding के बीच एक अलग processing stage मौजूद होती है,
और training के बाद language खुद उतनी महत्वपूर्ण न भी रहे
संबंधित शोध लिंक
इसका उद्देश्य इंसानों को अपनी ज़रूरत साफ़ तौर पर व्यक्त करने में मदद करना है
समझ नहीं आता कि ऐसे tool की ज़रूरत ही क्यों है
बस Markdown spec सीधे लिखो, और agent से code generate करने को कहो — इतना काफ़ी है
tutorial के “Prerequisites” में Anthropic API key की ज़रूरत बताई गई है
alpha version होने के कारण यह अस्थायी व्यवस्था हो सकती है, लेकिन फिर भी सवाल है कि API की ज़रूरत क्यों है
Claude Code जैसी session में सीधे prompt inject करना भी पर्याप्त लग सकता है
संदर्भ लिंक
यह project मेरे चल रहे LLM executor language spec से काफ़ी मिलता-जुलता है, इसलिए दिलचस्प लगा
मेरा project AIL YAML-based तरीके से prompt chains को define और execute करता है
इसका मुख्य बिंदु ‘prompt refinement engine’ है, जो user की natural language को structured commands में बदलता है
उदाहरण के लिए, यह user intent का analysis करके उसे चरणों में बाँटता है और modern prompt engineering standards के मुताबिक optimize करता है
अगर ऐसा interceptor हो, तो “मैंने अभी जो कहा उसे CodeSpeak format में बदल दो” जैसा flow संभव होगा
यह सच में शानदार idea है, और मैं इसे ज़रूर गहराई से explore करना चाहूँगा