परिचय
नमस्ते। स्वागत है। आशा है आप सब अच्छी तरह हैं। मुझे उम्मीद है कि Jurasic July के दौरान कुछ पुरानी और प्रभावशाली भाषाएँ खोजते हुए आपको मज़ा आया होगा। अब बात 2023 के आठवें महीने की, और हमारे सातवें थीम वाले महीने की: Appy August।
ऐप्स से हमारा क्या मतलब है?
इसका मतलब कई चीज़ें हो सकती हैं:
- वेब ऐप्लिकेशन, जो आज हममें से बहुतों के रोज़ के काम का मुख्य आधार हैं
- नेटिव ऐप्स, जैसे वे जो आपके फोन या टैबलेट पर चलते हैं
- डेस्कटॉप ऐप्स, जो सीधे आपके Windows, Mac या Linux ऑपरेटिंग सिस्टम पर चलते हैं
- किसी खास क्षेत्र के लिए बने ऐप्लिकेशन
- व्यावसायिक ऐप्लिकेशन
- और भी बहुत कुछ!
तो भाषाएँ कौन-कौन सी हैं?
इस बार हम बात कर रहे हैं पूरी 14 भाषाओं की: ABAP, CoffeeScript, Dart, Delphi, Elm, Java, JavaScript, Kotlin, Objective-C, PHP, PureScript, ReasonML, Swift और TypeScript।
बैज
इस महीने इनमें से किसी एक भाषा में 5 अभ्यास पूरे करके बैज पाइए। और साल भर चलने वाले बैज के लिए आपको ये पूरे करने होंगे:
- एनाग्राम: एक शब्द और संभावित एनाग्रामों की सूची दी जाती है, और उसके एनाग्राम ढूँढने होते हैं
- फोन नंबर: एक फोन नंबर को साफ-सुथरा करना
- त्रिभुज: एक त्रिभुज का वर्गीकरण करना
- RNA ट्रांसक्रिप्शन: एक DNA अनुक्रम को उसके RNA पूरक में बदलना
- Scrabble स्कोर: एक शब्द दिया जाता है, और उसका Scrabble स्कोर निकालना होता है
भाषाओं का अवलोकन
ABAP
- 1980 के दशक में SAP SE ने इसे विकसित किया। इसका डिज़ाइन उद्देश्य साफ समझ आ जाता है जब हम देखते हैं कि यह लघु रूप किसका बना था: Allgemeiner Berichts-Aufbereitungs-Prozessor। जर्मन में इसका अर्थ है "सामान्य रिपोर्ट तैयार करने वाला प्रोसेसर"। बाद में ABAP को और व्यापक रूप से लागू करने लायक बनाया गया, और इसे दर्शाने के लिए लघु रूप को बदलकर Advanced Business Application Programming कर दिया गया
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली भाषा
- मल्टी-पैराडाइम: इम्परेटिव और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का समर्थन करती है
- बाइटकोड में कंपाइल की जाती है। दिलचस्प बात यह है कि इसका सोर्स कोड डेटाबेस के अंदर संग्रहीत किया जाता है
- सारा कोड एक SAP सिस्टम के संदर्भ में चलता है, जिसमें एक रिलेशनल डेटाबेस और एक या अधिक एप्लिकेशन सर्वर होते हैं
- यह प्रोप्राइटरी तकनीक और क्लोज़्ड-सोर्स है, हालाँकि हमारे एक मेंटेनर ने इसका एक शानदार ओपन-सोर्स री-इम्प्लीमेंटेशन बनाया है
- इसका उपयोग व्यावसायिक ऐप्लिकेशनों में होता है, जैसे वित्त, सामग्री प्रबंधन, लेखांकन और प्रबंधन। दुनिया भर में इसके ग्राहक हैं, जिनमें Apple, Amazon और Walmart जैसे कई बड़े नाम शामिल हैं
यह क्यों बढ़िया है
- लगातार आगे बढ़ती रहती है, और नियमित रूप से नई सुविधाएँ जुड़ती रहती हैं
- भरोसेमंद: स्थिर कार्यक्षमता, जिसके पीछे दशकों का अनुभव है
- बड़ी स्टैंडर्ड लाइब्रेरी
खास विशेषताएँ
- SAP सिस्टम और डेटाबेस के साथ, और कई अन्य सिस्टमों के साथ भी, बिना किसी अड़चन के एकीकरण
- ABAP डिक्शनरी में SAP सिस्टम के डेटा से जुड़ी सारी मेटाडेटा होती है, जिसमें टेबल, व्यू और स्ट्रक्चर शामिल हैं। इस डिक्शनरी के टाइप का उपयोग वेरिएबलो को स्टैटिकली टाइप करने के लिए किया जा सकता है, तब भी जब टाइप एक टेबल हो
- ABAP वर्कबेंच ABAP सिस्टम का हिस्सा है और इसमें प्रोग्राम संपादित करने के लिए कई टूल मौजूद हैं। इसमें स्क्रीन डिज़ाइन करना भी शामिल है
CoffeeScript
- इस भाषा का पहला कमिट 2009 में Jeremy Ashkenas ने किया था, और पहले कमिट का संदेश था "रहस्यमयी भाषा का पहला कमिट।"
- डायनामिक टाइपिंग और मल्टी-पैराडाइम (ऑब्जेक्ट-ओरिएंटेड, इम्परेटिव, फंक्शनल, प्रोटोटाइपल)
- JavaScript में कंपाइल होती है (जिसे ट्रांसपाइलिंग कहते हैं)। CoffeeScript का सुनहरा नियम है: "यह बस JavaScript है।" यह JS में ट्रांसपाइल होने वाली पहली सफल भाषाओं में से एक थी
- यह लोकप्रिय हुई क्योंकि उस समय JS करने वाले लोग जिन समस्याओं से जूझते थे, वे CoffeeScript में नहीं थीं (जैसे "this" का बाइंडिंग अलग तरह से काम करना, या क्लास का समर्थन न होना)। इसे Ruby on Rails में संस्करण 3.1 से शामिल किया गया
- 2017 में भाषा का 2.0 संस्करण आया, जिसका उद्देश्य इसे नवीनतम JavaScript मानक के बराबर लाना था। यह भाषा साल में लगभग एक बार अपडेट होती है
- इस भाषा का कंपाइलर शुरू में Ruby में लिखा गया था, लेकिन 2010 में इसे CoffeeScript में लिखे गए सेल्फ-होस्टिंग कंपाइलर से बदल दिया गया (कंपाइलर NodeJS पर निर्भर नहीं करता और सीधे ब्राउज़र में चल सकता है)
- CoffeeScript का असर यह रहा कि इसने JavaScript को कुछ फीचर अपनाने के लिए प्रेरित किया (लैम्ब्डा एरो सिंटैक्स, क्लास)
- पहले इसका उपयोग Dropbox और Rails में होता था
यह क्यों बढ़िया है
- Python, Ruby और Haskell से प्रेरित साफ-सुथरा और संक्षिप्त सिंटैक्स। यह JavaScript से कम लंबा है और कई कोष्ठक तथा घुंघराले ब्रैकेट हटा देती है, जिसकी एक वजह यह है कि यह इंडेंटेशन को अर्थपूर्ण मानती है (खाली जगह यानी whitespace मायने रखती है)
- सरल सिमेंटिक्स, जैसे let, var, const को लेकर कोई उलझन नहीं, क्योंकि ये होते ही नहीं, और == को ट्रांसपाइल करके === (सख्त समानता) बना दिया जाता है, तथा फंक्शन बाइंडिंग "this" से जुड़ी आम गलतियों को रोक देती हैं
- एक्सप्रेशन-आधारित, यानी आप एक if एक्सप्रेशन के नतीजे को किसी वेरिएबल में असाइन कर सकते हैं
- बहुत सारा सिंटैक्टिक शुगर, जैसे this की जगह @ लिखिए, true की जगह yes/on इस्तेमाल कर सकते हैं, फ्लोर डिवीज़न के लिए //, this की जगह @, और भी बहुत कुछ
खास विशेषताएँ
- यह साफ और इंसानों द्वारा पढ़े जा सकने वाले JavaScript में कंपाइल होती है, जिसमें सोर्स कोड और बने हुए कोड का एक-से-एक मेल होता है।
- JavaScript के साथ बढ़िया इंटरऑप: आप CoffeeScript से JS में लिखा कोड आसानी से इस्तेमाल कर सकते हैं (और इसका उलटा भी)। लिखी गई किसी भी JS लाइब्रेरी का उपयोग किया जा सकता है
- यह JavaScript में जो फीचर नहीं थे या अब भी नहीं हैं, उन्हें जोड़ती है: लिस्ट कॉम्प्रिहेंशन, स्ट्रिंग इंटरपोलेशन, एग्ज़िस्टेंशियल ऑपरेटर (?), चेन्ड तुलना
- छोटी भाषा, कंपाइलर लगभग 500 kb का है (ज़िप करने पर 100 kb)
Dart
- Google में Lars Bak और Kasper Lund ने इसे डिज़ाइन किया
- पहला रिलीज़ 2011 में
- उद्देश्य था एक तेज़ भाषा बनाना, जिससे काम तेज़ी से हो सके और जो खास तौर पर UI बनाने के लिए उपयुक्त हो
- स्टैटिक टाइपिंग वाली
- मल्टी-पैराडाइम: मुख्य रूप से ऑब्जेक्ट-ओरिएंटेड, लेकिन फंक्शनल और इम्परेटिव भी
- इंटरप्रेट की जा सकती है और जस्ट-इन-टाइम कंपाइल भी हो सकती है
- मुख्य रूप से ऐप्स बनाने में उपयोग होती है, लेकिन बैकएंड बनाने में भी इस्तेमाल की जा सकती है
यह क्यों बढ़िया है
- जाना-पहचाना सिंटैक्स होने के कारण सीखना आसान
- आधुनिक टाइप सिस्टम: टाइप इन्फरेंस, पैटर्न मैचिंग, async/await
- बेहतरीन डॉक्यूमेंटेशन
- मज़बूत null-safety सिस्टम से सुरक्षा: अब null पॉइंटर एक्सेप्शन नहीं
- अच्छे टूल, और कई IDE में समर्थन। छोटे फीडबैक चक्र के लिए ऑप्टिमाइज़्ड, जैसे तेज़ hot reload की मदद से
- बढ़ता हुआ इकोसिस्टम, जिसमें ढेरों लाइब्रेरी उपलब्ध हैं
खास विशेषताएँ
- JS और नेटिव के साथ-साथ Swift और Kotlin में भी कंपाइल हो सकती है, जो मोबाइल ऐप्स के लिए बढ़िया है।
- Flutter लाइब्रेरी की मदद से मोबाइल, वेब, डेस्कटॉप या एम्बेडेड ऐप्स जल्दी बनाए जा सकते हैं। एक बार लिखिए, अलग-अलग प्लेटफॉर्म पर चलाइए
- बेहतरीन कॉन्करेंसी समर्थन, जिसमें async/await, isolates (हल्की कॉन्करेंसी वाले निर्माण), futures और बहुत कुछ शामिल है
Delphi
- Delphi को Borland ने विकसित किया और यह 1995 में रिलीज़ हुआ।
- यह एक Object Pascal प्रोग्रामिंग भाषा है, और इसे Anders Hejlsberg ने विकसित किया, जो C# के प्रमुख आर्किटेक्ट में से एक हैं
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली
- नेटिव कोड में कंपाइल होती है
- मल्टी-पैराडाइम: मुख्य रूप से ऑब्जेक्ट-ओरिएंटेड, लेकिन इम्परेटिव, डिक्लेरेटिव और इवेंट-ड्रिवन भी
- व्यावसायिक ऐप्लिकेशन, GUI और स्कूलों में (प्रोग्रामिंग सिखाने के लिए) उपयोग होती है
यह क्यों बढ़िया है
- सीखना आसान। Object Pascal, Pascal की सरलता और स्पष्टता को ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग फीचर के साथ जोड़ता है, जिससे कोड लिखना और उसे बनाए रखना आसान हो जाता है
- इंटीग्रेटेड डेवलपमेंट एनवायरनमेंट (IDE): Delphi का IDE एक ऐसा वातावरण देता है जिसमें काम करना आसान है और जिसमें ढेरों सुविधाएँ हैं, जो विकास की प्रक्रिया को सरल बनाती हैं। इसमें कोड नेविगेशन, डीबगिंग टूल, कोड कम्पलीशन और अन्य ऐसी सुविधाएँ मिलती हैं जो विकास को और कुशल बनाती हैं।
- स्थिरता: यह 1990 के दशक की शुरुआत से मौजूद है और एक भरोसेमंद तथा स्थिर डेवलपमेंट टूल और भाषा रही है, जिसमें मज़बूत बैकवर्ड कंपैटिबिलिटी भी शामिल है। Delphi के पुराने संस्करणों में लिखा कोड आज भी थोड़े-से बदलावों के साथ नए संस्करणों में कंपाइल करके चलाया जा सकता है।
- क्रॉस-प्लेटफॉर्म समर्थन: Delphi ने अपनी क्षमताओं को Windows से आगे बढ़ाया है और क्रॉस-प्लेटफॉर्म विकास का समर्थन देता है, जिससे डेवलपर macOS, iOS, Android जैसे कई ऑपरेटिंग सिस्टम के लिए ऐप बना सकते हैं। इससे अधिक लोगों तक पहुँचने वाले ऐप्लिकेशन बनाए जा सकते हैं और परियोजनाओं की पहुँच बढ़ती है।
- मज़बूत समुदाय और सहयोग: Delphi के पास डेवलपरों का एक समर्पित और सक्रिय समुदाय है, जो इकोसिस्टम में लाइब्रेरी, टूल और संसाधन जोड़ते हैं।
खास विशेषताएँ
- हाई-परफॉर्मेंस एक्ज़ीक्यूटेबल: Delphi के ऐप्लिकेशन अपनी गति और परफॉर्मेंस के लिए जाने जाते हैं। Delphi का कंपाइलर बेहद ऑप्टिमाइज़्ड नेटिव एक्ज़ीक्यूटेबल बनाता है, जो कुछ खास तरह के ऐप्लिकेशनों के लिए बहुत ज़रूरी हो सकते हैं, जैसे वे जिनमें रीयल-टाइम प्रोसेसिंग या भारी गणना वाले काम पड़ते हैं।
- रैपिड एप्लिकेशन डेवलपमेंट (RAD) वातावरण: विज़ुअल ड्रैग-एंड-ड्रॉप डिज़ाइन टूल की मदद से डेवलपर बहुत कम मेहनत में यूज़र इंटरफ़ेस बनाकर उन्हें कार्यक्षमता से जोड़ सकते हैं, जिससे विकास की प्रक्रिया तेज़ हो जाती है।
- कंपोनेंट-आधारित आर्किटेक्चर: यह कंपोनेंट-आधारित आर्किटेक्चर पर निर्भर करता है, जिसमें ऐप्लिकेशन बनाने के लिए दोबारा इस्तेमाल हो सकने वाले कंपोनेंट बनाए जाते हैं। इससे कोड दोबारा इस्तेमाल करना आसान होता है और विकास का समय घटता है।
- इवेंट हैंडलिंग: Delphi एक बिल्ट-इन इवेंट मॉडल का उपयोग करता है, जिससे डेवलपर यूज़र की गतिविधियों और दूसरे इवेंट पर आसानी से प्रतिक्रिया दे सकते हैं। इवेंट हैंडलिंग यूज़र इनपुट या सिस्टम इवेंट पकड़ने और उनका उचित जवाब देने की प्रक्रिया को आसान बनाती है।
- डेटाबेस कनेक्टिविटी: Delphi ऐसे नेटिव डेटाबेस एक्सेस कंपोनेंट देता है जो कई डेटाबेस सिस्टमों के साथ बिना अड़चन के एकीकरण की सुविधा देते हैं। यह बिल्ट-इन समर्थन डेटाबेस पर आधारित ऐप्लिकेशन बनाना आसान बना देता है।
Elm
- यह भाषा Evan Czaplicki ने अपनी सीनियर थीसिस के लिए बनाई और यह 2012 में रिलीज़ हुई
- शुरू में इसने GUI के लिए फंक्शनल रिएक्टिव प्रोग्रामिंग (FRP) पर काम किया (सिग्नल वाली FRP), लेकिन 2017 में FRP को छोड़कर TEA (The Elm Architecture) अपना लिया गया
- स्टैटिक और स्ट्रॉन्ग टाइपिंग वाली, फंक्शनल भाषा
- सिंटैक्स Haskell से प्रेरित
- ओपन-सोर्स भाषा, लेकिन इसके अपने सख्त नियम हैं। इसके विकास की शैली ऐसी है कि Evan चीज़ों को सार्वजनिक करने से पहले लंबे समय तक गहराई से काम करते हैं। इसलिए PR बहुत लंबे समय तक मर्ज नहीं हो पाते और प्रोजेक्ट पुराना पड़ा लग सकता है, पर यह सिर्फ Evan की काम करने की शैली है।
- वेबसाइटों में उपयोग होती है, जैसे NoRedInk, Vendr, Rakuten, Brilliant
यह क्यों बढ़िया है
- यह बहुत छोटी भाषा है, और स्टैटिक टाइपिंग वाली फंक्शनल भाषाओं के ML परिवार में सीखने के लिए सबसे आसान भाषाओं में से एक है। इस वजह से फंक्शनल प्रोग्रामिंग सिखाने के लिए यह लगभग आदर्श है।
- कंपाइलर के एरर सबसे अच्छे और सबसे मददगार हैं जो आपको कहीं मिलेंगे।
- स्थिर भाषा: अंतिम रिलीज़ 2019 का है
- इकोसिस्टम में पैकेज कम हैं, लेकिन बहुत अच्छी गुणवत्ता के हैं।
- elm-review के साथ एक मज़बूत लिंटिंग इकोसिस्टम (यह Exercism के Elm ट्रैक के एनालाइज़र को चलाता है)।
खास विशेषताएँ
- The Elm Architecture (TEA) सभी Elm ऐप्स का आधार है, इसलिए किसी अनजान Elm ऐप्लिकेशन को समझना बहुत आसान है।
- रनटाइम एक्सेप्शन नहीं! बस एक-दो चीज़ों को छोड़कर।
- डिपेंडेंसी अपडेट करते समय कुछ टूटता नहीं, सिमेंटिक वर्ज़निंग को कंपाइलर लागू करवाता है।
- जब यह कंपाइल हो जाती है, तो चलती है (तर्क की गलतियों को छोड़कर)। और जब आप इसके आदी हो जाते हैं, तो दूसरी भाषाओं पर लौटना बहुत मुश्किल लगता है।
- Matthew Griffith की “elm-ui” स्टाइल और लेआउट के लिए “जब कंपाइल हो, तो चले” वाली बात सच कर देती है, आपको CSS की ज़रूरत नहीं पड़ती।
- फुल-स्टैक वेब ऐप्स: Lamdera एक स्पिन-ऑफ है जो Elm का उपयोग करके फुल-स्टैक वेब ऐप्स बनाता है, जिसमें फ्रंटएंड और बैकएंड के बीच कोई जोड़ने वाला कोड नहीं चाहिए।
Java
- Sun Microsystems में James Gosling ने इसे विकसित किया और यह 1995 में रिलीज़ हुई।
- शुरू में पाँच लक्ष्य थे:
- सरल, ऑब्जेक्ट-ओरिएंटेड और जाना-पहचाना।
- मज़बूत और सुरक्षित।
- आर्किटेक्चर-न्यूट्रल और पोर्टेबल।
- हाई परफॉर्मेंस।
- इंटरप्रेटेड, थ्रेडेड और डायनामिक।
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली
- बाइटकोड में कंपाइल होती है (नेटिव कोड पर काम चल रहा है)
- मल्टी-पैराडाइम: इम्परेटिव, ऑब्जेक्ट-ओरिएंटेड और फंक्शनल
- भाषा और वर्चुअल मशीन के आधिकारिक स्पेसिफिकेशन हैं, और इसलिए इसके कई इम्प्लीमेंटेशन भी हैं (जैसे OpenJDK JVM और Oracle का Hotspot VM)
- वेबसाइटों से लेकर एम्बेडेड सिस्टम तक, और ऐप्स से लेकर डेटाबेस तक, ढेरों सॉफ्टवेयर में इसका उपयोग होता है
यह क्यों बढ़िया है
- (लगभग) हर जगह चलती है (जैसा कि Java अपडेटर आपको खुशी-खुशी याद दिलाता रहेगा ;))
- हर तरह के काम के लिए उपयुक्त: लगभग किसी भी वर्कलोड के लिए इस्तेमाल की जा सकती है, जिसमें ऐप्स, वेबसाइट और एम्बेडेड सिस्टम शामिल हैं
- Kotlin, Groovy, Scala और Clojure जैसी दूसरी JVM भाषाओं के साथ इंटरऑपरेबिलिटी
- बेहतरीन टूलिंग, IDE के लिए भी और बिल्ड सिस्टम जैसे दूसरे टूल के लिए भी
खास विशेषताएँ
- JVM एक परिपक्व, स्थिर और बेहद तेज़ वर्चुअल मशीन है, जिसे लगातार बेहतर बनाया जा रहा है
- बहुत बड़ा इकोसिस्टम, जिसमें ढेरों लाइब्रेरी उपलब्ध हैं। ये लाइब्रेरी भी, Java की तरह, परिपक्व, स्थिर और पूरी सुविधाओं वाली हैं
- लगातार विकसित हो रही है: भाषा और रनटाइम दोनों अब भी विकसित हो रहे हैं। भाषा को नियमित रूप से अपडेट किया जाता है ताकि वह और आधुनिक बने और लोगों की शिकायतों का समाधान हो (जैसे बॉयलरप्लेट और लंबाई कम करना)। रनटाइम के लिए, उसे और विकसित करने के लिए नियमित रूप से नई परियोजनाएँ शुरू की जाती हैं (जैसे हल्की कॉन्करेंसी वाले निर्माणों के लिए project loom और GraalVM के ज़रिए नेटिव कंपाइलेशन)
JavaScript
- 1995 में Netscape ने Brendan Eich को इसलिए नियुक्त किया कि वे वेब पेजों को गतिशील बनाने के लिए एक भाषा तैयार करें। मशहूर है कि पहला प्रोटोटाइप 10 दिनों में बनाया गया था
- 1997 में इसे ECMAScript के रूप में मानकीकृत किया गया
- डायनामिक और वीक टाइपिंग वाली
- पहले इसे केवल इंटरप्रेट किया जाता था, लेकिन आज अक्सर जस्ट-इन-टाइम कंपाइल किया जाता है
- मल्टी-पैराडाइम: प्रोटोटाइपल (जो काफी दुर्लभ है), लेकिन ऑब्जेक्ट-ओरिएंटेड, इम्परेटिव और फंक्शनल भी
- आज वेब जिस मुकाम पर है, उसमें इसका बहुत बड़ा हाथ है। जैसे AJAX ने वेब में इंटरैक्टिविटी जोड़ने में बहुत मदद की। वेब डेवलपमेंट के लिए यह डी-फैक्टो मानक है, क्योंकि यह अकेली ऐसी प्रोग्रामिंग भाषा है जिसका समर्थन ब्राउज़र में पहले से मौजूद है
- आजकल शायद सबसे अधिक इस्तेमाल होने वाली भाषा
- बैकएंड, फ्रंटएंड, स्क्रिप्ट और कमांड लाइन टूल के लिए उपयोग होती है
यह क्यों बढ़िया है
- हर तरह के काम के लिए: कई तरह के वर्कलोड के लिए इस्तेमाल की जा सकती है: बैकएंड, फ्रंटएंड, स्क्रिप्ट, कमांड लाइन टूल। वेब के लिए इस्तेमाल होने वाले कई टूल JavaScript में लिखे गए हैं (और nodejs पर चलते हैं)
- रनटाइम (जैसे V8) बहुत ऑप्टिमाइज़्ड हैं और बहुत तेज़ चल सकते हैं, भले ही भाषा बेहद डायनामिक है
- भाषा काफी छोटी है, जिससे इसे सीखना तुलनात्मक रूप से आसान हो जाता है। इसे ब्राउज़र में चला पाना इसे खास बनाता है, क्योंकि सीखते समय आपको तुरंत दिखने वाला फीडबैक मिलता रहता है
- नए फीचर जोड़ने के लिए स्पेक को बार-बार अपडेट किया जाता है, जैसे async/await, स्ट्रिंग इंटरपोलेशन। टूलिंग में भी बहुत नवाचार हो रहा है, और JavaScript कोडबेस के साथ काम करने में मदद के लिए deno, esbuild और bun.js जैसे नए टूल बनाए जा रहे हैं
- JSON का समर्थन बेहतरीन है, और इसका सबूत यह है कि JSON का पूरा नाम JavaScript Object Notation है
- यह इवेंट-ड्रिवन, नॉन-ब्लॉकिंग कोड के लिए अच्छी तरह डिज़ाइन की गई है
खास विशेषताएँ
- बहुत बड़ा इकोसिस्टम। ढेरों लाइब्रेरी उपलब्ध हैं (सितंबर 2022 में 21 लाख पैकेज), और साथ ही कई ऐसी भाषाएँ भी हैं जो JavaScript को टारगेट करती हैं
- यह अधिकतर प्लेटफॉर्म और हार्डवेयर पर चलती है, Windows से लेकर Apple तक, Raspberry Pi से लेकर फोन तक, वेब सर्वर से लेकर सर्वरलेस प्लेटफॉर्म तक। वेब ब्राउज़र में इसका समर्थन पहले से बना होता है, इसलिए कोई रनटाइम इंस्टॉल करने की ज़रूरत नहीं।
- वेब डेवलपमेंट के लिए आदर्श, क्योंकि चुनने के लिए कई फ्रेमवर्क हैं (React, Vue, Angular) और वेब ऐप्लिकेशन बनाने में मदद करने वाले ढेरों टूल भी (जैसे eslint, parcel)
- इसे आइसोमॉर्फिक रूप से भी इस्तेमाल किया जा सकता है, यानी एक ही भाषा (और एक ही कोडबेस) बैकएंड और फ्रंटएंड दोनों के लिए इस्तेमाल हो सकती है। इससे बनाए रखना आसान होता है और फ्रंटएंड तथा बैकएंड के बीच कोड दोबारा इस्तेमाल किया जा सकता है
- बेहद लोकप्रिय होने का मतलब है: सीखने के लिए ढेरों संसाधन (वीडियो, ब्लॉग, कोर्स), और बातचीत के लिए विशाल समुदाय
Kotlin
- 2010 में JetBrains ने इसे विकसित किया, जो अपने IDE के लिए मशहूर है (जैसे IntelliJ, CLion, GoLand और Rider)
- JetBrains के अधिकतर प्रोडक्ट Java में लिखे गए थे, लेकिन उन्हें एक ऐसी JVM भाषा चाहिए थी जो बॉयलरप्लेट कोड कम करे, विकास तेज़ करे और उन कुछ फीचर का समर्थन करे जो उनके पास नहीं थे। Scala में ये फीचर थे, पर वह कंपाइल होने में बहुत धीमी पाई गई। इसलिए Project Kotlin शुरू किया गया।
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली
- मल्टी-पैराडाइम: इम्परेटिव, ऑब्जेक्ट-ओरिएंटेड, फंक्शनल, डिक्लेरेटिव
- डिफ़ॉल्ट रूप से यह JVM बाइटकोड में कंपाइल होती है, लेकिन JS और नेटिव में भी कंपाइल हो सकती है (ऐसे प्लेटफॉर्म के लिए उपयोगी जहाँ वर्चुअल मशीन संभव या पसंदीदा नहीं है, जैसे iOS डिवाइस)
- 2019 में Google ने इसे Android ऐप्स लिखने की पसंदीदा भाषा घोषित किया
- वेबसाइट, ऐप्स (अधिकतर Android) और पूरे IDE तक बनाने में उपयोग होती है (ऊपर बताए गए IDE)
यह क्यों बढ़िया है
- हर तरह के काम के लिए: लगभग किसी भी वर्कलोड के लिए इस्तेमाल की जा सकती है, जिसमें ऐप्स और वेबसाइट शामिल हैं। 2019 में Google ने Kotlin को Android ऐप्स बनाने की पसंदीदा भाषा माना
- JVM पर चलने के कारण उसके सारे फायदे मिलते हैं: परिपक्व, बेहद तेज़ VM और ढेरों उपलब्ध लाइब्रेरी
- Java से लोगों को जो दिक्कतें हो सकती हैं, उनमें से कई को यह दूर कर देती है, जैसे checked exceptions, null safety और लंबाई
- आधुनिक भाषा: उन्नत टाइप इन्फरेंस, एक्सप्रेशन-आधारित, इम्यूटेबिलिटी, पैटर्न मैचिंग, कोरूटीन, चैनल
- बेहतरीन टूलिंग (यह उम्मीद की ही जा सकती है जब IDE खुद इसी भाषा में लिखा गया हो :)
खास विशेषताएँ
- काम तेज़ी से कराने वाली: Kotlin दूसरी भाषाओं के सबसे अच्छे हिस्से अपना लेती है, उन्हें ढालकर एक सुसंगत और कामगर भाषा बना देती है, और कुछ मामलों में तो मूल से भी बेहतर कर देती है (जैसे local extension methods के साथ)
- कोरूटीन: कई भाषाओं में async/await भाषा में ही पहले से मौजूद होता है, लेकिन Kotlin में इसे भाषा के कोरूटीन फीचर का उपयोग करके एक लाइब्रेरी के रूप में लागू किया गया है। कोरूटीन suspending फंक्शन से निपटने का एक तरीका है, जो futures और promises की तुलना में असिंक्रोनस कामों के लिए अधिक सुरक्षित और कम गलती वाला ऐब्स्ट्रैक्शन देते हैं।
- बेहतरीन कॉन्करेंसी: async/await, चैनल, इम्यूटेबिलिटी, ये सब मिलकर बेहतरीन कॉन्करेंसी पाने में मदद करते हैं
- Compose multiplatform एक ही कोडबेस से साझा UI बनाने देता है, डिक्लेरेटिव सिंटैक्स का उपयोग करके
Objective-C
- शुरू में 1980 के दशक की शुरुआत में Brad Cox और Tom Love ने इसे विकसित किया। NeXT ने इसे अपने NeXTSTEP ऑपरेटिंग सिस्टम के लिए चुना। चूँकि Apple का macOS सीधे NeXTSTEP से निकला है, यह Apple के सॉफ्टवेयर के लिए पसंदीदा भाषा बन गई
- इसे इस तरह डिज़ाइन किया गया कि SmallTalk के ऑब्जेक्ट-ओरिएंटेड विचार C के साथ जुड़ जाएँ, और मुख्य ऑब्जेक्ट-ओरिएंटेड ढाँचे के रूप में मैसेज पासिंग का उपयोग हो
- यह C का सुपरसेट है, इसलिए कोई भी C कोड मान्य objective-c कोड होता है और दोनों को एक ही कोडबेस में मिलाया जा सकता है
- स्टैटिक और डायनामिक टाइपिंग
- कंपाइल की जाती है
- 2014 में Swift आने तक macOS और iOS ऐप्लिकेशन लिखने की मानक भाषा
- macOS और iOS ऐप्स के लिए उपयोग होती है
यह क्यों बढ़िया है
- C का ऑब्जेक्ट-ओरिएंटेड फीचर के साथ मेल वाकई बहुत शक्तिशाली हो सकता है
- हल्का रनटाइम, जिससे यह संसाधनों की बचत करता है
- हल्का क्लास सिंटैक्स
- फास्ट एन्यूमरेशन की वजह से for लूप C की तुलना में आसान हो जाते हैं
- मज़बूत बैकवर्ड कंपैटिबिलिटी
खास विशेषताएँ
- यह Automatic Reference Counting (ARC) का समर्थन करती है, जो किसी ऑब्जेक्ट का संदर्भ खत्म हो जाने पर मेमोरी अपने आप मुक्त कर देता है, जिससे मेमोरी प्रबंधन आसान हो जाता है
- डायनामिक रनटाइम method swizzling की सुविधा देता है (किसी सेलेक्टर का व्यवहार गतिशील रूप से बदलना (जैसे monkey patching)), साथ ही reflection और message forwarding भी (observer या proxy पैटर्न के लिए बढ़िया)
- प्रोटोकॉल और इंटरफ़ेस C में इंटरफ़ेस की सुविधाएँ लाते हैं, और category इंटरफ़ेस तो मौजूदा टाइप को बढ़ाने तक की सुविधा देते हैं
PHP
- 1993 में Rasmus Lerdorf ने इसे विकसित और लागू किया, और यह पहली बार 1995 में रिलीज़ हुई
- इसका नाम एक पुनरावर्ती लघु रूप है: PHP: Hypertext Preprocessor
- डायनामिक और वीक टाइपिंग वाली, साथ ही रनटाइम पर धीरे-धीरे सख्त टाइप जाँच जोड़ने का विकल्प
- मल्टी-पैराडाइम: इम्परेटिव, फंक्शनल, ऑब्जेक्ट-ओरिएंटेड, प्रोसीजरल, रिफ्लेक्टिव
- इंटरप्रेट की जाती है या जस्ट-इन-टाइम कंपाइल होती है
- मूल सर्वर-साइड रेंडरिंग प्लेटफॉर्म
- वेबसाइटों (Facebook, Wikipedia और कई अन्य) के साथ-साथ कई कंटेंट मैनेजमेंट सिस्टम (Wordpress, JOOMLA) में उपयोग होती है।
यह क्यों बढ़िया है
- यह हर जगह मौजूद है: सभी वेबसाइटों में से 77.4% पर PHP का उपयोग होता है^1, चाहे प्लेटफॉर्म कोई भी हो
- सरल सिंटैक्स, जो दूसरी प्रचलित प्रोग्रामिंग भाषाओं (java, javascript, c) जैसा है, जिससे इसे सीखना आसान हो जाता है
- हर तरह के काम के लिए। इसका उपयोग कई जगह होता है, छोटी वेब स्क्रिप्ट बनाने से लेकर बड़े उद्यमों द्वारा चलाए जाने वाले बड़े सर्वर-साइड ऐप्लिकेशन बनाने तक।
- बहुत स्थापित और व्यापक रूप से अपनाई गई। सीखने के ढेरों संसाधन, फ्रेमवर्क और लाइब्रेरी मौजूद हैं।
- मज़बूत डेटाबेस समर्थन
- अब भी सक्रिय विकास में है और आधुनिक फीचर जारी करती रहती है
- क्रॉस प्लेटफॉर्म। यह हर जगह चलती है: Window, Mac, Linux, Unix
- ओपन सोर्स और मुफ्त
खास विशेषताएँ
- चलाना और डिप्लॉय करना आसान। कोई बिल्ड चेन नहीं। कोई कंपाइलर नहीं।
- ग्रेजुअल टाइप सिस्टम। जहाँ ज़रूरत हो वहाँ टाइप जोड़िए, और अपने विकास के कुछ हिस्सों को आसान बनाने के लिए डायनामिक टाइपिंग इस्तेमाल कीजिए।
- तेज़ प्रोटोटाइपिंग। अपना विचार परखने के लिए एक वेबपेज बनाइए और उसे अपनी ही मशीन पर चलाइए।
PureScript
- Phil Freeman ने इसे डिज़ाइन किया और पहला संस्करण 2013 में रिलीज़ हुआ
- उन्होंने PureScript पर काम इसलिए शुरू किया क्योंकि Haskell को JavaScript में ट्रांसपाइल करने की दूसरी कोशिशों से वे संतुष्ट नहीं थे
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली
- JS में कंपाइल होती है
- पूरी तरह फंक्शनल भाषा
- सिंटैक्स और फीचर Haskell से प्रेरित
- वेब ऐप्लिकेशन बनाने में उपयोग होती है, लेकिन Electron के ज़रिए सर्वर-साइड ऐप्स या डेस्कटॉप ऐप्लिकेशन भी बनाए जा सकते हैं
यह क्यों बढ़िया है
- Haskell को बढ़िया बनाने वाली बहुत सी बातें इसमें भी हैं:
- मज़बूत और शक्तिशाली टाइप सिस्टम: अल्जेब्रिक डेटा टाइप, टाइप क्लास, हायर-काइंडेड टाइप
- अभिव्यक्तिपूर्ण: पैटर्न मैचिंग, टाइप इन्फरेंस
- सुरक्षा: कोई null नहीं, इम्यूटेबल टाइप
- पूरी तरह फंक्शनल: साइड-इफेक्ट टाइप सिस्टम में दर्ज होते हैं
- JSON को टाइप में बदलना और टाइप से JSON बनाना, आसान और टाइप-सेफ
- इंसानों द्वारा पढ़े जा सकने वाले JavaScript में कंपाइल होती है
- अच्छे टूल
खास विशेषताएँ
- फंक्शनल मूल, बिना रनटाइम एरर वाले टाइप-सेफ वेब ऐप्लिकेशन के लिए एकदम सही है
- बेहतरीन JS इंटरऑप
- कुशल JS में कंपाइल होती है
ReasonML
- Facebook में Jordan Walke ने इसे बनाया और पहला संस्करण 2016 में रिलीज़ हुआ
- यह OCaml पर आधारित है, पर इसमें से इसकी अजीब बातें हटा दी गई हैं और इसे JS इंटरऑप के लिए डिज़ाइन किया गया है
- स्टैटिक टाइपिंग वाली और फंक्शनल भाषा
- कंपाइल की जाती है
- वेबसाइट बनाने में उपयोग होती है (जैसे Facebook में)
यह क्यों बढ़िया है
- OCaml की सारी अच्छाइयाँ, पर वेब के वातावरण में:
- शक्तिशाली टाइप सिस्टम: सभी वैल्यू को आसान टाइप (जैसे records, variants और options) दिए जाते हैं, जिन्हें जटिल टाइप पर तरजीह दी जाती है। अब undefined एरर नहीं आती, जिससे भरोसेमंदी बढ़ती है
- अभिव्यक्तिपूर्ण: पैटर्न मैचिंग, टाइप इन्फरेंस, डीस्ट्रक्चरिंग
- सुरक्षा: कोई null नहीं, डिफ़ॉल्ट रूप से इम्यूटेबिलिटी
- इंसानों द्वारा पढ़े जा सकने वाले JavaScript में कंपाइल होती है
- इसे OCaml में भी कंपाइल किया जा सकता है (और इसका उलटा भी), यानी यह पूरे OCaml इकोसिस्टम का उपयोग कर सकती है (जैसे नेटिव बाइनरी में कंपाइल करने के लिए)
खास विशेषताएँ
- ReasonML का कंपाइलेशन बहुत तेज़ होता है, जिसका मतलब है तेज़ इटरेशन चक्र।
- बेहतरीन JS इंटरऑप, चाहे ReasonML कोड से JS इस्तेमाल करना हो या ReasonML को JS में एक्सपोर्ट करना। यह TS टाइप भी बना सकती है। C के साथ भी इंटरऑप कर सकती है। यहाँ तक कि JSX जैसा सिंटैक्स भी समर्थित है
Swift
- Swift का विकास Chris Lattner ने 2010 में शुरू किया और 2014 में WWDC कार्यक्रम में इसकी दुनिया भर में घोषणा हुई।
- उद्देश्य था Apple की पुरानी प्रोग्रामिंग भाषा Objective-C को, जिसमें 80 के दशक की शुरुआत से कोई बड़ा बदलाव नहीं हुआ था, एक नई और आधुनिक भाषा से बदलना। इसे Objective-C के बड़े हिस्से के साथ इंटरऑप करने लायक बनाया गया।
- स्ट्रॉन्ग और स्टैटिक टाइपिंग वाली
- कंपाइल की जाती है, और मशीन कोड में कंपाइलेशन का काम LLVM संभालता है (जैसे Rust में)
- मल्टी-पैराडाइम: फंक्शनल, ऑब्जेक्ट-ओरिएंटेड, इम्परेटिव, डिक्लेरेटिव
- शुरू में यह प्रोप्राइटरी सॉफ्टवेयर था, लेकिन 2015 में ओपन-सोर्स कर दिया गया
- मुख्य रूप से मोबाइल और डेस्कटॉप ऐप्स के लिए उपयोग होती है, पर बैकएंड और सर्वरलेस परिदृश्यों में भी
यह क्यों बढ़िया है
- आधुनिक भाषा: टाइप इन्फरेंस, पैटर्न मैचिंग, अल्जेब्रिक डेटा टाइप, यूनिकोड स्ट्रिंग
- काम तेज़ी से कराने वाली: Swift दूसरी भाषाओं (जैसे Rust, Python, C# और Ruby) के सबसे अच्छे हिस्से अपना लेती है और उन्हें ढालकर एक सुसंगत, कामगर भाषा बना देती है
- सुरक्षित: pointers सामने नहीं लाए जाते, एक optional टाइप null-pointer एक्सेप्शन रोकता है, साफ-साफ एरर हैंडलिंग होती है, और ARC (Automatic Reference Counting) के ज़रिए मेमोरी का अपने आप प्रबंधन होता है
- नियमित रूप से अपडेट होती है। शुरुआत में Apple ऐसी चीज़ों में बड़े बदलाव करने से नहीं डरती थी जो ठीक से काम नहीं करती पाई गईं। इससे "बोझ" जमा नहीं होता। कोड माइग्रेट करने में मदद के लिए आमतौर पर एक टूल उपलब्ध करा दिया जाता है। Swift 5 से Application Binary Interface (ABI) स्थिर है
- Objective-C के उलट, Swift हर बड़े प्लेटफॉर्म पर चलती है: macOS, Windows और Linux
खास विशेषताएँ
- तेज़। यह कुशल मशीन कोड में कंपाइल होती है, जिससे यह तेज़ी से चलती है
- Objective-C के साथ बिना अड़चन के इंटरऑप, साथ ही C और C++ के साथ भी अच्छी तरह इंटरऑप करती है
- बड़ा समुदाय, जिसमें बहुत सारे बेहतरीन संसाधन उपलब्ध हैं
TypeScript
- इसे Microsoft में JS में बड़े पैमाने के ऐप्लिकेशन बनाने में आ रही परेशानियों के जवाब में बनाया गया। इसके डिज़ाइनरों में से एक Anders Hejlsberg थे, जो C# के प्रमुख आर्किटेक्ट और Delphi तथा Turbo Pascal के निर्माता हैं
- पहला संस्करण 2012 में रिलीज़ हुआ
- मल्टी-पैराडाइम: फंक्शनल, प्रोटोटाइपल, इम्परेटिव, ऑब्जेक्ट-ओरिएंटेड और जेनेरिक
- ग्रेजुअल और डक टाइपिंग का उपयोग करती है
- कंपाइल की जाती है (JS में)
- वेबसाइटों के लिए, फ्रंटएंड और बैकएंड दोनों में, साथ ही स्क्रिप्ट और कमांड लाइन टूल के लिए उपयोग होती है
यह क्यों बढ़िया है
- शक्तिशाली और लचीला टाइप सिस्टम: union टाइप, literal टाइप, tuples। मोटे तौर पर, JS कोड में इस्तेमाल हो सकने वाला हर पैटर्न TS में टाइप-सेफ तरीके से लिखा जा सकता है। यह टाइप सिस्टम इतना शक्तिशाली है कि यह ट्यूरिंग कम्पलीट तक है
- JS का सुपरसेट होने के कारण इसे किसी JS कोडबेस में धीरे-धीरे अपनाया जा सकता है
- यह दोनों दुनियाओं की सबसे अच्छी बातें जोड़ती है: डायनामिक और स्टैटिक टाइपिंग
- लोकप्रियता में तेज़ी से बढ़ रही है, और कई टूल या तो TypeScript टाइप देते हैं या खुद TypeScript में बदल दिए गए हैं। ढेरों संसाधन भी उपलब्ध हैं
- भाषा नियमित रूप से अपडेट होती है, और आने वाले ECMAScript फीचर जल्दी अपना लेती है
खास विशेषताएँ
- बेहतर सुरक्षा और शुद्धता: स्टैटिक टाइपिंग उन ढेरों तरह की गलतियों को हटा सकती है जो आमतौर पर JS के साथ होती हैं
- JS के साथ बिना अड़चन के इंटरऑप। JS कोड के साथ टाइप-सेफ तरीके से काम करने के लिए कस्टम टाइप डेफिनिशन जोड़े जा सकते हैं। बड़ी संख्या में कस्टम टाइप डेफिनिशन उपलब्ध हैं
- बेहतरीन टूलिंग/IDE समर्थन। कई IDE में टाइप एनोटेशन, कोड कम्पलीशन और यहाँ तक कि सुरक्षित, बड़े पैमाने पर रीफैक्टरिंग उपलब्ध है
- JS इकोसिस्टम में चलने के सारे फायदे मिलते हैं: ढेरों पैकेज, बहुत सारे टूल, बड़ा समुदाय, वगैरह।
किसे आज़माइए?
- अगर आप नेटिव ऐप्स बनाना चाहते हैं, तो Dart, Delphi, Java, Kotlin और Swift बढ़िया विकल्प हैं। ऐसा कहने के बाद, JS में कंपाइल होने वाली बाकी भाषाओं से भी नेटिव ऐप्स बनाए जा सकते हैं। ध्यान देने वाली बात यह है कि iOS/macOS ऐप्स बनाने की आधिकारिक भाषा Swift है, और Android ऐप्स के लिए यह Kotlin है
- अगर आप वेब ऐप्स बनाना चाहते हैं, तो CoffeeScript, Dart, Elm, Java, JavaScript, Kotlin, PHP, PureScript, ReasonML और TypeScript बढ़िया हैं
- अगर आपकी रुचि फंक्शनल प्रोग्रामिंग में है, तो Elm, PureScript और ReasonML स्वाभाविक विकल्प हैं, और CoffeeScript, Dart, Java, JavaScript, Kotlin, Swift तथा TypeScript भी फंक्शनल प्रोग्रामिंग का समर्थन करती हैं
- ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए ABAP, Dart, Delphi, Java, Kotlin, Objective-C, PHP और Swift तर्कसंगत विकल्प हैं, और CoffeeScript, JavaScript तथा TypeScript भी इस पैराडाइम का समर्थन करती हैं
- अगर आप व्यावसायिक ऐप्लिकेशन लिखने में रुचि रखते हैं, तो ABAP और Delphi इसके लिए एकदम सही हैं
Translation missing: hi.number.nth.ordinalized Aug 2023
·
क्या यह काम की लगी?
प्रकाशित:
Erik Schierboom