मुख्य सामग्री पर जाएं
होम पर वापस
Feature

Android पर 16 भाषाओं में कोड चलाएँ — ऑन-डिवाइस

PocketCode आपके Android फ़ोन पर 16 भाषाएँ और फ़ाइल प्रकार चलाता है, सर्वर पर नहीं: 13 ऐप के साथ आती हैं, 3 वैकल्पिक पैक हैं। क्या चलता है और क्या नहीं।

अपडेट किया गया:
7 min
लेखक Pelayo Naredo
Android पर 16 भाषाओं में कोड चलाएँ — ऑन-डिवाइस

फ़ोन पर "कोड चलाने" के ज़्यादातर तरीके चुपचाप उसे कहीं और भेज देते हैं — कोई cloud runner, कोई रिमोट sandbox, किसी वेबसाइट का server। यह तब तक ठीक है जब तक सिग्नल न चला जाए या आप न चाहें कि आपका कोड आपके डिवाइस से बाहर जाए। PocketCode इसका उलटा करता है: यह असली भाषाएँ डिवाइस पर ही execute करता है, इसलिए कोई script चलाना उतना ही local है जितना कोई नोट खोलना।

यहाँ पूरी तस्वीर है: क्या चलता है, क्या तुरंत तैयार है, किसके लिए एक बार का download चाहिए, और क्या अभी उपलब्ध नहीं है।

ऐप के अंदर तेरह भाषाएँ और फ़ाइल प्रकार

ये APK के अंदर ही आती हैं, इसलिए पहली बार खोलने से ही मौजूद रहती हैं — कुछ download नहीं करना। आपको एक मुफ़्त अकाउंट और साइन-इन के समय कनेक्शन चाहिए; उसके बाद कोई फ़ाइल खोलें, Run पर टैप करें (यह बटन experimental के रूप में चिह्नित है), और आपका कोड डिवाइस पर चलता है:

भाषाडिवाइस पर क्या चलता है
JavaScriptएक असली बंडल किया हुआ Node.js runtime
TypeScriptवही बंडल किया हुआ Node, जो types हटा देता है: न type checking है, न tsc
CTCC compiler (0.9.27), जो एक .c फ़ाइल compile और चलाता है
PythonWebAssembly में compile किया हुआ CPython 3.12
RubyWebAssembly पर Ruby 3.2
PHPWebAssembly पर PHP 8.2, command-line php की तरह चलता है
JavaBeanShell, Java-शैली का interpreter, experimental और सीमित: यह javac नहीं है, annotation processing समर्थित नहीं है, और objects, inheritance या interfaces वाली classes, generics, lambdas, enums और printf नहीं चलते
Kotlinफ़ोन पर kotlinc 2.3; अगर प्रोजेक्ट ऐसी library इस्तेमाल करे जो ऐप में शामिल नहीं, तो यह एक सरल script मोड पर लौट जाता है जो विफल हो सकता है
ShellAndroid का अपना sh, जिसमें ज़्यादातर command-line tools नहीं आते: कोई tool न मिले तो exit 127 के साथ खत्म होता है
SQLAndroid का SQLite, हर फ़ाइल के लिए एक scratch database पर
HTMLयह render नहीं करता: संरचना जाँचता है और Open in DevBrowser देता है
Markdownpreview खोलता है
JSONफ़ाइल को validate करता है

HTML, Markdown और JSON runtime से ज़्यादा preview और जाँच हैं, लेकिन "एक script लिखो, एक पेज बनाओ, कुछ data जाँचो" वाली रोज़मर्रा की तिकड़ी इन्हीं से चलती है। ये ऐप खोलते ही काम करते हैं।

किसी एक की गहराई में जाना चाहते हैं? हमने Android पर Python चलाने की पूरी गाइड लिखी है — WebAssembly build local रूप से कैसे चलता है, standard library क्या कवर करती है, और इसकी ईमानदार सीमाएँ (कोई pip नहीं, इसलिए यह scripting और सीखने का वातावरण है, data-science stack नहीं)।

तीन और, बस एक download दूर

शामिल भाषाओं के अलावा, PocketCode वैकल्पिक language packs देता है। आप कोई pack Settings → Compilers and runtimes → Additional language runtimes से एक बार download करते हैं, और उसके बाद वह भाषा बिल्ट-इन भाषाओं की तरह डिवाइस पर ही चलती है। आज जो packs इंस्टॉल किए जा सकते हैं:

  • Lua 5.4 (लगभग 0.6 MB)। editor में Lua की highlighting नहीं है, इसलिए .lua फ़ाइलें plain text के रूप में खुलती हैं।
  • Go (लगभग 38 MB), Yaegi interpreter से। यह पूरा go build नहीं है: सिर्फ़ standard library, एक बार में एक फ़ाइल, कोई go get नहीं, और go.mod वाले प्रोजेक्ट नहीं।
  • Rust-शैली की scripts (लगभग 1.4 MB), Rhai से। यह Rust जैसी syntax वाली scripting भाषा है, rustc नहीं: कोई advanced traits, lifetimes, async या crates नहीं।

कुल मिलाकर 16 भाषाएँ और फ़ाइल प्रकार, 17 runners के साथ हैं (Kotlin का एक बैकअप runner है), एक ही editor में, एक ही फ़ोन पर, बीच में किसी server के बिना।

जो अभी नहीं चलता

प्लगइन मैनेजर में Perl, C++ (Clang), C#, Zig, Dart और Swift भी सूचीबद्ध हैं, पर इनमें से कोई भी इस संस्करण में इंस्टॉल नहीं किया जा सकता: उन्हें download करने के लिए ज़रूरी checksum ऐप में शामिल नहीं है। उनकी फ़ाइलें editor में खुलती हैं, और Run धूसर रहता है। Java भी compile नहीं होता, और न असली rustc है, न पूरा Go toolchain। हम इनमें से किसी को भी चलने वाली भाषाओं में नहीं गिनते।

"ऑन-डिवाइस" ही असली बात क्यों है

local चलाना कोई तकनीकी फ़ुटनोट नहीं है — यह बदल देता है कि एक फ़ोन किसके काम आ सकता है:

  • आपका कोड डिवाइस पर चलता है। साइन-इन होने के बाद, शामिल भाषाएँ और आपके द्वारा download किया गया कोई भी pack local रूप से execute होता है। यह वहीं सबसे ज़्यादा मायने रखता है जहाँ मोबाइल चमकता है: आते-जाते समय, उड़ानों में, कमज़ोर कवरेज में, उभरते बाज़ारों के नेटवर्क में। (ऐप को साइन-इन करने के लिए कनेक्शन चाहिए; पहले से शुरू हुए सेशन के साथ ऐप खोलना ऑफ़लाइन भी चलता है।)
  • आपका कोड आपका ही रहता है। execute करने के लिए कुछ भी किसी third-party runner को नहीं भेजा जाता। WebAssembly इंजनों (Python, Ruby, PHP, Lua, Go, Rhai) में डिफ़ॉल्ट रूप से नेटवर्क नहीं होता; Run with arguments में Allow network in WASM engines स्विच है। Node.js, C और shell पर इसका असर नहीं पड़ता।
  • जोड़ने के लिए कुछ नहीं है। न कोई terminal environment बनाना, न कोई toolchain हाथ से compile करना। runtime पहले से मौजूद है; आप बस Run दबाते हैं।
  • यह तुरंत होता है। जगाने के लिए कोई remote container नहीं — execution डिवाइस पर शुरू होता है।

इसके आसपास का editor

runner तो आधी कहानी है; आप कोड को अच्छी तरह लिखना भी चाहते हैं। हर भाषा उसी code editor में खुलती है: 39 भाषाओं के लिए TextMate syntax highlighting, उनमें से 19 के लिए एक-टैप language server (Java, Kotlin, Go, Rust, C, C++ और Ruby इनमें नहीं हैं), 24 के लिए बिल्ट-इन formatter, multi-cursor editing और प्रोग्रामिंग symbol bar। Output Run पैनल में आता है — print/console.log, stack traces, exit codes, और input पढ़ने वाले प्रोग्रामों के लिए एक stdin बॉक्स। साथ में एक बिल्ट-इन terminal भी है: उसके shell के PATH में node है, पर Python, Ruby, PHP, C, Java और Kotlin editor के Run बटन से चलते हैं, shell कमांड के रूप में नहीं।

यह क्या है, और क्या नहीं

दायरे के बारे में सीधा रहना अपेक्षाओं को ईमानदार रखता है:

  • इनके लिए बढ़िया scripting, कोई भाषा सीखना, algorithm अभ्यास, automation, prototyping, और desk से दूर असली कोड चलाना।
  • यह पूरा native build farm नहीं है। भारी compute interpreter की गति से चलता है, और जो runtimes विशाल native ecosystems पर निर्भर हैं (Python के C-extension packages सोचें) वे उसी दायरे में रहते हैं जो हर भाषा डिवाइस पर साथ लाती है। प्लगइन सिर्फ़ WebAssembly फ़ाइलें हैं: Google Play native compilers के download की अनुमति नहीं देता।

इन दायरों के भीतर, यह जेब के आकार का multi-language runtime है जो local रूप से चलता है।


एक फ़ोन, 16 भाषाएँ और फ़ाइल प्रकार, सब आपके हाथ के डिवाइस पर execute होते हैं।

PocketCode Google Play पर उपलब्ध है। अपनी पसंद की भाषा अपने ही डिवाइस पर चलाने के लिए PocketCode पाएँ।

अक्सर पूछे जाने वाले प्रश्न

क्या आप Android पर कोड चला सकते हैं?

हाँ। PocketCode फ़ोन पर ही सीधे असली प्रोग्रामिंग भाषाएँ चलाता है: आज 16 भाषाएँ और फ़ाइल प्रकार, जिनमें से 13 ऐप में शामिल हैं और 3 वैकल्पिक डाउनलोड हैं। कोई फ़ाइल खोलें, Run पर टैप करें (यह experimental के रूप में चिह्नित है) और कोड डिवाइस पर चलता है।

आप Android पर कौन-सी भाषाएँ चला सकते हैं?

आज 16 भाषाएँ और फ़ाइल प्रकार चलते हैं, 17 runner के साथ। ऐप में शामिल: JavaScript (Node.js), TypeScript (types हटाए जाते हैं, जाँचे नहीं जाते), Shell, JSON validation, Markdown preview, HTML की जाँच, SQLite पर SQL, Python 3.12, Ruby 3.2 और PHP 8.2 (WebAssembly), Java (experimental और सीमित: BeanShell interpreter, javac नहीं, और ज़्यादातर object-oriented कोड, generics, lambdas और printf नहीं चलते), Kotlin और C (TCC)। वैकल्पिक डाउनलोड: Lua 5.4, Go (Yaegi interpreter, सिर्फ़ standard library) और Rust-शैली की scripts (Rhai, rustc नहीं)। Perl, C++, C#, Zig, Dart और Swift प्लगइन मैनेजर में सूचीबद्ध हैं, पर अभी इंस्टॉल नहीं किए जा सकते।

क्या कोड चलाने के लिए कंप्यूटर या सर्वर की ज़रूरत है?

नहीं। कोड फ़ोन पर ही execute होता है। साइन-इन करने के लिए कनेक्शन चाहिए; पहले से शुरू हुए सेशन के साथ ऐप खोलना ऑफ़लाइन भी चलता है; उसके बाद कोड चलाने के लिए कुछ भी किसी रिमोट सर्वर पर अपलोड नहीं होता।

क्या Termux ज़रूरी है?

नहीं। रनटाइम PocketCode में ही बने हुए हैं — किसी package manager से इंस्टॉल करने या हाथ से कम्पाइल करने के लिए कुछ नहीं है।

क्या आप फ़ोन पर कोड कम्पाइल कर सकते हैं?

C हाँ: बंडल किया हुआ TCC compiler किसी .c फ़ाइल को डिवाइस पर कम्पाइल करके चलाता है। Kotlin फ़ोन पर kotlinc से चलता है, और अगर प्रोजेक्ट ऐसी library इस्तेमाल करे जो ऐप में शामिल नहीं है, तो वह एक सरल script मोड पर लौट जाता है। Java experimental और सीमित है: उसे BeanShell interpret करता है, javac से कम्पाइल नहीं होता, और ज़्यादातर object-oriented कोड, generics, lambdas और printf नहीं चलते। C++ अभी नहीं चल सकता।

क्या मेरे चलाए कोड से नेटवर्क कनेक्शन खुल सकते हैं?

WebAssembly इंजनों (Python, Ruby, PHP, Lua, Go, Rhai) में नहीं: उनमें डिफ़ॉल्ट रूप से नेटवर्क नहीं होता, और आप उसे Run with arguments में चालू कर सकते हैं। Node.js, C और shell पर इस स्विच का असर नहीं पड़ता।

क्या कोड चलाने के लिए अकाउंट या कनेक्शन चाहिए?

आपको एक मुफ़्त अकाउंट (ईमेल, Google या GitHub) और साइन-इन के समय कनेक्शन चाहिए। उसके बाद आपका कोड डिवाइस पर चलता है।

इस लेख के पीछे का टूल

कोड एडिटर

PocketCode आज़माने के लिए तैयार हैं?

ऐप डाउनलोड करें और अपने फ़ोन से कोडिंग शुरू करें।