diff --git a/community_guides/GUIDE_ur.md b/community_guides/GUIDE_ur.md new file mode 100644 index 00000000000..a01b2ac6a06 --- /dev/null +++ b/community_guides/GUIDE_ur.md @@ -0,0 +1,299 @@ +# گٹہب کوڈ والٹ کے لیے راہنمائ + + +## تعارف + +یہ محفوظ شدہ دستاویزات، گٹہب کوڈ والٹ ،گٹہب دستاویزی پروگرام کے ذریعہ قائم کیا گیا تھا،جس کا مشن آئندہ نسلوں کے لیے اوپن سورس سافٹ ویئر کو محفوظ کرنا ہے۔آپ اب سے ایک سال یا ایک ہزار سال بعد پڑھ رہے ہوں گے ، لیکن کسی بھی طرح ، ہم امید کرتے ہیں کہ اس کے مندرجات ، اور شاید اوپن سورس کا تصور ہی آپ کے لیے مفید ہے۔ + +یہ بنیادی طور پر سافٹ وئیر کے دستاویز ہے۔سافٹ وئیر احکامات کا سلسلہ ہے جو کمپیوٹر کے افعال کو کنٹرول کرنے کے لیے استعمال ہوتی ہے۔کمپیوٹر ایک ایسا آلہ ہے جو خود بخود ریاضی کے افعال کو انسانی ذہن سے اتنی تیزی سے انجام دے سکتا ہے کہ اس کے پاس ہم سے کہیں زیادہ اختیارات ہیں۔ہمارے کمپیوٹر کائنات کے رازوں کو دریافت کرنے میں مد د کے لیے استعمال ہوتے ہیں ، تمام انسانیت کو معلومات کے ایک وسیع ویب میں جوڑنے کے لیے ،سگنلز کو اتنی تیزی سے ہیرا پھیری کرنے کے لیے کہ آوازیں منتقل کریں اور تفصیلی حرکت پذیر تصاویر کو برقی اسکرینوں پر پیش کریں ، اور انتہائی طاقتور مشینری کو کنٹرول کریں جو کہ انسانی محنت کی صلاحیت اور صحت سے زیادہ ہے۔ + +سافٹ ویئر کے بغیر کمپیوٹر ان میں سے کوئی بھی کام نہیں کر سکتا۔ کمپیوٹر ایک غیر معمولی اور شاندار چیز ہے ، لیکن سافٹ ویئر کے بغیر اس کی تمام طاقت بیکار ہے۔اس پروگرام کا مقصد یہ ہے کہ ہم سافٹ وئیر کے بارے میں جو کچھ جانتے ہیں وہ آپ تک پہنچائیں۔ + +سافٹ وئیر احکامات کے پیچیدہ لیکن انسانی پڑھنے کے قابل تسلسل کے طور پر لکھا گیا ہے ،مختلف ذائقے جن کو پروگرامنگ لینگویج کہا جاتا ہے ، کیونکہ سافٹ وئیر کی ایک مکمل اکائی کو اکثر پروگرام کہا جاتا ہے۔یہ عمل مرتب کے طور پر جانا جاتا ہے۔ + +چونکہ مرتب شدہ سافٹ وئیر کو اس کے اصل پروگرام فارم میں سمجھنا بہت مشکل ہے ، جسے اس کا سورس کوڈ بھی کہا جاتا ہے +،لوگوں کے لیے یہ ممکن ہے کہ وہ اس اصل فارم کو خفیہ رکھیں اور اس پر ملکیت کا دعوی کریں۔ +اوپن سورس سافٹ وئیر ایک مختلف قسم کا سافٹ وئیر نہیں ہے بلکہ ایک مختلف ضابطه ہے۔ اوپن سورس ضابطه رازداری اور ملکیت کو مسترد کرتی ہے۔ اوپن سورس سافٹ ویئر پروگرام کسی بھی اور سب کے لیے دستیاب ہیں جو اسے استعمال کرنا چاہتے ہیں ، بغیر کسی قیمت کے ، تاکہ وہ ان پروگراموں کو +بہتر بنا سکیں ، یا کچھ نیا اور بہتر بنانے کے لیے ان کا استعمال کر سکیں۔ + +ایک اوپن سورس پروجیکٹ ایک خود منظم تنظیم کا اجتماعی کام ہے جس کی تعداد ہزاروں میں ہوسکتی ہے۔ یہاں محفوظ کردہ تمام اوپن سورس سافٹ ویئر پروجیکٹس کا جمع لاکھوں کی کمیونٹی پر مشتعمل کام ہے۔اگرچہ کچھ افراد کو کسی بھی پروجیکٹ کے اندر خصوصی حقوق حاصل ہوسکتے ہیں ، جیسے کہ اس کے سورس کوڈ کے تازہ ترین اصلی ورژن میں تجویز کردہ تبدیلیوں کو منظور یا مسترد کرنے کی صلاحیت ، کوئی بھی اس کا مالک نہیں ہے۔ ہر شخص کو یہ حق حاصل ہے کہ وہ کسی بھی اوپن سورس پروجیکٹ کی مکمل کاپی کسی بھی وقت ، بغیر کسی قیمت یا جرمانے کے استعمال کرے۔یہ منصوبے کی فورکنگ کے طور پر جانا جاتا ہے۔ + +جب بہت سے لوگ ایک ہی وقت میں سورس کوڈ پر کام کرتے ہیں تو ، ان کی تمام تبدیلیوں کا سراغ لگانا اور ان کو ضم کرنا مشکل ہوتا ہے۔ ایک اوپن سورس پروجیکٹ جسے 'گٹ' کہا جاتا ہے اس مسئلے کو حل کرنے کے لیے وقف ہے۔ یہ ایک پراجیکٹ میں تمام اضافوں اور تبدیلیوں کی مکمل تاریخ کو ایک ایسی وجود میں ضم کرتا ہے جسے گٹ ریپوزٹری کہا جاتا ہے۔یہ دستاویز بنیادی طور پر اس طرح کے دستاویزات کا ایک دستاویز ہے۔ + +یہ مواد گٹ ہپ نامی کمپنی نے بنایا ہے ، جو ایک ایسی سروس مہیا کرتی ہے جو دنیا بھر کے لوگوں کو اپنے لکھے ہوئے سافٹ وئیر پروگراموں کو محفوظ کرنے ، ان پروگراموں میں تبدیلیوں پر نظر رکھنے اور ان کو بہتر بنانے اور بڑھانے کے لیے دوسروں کے ساتھ تعاون کرنے دیتی ہے۔ گٹ ہب پبلک اوپن سورس سافٹ ویئر کے ڈویلپرز کو اپنی خدمات مفت میں فراہم کرتا ہے۔ اس کے لاکھوں ایسے صارفین ہیں۔ + +اس کے بعد جو کچھ ہم سمجھتے ہیں اس کی تفصیل یہ ہے کہ اس سافٹ وئیر دستاویزات کا بہترین استعمال کرنے کے لیے آپ کو جاننے کی ضرورت ہوگی۔ اگر آپ اس میں سے کچھ بھی نہیں جانتے یا سمجھتے ہیں تو مایوس نہ ہوں! ہم نے ان ضروریات کو پورا کرنے کے لیے ایک گائیڈ بھی شامل کیا ہے۔ اگر کسی وجہ سے آپ خود ان کو پورا نہیں کر سکتے تو آپ کی اولاد کر سکتی ہے۔ + +## آپ کو دستاویزات استعمال کرنے کے لیے کیا چاہیے۔ + +اصولی طور پر ، آپ کو اس دستاویزات کے ذرائع تک رسائی حاصل کرنے کی ضرورت ہے ، یہ روشنی کا ذریعہ ہے اور کسی قسم کی میگنیفائر ہے۔تاہم ، اس کے زیادہ تر (اگرچہ تمام نہیں) معلومات کو انکوڈ اور کمپریسڈ شکل میں فلمی ریلوں پر بہت مضبوطی سے پیک کیا گیا ہے۔ اس معلومات کو پڑھنے ، ڈیکوڈنگ کرنے اور غیر کمپریس کرنے کے لیے خود کافی حساب کی ضرورت ہوگی۔نظریہ میں یہ کمپیوٹر کے بغیر کیا جا سکتا ہے ، لیکن یہ بہت تکلیف دہ اور مشکل ہوگا۔ + +ہماری توقع یہ ہے کہ آپ کو سافٹ وئیر ، کمپیوٹر اور دیگر شرائط کی ہماری تعریفوں کی ضرورت نہیں ہے۔ ہم تصور کرتے ہیں کہ آپ کے اپنے کمپیوٹر ہیں ، جو کہ شاید ہمارے مقابلے میں بہت زیادہ جدید ہیں ، اور ممکنہ طور پر بنیادی طور پر مختلف آرکیٹیکٹڈ ہیں۔ ایک بار جب آپ جائزہ اور گائیڈ کو سمجھ لیں تو آپ آسانی سے تمام معلومات تک رسائی حاصل کر سکیں گے۔ + +تاہم ، یہ ممکن ہے کہ آپ کے پاس ہمارے سے کمتر کمپیوٹر ہوں ، یا یہاں تک کہ کوئی کمپیوٹر بھی نہ ہو۔ اس واقعے کی صورت میں ، ہم نے ڈیٹا کا ایک غیر کمپریسڈ ، انکوڈ شدہ ، انسانی پڑھنے کے قابل ریل تیار کیا ہے جسے ہم ٹیک ٹری کہتے ہیں۔ ٹیک ٹری ہماری بنیادی ٹیکنالوجیز ، ہمارے کمپیوٹرز اور ہمارے سافٹ وئیر کے بارے میں معلومات پر مشتمل ہے ، امید ہے کہ ، وقت کے ساتھ ، آپ اس علم کو کمپیوٹر کو دوبارہ بنانے کے لیے استعمال کر سکیں گے جو اس محفوظ شدہ دستاویز میں اوپن سورس سافٹ ویئر کا استعمال کر سکتے ہیں۔ + +## اس کے اندر کیا ہے۔ + +ذخیرہ اتنا بڑا ہے ء تقریبا ۲۱ ٹریلین بائٹس (ذیل میں بیان کیا گیا ہے) ء کیونکہ یہ انتہائی جامع اور جمہوری ہے۔ لاکھوں لوگ اپنے لکھے ہوئے سافٹ وئیر کو ہر ایک کے لیے دستیاب کراتے ہیں۔ اس دستاویزات میں ایک سنیپ شاٹ شامل ہے ء یعنی ایک ہی کاپی ، وقت کے ایک لمحے میں ء ان تمام عوامی سافٹ وئیرز کی جو گٹہب کے صارفین فعال طور پر تیار کر رہے ہیں۔ اس کا مطلب ہے کہ اس میں لاکھوں علیحدہ ریپوزیٹریز شامل ہیں۔ ہماری امید ہے کہ یہ وسیع ، جمہوری نقطہ نظر مستقبل کے تاریخ دانوں کے لیے دلچسپی کا باعث ہوگا۔ + +اس ریپوزیٹری میں شامل ریپوزیٹریز کا تعین خالصتا ان کے آخری کمٹ ٹائم سے کیا گیا ، یعنی آخری بار جب انہیں اپ ڈیٹ کیا گیا ، اور ان کے ستاروں کی گنتی۔ (گٹ ہب کے صارفین عوامی ریپوزیٹریزکو 'اسٹاز کرنے کے قابل ہیں ، اس بات کی نشاندہی کرنے کے لیے کہ وہ ان کے لیے دلچسپی یا اہمیت کے حامل ہیں۔) سنیپ شاٹ ۰۲​۰۲​۲۰۲۰ کو شروع کیا گیا ، یعنی فروری کے دوسرے دن ، گریگورین کیلنڈر کا سال ۲۰۲۰ ، جیسا کہ ہم وقت گنتے ہیں۔ اس میں شامل ریپوزیٹریز یہ ہیں: تمام ریپوزیٹریز جن میں پچھلے ۸۰ دنوں کے اندر کسی بھی قسم کا ارتکاب ہے۔ کم از کم ایک اسٹار کے ساتھ تمام ریپوزیٹریز گزشتہ ۳۶۵ دنوں میں اور کم از کم ۲۵۰ ستاروں کے ساتھ تمام ریپوزیٹریز، قطع نظر اس کے کہ وہ آخری بار کب اپ ڈیٹ ہوئے تھے۔ + +یقینا ، یہ تمام ریپوزیٹریز ان کے اثر و رسوخ اور انحصار کے لحاظ سے یکساں اہم نہیں ہیں۔ ٹیک ٹری میں دستاویز میں سب سے اہم ریپوزیٹریز کی انڈیکس اور مختصر تفصیل شامل ہے ، اور فہرستیں جو کہ ہر ایک کو ریل پر مل سکتی ہیں ، تاکہ ان لاکھوں ریپوزیٹریز میں گھومے بغیر ان تک رسائی حاصل کی جا سکے تاکہ یہ معلوم کیا جا سکے کہ سب سے زیادہ عملی طور پر مفید ریپوزیٹری کون سی ھےـ + +## دستاویزات کا ایک جائزہ + +یہ ریپوزیٹری فلم کی ۱۸۸ ریلوں پر مشتمل ہے: انسانی پڑھنے کے قابل معلومات اور رہنمائی کا ایک "گائیڈ ریل" ، جسے ہم ٹیک ٹری کہتے ہیں ، اور دستاویزاتڈ سافٹ ویئر کی ۱۸۷ ریلیں۔ ہر ریل میں ۶۵،۰۰۰ انفرادی فریم شامل ہیں۔ ہر ریل کے آغاز میں فریم ، اور گائیڈ ریل کے فریموں میں انسانی پڑھنے کے قابل متن اور تصاویر شامل ہیں۔ فلم کے دیگر تمام فریم ڈیجیٹل ڈیٹا پر مشتمل ہوتے ہیں جو کہ بصری شکل میں محفوظ ہوتے ہیں جنہیں کو-آر کوڈ کہا جاتا ہے۔ + +ڈیجیٹل ڈیٹا کا مطلب ہے کہ ڈیٹا کو بالآخر بائنری فارمیٹ میں ذخیرہ کیا جاتا ہے ، یعنی 0s اور 1s کے طور پر ، کیونکہ کمپیوٹر خود بائنری ہوتے ہیں - الیکٹریکل سگنلز سے کنٹرول ہوتے ہیں جو یا تو "آن" یا "آف" ہوتے ہیں ، جو 1 یا 0 کے مطابق ہوتے ہیں - اور اس طرح بائنری ڈیٹا ہے کمپیوٹر کو کسی دوسرے کے مقابلے میں سمجھنا بہت آسان ہے۔ + +ہر ایک ریل کے آغاز میں ذخیرہ شدہ انسانی پڑھنے کے قابل میٹا ڈیٹا میں فلم کے بارے میں معلومات ، استعمال شدہ کو-آر انکوڈنگ کے لیے ایک گائیڈ ، اسے ڈی کوڈ کرنے کے لیے ایک سافٹ ویئر پروگرام اور ایک انڈیکس شامل ہے۔ انڈیکس اس ریل میں محفوظ ہر فائل کے لیے عنوان ، شروعاتی فریم نمبر اور چیکسم کی فہرست دیتا ہے۔ + +فائل ایک واحد مربوط ڈیٹا ہستی ہے۔ چیکسم ایک حساب سے ایک منفرد قدر ہے ، جسے ہیش فنکشن کہا جاتا ہے ، فائل کے پورے مندرجات پر چلتا ہے ، تاکہ یہ یقینی بنایا جا سکے کہ اس کے مندرجات کو نقصان نہیں پہنچا یا خراب نہیں کیا گیا ہے۔ دستاویزات میں استعمال ہونے والا ہیش فنکشن 'ایس ایچ اے-١' کے نام سے جانا جاتا ہے۔ + +ہر کیو آر کوڈ چھوٹے سفید یا سیاہ چوکوں کے فیلڈ پر مشتمل ہوتا ہے جو فلم کے تقریبا پورے فریم پر قابض ہوتا ہے۔ ہم کیو آر کوڈز استعمال کرتے ہیں کیونکہ وہ انسانی پڑھنے کے قابل متن سے کہیں زیادہ کمپیکٹ اور مضبوط ہوتے ہیں۔ ایک کیو آرکوڈ کو بائنری ڈیٹا میں ڈیکوڈ کیا جاتا ہے ، یعنی لوگوں اور صفروں کی ایک سیریز۔ + +یہ ڈی کوڈنگ اس بائنری ڈیٹا کو معنی خیز معلومات میں تبدیل کرنے کا صرف پہلا قدم ہے۔ یہ کمپریسڈ ڈیٹا ہے ،کیا گیا ہے اس کا مطلب یہ ہے کہ اسے جگہ بچانے کے لیے کمپیکٹ ، جیسا کہ کوئی شخص 128 بار حرف A لکھنے کے بجائے "128xA" لکھ سکتا ہے۔ ڈیکوڈ ہونے کے بعد ، +اسے ڈمپریشن ہونا ضروری ہے۔ + +یہ ڈی کوڈنگ اس بائنری ڈیٹا کو معنی خیز معلومات میں تبدیل کرنے کا صرف پہلا قدم ہے۔ یہ کمپریسڈ ڈیٹا ہے ، اس کا مطلب یہ ہے کہ اسے جگہ بچانے کے لیے کمپیکٹ کیا گیا ہے ، جیسا کہ کوئی شخص ۱۲۸ بار حرف ' آ ' لکھنے کے بجائے "۱۲۸ زا آ" لکھ سکتا ہے۔ ڈیکوڈ ہونے کے بعد ، اسے ڈمپریشن ہونا ضروری ہے۔ + +ڈمپریشن کے بعد نتیجہ ایک دستاویزی فائل کے طور پر جانا جاتا ہے: ایک واحد فائل جس میں کسی ایک سافٹ ویئر پروجیکٹ کے ریپوزیٹریز کے پورے مندرجات ہوتے ہیں۔ زیادہ تر ر یپوزیٹریز میں بہت سی فائلیں شامل ہوتی ہیں ، لہذا یہ دستاویزات فائل ایک کتاب کی طرح ہے جس میں بہت سے الگ ابواب ہیں ، یا ایک باکس جس میں بہت سے دوسرے باکس ہیں۔ یہ عام طور پر فائدہ مند ہے ، حالانکہ بالکل ضروری نہیں ، دستاویزی فائل کو ان کے جزو فائلوں تک رسائی سے پہلے ان پیک کرنا۔ + +آخر میں ، ہر جزو فائل کا بائنری ڈیٹا کا اپنا سیٹ ہے ، یعنی ، ایک اور صفر۔ اگر آپ اس کے فارمیٹ کو جانتے ہیں تو کوئی ڈیٹا کو سمجھ سکتا ہے۔ مثال کے طور پر ، فارمیٹ میں جسے 'یو ٹی ایف ـ۸' کہا جاتا ہے ، دستاویزات میں سب سے عام فارمیٹ ہے ، ایک اور زیرو کو آٹھ کے گروپوں میں تقسیم کیا جاتا ہے ، جسے بائٹس کہا جاتا ہے ، بائٹ ۰۱۰۰۰۰۰۱ حرف اےکی نمائندگی کرتا ہے۔ تین بائٹس ۰۱۱۰۱۰۰۱ ۰۱۱۰۱۱۱۰ ۰۱۱۱۰۱۰۰ لفظ انت کی نمائندگی کرتے ہیں۔ اور دو بائٹس ۱۱۰۰۰۰۱۱ ۱۰۰۰۰۰۱۱ حرف اے( پرےسےنت کی نمائندگی کرتے ہیں)۔ + +یہ ڈیٹا دستاویزی عمل ، دستاویزی فائلوں میں بھری بائنری فائلیں جو پہلے کمپریسڈ اور پھر کیو آر انکوڈ کی گئی ہیں ، واضح طور پر انسانی پڑھنے کے قابل متن لکھنے کے مقابلے میں واضح طور پر پیچیدہ ہے۔ غیر کمپریسڈ کرنے کے عمل سے آپ کو گزرنا پڑے گا- **کیو آر ٹو کمپریسڈ بائنری؛** کمپریسڈ سے غیر کمپریسڈ فائل کو متعڈ فائلوں میں محفوظ کریں ٹیکسٹ فائلوں کو انسانی پڑھنے کے قابل ٹیکسٹءاسی طرح پیچیدہ ہے۔ اس کی وجہ یہ ہے کہ یہ پیچیدگی ہمیں نسبتا ےاسیلی آسانی سے کمپیوٹر پڑھنے کے قابل طریقے سے کہیں زیادہ ڈیٹا ذخیرہ کرنے کی اجازت دیتی ہے۔ + +اگر یہ پیچیدگی آپ کے لیے مشکل اور مہنگی ہے تو ہم معذرت خواہ ہیں ، لیکن ہماری توقع یہ ہے کہ ، اگر ایسا ہے تو ، یہ گائیڈ اور انسانوں کے پڑھنے کے قابل ٹیک ٹری اس پیچیدگی کو دور کرے گا ، اور شاید دستاویزات سے زیادہ یہ مواد آپ کے لیے مفید ہو سکتا ہے۔ کم از کم جب تک آپ کے کمپیوٹر کافی ترقی یافتہ نہ ہوں کہ دستاویزات کے ڈیٹا کی پیچیدگی سے نمٹنا آسان ہو۔ + + +## فائلیں ، ڈائریکٹریز ، ریپوزیٹریز ، اور ڈیٹا فارمیٹس۔ + + +دستاویزات کو منطقی طور پر کس طرح تقسیم کیا گیا ہے اس پر بحث کرنا سبق آموز ہو سکتا ہے۔ خاص طور پر ، فائلوں ، ڈائرکٹریوں اور ڈیٹا فارمیٹس کی بحث مفید ثابت ہوگی۔ + +ایک فائل ڈیٹا کا مجموعہ ہے جو ایک ہی نام کے ساتھ مربوط ہستی میں جمع ہوتا ہے: ڈیٹا کو ریت کے طور پر سوچیں ، اور فائل کو ایک قسم کا بیگ سمجھیں جس میں ریت اور صرف ریت ہو۔ ڈائرکٹری فائلوں کا مجموعہ ہے: اسے ایک قسم کا بیگ سمجھیں جو صرف دوسرے تھیلے رکھ سکتا ہے۔ اس استعارے کے بعد ، ہر ریپوزیٹری ایک بیرونی ڈائریکٹری پر مشتمل ہوتا ہے ، جسے روٹ ڈائریکٹری کہا جاتا ہے ، جس میں متعدد فائلیں اور/یا متعدد ڈائریکٹریز ہوتی ہیں۔ ہر ڈائرکٹری ، بدلے میں ، دونوں فائلوں اور ڈائریکٹریوں پر مشتمل ہوسکتی ہے۔ + +اس ڈھانچے کو ترجیح دی جاتی ہے کیونکہ فائلوں کے ایک مجموعہ کے مقابلے میں گروپوں میں منظم فائلوں کے ساتھ کام کرنا بہت آسان ہے۔ بیرونی ڈائرکٹری کے اندر کسی خاص فائل کا شناخت کنندہ اس کی تمام منسلک ڈائریکٹریوں کے ناموں پر مشتمل ہوتا ہے ، جڑ سے شروع ہوتا ہے ، اس کے بعد اس کا اپنا انفرادی نام ہوتا ہے ، ہر نام کے درمیان / حرف کے ساتھ۔ مثال کے طور پر ، جڑ ڈائریکٹری میں README.md نامی فائل کو /README.md کے طور پر شناخت کیا جائے گا اور /public/www/index.html کے طور پر شناخت کی گئی فائل 'انڈیکس' کے اندر 'www' ڈائرکٹری میں فائل index.html ہوگی۔ جڑ ڈائریکٹری کے اندر عوامی ڈائریکٹری۔ + +ہر ریپوزیٹریز کے نتیجے میں دو نام ہوتے ہیں ، جو ایک تقسیم کار سے الگ ہوتے ہیں ، جو دستاویزات میں ایک _ یا انڈر سکور کردار ہوتا ہے۔ (تاریخی طور پر یہ ایک / یا سلیش رہا ہے ، لیکن یہ ڈائریکٹری کی نشاندہی کے لیے بھی استعمال ہوتا ہے ، لہذا ہم وضاحت کے لیے _ استعمال کرتے ہیں۔) پہلا نام گٹ ہب اکاؤنٹ ہے جو اس ریپوزیٹری کا مالک ہے۔ دوسرا انفرادی ریپوزیٹری کا نام ہے۔ ریپوزیٹری اور فائل کی شناخت کرنے والوں کا مجموعہ دستاویزات میں انفرادی فائل کی منفرد شناخت کے لیے استعمال کیا جا سکتا ہے۔ مثال کے طور پر ، گیٹ ہب اکاؤنٹ 'ریزینڈی' کے اندر ریپوزیٹری 'یکرما' میں ڈائریکٹری 'ویب' میں فائل 'package.json' کو دستاویزات میں rezendi_ykarma میں /web/package.json کے طور پر منفرد طور پر شناخت کیا جا سکتا ہے۔ + + +مختلف قسم کی فائلوں کے مختلف مقاصد ہوتے ہیں۔ گٹ ہب دستاویزات بڑی حد تک ٹیکسٹ فائلوں پر مشتمل ہے ، یعنی وہ فائلیں جن کا ڈیٹا تحریری زبان کی نمائندگی کے لیے ہے۔ زیادہ تر سافٹ ویئر ٹیکسٹ فائلوں میں لکھا جاتا ہے جس میں انتہائی ساختی متن ہوتا ہے جسے سورس کوڈ کہا جاتا ہے۔ ایک خاص پروگرام جو ایک مرتب کے نام سے جانا جاتا ہے وہ انسانی پڑھنے کے قابل سورس کوڈ کو کمپیوٹر پڑھنے کے قابل ہدایات میں تبدیل کرتا ہے جسے مرتب شدہ کوڈ یا مشین کوڈ کہا جاتا ہے۔ + +وہ فائلیں جو ٹیکسٹ فائل نہیں ہیں ، جیسے فائلیں جو بصری تصاویر کی نمائندگی کرتی ہیں یا مرتب شدہ کوڈ پر مشتمل ہوتی ہیں ، کو اکثر بائنری فائلیں کہا جاتا ہے۔ یہ بدقسمتی سے ایک گمراہ کن اصطلاح ہے ، کیونکہ ٹیکسٹ فائلیں بالآخر 1s اور 0s بھی ہوتی ہیں۔ ہم ان فائلوں کا حوالہ دیں گے جو ٹیکسٹ فائلیں نہیں ہیں نان ٹیکسٹ فائلیں۔ + +1s اور 0s کا استعمال کرتے ہوئے تحریری انسانی زبان کی نمائندگی کرنے کے کئی طریقے ہیں۔ تاریخی وجوہات کی بنا پر ، زیادہ تر سورس کوڈ اصل میں لکھا گیا تھا جسے لاطینی رسم الخط کہا جاتا ہے۔ لاطینی رسم الخط میں 26 بنیادی حروف ہیں جو بولنے والے الفاظ کی نمائندگی کے لیے استعمال ہوتے ہیں ، جن میں سے ہر ایک کی دو شکلیں ہیں ، بڑا کیس اور لوئر کیس۔ نمبروں کی نمائندگی کے لیے اس میں 10 ہندسے بھی ہیں۔ لاطینی رسم الخط ، مختلف دیگر متعلقہ علامتوں کے ساتھ جو ساخت اور دیگر تصورات کو ظاہر کرنے کے لیے استعمال کیا جاتا ہے ، 1s اور 0s میں انکوڈ کیا جاتا ہے جسے 'ASCII' کے نام سے جانا جاتا ہے ، جو 128 مختلف حروف کی نمائندگی کر سکتا ہے اور تاریخی وجوہات کی بنا پر کئی سالوں تک سافٹ ویئر پر غالب رہا . + +تاہم ، لاطینی رسم الخط بہت سے طریقوں کا ایک چھوٹا ذیلی سیٹ ہے جس میں انسان اپنے آپ کو تحریری زبان میں ظاہر کرتے ہیں۔ دیگر سکرپٹ کو سپورٹ کرنے کے لیے ، جبکہ وہ تمام سافٹ وئیر جو ASCII استعمال کرنے کے لیے لکھے گئے تھے ، بغیر کسی تبدیلی کے کام جاری رکھنے کی اجازت دے رہے ہیں (ایک ایسا تصور جسے بیک ورڈ کمپیٹیبلٹی کہا جاتا ہے) ، ایک اور ڈیٹا فارمیٹ جسے 'UTF-8' کہا جاتا ہے متعارف کرایا گیا۔ + +ASCII سورس کوڈ کا سب سے عام فارمیٹ ہے۔ اس دستاویزات کی ہر ریل میں ASCII حروف کے لیے ایک گائیڈ شامل ہے۔ ASCII UTF-8 کا سب سیٹ ہے ، جس کا کہنا ہے کہ ، تمام ASCII انکوڈنگز UTF-8 انکوڈنگ بھی ہیں۔ گائیڈ ریل میں اضافی طور پر تمام UTF-8 حروف کی تصریح شامل ہے۔ اس دستاویزات میں تقریبا تمام ٹیکسٹ فائلوں کو UTF-8 کے طور پر انکوڈ کیا جانا چاہیے۔ + +غیر ٹیکسٹ فائلوں میں وہ فائلیں شامل ہوتی ہیں جو تصاویر اور فارمیٹ شدہ دستاویزات کی نمائندگی کرتی ہیں۔ ایک وسیع پیمانے پر استعمال شدہ کنونشن فائل کے ناموں کو 'a' کے ساتھ ختم کرنے کے لیے ہے۔ کردار کے بعد ایک لاحقہ جو فائل کی قسم کی نشاندہی کرتا ہے۔ مثال کے طور پر ، ایک فائل کا نام جو .jpg کے ساتھ ختم ہوتا ہے ممکنہ طور پر ایک JPEG امیج فائل ہے۔ ایک جو کہ ختم ہوتا ہے .PNG ممکنہ طور پر ایک پورٹیبل نیٹ ورک گرافک امیج فائل ہے۔ اور ایک جو .pdf ایک پورٹیبل ڈاکیومنٹ فارمیٹ فائل کے ساتھ ختم ہوتا ہے۔ + +کوئی ایک لاحقہ نہیں ہے جو ٹیکسٹ فائلوں کی نشاندہی کرتا ہے۔ بلکہ ، سورس کوڈ کے لیے ، لاحقہ اس بات کی نشاندہی کرنے کا زیادہ امکان رکھتا ہے کہ کوڈ کس پروگرامنگ یا مارک اپ زبان میں لکھا گیا ہے۔ پروگرامنگ اور مارک اپ زبانوں کو ذیل میں مزید تفصیل سے بیان کیا جائے گا۔ + +## دستاویزی مواد کو کیسے نکالیں۔ + +یہاں ہم ایک خاص ریپوزیٹری شدہ ریپوزیٹری کو اس کی مختلف اجزاء فائلوں میں کیسے کھولیں گے اس کا ایک جائزہ فراہم کریں گے۔ ایک بار پھر ، یہ عمل پر مشتمل ہے: + +**1.** مخصوص ریل اور فریموں کی شناخت جس پر مخزن کا ڈیٹا محفوظ کیا جاتا ہے۔ + +**2.** QR کوڈز سے ڈی کوڈنگ ، ان فریموں پر سیاہ ، سفید اور سرمئی پکسلز کے فیلڈز ، بائنری فائل میں ، کم از کم ہزاروں ، اور اکثر لاکھوں) 1s اور 0s کی ترتیب۔ + +**3.** بائنری فائل کو ایک طویل ، غیر کمپریسڈ دستاویزی فائل میں ان زپ کرنا۔ + +دستاویزی فائل کو علیحدہ سب فائلوں میں کھولنا تاہم نوٹ کریں کہ دستاویزی ڈیٹا عام طور پر قابل فہم ہے ، حالانکہ گندا ہے ، چاہے اس مرحلے کو چھوڑ دیا جائے۔ + +**5.** آخر میں ، ان سب فائلوں میں سے ہر ایک کو تبدیل کرنا - خود 11s ا1s اور 0s کی ترتیب جو کہ بہت مختصر سے بہت لمبے ہو سکتے ہیں - تحریری حروف میں ، اگر وہ ٹیکسٹ فائلیں ہیں۔ + +### مخصوص ریل اور فریموں کی نشاندہی کرنا جن پر مخزن کا ڈیٹا محفوظ کیا جاتا ہے۔ + + +فلم کی ہر ریل کا آغاز خالی فلم کے لیڈر سے ہوتا ہے ، اور پھر زیرو ریفرنس فریم ، جو کہ کسی اور خالی فریم کے ایک کونے میں ٹھوس سیاہ آئتاکار پر مشتمل ہوتا ہے۔ اگلا انسانی پڑھنے کے قابل فریم کنٹرول فریم ہے ، جس میں ریل کے بارے میں معلومات ہیں۔ اس کے بعد مشمولات کا جدول ہے ، جس کے نتیجے میں صارف ڈیٹا فائلوں کی فہرست شامل ہے۔ + +اس ریل پر ہر ریپوزیٹری ان یوزر ڈیٹا فائلوں میں سے ایک ہے۔ فہرست میں ایک منفرد ID ، ایک فائل ID اور ان فائلوں میں سے ہر ایک کا نام شامل ہے۔ مثال کے طور پر ، ازگر اکاؤنٹ کے CPython مخزن میں فائل ID 12345 کے طور پر درج ہو سکتی ہے ، اور نام python_cpython.tar کے طور پر درج ہو سکتا ہے۔ + +یوزر ڈیٹا فائلز کی فہرست کے بعد ڈیجیٹل ڈیٹا لوکیشنز کی فہرست ہے۔ اس فہرست میں فائل ID ، اسٹارٹ فریم ، اسٹارٹ بائٹ ، اینڈ فریم اور اینڈ بائٹ شامل ہیں۔ لہذا ، فرضی CPython مثال کا استعمال کرتے ہوئے ، ID 12345 والی اس فہرست میں موجود آئٹم میں 054321 کا اسٹارٹ فریم ، 03210321 کا اسٹارٹ بائٹ ، 054545 کا اینڈ فریم اور 12321232 کا اینڈ بائٹ ہوسکتا ہے۔ + +اس کا مطلب ہے ، CPython ڈیٹا حاصل کرنے کے لیے: فلم کے اس ریل کے فریم 54321 پر جائیں۔ تمام فریموں کو اسٹارٹ فریم ، 54321 ، اختتامی فریم ، 54545 تک ، بائنری اقدار میں ، ذیل میں بیان کردہ طریقوں سے ڈیکوڈ کریں۔ یہ آپ کو 54321 سے 54545 تک کے اعداد و شمار کے 225 ٹکڑے دے گا ، جس کا آغاز خالی ٹکڑوں کے سیٹ سے ہوگا جس میں کوئی ڈیٹا نہیں ہوگا۔ ڈیٹا کے پہلے غیر خالی ٹکڑے میں پہلے 3210320 بائٹس کو ضائع کریں۔ اعداد و شمار کے تمام "درمیانی" ٹکڑوں کو ترتیب میں شامل کریں۔ آخر میں ، اعداد و شمار کے آخری ٹکڑے سے پہلے 12321232 بائٹس شامل کریں ، 54545۔ اب آپ نے ایک واحد کمپریسڈ دستاویزی فائل کے طور پر مکمل CPython مخزن کو جمع کر لیا ہے۔ + +### کیو آر کوڈز سے بائنری فائل میں ڈیکوڈنگ۔ + +فلمی فریموں کو بائنری ڈیٹا میں ڈیکوڈ کرنے کی تفصیلات انسانی پڑھنے کے قابل نمائندگی کی معلومات میں پائی جاتی ہیں جو دستاویزات پر فلم کی ہر ریل کے شروع میں مندرجات کے جدول کے بعد پائی جاتی ہیں۔ یہ معلومات ہر ریل پر پائی جاتی ہے تاکہ اگر ایک فرد ریل کو دستاویزات سے الگ کر دے تب بھی اس کے مندرجات کو سمجھنا ممکن ہو گا۔ نمائندگی کی معلومات میں شامل ہیں ، ترتیب میں: + +1. گٹ ہب دستاویزی پروگرام کے لیے ایک گائیڈ (یہ دستاویز) + +2. گٹ ہب وضاحتی انڈیکس ، اس ریل پر موجود تمام ریپوزیٹریز کی فہرست اور مختصر تفصیل۔ + +3. نمائندگی کی معلومات کی تفصیل۔ + +4. ڈیجیٹل تحفظ اور ڈیٹا کو کیسے حاصل کیا جائے ، ڈیٹا کی بازیافت کی تفصیلات کا ایک جائزہ۔ + +5. اسٹوریج درمیانی تفصیل۔ + +6. ڈیٹا بازیافت ٹیکنالوجی۔ + +7. عام تحفظ ریل ساخت (ریل فارمیٹ) + +8. عام 4K فریم فارمیٹ کی تفصیل۔ + +9. ان باکسنگ لائبریری کی تفصیل (کیو آر کوڈز کے لیے) + +10. ان باکسنگ لائبریری سورس کوڈ۔ + +11. ASCII ڈیٹا فارمیٹ کی تفصیلات۔ + +12. سی پروگرامنگ زبان کی تفصیلات + +13. TAR دستاویزی فائل سورس کوڈ۔ + +14. پی ڈی ایف سورس کوڈ + +15. XZ فائل فارمیٹ کی تفصیلات (کمپریشن / ڈمپریشن کے لیے ، ذیل میں بیان کیا گیا ہے) + +ان آئٹمز میں سے چھٹا ، ڈیٹا ریٹریول ٹیکنالوجی دستاویز ، ایک سکینر کے استعمال کی ضروریات اور عمل کو بیان کرتی ہے تاکہ فلم کے ایک ڈیجیٹل انکوڈڈ فریم پر ڈیٹا حاصل کیا جاسکے اور اسے کمپیوٹر تجزیہ کے قابل شکل میں تبدیل کیا جاسکے۔ ان میں سے آٹھویں ، عام 4K فریم فارمیٹ کی تفصیل ، تکنیکی معلومات فراہم کرتی ہے ، بشمول سورس کوڈ ، کمپیوٹر کے لیے اس طرح کی سکین شدہ تصویر لینے اور اسے بائنری ڈیٹا میں تبدیل کرنے کے لیے درکار ہے۔ + +نظریاتی طور پر یہ ممکن ہے کہ کمپیوٹر کا استعمال کیے بغیر کسی ریپوزیٹریز کو کیو آر انکوڈڈ ڈیٹا سے بائنری ڈیٹا میں تبدیل کیا جائے۔ تاہم ، یہ بہت مشکل ہوگا اور شاید مہینوں یا سالوں کی نہیں بلکہ کئی ہفتوں کے دوران ایک اچھی طرح سے منظم کمیونٹی کی بڑی کوشش کی ضرورت ہوگی۔ چونکہ ریپوزیٹریز کے مندرجات سافٹ وئیر ہیں جن کا مقصد کمپیوٹر پر چلنا ہے ، لہذا کمپیوٹر کی عدم موجودگی میں ان کا استعمال کم سے کم ہوگا۔ + +اس دستاویزات کے وارثوں کے پاس کمپیوٹر نہ ہونے کی صورت میں انہیں دستاویزات کو مکمل اور محفوظ رکھنا چاہیے جب تک کہ وہ ایسا نہ کریں۔ انسانی پڑھنے کے قابل ٹیک ٹری کا ایک مقصد یہ ہے کہ اس واقعے کی صورت میں ٹیکنالوجی اور کمپیوٹر کی ترقی کو تیز کیا جائے۔ (اس کا دوسرا مقصد ہماری ٹیکنالوجی اور مستقبل کے مورخین کے لیے اس کی ترقی کو کوڈفائی کرنا ہے۔) + + +### دستاویزی فائل کو علیحدہ ذیلی فائلوں میں کھولنا۔ + +ہر ریپوزیٹریز کے لیے ثنائی فائل ٹیپ دستاویزات کے لیے TAR کے نام سے جانی جانے والی شکل میں ہے۔ ایک TAR فائل بنیادی طور پر کئی فائلوں کو اکٹھا کرکے ایک کے آخر کو اگلے کے آغاز سے جوڑ کر بنائی جاتی ہے ، جیسے کاغذ کے انفرادی ٹکڑوں کو ایک ہی سکرول میں ٹیپ کرنا۔ TAR فائل میں کسی بھی سائز کی فائلوں کی تعداد ، ڈائریکٹریوں اور سب ڈائرکٹریوں کی تعداد میں تقسیم ہو سکتی ہے۔ + +ٹی اے آر فائل میں موجود ہر ذیلی فائل کو 512 بائٹ ہیڈر ریکارڈ کے ذریعے پیش کیا جاتا ہے ، جو اسکرول استعارے میں ٹیپ کی طرح کام کرتا ہے۔ یہ ہیڈر ریکارڈ فائل کے بارے میں معلومات رکھتا ہے ، جیسے اس کا نام اور سائز۔ محفوظ شدہ دستاویزات کا اختتام کم از کم دو مسلسل 512 بائٹ بلاکس سے ہوتا ہے۔ + +چونکہ ٹی اے آر فائلیں بنیادی طور پر صرف فائلوں کا مجموعہ ہیں جن کے درمیان ٹیکسٹ ریکارڈ ہوتا ہے ، اگر ٹی اے آر فائل میں تمام ٹیکسٹ فائلیں ہوتی ہیں تو اسے بذات خود ٹیکسٹ فائل سمجھا جاسکتا ہے۔ اگر اس میں کوئی مرکب ہو تو اسے ٹیکسٹ فائل کے طور پر سمجھا جا سکتا ہے جس میں ساختی ، معنی خیز متن (جزوی ٹیکسٹ فائلیں) اور ناقابل فہم گبریش (جزو غیر متن فائلیں) شامل ہیں۔ + +TAR فائلوں کے اندر TAR فائلوں کا گھونسلہ بنانا ممکن ہے ، ایک کنٹینر دوسرے کے اندر ، اور اس طرح ہمارے زیادہ تر محفوظ شدہ ڈیٹا کو محفوظ کیا جاتا ہے۔ زیر خاضر ریپوزیٹری ،TAR بیرونی فائل پر مشتمل ہوگی: + +* ایک واحد کمپریسڈ میٹا ڈیٹا فائل جسے META کہا جاتا ہے ، جس میں مخزن کا نام ، اکاؤنٹ کا نام ، تفصیل ، زبان ، ستارے کی گنتی ، اور کانٹے کی گنتی شامل ہے +* ایک کمپریسڈ (نیچے ملاحظہ کریں) فائل جس کا نام COMMITS ہے ، جس میں وقت کے ساتھ ریپوزیٹریز میں کی گئی تبدیلیوں کا لاگ شامل ہے +* ایک فائل جس کا نام repo.tar.xz ہے ، ایک کمپریسڈ TAR فائل جس میں اصل ریپوزیٹریز کے مندرجات ہیں۔ + +دیگر میٹا ڈیٹا ، جیسے وکی ، جی ایچ پیجز ، ایشوز ، اور پل کی درخواستیں ، کو الگ کمپریسڈ فائلوں کے طور پر بھی شامل کیا جا سکتا ہے۔ + +TAR فائلوں کی مخصوص تفصیلات ، اور انکوڈ اور ڈی کوڈ کرنے کا سافٹ وئیر ، دستاویزات کے ہر ریل میں نمائندگی کی معلومات میں پایا جا سکتا ہے۔ + +### کمپریسڈ فائلوں کو پڑھنے کے قابل ، غیر کمپریسڈ فائلوں میں کھولیں۔ + +زیادہ سے زیادہ ریپوزیٹریز اور زیادہ سے زیادہ ڈیٹا کو شامل کرنے کے لیے ، زیادہ تر ڈیٹا کو کمپریس کیا گیا ہے۔ کمپریشن کا مطلب ہے بڑی مقدار کی نمائندگی کے لیے تھوڑی مقدار میں ڈیٹا استعمال کرنا ، استعمال کے نمونوں اور اس بڑی مقدار میں تکرار کے ذریعے۔ مثال کے طور پر ، کردار کو مسلسل نو بار لکھنے کے بجائے ، کوئی کمپریسڈ ٹیکسٹ 9a لکھ سکتا ہے ، اگر کسی کو یقین ہو کہ قاری سمجھ جائے گا کہ 9a کا مطلب ہے کمپریسڈ ٹیکسٹ aaaaaaaa۔ + +مؤثر کمپریشن الگورتھم اس سے کہیں زیادہ پیچیدہ ہیں ، لیکن وہی اصول لاگو ہوتا ہے۔ یہ دستاویزات ایک کمپریشن پروگرام استعمال کرتا ہے جسے 'XZ' کہا جاتا ہے ، جس کے نتیجے میں ایک الگورتھم استعمال ہوتا ہے جسے 'LZMA' کہا جاتا ہے۔ ہر ریل میں دوسری ڈیٹا فائل میں XZ کے لیے سورس کوڈ اور دستاویزات شامل ہیں جو کہ ایک ہی کمپریسڈ TAR دستاویزی فائل میں ہے ، جو ذیل میں بیان کی گئی ہے۔ (پہلی ڈیٹا فائل ہر دستیاب تحریری انسانی زبان میں انسانی حقوق کا عالمی اعلامیہ پر مشتمل ہے۔) + +LZMA جوڑتا ہے جسے 'LZ77' الگورتھم اور "رینج انکوڈنگ" کہا جاتا ہے۔ LZ77 بار بار ڈیٹا کو اس ڈیٹا کی پچھلی پیشی کے حوالے سے تبدیل کرتا ہے۔ مثال کے طور پر ، زیادہ سے زیادہ آسان بنانے کے لیے ، اگر 80 بائٹ کا فقرہ دو بار ، 400 بائٹس کے فاصلے پر ظاہر ہوتا ہے ، دوسری بار ، الگورتھم بنیادی طور پر "400 بائٹس پہلے سے 80 بائٹس کو دوبارہ" کہہ کر ڈیٹا کو کمپیکٹ کرتا ہے۔ رینج انکوڈنگ بنیادی طور پر ایک پورے پیغام کو ایک بہت لمبی تعداد میں بدل دیتی ہے ، جس کے نتیجے میں انکوڈ کیا جا سکتا ہے۔ + +الگورتھم کے مخصوص مراحل جو ڈیٹا کو ڈمپریس کرنے کے لیے استعمال کیے جاتے ہیں وہ ہر ریل میں دوسری ڈیٹا فائل میں موجود XZ سورس کوڈ کے ذریعے بیان کیے جاتے ہیں۔ اگرچہ نظریاتی طور پر یہ ممکن ہے کہ ہاتھ سے دباؤ ڈالا جائے ، یہ ایک غیر معمولی وقت اور محنت طلب عمل ہوگا۔ عملی طور پر ، ایک ورکنگ کمپیوٹر طلب کیا جائے گا۔ + +### ہر انفرادی فائل کو تحریری حروف میں تبدیل کرنا۔ + +انسانیت نے ہزاروں سالوں میں بہت سے تحریری کردار استعمال کیے ہیں۔ اس دستاویزات میں ان حروف کو 1s اور 0s کی نمائندگی کے لیے استعمال کیا جاتا ہے جسے 'UTF-8' کہا جاتا ہے۔ ایک واحد UTF-8 حرف ، یعنی ایک تحریری علامت ، بائنری ڈیٹا کے 1 سے 4 بائٹس تک کہیں بھی قبضہ کر سکتی ہے۔ + +تاریخی وجوہات کی بناء پر ، کیونکہ وہ اس وقت اور خطے میں سب سے زیادہ استعمال ہوتے تھے جہاں اور جب سافٹ وئیر کی ترقی شروع ہوئی ، حروف کا ایک گروپ (اور تصورات) جسے 'ASCII' کہا جاتا ہے سب سے زیادہ مؤثر طریقے سے انکوڈ کیا جاتا ہے ، 1 بائٹ فی کردار۔ کوئی بھی چیز جو ASCII نہیں ہے اسے 2 یا اس سے زیادہ بائٹس فی کردار کے طور پر انکوڈ کیا جاتا ہے۔ اس دستاویزات میں زیادہ تر ٹیکسٹ فائلیں ASCII ہیں ، لیکن کافی تعداد نہیں ہے۔ بہت سے اور زیادہ تر ASCII ہوں گے جن میں کبھی کبھار غیر ASCII حروف ہوں گے۔ + +ASCII کی تفصیلی وضاحتیں دستاویزات کے ہر ریل میں نمائندگی کی معلومات میں مل سکتی ہیں۔ UTF-8 کی تفصیلی وضاحتیں گائیڈ ریل میں مل سکتی ہیں۔ دستاویزات کی ہر ریل پر پہلی ڈیٹا فائل ہر دستیاب تحریری انسانی زبان میں انسانی حقوق کے عالمی اعلامیے کا متن ہو گی۔ یہ ٹرانسلیشن ٹول اور ASCII اور UTF-8 کی مثال کے طور پر کام کرے گا۔ + +## فائلوں کی اقسام۔ + +بہت سی مختلف قسم کی ٹیکسٹ فائلیں ہیں ، جو مختلف وجوہات کی بنا پر بنائی گئی ہیں۔ یہاں بنیادی قسم ، اس دستاویزات کے وجود کی وجہ ، سورس کوڈ ہے۔ ماخذ کوڈ بہت گھنا ، انتہائی ساختہ متن ہے ، جس میں علامتیں '{' اور '؛' بڑی اہمیت رکھتے ہیں. + +سورس کوڈ کے بارے میں اہم بات یہ ہے کہ یہ مرتب کرنے والوں کے پڑھنے کے لیے لکھا گیا ہے۔ چونکہ تالیف کرنے والے سافٹ وئیر ہوتے ہیں ، اس لیے جملے کا ایک اور طریقہ یہ ہے کہ سورس کوڈ کمپیوٹر کے ذریعے پڑھنے کے لیے لکھا جاتا ہے۔ اچھا کوڈ بھی لکھا جاتا ہے تاکہ دوسرے انسان ، اگر وہ سافٹ وئیر کے میدان میں ہنر مند اور تعلیم یافتہ ہوں ، اسے سمجھ سکیں۔ لیکن یہ صرف درست ہے اگر کوئی مرتب اسے سمجھ سکے۔ + +وہ مرتب ، بدلے میں ، ٹیک ٹری میں بیان کردہ پیچیدہ ترتیبوں کے ذریعے ، سورس کوڈ کو ایک اور صفر کی ترتیب میں تبدیل کرے گا جس کی وجہ سے کمپیوٹر کوڈ کے بیان کردہ افعال اور سرگرمیاں انجام دے گا۔ ایک بہت ہی سادہ مثال کے لیے ، کوڈ کی لائن۔ + + _ کے لیے (int i = 0؛ i <5؛ i ++) {} _ + +کمپائلر کے ذریعہ کمپیوٹر کو دی جانے والی بائنری ہدایات کی ایک سیریز میں تبدیل کیا جائے گا ، جس کی وجہ سے کمپیوٹر کا ایک چھوٹا سا حصہ ، جسے رجسٹر کہا جاتا ہے ، اس کی قیمت کو 0 پر سیٹ کرے گا ، اور بعد میں اس ویلیو کو 1 ، 2 ، 3 تک بڑھا دے گا۔ اور پھر 4۔ (یہ مفید کوڈ کی مثال کے طور پر نہیں ہے + +دیگر قسم کی ٹیکسٹ فائلیں ، جیسے JSON ، XML ، اور HTML ، کمپیوٹر کے لیے ڈیٹا (کمانڈز کے برعکس) ذخیرہ کرنے کے لیے استعمال ہوتی ہیں۔ وہ عام طور پر انسانوں کے ذریعہ بھی پڑھنے کے قابل ہوتے ہیں ، حالانکہ ان کی ساختی شکلیں انہیں اس فائل کی طرح کم ساختہ کہانی سنانے والے متن کے مقابلے میں پڑھنا مشکل بنا دیتی ہیں۔ + +زیادہ تر دوسری قسم کی ٹیکسٹ فائلوں کا مقصد انسانوں کو پڑھنا ہے۔ کچھ سادہ ہیں ، زیادہ تر غیر ساختہ متن ، جیسے اس فائل کو آپ فی الحال پڑھ رہے ہیں۔ ایک قسم جس کا آپ دستاویزات میں بڑے پیمانے پر سامنا کریں گے وہ مارک ڈاون ہے ، جس کا مطلب ہے .md ایک فائل میں توسیع ، جو کہ ایک قسم کی انٹرمیڈیٹ شکل ہے جس کا مطلب یہ ہے کہ انسانوں کو ان کی خام شکل میں پڑھا جا سکتا ہے اور اسی وقت ، ڈھانچہ بھی تاکہ کمپیوٹر انہیں زیادہ بصری طور پر پرکشش اور مفید ترتیب میں فارمیٹ کر سکتے ہیں۔ اس دستاویزات کے بیشتر ریپوزیٹریز میں ایک README.md مارک ڈاون فائل ہے ، جو عام طور پر ریپوزیٹریز کے ابتدائی تعارف کے طور پر بنائی گئی ہے ، جس میں بتایا گیا ہے کہ یہ کیا ہے ، یہ کیوں موجود ہے اور اسے کیسے استعمال کیا جائے۔ + +غیر متن فائلوں کی سب سے عام شکلوں کا ایک مختصر جائزہ بھی مفید ہو سکتا ہے۔ مرتب شدہ کوڈ غیر متن ہے۔ JPG اور PNG فائلیں تصاویر کو ڈیجیٹل فارمیٹ میں انکوڈ کرتی ہیں ، اور MP3 اور WAV انکوڈ آڈیو۔ پی ڈی ایف فائلیں دستاویزات کو درست ، کامل فارمیٹنگ کے ساتھ انکوڈ کرتی ہیں۔ اور ZIP اور TAR فائلیں ، جیسا کہ پہلے ذکر کیا گیا ہے ، کنٹینر فائلیں ہیں جن کے نتیجے میں ایک یا بہت سی دوسری فائلیں شامل ہوسکتی ہیں۔ + +## انسانی زبانیں اور پروگرامنگ زبانیں۔ + +### انسانی زبانیں + +آج ہزاروں تحریری زبانیں ہیں جو انسانیت استعمال کرتی ہیں ، اور اس سے بھی زیادہ بولی جانے والی زبانیں۔ ان میں سے بیشتر صرف نسبتا small چھوٹی آبادی استعمال کرتی ہیں ، لیکن کم از کم بیس زبانیں کم از کم 60 ملین افراد پہلی یا دوسری زبان کے طور پر استعمال کرتے ہیں۔ + +دنیا میں سب سے زیادہ استعمال ہونے والی زبانیں انگریزی اور چینی ہیں۔ تاریخی وجوہات کی بنا پر ، کئی سالوں تک سافٹ وئیر کی زیادہ تر ترقی انگریزی بولنے والی قوموں میں ہوئی ، اس لیے ایک وقت کے لیے ، انگریزی سافٹ وئیر کی ڈیفالٹ لینگوئج بن گئی۔ زیادہ تر پروگرامنگ زبانیں انگریزی الفاظ اپنے نحو میں استعمال کرتی ہیں۔ یہ وہ زبان ہے جس میں دستاویزات کے لیے یہ گائیڈ پہلے لکھا گیا تھا۔ + +اس بات کی گارنٹی نہیں ہے کہ اس دستاویزات کے وارث انگریزی جانتے ہوں گے ، حالانکہ یہ ایک خاص طور پر ممکنہ طور پر زبان کو غیر معینہ مدت تک جاری رہنے کے لیے لگتا ہے۔ اگر دوسری زبانوں کے لیے کچھ رہنمائی مددگار ہو تو ہم انسانی حقوق کے عالمی اعلامیے کے 500 سے زائد دستیاب ترجمے بشمول ہر ریل کے آغاز میں ، اور ٹیک ٹری کے اندر UTF-8 فائل کو غیر کمپریسڈ فائل کے طور پر شامل کر رہے ہیں۔ یہ اعلامیہ ہمارے دور میں ہر فرد کے حقوق اور آزادیوں کی فہرست ہے ، جسے کبھی چھیننا نہیں چاہیے۔ + + +### پروگرامنگ زبانیں + +پروگرامنگ زبانیں وہ ہیں جو انسان کمپیوٹر کو ہدایات پہنچانے کے لیے استعمال کرتے ہیں۔ یہ وہ زبانیں ہیں جن میں سافٹ وئیر کا اظہار کیا جاتا ہے۔ دوسرے (تربیت یافتہ) انسانوں کو بھی پروگرامنگ زبانوں میں لکھے گئے سافٹ وئیر کو پڑھنے کے قابل ہونا چاہیے ، لیکن یہ ایک ثانوی مقصد ہے۔ + +ایک پروگرامنگ لینگویج پہلے سے طے شدہ عناصر کا ایک مجموعہ ہوتا ہے ، جن میں سے زیادہ تر الفاظ ہوتے ہیں ، جنہیں ترتیب وار انداز میں ترتیب دیا جا سکتا ہے تاکہ کمپیوٹر کو مخصوص طریقے سے مخصوص عمل کرنے کی ہدایت دی جا سکے۔ اس طرح کی ہدایات کا مجموعہ ایک پروگرام ، یا سورس کوڈ کے نام سے جانا جاتا ہے۔ سورس کوڈ بنیادی طور پر منجمد ، تحریری شکل میں سافٹ وئیر ہے۔ + +پروگراموں کو عام طور پر مجرد مراحل میں تقسیم کیا جاتا ہے ، جنہیں بیانات کہا جاتا ہے ، جس کے نتیجے میں ان کو مجموعوں میں جمع کیا جاتا ہے جنہیں افعال کہا جاتا ہے۔ ایک پورا پروگرام ایک فائل میں شامل ہوسکتا ہے ، یا ہزاروں میں پھیل سکتا ہے۔ + +سیکڑوں مختلف پروگرامنگ زبانیں ہیں ، جو بہت سی مختلف شکلوں ، نقطہ نظروں اور فلسفوں میں پھیلی ہوئی ہیں۔ کچھ علیحدہ بائنری فائلوں میں مرتب کی جاتی ہیں ، جو پھر عمل میں لائی جاتی ہیں۔ کچھ ، جنہیں "تشریح شدہ" زبانیں کہا جاتا ہے ، مؤثر طریقے سے مرتب کی جاتی ہیں اور ایک ہی وقت میں چلائی جاتی ہیں ، بغیر کسی عبوری مرحلے کے۔ زیادہ تر جدید پروگرامنگ زبانوں میں پہلے سے تحریری افعال کی لائبریریاں شامل ہوتی ہیں ، اور ایسی لائبریریاں بہت زیادہ اور وسیع ہو سکتی ہیں۔ آج کی سب سے مشہور پروگرامنگ زبانوں میں شامل ہیں: + +* C ، سب سے پرانی اور تیز ترین ، سب سے زیادہ عالمگیر اور طاقتور زبانوں میں سے ایک ، کچھ طریقوں سے آسان لیکن دوسروں میں کافی محدود ، اور ہمیشہ بدیہی ، پڑھنے میں آسان ، یا سیکھنے میں آسان نہیں۔ + +* C ++ ، C کا ایک زیادہ پیچیدہ ، خلاصہ اور طاقتور ارتقا۔ + +* C#، مزید ارتقاء بائنری مشین کوڈ میں نہیں بلکہ ایک تشریح شدہ "رن ٹائم" میں مرتب کیا گیا۔ + +* جاوا ، جو کہ C#سے ملتی جلتی ہے ، شاید آج کی سب سے زیادہ استعمال ہونے والی زبان ہے۔ + +* جاوا اسکرپٹ ، نام میں مماثلت کے باوجود جاوا کے بالکل برعکس ، اور جسے 'ECMAScript' بھی کہا جاتا ہے ، ایک ایسی زبان ہے جو شروع میں مکمل طور پر ایک ویب براؤزر کے اندر استعمال ہوتی ہے ، یعنی ایک ایسا پروگرام جو انٹرنیٹ کے طور پر جانا جاتا ریموٹ کمپیوٹر سے ڈیٹا حاصل ، تشریح اور ظاہر کرتا ہے سرور؛ آج ، اگرچہ ، یہ ان سرورز پر بھی وسیع پیمانے پر استعمال ہوتا ہے۔ + +* ٹائپ اسکرپٹ ، جاوا اسکرپٹ کی ایک شکل جس میں سخت قوانین ہیں تاکہ غلطیاں ، جنہیں کیڑے بھی کہا جاتا ہے ، پروگراموں میں ان کا راستہ تلاش کرنے کا امکان کم ہوتا ہے۔ + +* ازگر ، ایک خوبصورت زبان جو سائنسدانوں میں مقبول ہے ، دونوں طاقتور اور اچھی پہلی زبان ہے۔ + +* روبی ، ایک بدیہی زبان جس کے بیانات اکثر لکھے ہوئے انگریزی کی طرح پڑھتے ہیں۔ + +* جاؤ ، ایک سادہ ، طاقتور زبان جو خاص طور پر متوازی پروگراموں میں سبقت رکھتی ہے ، یعنی ایسے پروگرام لکھے گئے ہیں کہ ایک سے زیادہ افعال ایک ہی وقت میں آزادانہ طور پر چلتے ہیں۔ + +* سوئفٹ ، ایک نئی زبان جو فون اور دیگر آلات کے لیے لکھنے کے لیے استعمال ہوتی ہے جو ایک ارب لوگ استعمال کرتے ہیں۔ + +* زنگ ، جس کا مقصد C کے متبادل کے طور پر ہے ، جو خطرناک کیڑوں کو بہت کم امکانات بناتا ہے۔ + +* پی ایچ پی ، ایک سیدھی سی زبان جو انٹرنیٹ سرورز کے لیے استعمال ہوتی ہے۔ + +* لِسپ ، ایک بہت پرانی زبان جو بنیادی طور پر مختلف ، پروگرامنگ کے لیے سب سے پہلے نقطہ نظر ہے۔ + +* ایس کیو ایل ، ایک بہت ہی مختلف قسم کی زبان جو ڈیٹا بیس کے نام سے جانا جاتا ڈیٹا کے ساختہ اور انتہائی موثر اسٹورز سے ڈیٹا لانے کے لیے استعمال ہوتی ہے۔ + +* اسمبلر (یا اسمبلی) ، زبانوں کا ایک انتہائی خفیہ ، محدود ، لیکن تیز اور طاقتور خاندان جس میں زبان کی تعمیرات اور کمپیوٹر کے مشین کوڈ کے درمیان براہ راست تعلق ہے۔ اسے آدھا مرتب شدہ کوڈ سمجھا جا سکتا ہے۔ + +## ڈیولپمنٹ ، ڈیپنڈنسی ، اور اوپن سورس۔ + +### ڈیولپمنٹ + +ایک واحد ، سادہ سورس کوڈ فائل لینے اور اسے کمپیوٹر کے اندر برقی تسلسل میں تبدیل کرنے کا عمل انتہائی پیچیدہ ہے۔ ہم تجرید کی تہوں کا استعمال کرتے ہوئے اس پیچیدگی سے نمٹتے ہیں۔ ایک خلاصہ جسے انسٹرکشن سیٹ کہا جاتا ہے ایک ہی کمپائلر سے مشین کوڈ آؤٹ پٹ کو مختلف قسم کے کمپیوٹرز پر استعمال کرنے کی اجازت دیتا ہے۔ سورس کوڈ کے مصنف کو عام طور پر یہ جاننے یا اس کی پرواہ کرنے کی ضرورت نہیں ہوتی کہ کس قسم کا کمپیوٹر ، یا یہاں تک کہ کون سا انسٹرکشن سیٹ بھی اس کوڈ کو چلانے کے لیے استعمال کیا جائے گا۔ یہ مرتب کے ذریعہ خلاصہ کیا گیا ہے۔ + +جدید سافٹ ویئر ، بدلے میں ، ایک ہی مصنف کے مقابلے میں بہت زیادہ پیچیدہ ہے جو ایک ہی کمپیوٹر کے لیے ایک پروگرام پر کام کرتا ہے۔ یہ بہت سے مصنفین پر مشتمل ہوتا ہے جو ایک ہی پروجیکٹ میں بہت سی فائلوں پر کام کرتے ہیں ، بیک وقت ، اکثر ایک سے زیادہ پروگرامنگ زبانیں استعمال کرتے ہیں۔ مزید یہ کہ ، ہر پروجیکٹ دوسرے ، علیحدہ ، خود ساختہ منصوبوں پر بطور ٹولز اور/یا اجزاء پر انحصار کرتا ہے ، جبکہ یہ پروجیکٹ خود فعال طور پر کام کر رہے ہیں ، اور بدلے میں دوسرے منصوبوں پر انحصار کرتے ہیں۔ ان تمام حرکت پذیر حصوں کو مل کر خوبصورتی اور موثر انداز میں بنانا جدید سافٹ وئیر ڈویلپمنٹ کا چیلنج ہے۔ + +جب ایک سے زیادہ سورس کوڈ مصنفین ، جنہیں سافٹ ویئر ڈویلپرز بھی کہا جاتا ہے ، ایک ہی پروجیکٹ پر کام کرتے ہیں ، ہر ایک کا اپنا کمپیوٹر ہوتا ہے ، اور پورے پروجیکٹ کی ایک کاپی ان کے کمپیوٹر پر ہوتی ہے۔ اگر وہ ہر ایک تبدیلیاں کرتا ہے ، تو ہر ایک کے پاس اسی پروجیکٹ کا مختلف ورژن ہے۔ کسی پروجیکٹ کے متعدد ورژنز میں صلح کرنے کا عمل ورژن کنٹرول کہلاتا ہے۔ اس کا انتظام ورژن کنٹرول سافٹ ویئر کرتا ہے۔ اس دستاویزات میں ، گٹ نامی سافٹ ویئر کے ذریعہ ، جس کے بعد خود گٹ ہب کا نام لیا گیا ہے۔ اس ریپوزیٹریز میں موجود ہر ریپوزیٹری ایک گٹ ریپوزیٹری ہے۔ + +گٹ سافٹ ویئر کے مختلف ورژن کو خود بخود ایک مربوط شکل میں ضم کر سکتا ہے جس میں کم سے کم انسانی مداخلت درکار ہوتی ہے۔ گٹ ایک مکمل تاریخ بھی رکھتا ہے جو آپ کو ضرورت کے مطابق اور پچھلے ورژن میں واپس جانے کی اجازت دیتا ہے۔ تاہم ، جگہ بچانے کے لیے ، اس دستاویزات کے ریپوزیٹریز میں عام طور پر گٹ ہسٹری شامل نہیں ہوتی۔ + +جب ایک سے زیادہ ڈویلپرز ایک ساتھ کئی مختلف راستوں پر ایک پروجیکٹ لیتے ہیں ، تو یہ ایک پروجیکٹ کی برانچنگ کے طور پر جانا جاتا ہے ، اور ان راستوں کو شاخوں کے نام سے جانا جاتا ہے۔ کسی منصوبے کی متفقہ مرکزی شاخ کو ٹرنک یا ماسٹر برانچ کہا جاتا ہے۔ گٹ ایک سہولت فراہم کرتا ہے جو ڈویلپرز دو شاخوں کے درمیان اختلافات کا خلاصہ کرنے کے لیے استعمال کر سکتے ہیں اور ان کی دوسری میں شامل ہونے کی تجویز دے سکتے ہیں۔ یہ پل درخواست کے طور پر جانا جاتا ہے۔ جدید سافٹ وئیر ڈویلپمنٹ میں بڑے پیمانے پر کسی پروجیکٹ کی برانچنگ ، ​​آپ کی برانچ پر سافٹ وئیر لکھنا یا اس میں ترمیم کرنا شامل ہے ، اور ، جب مکمل ہوجائے تو ، اپنے کام کو دوبارہ ماسٹر برانچ میں دوبارہ شامل کرنے کے لیے پل کی درخواست جمع کرانا۔ + + +### ڈیپنڈنسی + +بنیادی طور پر ہر پروگرامنگ لینگویج دوسروں کے کام کی تعمیر کی حمایت کرتی ہے۔ دوسروں کے کام کو دوبارہ استعمال کیے بغیر ، ہر پروجیکٹ بہت زیادہ مشکل ہوگا ، اور بہت سست ہوگا ، اور ناپید ہونے والے چند پروجیکٹس کو حقیقی دنیا میں حقیقی استعمال نظر آئے گا۔ + +اگر پروجیکٹ اے کو اس کے کام کرنے کے لیے پروجیکٹ بی کو شامل کرنے کی ضرورت ہے ، تو اے کو پروجیکٹ بی پر منحصر کہا جاتا ہے ، اور بی کو پروجیکٹ اے کی انحصار کے طور پر جانا جاتا ہے۔ ان کی اپنی انحصار ، اور اسی طرح. مزید یہ کہ ، ہر انحصار کسی مخصوص پروجیکٹ کے مخصوص ورژن ، یا ورژن کی حد کے لیے ہے۔ کسی پروجیکٹ کی انحصار کی متعدد پرتوں کی مکمل آئٹمائزیشن اس کے ڈیپنڈنسی ٹری کے طور پر جانا جاتا ہے۔ + +عام طور پر ، سورس کوڈ فائلوں کے اندر انحصار کو آئٹمائز کیا جاتا ہے ، عام طور پر بہت اوپر ، اور جب بھی مرتب یا مترجم انحصار تلاش کرتا ہے ، وہ اسے پہلے سے طے شدہ ڈائریکٹریوں کے ایک سیٹ میں تلاش کرتا ہے۔ چونکہ کسی پروجیکٹ کے لیے ڈیپنڈنسی ٹری بہت پیچیدہ ہو سکتا ہے ، اس لیے بعض اوقات اسے ایک پیکج لسٹ کے نام سے جانا جاتا پروجیکٹ کے اندر ایک ہی فائل میں مکمل طور پر شائع کیا جاتا ہے۔ مثال کے طور پر ، روبی پروجیکٹس میں اس مقصد کے لیے Gemfile ہو سکتا ہے ، اور جاوا اسکرپٹ پروجیکٹس میں package.json فائل ہو سکتی ہے۔ یہ ایک قسم کے ٹول کی اجازت دیتا ہے جسے پیکیج مینجمنٹ سوفٹ ویئر کہا جاتا ہے کہ وہ ایک یا زیادہ انٹرنیٹ سرورز سے کسی پروجیکٹ کے لیے تمام انحصار کو ایک ہی وقت میں لے آئے۔ + +اس دستاویزات کے معاملے میں ، یہ ممکن ہے کہ کسی بھی پروجیکٹ کے لیے انحصار دستاویزات میں کہیں اور موجود ہو۔ دستاویزات میں انحصار ڈھونڈنے کے لیے ، سب سے پہلے سورس کوڈ یا پیکیج لسٹ میں انحصار کا نام دریافت کرنا چاہیے ، جس کی صحیح تفصیلات زبان اور فریم ورک کے لحاظ سے مختلف ہوتی ہیں ، اور پھر گائیڈ ریل میں ماسٹر انڈیکس استعمال کریں ، یا ، اس کی غیر موجودگی میں ، ہر ریل کے سامنے انڈیکس ، اس بات کا تعین کرنے کے لئے کہ سوال میں ریپوزیٹری کس ریل اور فریم پر مل سکتا ہے۔ + +### اوپن سورس + +چونکہ کمپیوٹر پر پروگرام چلانے کے لیے صرف مرتب شدہ مشین کوڈ درکار ہوتا ہے ، اس لیے سورس کوڈ کو خفیہ رکھتے ہوئے اسے تقسیم کرنا ممکن ہے۔ یہ بند سورس ماڈل کے طور پر جانا جاتا ہے۔ کمپیوٹنگ کے ابتدائی دنوں میں ، سورس کوڈ عام طور پر اس کے مشین کوڈ کے ساتھ تقسیم کیا جاتا تھا ، لیکن بعد میں ، جیسا کہ سافٹ ویئر ایک منافع بخش صنعت بن گیا ، بند سورس ماڈل زیادہ عام ہو گیا۔ + +اس کے بعد یہ معلوم ہوا ہے کہ سورس کوڈ کو عوامی بنانا ، کسی کے لیے بھی کاپی ، برانچ اور بہتر بنانا سافٹ ویئر ڈویلپمنٹ کے لیے کہیں زیادہ موثر طریقہ ہے۔ زیادہ سے زیادہ لوگ جو کسی پروجیکٹ کے سورس کوڈ کو پڑھ سکتے ہیں ان کا مطلب ہے کہ زیادہ سے زیادہ لوگ ممکنہ ضروریات اور مفید نئی خصوصیات کی نشاندہی کریں ، زیادہ لوگ جو اس پروجیکٹ کو اس میں حصہ ڈالنے کے لیے کافی سمجھتے ہیں ، زیادہ لوگ جو کیڑے تلاش کر سکتے ہیں اور اصلاحات جمع کروا سکتے ہیں ، اور جانچنے اور تصدیق کرنے کے لیے زیادہ لوگ کہ نیا کوڈ کام کرتا ہے۔ + +عام طور پر ، بند سورس چھوٹی ، انسولر ، بکھری ہوئی کمیونٹیز کی طرف جاتا ہے جو نئے اور بہتر خیالات کو ڈھونڈنے اور اپنانے کے لیے جدوجہد کرتے ہیں۔ اوپن سورس بڑی ، باہم منسلک کمیونٹیز کی طرف جاتا ہے ، ہر ایک دوسرے کے منصوبوں کو بڑھنے اور پھلنے پھولنے اور کامیاب ہونے میں مدد دیتا ہے ، ایک دوسرے کے کام کو انحصار کے طور پر استعمال کرتے ہیں اور/یا اپنے کوڈ کو دوبارہ استعمال کرتے ہیں ، اور ایک دوسرے سے سیکھتے ہیں۔ اوپن سورس سافٹ وئیر تمام انسانیت کے اجتماعی استعمال کے لیے ایک ٹول کٹ ہے ، اور ہمارے پاس جتنے زیادہ اور بہتر ٹولز ہیں ، ہم ایک پرجاتیوں کے طور پر تیزی سے اور بہتر طور پر ترقی کر سکتے ہیں۔ + +دستاویزات | دستاویزی | ریپوزیٹریز | ریپوزیٹری | ذخیر | آرکائیو | درخت | ٹری \ No newline at end of file