# प्रोग्रामिङ भाषाहरू र उपकरणहरूको परिचय यो पाठले प्रोग्रामिङ भाषाहरूको आधारभूत कुराहरू समेट्छ। यहाँ समेटिएका विषयवस्तुहरू आजका अधिकांश आधुनिक प्रोग्रामिङ भाषाहरूमा लागू हुन्छन्। 'उपकरणहरूको व्यापार' खण्डमा, तपाईं विकासकर्ताको रूपमा उपयोगी सफ्टवेयरबारे सिक्नुहुनेछ। ![प्रोग्रामिङ परिचय](../../../../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` स्टेटमेन्ट हो। ✅ तपाईंले यस प्रकारको स्टेटमेन्टबारे थप पाठहरूमा सिक्नुहुनेछ। ## उपकरणहरूको व्यापार [![उपकरणहरूको व्यापार](https://img.youtube.com/vi/69WJeXGBdxg/0.jpg)](https://youtube.com/watch?v=69WJeXGBdxg "उपकरणहरूको व्यापार") > 🎥 माथिको छवि क्लिक गर्नुहोस् उपकरणबारे भिडियोका लागि यस खण्डमा, तपाईंले आफ्नो व्यावसायिक विकास यात्रा सुरु गर्दा उपयोगी हुन सक्ने केही सफ्टवेयरबारे सिक्नुहुनेछ। **विकास वातावरण** भनेको विकासकर्ताले सफ्टवेयर लेख्दा प्रायः प्रयोग गर्ने उपकरण र सुविधाहरूको अद्वितीय सेट हो। यी उपकरणहरू विकासकर्ताको विशिष्ट आवश्यकताहरूका लागि अनुकूलित गरिएको हुन सक्छन्, र समयसँगै परिवर्तन हुन सक्छन् यदि विकासकर्ताले काममा प्राथमिकता परिवर्तन गर्छ, व्यक्तिगत परियोजनाहरूमा, वा फरक प्रोग्रामिङ भाषा प्रयोग गर्दा। विकास वातावरणहरू तिनीहरू प्रयोग गर्ने विकासकर्ताहरू जत्तिकै अद्वितीय हुन्छन्। ### एडिटर्स सफ्टवेयर विकासका लागि सबैभन्दा महत्त्वपूर्ण उपकरणमध्ये एक एडिटर हो। एडिटरहरूमा तपाईं आफ्नो कोड लेख्नुहुन्छ र कहिलेकाहीं आफ्नो कोड चलाउनुहुन्छ। विकासकर्ताहरू एडिटरहरूमा केही अतिरिक्त कारणहरूका लागि भर पर्छन्: - *डिबगिङ*ले कोडको प्रत्येक लाइनमा त्रुटिहरू पत्ता लगाउन मद्दत गर्छ। केही एडिटरहरूमा डिबगिङ क्षमता हुन्छ; तिनीहरूलाई विशिष्ट प्रोग्रामिङ भाषाहरूका लागि अनुकूलित र थप्न सकिन्छ। - *सिन्ट्याक्स हाइलाइटिङ*ले कोडमा रंग र पाठको ढाँचालाई थप्छ, जसले पढ्न सजिलो बनाउँछ। अधिकांश एडिटरहरूले अनुकूलित सिन्ट्याक्स हाइलाइटिङ अनुमति दिन्छ। - *एक्सटेन्सनहरू र इन्टिग्रेसनहरू* विकासकर्ताहरूका लागि विशेष उपकरणहरू हुन्। यी उपकरणहरू आधारभूत एडिटरमा निर्माण गरिएको थिएन। उदाहरणका लागि, धेरै विकासकर्ताहरूले आफ्नो कोडलाई कसरी काम गर्छ भनेर व्याख्या गर्न दस्तावेज बनाउँछन्। तिनीहरूले दस्तावेजभित्र टाइपोहरू पत्ता लगाउन मद्दत गर्न स्पेल चेक एक्सटेन्सन स्थापना गर्न सक्छन्। अधिकांश एक्सटेन्सनहरू विशिष्ट एडिटरभित्र प्रयोगका लागि अभिप्रेरित छन्, र अधिकांश एडिटरहरूले उपलब्ध एक्सटेन्सनहरूको खोजी गर्ने तरिका प्रदान गर्छन्। - *अनुकूलन*ले विकासकर्ताहरूलाई आफ्नो आवश्यकताहरू अनुरूप अद्वितीय विकास वातावरण सिर्जना गर्न सक्षम बनाउँछ। अधिकांश एडिटरहरू अत्यधिक अनुकूलन योग्य छन् र विकासकर्ताहरूलाई कस्टम एक्सटेन्सनहरू सिर्जना गर्न अनुमति दिन सक्छन्। #### लोकप्रिय एडिटरहरू र वेब विकास एक्सटेन्सनहरू - [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/) ## समीक्षा र आत्म अध्ययन विकासकर्ताका लागि उपलब्ध विभिन्न भाषाहरूको बारेमा अध्ययन गर्नुहोस्। एउटा भाषामा एक लाइन लेख्ने प्रयास गर्नुहोस्, र त्यसलाई दुई अन्य भाषामा पुनःलेख्नुहोस्। तपाईंले के सिक्नुभयो? ## असाइनमेन्ट [डक्स पढ्दै](assignment.md) > नोट: आफ्नो असाइनमेन्टका लागि उपकरणहरू चयन गर्दा, माथि सूचीबद्ध एडिटरहरू, ब्राउजरहरू, वा कमाण्ड लाइन उपकरणहरू चयन नगर्नुहोस्। --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको हो। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। मूल दस्तावेज़ यसको मातृभाषामा आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुनेछैनौं।