# پروگرامنگ زبانوں اور ضروری ٹولز کا تعارف یہ سبق پروگرامنگ زبانوں کی بنیادی باتوں کا احاطہ کرتا ہے۔ یہاں شامل موضوعات آج کی زیادہ تر جدید پروگرامنگ زبانوں پر لاگو ہوتے ہیں۔ 'ضروری ٹولز' کے حصے میں، آپ ایسے مفید سافٹ ویئر کے بارے میں سیکھیں گے جو ایک ڈویلپر کے طور پر آپ کی مدد کرتا ہے۔ ![پروگرامنگ کا تعارف](../../../../translated_images/webdev101-programming.d6e3f98e61ac4bff0b27dcbf1c3f16c8ed46984866f2d29988929678b0058fde.ur.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) پر لے سکتے ہیں! ## پروگرامنگ کیا ہے؟ پروگرامنگ (جسے کوڈنگ بھی کہا جاتا ہے) ایک کمپیوٹر یا موبائل ڈیوائس جیسے آلے کے لیے ہدایات لکھنے کا عمل ہے۔ ہم یہ ہدایات ایک پروگرامنگ زبان کے ذریعے لکھتے ہیں، جسے پھر آلہ سمجھتا ہے۔ ان ہدایات کے سیٹ کو مختلف ناموں سے جانا جا سکتا ہے، لیکن *پروگرام*، *کمپیوٹر پروگرام*، *ایپلیکیشن (ایپ)*، اور *ایگزیکیوٹیبل* چند مشہور نام ہیں۔ ایک *پروگرام* کچھ بھی ہو سکتا ہے جو کوڈ کے ذریعے لکھا گیا ہو؛ ویب سائٹس، گیمز، اور فون ایپس سب پروگرام ہیں۔ اگرچہ کوڈ لکھے بغیر پروگرام بنانا ممکن ہے، لیکن بنیادی منطق جو آلہ سمجھتا ہے وہ زیادہ تر کوڈ کے ذریعے لکھی گئی ہوتی ہے۔ ایک پروگرام جو *چل رہا ہو* یا *ایگزیکیوٹ* کر رہا ہو، وہ ہدایات پر عمل کر رہا ہوتا ہے۔ وہ آلہ جس پر آپ یہ سبق پڑھ رہے ہیں، ایک پروگرام چلا رہا ہے تاکہ یہ آپ کی اسکرین پر دکھایا جا سکے۔ ✅ تھوڑا تحقیق کریں: دنیا کے پہلے کمپیوٹر پروگرامر کے طور پر کس کو جانا جاتا ہے؟ ## پروگرامنگ زبانیں پروگرامنگ زبانیں ڈویلپرز کو آلے کے لیے ہدایات لکھنے کی سہولت فراہم کرتی ہیں۔ آلات صرف بائنری (1s اور 0s) کو سمجھ سکتے ہیں، اور *زیادہ تر* ڈویلپرز کے لیے یہ بات چیت کا مؤثر طریقہ نہیں ہے۔ پروگرامنگ زبانیں انسانوں اور کمپیوٹرز کے درمیان بات چیت کا ذریعہ ہیں۔ پروگرامنگ زبانیں مختلف فارمیٹس میں آتی ہیں اور مختلف مقاصد کے لیے استعمال ہو سکتی ہیں۔ مثال کے طور پر، جاوا اسکرپٹ بنیادی طور پر ویب ایپلیکیشنز کے لیے استعمال ہوتی ہے، جبکہ بش بنیادی طور پر آپریٹنگ سسٹمز کے لیے استعمال ہوتی ہے۔ *لو لیول زبانیں* عام طور پر آلے کو ہدایات سمجھنے کے لیے کم مراحل کی ضرورت ہوتی ہیں، جبکہ *ہائی لیول زبانیں* اپنی پڑھنے کی آسانی اور سپورٹ کی وجہ سے مقبول ہیں۔ جاوا اسکرپٹ کو ایک ہائی لیول زبان سمجھا جاتا ہے۔ ذیل میں کوڈ ایک ہائی لیول زبان (جاوا اسکرپٹ) اور ایک لو لیول زبان (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 ``` یقین کریں یا نہ کریں، *یہ دونوں ایک ہی کام کر رہے ہیں*: 10 تک فبوناکی سیکوئنس پرنٹ کر رہے ہیں۔ ✅ فبوناکی سیکوئنس [تعریف](https://en.wikipedia.org/wiki/Fibonacci_number) کے مطابق ایک نمبر سیٹ ہے جس میں ہر نمبر دو پچھلے نمبروں کا مجموعہ ہوتا ہے، 0 اور 1 سے شروع کرتے ہوئے۔ فبوناکی سیکوئنس کے پہلے 10 نمبر یہ ہیں: 0، 1، 1، 2، 3، 5، 8، 13، 21، اور 34۔ ## پروگرام کے عناصر پروگرام میں ایک واحد ہدایت کو *اسٹیٹمنٹ* کہا جاتا ہے اور عام طور پر اس میں ایک کردار یا لائن اسپیسنگ ہوتی ہے جو ہدایت کے ختم ہونے یا *ٹرمینیٹ* ہونے کو نشان زد کرتی ہے۔ پروگرام کے ختم ہونے کا طریقہ ہر زبان کے ساتھ مختلف ہوتا ہے۔ پروگرام کے اندر اسٹیٹمنٹس صارف یا کہیں اور سے فراہم کردہ ڈیٹا پر انحصار کر سکتی ہیں تاکہ ہدایات پر عمل کیا جا سکے۔ ڈیٹا پروگرام کے رویے کو تبدیل کر سکتا ہے، اس لیے پروگرامنگ زبانیں ڈیٹا کو عارضی طور پر محفوظ کرنے کا طریقہ فراہم کرتی ہیں تاکہ اسے بعد میں استعمال کیا جا سکے۔ انہیں *ویریبلز* کہا جاتا ہے۔ ویریبلز وہ اسٹیٹمنٹس ہیں جو آلے کو اپنی میموری میں ڈیٹا محفوظ کرنے کی ہدایت دیتی ہیں۔ پروگرام میں ویریبلز الجبرا میں ویریبلز کی طرح ہیں، جہاں ان کا ایک منفرد نام ہوتا ہے اور ان کی قدر وقت کے ساتھ بدل سکتی ہے۔ کچھ اسٹیٹمنٹس کے آلے کے ذریعے عمل نہ ہونے کا امکان ہوتا ہے۔ یہ عام طور پر ڈویلپر کے ذریعہ ڈیزائن کے تحت ہوتا ہے یا حادثاتی طور پر جب کوئی غیر متوقع خرابی پیش آتی ہے۔ ایپلیکیشن پر اس قسم کا کنٹرول اسے زیادہ مضبوط اور قابلِ دیکھ بھال بناتا ہے۔ عام طور پر، یہ کنٹرول میں تبدیلیاں اس وقت ہوتی ہیں جب کچھ شرائط پوری ہوتی ہیں۔ جدید پروگرامنگ میں ایک عام اسٹیٹمنٹ جو پروگرام کے چلنے کے طریقے کو کنٹرول کرتی ہے وہ `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) ### کمانڈ لائن ٹولز کچھ ڈویلپرز اپنے روزمرہ کے کاموں کے لیے کم گرافیکل منظر کو ترجیح دیتے ہیں اور کمانڈ لائن پر انحصار کرتے ہیں۔ کوڈ لکھنے میں کافی مقدار میں ٹائپنگ کی ضرورت ہوتی ہے اور کچھ ڈویلپرز اپنے کی بورڈ پر کام کے دوران خلل ڈالنا پسند نہیں کرتے۔ وہ کی بورڈ شارٹ کٹس استعمال کرتے ہیں تاکہ ڈیسک ٹاپ ونڈوز کے درمیان سوئچ کریں، مختلف فائلوں پر کام کریں، اور ٹولز استعمال کریں۔ زیادہ تر کام ماؤس کے ساتھ مکمل کیے جا سکتے ہیں، لیکن کمانڈ لائن کا ایک فائدہ یہ ہے کہ کمانڈ لائن ٹولز کے ساتھ بہت کچھ کیا جا سکتا ہے بغیر ماؤس اور کی بورڈ کے درمیان سوئچ کیے۔ کمانڈ لائن کا ایک اور فائدہ یہ ہے کہ وہ قابل ترتیب ہیں اور آپ اپنی حسب ضرورت ترتیب محفوظ کر سکتے ہیں، بعد میں اسے تبدیل کر سکتے ہیں، اور اسے دوسرے ڈیولپمنٹ مشینوں پر درآمد کر سکتے ہیں۔ چونکہ ڈیولپمنٹ انوائرمنٹس ہر ڈویلپر کے لیے بہت منفرد ہیں، کچھ کمانڈ لائن کا استعمال مکمل طور پر چھوڑ دیتے ہیں، کچھ اس پر مکمل انحصار کرتے ہیں، اور کچھ دونوں کا امتزاج پسند کرتے ہیں۔ ### مشہور کمانڈ لائن آپشنز کمانڈ لائن کے آپشنز آپ کے استعمال کردہ آپریٹنگ سسٹم کے لحاظ سے مختلف ہوں گے۔ *💻 = آپریٹنگ سسٹم پر پہلے سے انسٹال شدہ۔* #### ونڈوز - [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)، موزیلا کی جانب سے، [Firefox](https://www.mozilla.org/firefox/) براؤزر کے ناشرین - [Frontend Masters](https://frontendmasters.com/learn/) - [Web.dev](https://web.dev)، گوگل کی جانب سے، [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) ✅ تحقیق کریں: اب جب کہ آپ نے ویب ڈویلپر کے انوائرمنٹ کی بنیادی باتیں سیکھ لی ہیں، اسے ویب ڈیزائنر کے انوائرمنٹ کے ساتھ موازنہ کریں اور فرق تلاش کریں۔ --- ## 🚀 چیلنج کچھ پروگرامنگ زبانوں کا موازنہ کریں۔ جاوا اسکرپٹ اور جاوا کی منفرد خصوصیات کیا ہیں؟ COBOL اور Go کا کیا حال ہے؟ ## لیکچر کے بعد کا کوئز [لیکچر کے بعد کا کوئز](https://ff-quizzes.netlify.app/web/quiz/2) ## جائزہ اور خود مطالعہ پروگرامر کے لیے دستیاب مختلف زبانوں پر تھوڑا مطالعہ کریں۔ ایک زبان میں ایک لائن لکھنے کی کوشش کریں، اور پھر اسے دو دیگر زبانوں میں دوبارہ لکھیں۔ آپ نے کیا سیکھا؟ ## اسائنمنٹ [دستاویزات پڑھنا](assignment.md) **ڈسکلیمر**: یہ دستاویز AI ترجمہ سروس [Co-op Translator](https://github.com/Azure/co-op-translator) کا استعمال کرتے ہوئے ترجمہ کی گئی ہے۔ ہم درستگی کے لیے کوشش کرتے ہیں، لیکن براہ کرم آگاہ رہیں کہ خودکار ترجمے میں غلطیاں یا غیر درستیاں ہو سکتی ہیں۔ اصل دستاویز کو اس کی اصل زبان میں مستند ذریعہ سمجھا جانا چاہیے۔ اہم معلومات کے لیے، پیشہ ور انسانی ترجمہ کی سفارش کی جاتی ہے۔ ہم اس ترجمے کے استعمال سے پیدا ہونے والی کسی بھی غلط فہمی یا غلط تشریح کے ذمہ دار نہیں ہیں۔