جاوا پروگرامر اور سافٹ ویئر ڈویلپر ہونے کے ناطے، میں نے بہت سے مضامین سے بہت کچھ سیکھا ہے جس کا عنوان ہے What Every Programmer should Know About..... ، وہ کسی خاص موضوع کے بارے میں بہت ساری مفید اور جامع معلومات فراہم کرتے ہیں جو دوسری صورت میں مشکل ہے۔ دریافت. علم کی اپنی جستجو میں، میں نے کچھ بہت مفید مضامین دیکھے ہیں جنہیں میں نے دوبارہ پڑھنے کے لیے حوالہ معلومات کے طور پر بک مارک کیا ہے۔ اس خیال سے کہ بہت سے پروگرامرز اس مجموعہ کو پڑھنے سے فائدہ اٹھا سکتے ہیں مجھے یہ پوسٹ لکھنے اور آپ کے ساتھ ان تمام "ہر پروگرامر کو کیا جاننا چاہیے" مضامین کا اشتراک کرنے پر اکسایا۔ اس مضمون میں، آپ علم کے کلاسک سیٹ سے واقف ہو جائیں گے جس کی ضرورت ہر پروگرامر کو ہوتی ہے، جیسے کہ میموری ، یونیکوڈ ، فلوٹنگ پوائنٹ ریاضی ، نیٹ ورکنگ ، آبجیکٹ اورینٹڈ ڈیزائن ٹائم ، یو آر ایل انکوڈنگ ، سٹرنگ اور بہت سے دوسرے۔ یہ فہرست ابتدائی اور نئے آنے والوں کے لیے بہت اہم ہے کیونکہ ان میں اکثر عملی معلومات کی کمی ہوتی ہے۔ چونکہ زیادہ تر مضامین حقیقی زندگی کی مثالوں پر مبنی ہیں، اس لیے انٹری لیول اور انٹرمیڈیٹ پروگرامرز ان سے بہت کچھ سیکھ سکتے ہیں۔ اس کے علاوہ، اپنے کیرئیر کے شروع میں بنیادی باتیں سیکھنے سے آپ کو ان غلطیوں سے بچنے میں مدد ملے گی جو دوسرے پروگرامرز اور سافٹ ویئر ڈویلپر پہلے ہی اپنے سیکھنے کے راستے میں کر چکے ہیں۔ بدقسمتی سے، بیان کردہ مضامین کی تمام معلومات پہلی پڑھنے سے آسانی سے ہضم نہیں ہوتی ہیں۔ امکانات یہ ہیں کہ آپ فلوٹنگ پوائنٹ نمبرز کے بارے میں کچھ تفصیلات کو فوری طور پر نہ سمجھ پائیں، یا آپ میموری کی پیچیدگیوں سے الجھن کا شکار ہو سکتے ہیں، لیکن اس مجموعہ کو ہاتھ میں رکھنا اور وضاحت کے لیے وقتاً فوقتاً اس کا حوالہ دینا ضروری ہے۔ لہذا میں آپ کو اچھی قسمت کی خواہش کرتا ہوں اور ان عظیم مضامین کو پڑھنے سے لطف اندوز ہوں۔ ویسے، کسی دوسرے "What Every Programmer Should Know" آرٹیکلز کو شیئر کرنا نہ بھولیں اگر وہ پہلے سے ہماری فہرست میں شامل نہیں ہیں۔
ہر پروگرامر کو میموری کے بارے میں کیا جاننا چاہئے۔
روسی میں ترجمہ یہ کلاسک مضامین میں سے ایک ہے جو میموری کی خصوصیات کے بارے میں آپ کی رہنمائی کرے گا، جن میں سے کچھ پرانے، کچھ نئے، کچھ مشہور اور کچھ زیادہ نہیں۔ انتظامی کردار اور ہمہ گیریت کے باوجود، ہر پروگرامر کے پاس میموری کے بارے میں کافی علم نہیں ہوتا ہے۔ اگر آپ اعلیٰ کارکردگی والی ایپلی کیشنز لکھنے کے کاروبار میں ہیں تو جدید نظاموں میں میموری سے واقف ہونے کی اہمیت بڑھ جاتی ہے۔ ہارڈ ویئر ڈیزائنرز زیادہ پیچیدہ میموری مینجمنٹ ماڈلز اور ایکسلریشن تکنیکوں کے ساتھ آ رہے ہیں، جیسے سی پی یو کیچز، لیکن یہ پروگرامرز کی مدد کے بغیر بہترین کارکردگی کا مظاہرہ نہیں کر سکتے۔ میں اب بھی یہ مضمون پڑھ رہا ہوں، اور میں آپ کو یہ نہیں بتا سکتا کہ میں نے اس سے RAM، CPU کیچز جیسے L1 اور L2 کیشے، میموری کی مختلف اقسام، براہ راست میموری تک رسائی، میموری کنٹرولر ڈیزائن، اور عام طور پر میموری کے بارے میں کتنا سیکھا ہے۔ . مختصر یہ کہ کسی بھی سطح کے پروگرامرز کے لیے پڑھنا ضروری ہے۔ہر سائنسدان کو فلوٹنگ پوائنٹ ریاضی کے بارے میں کیا جاننا چاہئے۔
فلوٹنگ پوائنٹ ریاضی کا موضوع مشکل ہے اور اس پر عبور حاصل کرنا آسان نہیں ہے۔ بہت سے جاوا پروگرامرز یہ تک نہیں جانتے کہ قدروں کا موازنہ typefloat
/ double
operator کے ساتھ کرتے وقت کیا غلط ہو سکتا ہے ==
۔ ہم میں سے بہت سے لوگ مالیاتی حسابات کو اقسام float
اور double
. یہ مضمون اس سلسلے کا ایک اور جوہر ہے اور تمام سافٹ ویئر ڈویلپرز اور پروگرامرز کے لیے پڑھنا ضروری ہے۔ جیسا کہ آپ تجربہ حاصل کرتے ہیں، آپ کو عمومی عنوانات کی پیچیدگیوں میں جانا چاہیے، اور فلوٹنگ پوائنٹ ریاضی ان میں سے ایک ہے۔ جاوا کے ایک سینئر ڈویلپر کے طور پر، آپ کو جاننا چاہیے کہ مانیٹری کیلکولیشن کیسے کریں، کب استعمال کریں float
، double
یا BigDecimal
فلوٹنگ پوائنٹ نمبرز کو کیسے گول کریں، اور بہت کچھ۔ یہاں تک کہ اگر آپ کو اس موضوع کا ٹھوس علم ہے، مضمون کو پڑھنے کے بعد آپ فلوٹنگ پوائنٹ آپریشنز کے بارے میں کچھ نیا دریافت کر سکتے ہیں۔
ہر ڈویلپر کو یونیکوڈ کے بارے میں کیا معلوم ہونا چاہیے۔
کریکٹر انکوڈنگ ایک اور شعبہ ہے جہاں بہت سے پروگرامرز جدوجہد کرتے ہیں، اور "دی مطلق کم از کم ہر سافٹ ویئر ڈویلپر کو یونیکوڈ اور کریکٹر سیٹس کے بارے میں بالکل جاننا چاہیے (کوئی عذر نہیں!)" کا مقصد اس خلا کو پُر کرنا ہے۔ ریکارڈ کے لیے، جی ہاں، یہ اس مضمون کا مکمل عنوان ہے۔ اس کے مصنف جوئل اسپولسکی ہیں، جو https://stackoverflow.com کے بانیوں میں سے ایک ہیں ۔ جوئل نے یہ مضمون تقریباً 10 سال قبل اپنے بلاگ پر لکھا تھا، لیکن اس نے جدید دنیا میں اپنی مطابقت نہیں کھوئی ہے۔ مضمون میں بتایا گیا ہے کہ یونیکوڈ کیا ہے، انکوڈنگ کیا ہے، بائٹس کے ذریعے حروف کی نمائندگی کیسے کی جاتی ہے، اور بہت کچھ۔ اس مضمون کی بہترین چیزوں میں سے ایک زبان اور پیش کش کا طریقہ ہے، اگر آپ یونیکوڈ کے بارے میں کچھ نہیں جانتے ہیں، تب بھی آپ کو اسے سمجھنے میں کوئی دشواری نہیں ہوگی۔ مختصراً، تمام پروگرامرز، کوڈرز اور سافٹ ویئر انجینئرز کے لیے دوسرا ضرور پڑھنا چاہیے۔ہر پروگرامر کو وقت کے بارے میں کیا جاننا چاہئے۔
کریکٹر انکوڈنگ کے علاوہ، وقت اور تاریخیں (Time
اور Date
) ایک اور علاقہ ہے جہاں بہت سے پروگرامرز، جن میں میں شامل ہوں، کو دشواری ہوتی ہے۔ یہاں تک کہ سینئر ڈویلپر بھی GMT، UTC، دن کی روشنی کی بچت کے وقت، اور لیپ سیکنڈ میں کھو جاتے ہیں۔ سچ پوچھیں تو، کچھ غلطیاں کیے بغیر ٹائم زونز سے نمٹنا آسان نہیں ہے، اور ڈے لائٹ سیونگ ٹائم کا استعمال اسے اور بھی مشکل بنا دیتا ہے۔ اگر آپ آزمائشی اور غلطی کا استعمال کرتے ہیں تو مسائل مزید بڑھ جاتے ہیں کیونکہ آپ ایسا کرنے سے کبھی بھی اپنے مسئلے کو حل نہیں کر پائیں گے۔ ایسی بہت سی چیزیں ہیں جو غلط ہو سکتی ہیں، اور اتنی ہی تعداد میں غلط فہمیاں ہیں۔ چیزیں جیسے کہ آیا کسی تاریخ میں ٹائم زون ہے یا نہیں آپ کو الجھن میں ڈال سکتا ہے، UNIX وقت کو دوسرے ٹائم زون میں تبدیل کرنا آپ کو پریشان کر سکتا ہے، اور آپ گھڑیوں اور تاخیر کو ہم آہنگ کرنے کے بارے میں آسانی سے بھول سکتے ہیں۔ مجھے امید ہے کہ اس مضمون کو پڑھنے کے بعد، وقت کے بارے میں آپ کی بہت سی غلط فہمیاں دور ہو جائیں گی اور آپ کو وقت کی مکمل سمجھ پیدا ہو جائے گی۔
یو آر ایل انکوڈنگ کے بارے میں ہر ویب ڈویلپر کو کیا معلوم ہونا چاہیے۔
یہ مضمون یونیفارم ریسورس لوکیٹر (URL) انکوڈنگ کے بارے میں عام غلط فہمیوں کو بیان کرتا ہے، پھر HTTP کے لیے URL انکوڈنگ کو واضح کرنے کی کوشش کرتا ہے، اور پھر عام مسائل اور حل کو ظاہر کرتا ہے۔ اگرچہ یہ مضمون کسی پروگرامنگ زبان کے لیے مخصوص نہیں ہے، لیکن یہ جاوا میں مسائل کی وضاحت کرتا ہے) اور جاوا میں اور ویب ایپلیکیشنز میں کئی سطحوں پر یو آر ایل انکوڈنگ کے مسائل کو حل کرنے کی وضاحت کے ساتھ ختم ہوتا ہے۔ آپ بنیادی URL گرامر، HTTP اور دیگر پروٹوکولز میں عمومی URL نحو سیکھیں گے۔ اس مضمون میں عام یو آر ایل کی خرابیوں کا بھی احاطہ کیا گیا ہے جیسے کریکٹر انکوڈنگ، یو آر ایل کے مختلف حصوں میں خصوصی حروف، اور یو آر ایل انکوڈنگ/ڈی کوڈنگ کے مسائل۔ اگر آپ جاوا پروگرامر ہیں، تو آپ یہ بھی سیکھیں گے کہ جاوا ایپلیکیشن میں یو آر ایل کا صحیح طریقے سے کیسے انتظام کیا جائے۔ یو آر ایل بنانے اور اپاچی کامنز HTTP کلائنٹ لائبریری کا استعمال کیسے کریں۔ آخر میں، یہ URLs کے ساتھ کام کرنے کے لیے بہترین طرز عمل اور تجاویز بھی پیش کرتا ہے، جیسے کہ آپ کو کسی URL کو بناتے وقت انکوڈ کیسے کرنا چاہیے، اس بات کو یقینی بنانا کہ آپ کے URL کو دوبارہ لکھنے والے فلٹرز آپ کے URLs کو درست طریقے سے ہینڈل کرتے ہیں، اور بہت کچھ۔ مختصر میں، کسی بھی ویب ڈویلپر اور پروگرامر کے لیے پڑھنا ضروری ہے۔ہر پروگرامر ویب ڈویلپمنٹ کے بارے میں کیا جانتا ہے؟
programmersStackExchange کا یہ دلچسپ مضمون اس بارے میں ہے کہ ویب ایپلیکیشن کی تکنیکی تفصیلات کو نافذ کرنے والے ہر پروگرامر کو سائٹ کو عوام کے لیے کھولنے سے پہلے غور کرنا چاہیے۔ اس میں انٹرفیس ڈیزائن اور صارف کا تجربہ، سیکورٹی، ویب معیارات، کارکردگی، سرچ انجن آپٹیمائزیشن (SEO)، استعمال شدہ ٹیکنالوجیز اور کچھ اہم وسائل کے شعبوں کی چیزیں شامل ہیں۔ آج کی دنیا کا زیادہ تر انحصار انٹرنیٹ پر ہے اور پروگرامر کے لیے ذاتی ویب سائٹ یا بلاگ رکھنا کافی عام ہے۔ اس مضمون سے حاصل ہونے والا تجربہ نہ صرف آپ کی پیشہ ورانہ سرگرمیوں میں بلکہ آپ کے اپنے منصوبوں میں بھی کارآمد ہوگا۔ آپ تمام کلیدی ٹیکنالوجیز جیسے کہ HTTP، HTML، XML، CSS، JavaScript، براؤزر کی مطابقت، اپنی سائٹ کے لوڈنگ کے وقت کو کم کرنے کے لیے تجاویز، XML سائٹ کے نقشے، W3C وضاحتیں اور کئی دیگر اہم نکات کے بارے میں جانیں گے۔SEO کے بارے میں ہر پروگرامر کو کیا جاننا چاہیے۔
یہ ایک اور مضمون ہے جو ویب ڈویلپرز، پروگرامرز اور بلاگرز کے لیے کافی مفید ہوگا۔ SEO نظر انداز کرنے کے لیے بہت بڑا ہے، اور بہت سے پروگرامرز اور بلاگرز کے لیے سرچ انجن آپٹیمائزیشن کی بنیادی باتوں کو جاننا ضروری ہے تاکہ Google کو ان کا مواد تلاش کرنے اور اسے ساتھی پروگرامرز کو دکھانے میں مدد ملے۔ چونکہ آج کی مربوط دنیا میں کوئی بھی کمپنی ویب کی موجودگی کے بغیر زندہ نہیں رہ سکتی، اس لیے SEO اور بھی اہم ہو جاتا ہے۔ اگر آپ کے پاس کوئی پروڈکٹ بیچنے والا کوئی اسٹارٹ اپ ہے، تو SEO ایسی چیز ہے جس کا آپ کو خیال رکھنا چاہیے۔ تمام پروگرامرز، خاص طور پر ویب ڈویلپرز، اس مضمون سے بہت فائدہ اٹھا سکتے ہیں۔ یاد رکھیں، سرچ انجن آپٹیمائزیشن وسیع اور بہت متحرک ہے، اور مختلف سرچ انجنوں، جیسے گوگل، یاہو، اور دیگر میں مختلف ہوتی ہے۔ لہذا، اس موضوع پر عبور حاصل کرنے کے لیے آپ کو ہمیشہ اپنے علم کو اپ ڈیٹ کرنا چاہیے۔ہر سی پروگرامر کو غیر متعینہ سلوک #1/3 کے بارے میں کیا جاننا چاہئے۔
سی پروگرامنگ زبان میں "غیر متعینہ سلوک" کا تصور ہے۔ غیر متعینہ رویہ ایک وسیع موضوع ہے جس میں بہت ساری اہمیت ہے، اور یہ ایک وجہ ہے جس کی وجہ سے میں جاوا کو پسند کرتا ہوں: کم غیر متعینہ سلوک، کم الجھن، زیادہ استحکام، اور زیادہ امن۔ C میں بہت سی بظاہر معقول چیزیں دراصل غیر متعینہ رویہ رکھتی ہیں، اور یہ پروگراموں میں کیڑے کا ایک عام ذریعہ ہے۔ مزید برآں، C میں کوئی بھی غیر متعینہ رویہ عمل درآمد (مرتب اور رن ٹائم کے) کو کوڈ تیار کرنے کی اجازت دیتا ہے جو ہارڈ ڈرائیو کو فارمیٹ کرتا ہے، مکمل طور پر غیر متوقع چیزیں کرتا ہے، یا اس سے بھی بدتر۔ غیر متوقع رویے کے سمندر میں گہرا غوطہ لگانے کے لیے یہ بہترین مضمون پڑھیں۔نیٹ ورکس کے بارے میں ہر پروگرامر کو کیا جاننے کی ضرورت ہے۔
مضمون سے ہی "آپ ایک پروگرامر ہیں۔ کیا آپ نے کبھی سوچا ہے کہ ملٹی پلیئر گیمز کیسے کام کرتی ہیں؟ باہر سے، یہ جادوئی لگتا ہے: دو یا دو سے زیادہ کھلاڑی آن لائن باہمی تعاون کے تجربے کا اشتراک کرتے ہیں، گویا وہ ایک ہی ورچوئل دنیا میں ایک ساتھ موجود ہیں۔ لیکن کیسے "ہم سچ جانتے ہیں، پروگرامرز، کہ اصل میں جو کچھ ہو رہا ہے وہ اس سے بالکل مختلف ہے جو آپ دیکھتے ہیں۔ یہ پتہ چلتا ہے کہ یہ سب ایک وہم ہے۔" یہ گیم پروگرامرز کے لیے لکھا گیا نیٹ ورکنگ کے بارے میں بہت دلچسپ مضمون ہے، لیکن میرے خیال میں ہر پروگرامر اور ڈویلپر اس سے فائدہ اٹھا سکتا ہے۔ہر جاوا ڈویلپر کو سٹرنگز کے بارے میں کیا معلوم ہونا چاہیے۔
یہ میرا مضمون ہےjava.lang.String
اور ذاتی طور پر میرے خیال میں ہر جاوا پروگرامر کو اس کے بارے میں جاننا چاہیے۔ روزانہ جاوا پروگرامنگ میں سٹرنگز بہت اہم ہیں اور اسی وجہ سے کسی بھی جاوا ڈویلپر کے لیے اچھی جانکاری ضروری ہے۔ اس مضمون میں سٹرنگز کے بہت سے اہم پہلوؤں کا احاطہ کیا گیا ہے، بشمول سٹرنگ پول، سٹرنگ لٹریلز، سٹرنگز کا ==
بمقابلہ کے ساتھ موازنہ equals()
، بائٹس کو سٹرنگ میں تبدیل کرنا، سٹرنگ کیوں ناقابل تغیر ہے، مناسب سٹرنگ کنکٹنیشن، اور بہت کچھ۔ ایک جدید پروگرامر ان تمام خصوصیات کو پہلے سے جانتا ہے، لیکن اس کے باوجود اس کا جائزہ لینا اچھا خیال ہوگا۔
GO TO FULL VERSION