# प्रोग्रामिङ भाषा र उपकरणहरूको परिचय यो पाठले प्रोग्रामिङ भाषाको आधारभूत कुराहरू समेट्छ। यहाँ समेटिएका विषयहरू आजका अधिकांश आधुनिक प्रोग्रामिङ भाषामा लागू हुन्छन्। 'उपकरणहरूको व्यापार' खण्डमा, तपाईंले विकासकर्ताको रूपमा उपयोगी सफ्टवेयरबारे सिक्नुहुनेछ। ![Intro Programming](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff0b27dcbf1c3f16c8ed46984866f2d29988929678b0058fde.ne.png) > स्केच नोट [Tomomi Imura](https://twitter.com/girlie_mac) द्वारा ## प्रि-लेक्चर क्विज [प्रि-लेक्चर क्विज](https://forms.office.com/r/dru4TE0U9n?origin=lprLink) ## परिचय यस पाठमा हामी समेट्नेछौं: - प्रोग्रामिङ के हो? - प्रोग्रामिङ भाषाका प्रकारहरू - प्रोग्रामको आधारभूत तत्वहरू - व्यावसायिक विकासकर्ताका लागि उपयोगी सफ्टवेयर र उपकरणहरू > तपाईं यो पाठ [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/introduction-programming/?WT.mc_id=academic-77807-sagibbon) मा लिन सक्नुहुन्छ! ## प्रोग्रामिङ के हो? प्रोग्रामिङ (कोडिङको रूपमा पनि चिनिन्छ) भनेको कम्प्युटर वा मोबाइल उपकरणजस्ता उपकरणका लागि निर्देशनहरू लेख्ने प्रक्रिया हो। हामी यी निर्देशनहरू प्रोग्रामिङ भाषाको प्रयोग गरेर लेख्छौं, जुन त्यसपछि उपकरणले व्याख्या गर्छ। यी निर्देशनहरूको सेटलाई विभिन्न नामले चिनिन सकिन्छ, तर *प्रोग्राम*, *कम्प्युटर प्रोग्राम*, *एप्लिकेसन (एप)*, र *एक्जिक्युटेबल* केही लोकप्रिय नामहरू हुन्। *प्रोग्राम* भनेको कोडले लेखिएको कुनै पनि कुरा हुन सक्छ; वेबसाइटहरू, खेलहरू, र फोन एपहरू प्रोग्राम हुन्। कोड नलेखी प्रोग्राम बनाउन सम्भव भए पनि, आधारभूत तर्क उपकरणले व्याख्या गर्छ र त्यो तर्क सम्भवतः कोडले लेखिएको हुन्छ। *चलिरहेको* वा *एक्जिक्युटिङ* कोड भएको प्रोग्राम निर्देशनहरू कार्यान्वयन गरिरहेको हुन्छ। तपाईंले यो पाठ पढ्न प्रयोग गरिरहेको उपकरणले यसलाई तपाईंको स्क्रिनमा देखाउन प्रोग्राम चलाइरहेको छ। ✅ थोरै अनुसन्धान गर्नुहोस्: विश्वको पहिलो कम्प्युटर प्रोग्रामर को मानिन्छ? ## प्रोग्रामिङ भाषाहरू प्रोग्रामिङ भाषाहरूले विकासकर्ताहरूलाई उपकरणका लागि निर्देशनहरू लेख्न सक्षम बनाउँछन्। उपकरणहरूले केवल बाइनरी (१ र ०) बुझ्न सक्छन्, र *अधिकांश* विकासकर्ताहरूका लागि यो संवादको धेरै प्रभावकारी तरिका होइन। प्रोग्रामिङ भाषाहरू मानिस र कम्प्युटरबीचको संवादको माध्यम हुन्। प्रोग्रामिङ भाषाहरू विभिन्न ढाँचामा आउँछन् र विभिन्न उद्देश्यहरू पूरा गर्न सक्छन्। उदाहरणका लागि, JavaScript मुख्य रूपमा वेब एप्लिकेसनहरूको लागि प्रयोग गरिन्छ भने Bash मुख्य रूपमा अपरेटिङ सिस्टमहरूको लागि प्रयोग गरिन्छ। *लो लेभल भाषाहरू*ले उपकरणलाई निर्देशनहरू व्याख्या गर्न *हाई लेभल भाषाहरू*भन्दा कम चरणहरू आवश्यक पर्छ। तर, हाई लेभल भाषाहरू लोकप्रिय हुनुको कारण तिनीहरूको पढ्न सजिलो र समर्थन हो। JavaScript लाई हाई लेभल भाषा मानिन्छ। निम्न कोडले JavaScript जस्तो हाई लेभल भाषा र ARM असेंबली कोड जस्तो लो लेभल भाषाको बीचको भिन्नता देखाउँछ। ```javascript let number = 10 let n1 = 0, n2 = 1, nextTerm; for (let i = 1; i <= number; i++) { console.log(n1); nextTerm = n1 + n2; n1 = n2; n2 = nextTerm; } ``` ```c area ascen,code,readonly entry code32 adr r0,thumb+1 bx r0 code16 thumb mov r0,#00 sub r0,r0,#01 mov r1,#01 mov r4,#10 ldr r2,=0x40000000 back add r0,r1 str r0,[r2] add r2,#04 mov r3,r0 mov r0,r1 mov r1,r3 sub r4,#01 cmp r4,#00 bne back end ``` विश्वास गर्नुहोस् वा नगर्नुहोस्, *दुवै एउटै काम गरिरहेका छन्*: १० सम्मको फिबोनाची सिक्वेन्स प्रिन्ट गर्दै। ✅ फिबोनाची सिक्वेन्स [परिभाषित](https://en.wikipedia.org/wiki/Fibonacci_number) गरिएको छ जसमा प्रत्येक संख्या दुई अघिल्लो संख्याको योगफल हुन्छ, ० र १ बाट सुरु गर्दै। फिबोनाची सिक्वेन्सको पहिलो १० संख्या ०, १, १, २, ३, ५, ८, १३, २१ र ३४ हुन्। ## प्रोग्रामका तत्वहरू प्रोग्राममा एकल निर्देशनलाई *स्टेटमेन्ट* भनिन्छ र सामान्यतया यसले निर्देशन समाप्त हुने वा *टर्मिनेट* हुने ठाउँ चिन्ह लगाउने क्यारेक्टर वा लाइन स्पेसिङ हुन्छ। प्रोग्राम कसरी टर्मिनेट हुन्छ भन्ने कुरा प्रत्येक भाषामा फरक हुन्छ। प्रोग्रामभित्रका स्टेटमेन्टहरूले निर्देशनहरू कार्यान्वयन गर्न प्रयोगकर्ताले प्रदान गरेको डाटा वा अन्यत्रबाट निर्भर गर्न सक्छ। डाटाले प्रोग्रामको व्यवहार परिवर्तन गर्न सक्छ, त्यसैले प्रोग्रामिङ भाषाहरूले डाटालाई पछि प्रयोग गर्न अस्थायी रूपमा भण्डारण गर्ने तरिका प्रदान गर्छ। यसलाई *भेरिएबल्स* भनिन्छ। भेरिएबल्स भनेको उपकरणलाई यसको मेमोरीमा डाटा बचत गर्न निर्देशन दिने स्टेटमेन्टहरू हुन्। प्रोग्राममा भेरिएबल्स गणितको भेरिएबल्स जस्तै हुन्छन्, जहाँ तिनीहरूको अद्वितीय नाम हुन्छ र तिनीहरूको मान समयसँगै परिवर्तन हुन सक्छ। केही स्टेटमेन्टहरू उपकरणले कार्यान्वयन नगर्ने सम्भावना हुन्छ। यो सामान्यतया विकासकर्ताले लेख्दा डिजाइन अनुसार हुन्छ वा अनपेक्षित त्रुटि हुँदा दुर्घटनावश हुन्छ। एप्लिकेसनमा यस्तो नियन्त्रणले यसलाई अझ बलियो र मर्मतयोग्य बनाउँछ। सामान्यतया, यी नियन्त्रण परिवर्तनहरू निश्चित सर्तहरू पूरा हुँदा हुन्छ। आधुनिक प्रोग्रामिङमा प्रोग्राम कसरी चल्छ भन्ने नियन्त्रण गर्न प्रयोग गरिने सामान्य स्टेटमेन्ट `if..else` स्टेटमेन्ट हो। ✅ तपाईंले यस प्रकारको स्टेटमेन्टबारे थप पाठहरूमा सिक्नुहुनेछ। ## उपकरणहरूको व्यापार [![Tools of the Trade](https://img.youtube.com/vi/69WJeXGBdxg/0.jpg)](https://youtube.com/watch?v=69WJeXGBdxg "Tools of the Trade") > 🎥 माथिको छवि क्लिक गरेर उपकरणबारे भिडियो हेर्नुहोस् यस खण्डमा, तपाईंले व्यावसायिक विकासको यात्रा सुरु गर्दा उपयोगी हुन सक्ने केही सफ्टवेयरबारे सिक्नुहुनेछ। **विकास वातावरण** भनेको विकासकर्ताले सफ्टवेयर लेख्दा प्रायः प्रयोग गर्ने उपकरण र सुविधाहरूको अद्वितीय सेट हो। यी उपकरणहरू विकासकर्ताको विशिष्ट आवश्यकताहरूका लागि अनुकूलित गरिएको हुन सक्छन्, र समयसँगै परिवर्तन हुन सक्छन् यदि विकासकर्ताले काम, व्यक्तिगत परियोजनाहरू, वा फरक प्रोग्रामिङ भाषा प्रयोग गर्दा प्राथमिकता परिवर्तन गर्छ। विकास वातावरणहरू विकासकर्ताहरू जत्तिकै अद्वितीय हुन्छन्। ### एडिटर्स सफ्टवेयर विकासका लागि सबैभन्दा महत्त्वपूर्ण उपकरणमध्ये एक एडिटर हो। एडिटरहरू तपाईंले आफ्नो कोड लेख्ने ठाउँ हो र कहिलेकाहीं तपाईंले आफ्नो कोड चलाउने ठाउँ पनि हो। विकासकर्ताहरू एडिटरहरूमा केही अतिरिक्त कारणहरूका लागि भर पर्छन्: - *डिबगिङ*ले बग र त्रुटिहरू पत्ता लगाउन मद्दत गर्छ, कोडलाई लाइन-बाइ-लाइन हेर्दै। केही एडिटरहरूमा डिबगिङ क्षमता हुन्छ; तिनीहरूलाई विशिष्ट प्रोग्रामिङ भाषाहरूका लागि अनुकूलित र थप्न सकिन्छ। - *सिन्ट्याक्स हाइलाइटिङ*ले कोडमा रंग र पाठको ढाँचालाई थप्छ, जसले पढ्न सजिलो बनाउँछ। अधिकांश एडिटरहरूले अनुकूलित सिन्ट्याक्स हाइलाइटिङ अनुमति दिन्छन्। - *एक्सटेन्सनहरू र इन्टिग्रेसनहरू* विकासकर्ताहरूका लागि विशेष उपकरणहरू हुन्। यी उपकरणहरू आधारभूत एडिटरमा निर्माण गरिएको थिएन। उदाहरणका लागि, धेरै विकासकर्ताहरूले आफ्नो कोडलाई कसरी काम गर्छ भनेर व्याख्या गर्न दस्तावेज बनाउँछन्। तिनीहरूले दस्तावेजमा टाइपोहरू पत्ता लगाउन मद्दत गर्न स्पेल चेक एक्सटेन्सन स्थापना गर्न सक्छन्। अधिकांश एक्सटेन्सनहरू विशिष्ट एडिटरभित्र प्रयोगको लागि बनाइएको हुन्छन्, र अधिकांश एडिटरहरू उपलब्ध एक्सटेन्सनहरूको खोजी गर्ने तरिका सहित आउँछन्। - *अनुकूलन*ले विकासकर्ताहरूलाई आफ्नो आवश्यकताहरू पूरा गर्न अद्वितीय विकास वातावरण सिर्जना गर्न सक्षम बनाउँछ। अधिकांश एडिटरहरू अत्यधिक अनुकूलन योग्य हुन्छन् र विकासकर्ताहरूलाई अनुकूलित एक्सटेन्सनहरू सिर्जना गर्न अनुमति दिन सक्छन्। #### लोकप्रिय एडिटरहरू र वेब विकास एक्सटेन्सनहरू - [Visual Studio Code](https://code.visualstudio.com/?WT.mc_id=academic-77807-sagibbon) - [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker) - [Live Share](https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare) - [Prettier - Code formatter](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) - [Atom](https://atom.io/) - [spell-check](https://atom.io/packages/spell-check) - [teletype](https://atom.io/packages/teletype) - [atom-beautify](https://atom.io/packages/atom-beautify) - [Sublimetext](https://www.sublimetext.com/) - [emmet](https://emmet.io/) - [SublimeLinter](http://www.sublimelinter.com/en/stable/) ### ब्राउजरहरू अर्को महत्त्वपूर्ण उपकरण ब्राउजर हो। वेब विकासकर्ताहरू वेबमा आफ्नो कोड कसरी चल्छ भनेर हेर्न ब्राउजरमा भर पर्छन्। यो वेब पेजका दृश्यात्मक तत्वहरू देखाउन पनि प्रयोग गरिन्छ, जुन एडिटरमा लेखिएको हुन्छ, जस्तै HTML। धेरै ब्राउजरहरू *डेभलपर टूल्स* (DevTools) सहित आउँछन्, जसमा विकासकर्ताहरूलाई आफ्नो एप्लिकेसनबारे महत्त्वपूर्ण जानकारी सङ्कलन गर्न र क्याप्चर गर्न मद्दत गर्ने सुविधाहरूको सेट हुन्छ। उदाहरणका लागि: यदि वेब पेजमा त्रुटिहरू छन् भने, तिनीहरू कहिले भए भनेर जान्न कहिलेकाहीं उपयोगी हुन्छ। ब्राउजरको DevTools कन्फिगर गरेर यो जानकारी सङ्कलन गर्न सकिन्छ। #### लोकप्रिय ब्राउजरहरू र DevTools - [Edge](https://docs.microsoft.com/microsoft-edge/devtools-guide-chromium/?WT.mc_id=academic-77807-sagibbon) - [Chrome](https://developers.google.com/web/tools/chrome-devtools/) - [Firefox](https://developer.mozilla.org/docs/Tools) ### कमाण्ड लाइन उपकरणहरू केही विकासकर्ताहरू आफ्नो दैनिक कार्यहरूको लागि कम ग्राफिकल दृश्यलाई प्राथमिकता दिन्छन् र कमाण्ड लाइनमा भर पर्छन्। कोड लेख्न धेरै टाइपिङ आवश्यक पर्छ र केही विकासकर्ताहरू आफ्नो किबोर्डको प्रवाहलाई अवरोध नगर्न चाहन्छन्। तिनीहरूले डेस्कटप विन्डोहरू स्विच गर्न, विभिन्न फाइलहरूमा काम गर्न, र उपकरणहरू प्रयोग गर्न किबोर्ड सर्टकटहरू प्रयोग गर्छन्। अधिकांश कार्यहरू माउसको साथ पूरा गर्न सकिन्छ, तर कमाण्ड लाइनको एक फाइदा भनेको धेरै काम कमाण्ड लाइन उपकरणहरूको साथ माउस र किबोर्ड बीच स्विच नगरी गर्न सकिन्छ। कमाण्ड लाइनको अर्को फाइदा भनेको तिनीहरू कन्फिगरेबल हुन्छन् र तपाईंले अनुकूलित कन्फिगरेसन बचत गर्न, पछि परिवर्तन गर्न, र अन्य विकास मेसिनहरूमा आयात गर्न सक्नुहुन्छ। विकास वातावरणहरू प्रत्येक विकासकर्ताका लागि यति अद्वितीय हुन्छन् कि केहीले कमाण्ड लाइन प्रयोग गर्नबाट बच्न सक्छन्, केहीले पूर्ण रूपमा भर पर्छन्, र केहीले दुवैको मिश्रणलाई प्राथमिकता दिन सक्छन्। ### लोकप्रिय कमाण्ड लाइन विकल्पहरू कमाण्ड लाइनका विकल्पहरू तपाईंले प्रयोग गर्ने अपरेटिङ सिस्टममा निर्भर गर्दछ। *💻 = अपरेटिङ सिस्टममा पूर्वस्थापित आउँछ।* #### Windows - [Powershell](https://docs.microsoft.com/powershell/scripting/overview?view=powershell-7/?WT.mc_id=academic-77807-sagibbon) 💻 - [Command Line](https://docs.microsoft.com/windows-server/administration/windows-commands/windows-commands/?WT.mc_id=academic-77807-sagibbon) (CMD को रूपमा पनि चिनिन्छ) 💻 - [Windows Terminal](https://docs.microsoft.com/windows/terminal/?WT.mc_id=academic-77807-sagibbon) - [mintty](https://mintty.github.io/) #### MacOS - [Terminal](https://support.apple.com/guide/terminal/open-or-quit-terminal-apd5265185d-f365-44cb-8b09-71a064a42125/mac) 💻 - [iTerm](https://iterm2.com/) - [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-7/?WT.mc_id=academic-77807-sagibbon) #### Linux - [Bash](https://www.gnu.org/software/bash/manual/html_node/index.html) 💻 - [KDE Konsole](https://docs.kde.org/trunk5/en/konsole/konsole/index.html) - [Powershell](https://docs.microsoft.com/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7/?WT.mc_id=academic-77807-sagibbon) #### लोकप्रिय कमाण्ड लाइन उपकरणहरू - [Git](https://git-scm.com/) (💻 अधिकांश अपरेटिङ सिस्टममा) - [NPM](https://www.npmjs.com/) - [Yarn](https://classic.yarnpkg.com/en/docs/cli/) ### दस्तावेज जब विकासकर्ताले नयाँ कुरा सिक्न चाहन्छन्, तिनीहरूले प्रायः दस्तावेजमा फर्केर उपकरण र भाषाहरू सही रूपमा प्रयोग गर्ने तरिका सिक्न खोज्छन्। विकासकर्ताहरूले उपकरण र भाषाहरू कसरी प्रयोग गर्ने भनेर मार्गदर्शन गर्न, र यसले कसरी काम गर्छ भन्ने गहिरो ज्ञान प्राप्त गर्न दस्तावेजमा भर पर्छन्। #### वेब विकासमा लोकप्रिय दस्तावेज - [Mozilla Developer Network (MDN)](https://developer.mozilla.org/docs/Web), Mozilla बाट, [Firefox](https://www.mozilla.org/firefox/) ब्राउजरका प्रकाशकहरू - [Frontend Masters](https://frontendmasters.com/learn/) - [Web.dev](https://web.dev), Google बाट, [Chrome](https://www.google.com/chrome/) का प्रकाशकहरू - [Microsoft's own developer docs](https://docs.microsoft.com/microsoft-edge/#microsoft-edge-for-developers), [Microsoft Edge](https://www.microsoft.com/edge) का लागि - [W3 Schools](https://www.w3schools.com/where_to_start.asp) ✅ केही अनुसन्धान गर्नुहोस्: अब तपाईंले वेब विकासकर्ताको वातावरणको आधारभूत कुरा थाहा पाउनुभयो, वेब डिजाइनरको वातावरणसँग तुलना गर्नुहोस्। --- ## 🚀 चुनौती केही प्रोग्रामिङ भाषाहरू तुलना गर्नुहोस्। JavaScript र Java का केही अनौठा विशेषताहरू के हुन्? COBOL र Go को बारेमा के भन्न सकिन्छ? ## पोस्ट-लेक्चर क्विज [पोस्ट-लेक्चर क्विज](https://ff-quizzes.netlify.app/web/quiz/2) ## समीक्षा र आत्म अध्ययन विकासकर्ताका लागि उपलब्ध विभिन्न भाषाहरूको बारेमा अध्ययन गर्नुहोस्। एउटा भाषामा एउटा लाइन लेख्ने प्रयास गर्नुहोस्, र त्यसलाई दुई अन्य भाषामा पुनःलेख्नुहोस्। तपाईंले के सिक्नुभयो? ## असाइनमेन्ट [Reading the Docs](assignment.md) **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी यथार्थताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।