CodeGym /جاوا بلاگ /Random-UR /پھنس گئی؟ جاوا سیکھنے کے سب سے مشکل حصے اور ان پر قابو پا...
John Squirrels
سطح
San Francisco

پھنس گئی؟ جاوا سیکھنے کے سب سے مشکل حصے اور ان پر قابو پانے کا طریقہ

گروپ میں شائع ہوا۔
جیسا کہ آپ جانتے ہیں، ہم جاوا کے ساتھ پروگرامنگ زبانیں سیکھنا شروع کرنے کے لیے کوڈنگ شروع کرنے والوں کو مشورہ دیتے ہیں، اور CodeGym کے پاس جاوا سیکھنے کے عمل کو انتہائی غیر تیار شدہ طالب علموں کے لیے بھی قابل ہضم بنانے کے لیے سب کچھ ہے۔ لیکن جتنے گیمیفکیشن عناصر، آسان کہانی اور مضحکہ خیز کردار اس عمل کو آسان بنانے میں مدد کرتے ہیں، جاوا کے بنیادی اصولوں کو مکمل طور پر سیکھنا شاذ و نادر ہی نئے سیکھنے والوں کی اکثریت کے لیے چیلنجوں کے بغیر ہوتا ہے۔ پھنس گئی؟  جاوا سیکھنے کے سب سے مشکل حصے اور ان پر قابو پانے کا طریقہ - 1آج ہم جاوا پروگرامنگ کے بنیادی اصولوں کے کچھ مشکل ترین شعبوں پر ایک نظر ڈالنے جا رہے ہیں، یہ سمجھنے کی کوشش کر رہے ہیں کہ بہت سے لوگوں کو یہ کیوں مشکل لگتے ہیں اور اگر آپ کے لیے اس کے بارے میں کچھ کرنا ہے۔

1. عامیات

جاوا میں جنرک وہ قسمیں ہیں جن کا پیرامیٹر ہوتا ہے۔ ایک عام قسم بناتے وقت، آپ نہ صرف ایک قسم، بلکہ ڈیٹا کی قسم بھی بتاتے ہیں جس کے ساتھ یہ کام کرے گا۔ جاوا سیکھنے والوں کی طرف سے جنرکس کا اکثر جاوا کے سب سے مشکل حصوں میں سے ایک کے طور پر ذکر کیا جاتا ہے جس کو سمجھنا ان کے لیے ہے۔ "میرا بنیادی مسئلہ اب بھی جنرکس سے نمٹ رہا ہے۔ یہ بہت آسان ہوتا ہے جب آپ کے پاس پیرامیٹرز کے ساتھ طریقے ہوں، لیکن جب آپ کو اپنا لکھنا پڑتا ہے تو الجھن میں پڑ جاتا ہے،" ایک گمنام جاوا سیکھنے والے نے کہا۔

تجاویز اور سفارشات

یہاں جاوا میں جنرکس کے بارے میں ایک تجربہ کار پروگرامر اور یونیورسٹی کے پروفیسر روی ریڈی کی رائے ہے: "جاوا جنرکس ایک ایسا کام کرتی ہیں جو C++ ٹیمپلیٹس نہیں کرتی ہیں — ٹائپ سیفٹی کو نافذ کریں۔ C++ ٹیمپلیٹس کا نفاذ ایک سادہ پری پروسیسر چال ہے اور قسم کی حفاظت کو یقینی نہیں بناتی ہے۔ جاوا میں جنرکس C++ ٹیمپلیٹس کی طرح ہیں لیکن اضافی قسم کی حفاظت کے ساتھ۔ اور IMHO، قسم کی حفاظت کسی بھی اچھے ترقیاتی ماحول کی ایک لازمی خصوصیت ہے۔ اور ہاں! پیرامیٹرز اور اقسام کے درمیان ہماری ذہنی تبدیلیوں کی وجہ سے وہ الجھن کا شکار ہو سکتے ہیں۔ لیکن مجھے یقین ہے کہ ان میں مہارت حاصل کرنے کے لیے وقت گزارنا محنت کے قابل ہے۔ کیونکہ ایک بار جب میں نے انٹرفیس اور جنرکس کو سمجھ لیا تھا تو میں نے جاوا میں اپنے آپ کو "سوچ" بہت بہتر پایا۔

2. ملٹی تھریڈنگ

جاوا میں ملٹی تھریڈنگ ایپلی کیشن کے ذریعے سی پی یو کے زیادہ سے زیادہ استعمال کو حاصل کرنے کے لیے بیک وقت دو یا زیادہ تھریڈز کو عمل میں لانے کا عمل ہے۔ ملٹی تھریڈنگ بہت اہم کاموں کو حل کرتی ہے اور ہمارے پروگراموں کو تیز تر بنا سکتی ہے۔ اکثر کئی گنا تیز۔ لیکن یہ ان عنوانات میں سے ایک سمجھا جاتا ہے جہاں بہت سے تازہ جاوا سیکھنے والے اس پر پھنس جاتے ہیں۔ سب اس لیے کہ ملٹی تھریڈنگ مسائل کو حل کرنے کے بجائے بھی پیدا کر سکتی ہے۔ دو مخصوص مسائل ہیں جو ملٹی تھریڈنگ پیدا کر سکتے ہیں: تعطل اور ریس کے حالات۔ تعطل ایک ایسی صورت حال ہے جہاں متعدد دھاگے ایک دوسرے کے پاس موجود وسائل کے منتظر ہیں، اور ان میں سے کوئی بھی چلنا جاری نہیں رکھ سکتا۔ ریس کنڈیشن ایک ملٹی تھریڈڈ سسٹم یا ایپلیکیشن میں ڈیزائن کی خرابی ہے، جہاں سسٹم یا ایپلیکیشن کا عمل اس ترتیب پر منحصر ہوتا ہے جس میں کوڈ کے کچھ حصوں پر عمل ہوتا ہے۔

تجاویز اور سفارشات

یہاں S.Lott سے ملٹی تھریڈنگ سے نمٹنے کے بارے میں ایک اچھی تجویز ہے، جو ایک سافٹ ویئر آرکیٹیکٹ اور StackExchange کے ایک فعال صارف ہے، جو ایک مقبول سوال و جواب کی ویب سائٹ ہے: "ملٹی تھریڈنگ آسان ہے۔ ملٹی تھریڈنگ کے لیے ایپلیکیشن کوڈ کرنا بہت، بہت آسان ہے۔ ایک سادہ چال ہے، اور یہ ہے کہ دھاگوں کے درمیان ڈیٹا منتقل کرنے کے لیے ایک اچھی طرح سے ڈیزائن کردہ پیغام کی قطار (اپنا رول نہ کریں) استعمال کریں۔ مشکل حصہ یہ ہے کہ ایک سے زیادہ تھریڈز جادوئی طور پر کسی مشترکہ آبجیکٹ کو کسی طرح سے اپ ڈیٹ کریں۔ اس وقت یہ غلطی کا شکار ہو جاتا ہے کیونکہ لوگ موجودہ نسل کے حالات پر توجہ نہیں دیتے ہیں۔ بہت سے لوگ پیغام کی قطاروں کا استعمال نہیں کرتے ہیں اور مشترکہ اشیاء کو اپ ڈیٹ کرنے اور اپنے لیے مسائل پیدا کرنے کی کوشش کرتے ہیں۔ جو چیز مشکل ہو جاتی ہے وہ الگورتھم کو ڈیزائن کرنا ہے جو کئی قطاروں کے درمیان ڈیٹا کو منتقل کرتے وقت اچھی طرح کام کرتا ہے۔ یہ مشکل ہے۔ لیکن ایک ساتھ موجود دھاگوں کی میکانکس (مشترکہ قطاروں کے ذریعے) آسان ہے۔

3. کلاس پاتھ کے مسائل

جاوا ڈویلپرز کو اپنے روزمرہ کے کام میں درپیش مسائل میں سے ایک کلاس پاتھ کی غلطیوں کو بھی سب سے زیادہ شکایت کی جاتی ہے۔ "کلاس پاتھ کے مسائل کو ڈیبگ کرنے میں وقت لگتا ہے اور بدترین ممکنہ وقت اور مقامات پر ہوتا ہے: ریلیز سے پہلے، اور اکثر ایسے ماحول میں جہاں ترقیاتی ٹیم کی رسائی بہت کم ہوتی ہے۔ یہ IDE کی سطح پر بھی ہو سکتے ہیں اور پیداواری صلاحیت میں کمی کا ذریعہ بن سکتے ہیں،" واسکو فریرا کہتے ہیں ، ایک تجربہ کار Java/Javascript ڈویلپر اور پروگرامنگ سے متعلقہ سبق کے مصنف۔

تجاویز اور سفارشات

"کلاس پاتھ کے مسائل اتنے نچلے درجے کے یا ناقابل رسائی نہیں ہیں جتنے کہ پہلے نظر آتے ہیں۔ یہ سب کچھ zip فائلوں (جارس) کے مخصوص ڈائریکٹریز میں موجود ہونے / نہ ہونے کے بارے میں ہے، ان ڈائریکٹریوں کو کیسے تلاش کیا جائے، اور محدود رسائی والے ماحول میں کلاس پاتھ کو کیسے ڈیبگ کیا جائے۔ کلاس لوڈرز، کلاس لوڈر چین اور پیرنٹ فرسٹ/پیرنٹ لاسٹ موڈز جیسے تصورات کے محدود سیٹ کو جان کر، ان مسائل سے مؤثر طریقے سے نمٹا جا سکتا ہے،" ماہر بتاتے ہیں۔

4. پولیمورفزم اور اس کا صحیح استعمال

جب بات OOP کے اصولوں کی ہو، تو بہت سے لوگ کہتے ہیں کہ انہیں پولیمورفزم کو سمجھنے میں مشکل پیش آئی۔ پولیمورفزم ایک پروگرام کی قابلیت ہے کہ اشیاء کی مخصوص قسم کے بارے میں معلومات کے بغیر، ایک ہی انٹرفیس کے ساتھ ایک ہی طریقے سے اشیاء کا علاج کرے۔ پولیمورفزم کے باوجود کافی بنیادی موضوع ہے، یہ کافی وسیع ہے اور جاوا کی بنیاد کا ایک اچھا حصہ بناتا ہے۔ بہت سے طلباء کے لیے، جاوا سیکھنے میں پولیمورفزم پہلی مشکل ہے۔ یہ سب اس لیے کہ پولیمورفزم کی مختلف شکلیں مختلف سیاق و سباق میں استعمال ہوتی ہیں، جو مبہم ہوسکتی ہیں۔

تجاویز اور سفارشات

پولیمورفزم سے نمٹنے کے لیے اسے سیکھنے کے علاوہ کوئی دوسرا راستہ نہیں ہے۔ کوپن ہیگن یونیورسٹی میں پروگرامنگ سکھانے والے ٹوربین موگینسن اس تصور کی وضاحت کیسے کرتے ہیں: "سادہ اوور لوڈنگ: + کا مطلب انٹیجر کا اضافہ، فلوٹنگ پوائنٹ کا اضافہ اور (کچھ زبانوں میں) سٹرنگ کنکٹنیشن دونوں ہو سکتے ہیں۔ ذیلی قسم پولیمورفزم: اگر B ایک ذیلی قسم ہے (سے وراثت میں ملتی ہے) تو، قسم B کی کسی بھی قدر کو اس سیاق و سباق میں استعمال کیا جا سکتا ہے جس میں قسم A کی قدر کی توقع ہوتی ہے۔ مختلف سیاق و سباق مختلف قسم کے دلائل فراہم کر سکتے ہیں، لہذا آپ پیرامیٹرائزڈ قسم کو مختلف کنکریٹ اقسام کے لیے فوری بناتے ہیں۔ اسے "ٹیمپلیٹس" یا "جنرک" بھی کہا جاتا ہے اور یہ OO زبانوں میں ہے جو عام طور پر زاویہ بریکٹ (جیسے T<A>) کا استعمال کرتے ہوئے مخصوص کی جاتی ہے۔ انٹرفیس پولیمورفزم۔ یہ بنیادی طور پر ایک طریقہ کار ہے جہاں آپ ذیلی قسم کے پولیمورفزم کو ذیلی قسموں تک محدود کرتے ہیں جو ایک مخصوص انٹرفیس یا پیرامیٹرک پولیمورفزم کو ایک مخصوص انٹرفیس کو نافذ کرنے والے پیرامیٹرز کو ٹائپ کرنے کے لیے نافذ کرتے ہیں۔

5. عکاسی

ریفلیکشن ایک ایسا طریقہ کار ہے جو کسی پروگرام کے چلنے کے دوران اس کے بارے میں ڈیٹا کو دریافت کرتا ہے۔ عکاسی آپ کو فیلڈز، طریقوں اور کلاس کنسٹرکٹرز کے بارے میں معلومات کو دریافت کرنے دیتی ہے۔ یہ آپ کو ان اقسام کے ساتھ کام کرنے کی بھی اجازت دیتا ہے جو مرتب وقت پر موجود نہیں تھیں، لیکن جو رن ٹائم کے دوران دستیاب ہوئیں۔ خامی کی معلومات جاری کرنے کے لیے عکاسی اور منطقی طور پر مسلسل ماڈل درست ڈائنامک کوڈ بنانا ممکن بناتا ہے۔ لیکن بہت سے لوگوں کے لیے، یہ سمجھنا اتنا آسان نہیں ہے کہ ریفلیکشن کو کیسے استعمال کیا جائے۔

تجاویز اور سفارشات

"انعکاس اور جاوا کی صورت میں، عکاسی جاوا کو اجازت دیتی ہے، جسے جامد طور پر ٹائپ کرنے کے لیے ڈیزائن کیا گیا ہے، متحرک طور پر ٹائپ کیا جائے۔ متحرک ٹائپنگ فطری طور پر برائی نہیں ہے۔ ہاں، یہ پروگرامر کو کچھ OOP اصولوں کو توڑنے کی اجازت دیتا ہے، لیکن ساتھ ہی یہ رن ٹائم پراکسینگ اور انحصار انجیکشن جیسی بہت سی طاقتور خصوصیات کی اجازت دیتا ہے۔ ہاں، جاوا آپ کو عکاسی کا استعمال کرتے ہوئے اپنے پاؤں میں گولی مارنے دیتا ہے۔ تاہم، آپ کو بہت واضح طور پر بندوق کو اپنے پاؤں پر رکھنا ہوگا، حفاظت سے ہٹانا ہوگا اور ٹرگر کو کھینچنا ہوگا،" ایک تجربہ کار جاوا پروگرامر اور ایپلیکیشن آرکیٹیکٹ، جیش لالوانی بتاتے ہیں ۔

6. ان پٹ/آؤٹ پٹ اسٹریمز

اسٹریمز آپ کو کسی بھی ڈیٹا سورس کے ساتھ کام کرنے دیتی ہیں: انٹرنیٹ، آپ کے کمپیوٹر کا فائل سسٹم، یا کچھ اور۔ اسٹریمز ایک آفاقی ٹول ہیں۔ وہ کسی پروگرام کو کہیں سے بھی ڈیٹا وصول کرنے کی اجازت دیتے ہیں (ان پٹ اسٹریمز) اور اسے کہیں بھی بھیج سکتے ہیں (آؤٹ پٹ اسٹریمز)۔ ان کا کام ایک ہی ہے: ایک جگہ سے ڈیٹا لے کر دوسری جگہ بھیجنا۔ اسٹریمز کی دو قسمیں ہیں: ان پٹ اسٹریمز (ڈیٹا وصول کرنے کے لیے استعمال ہوتے ہیں) اور آؤٹ پٹ اسٹریمز (ڈیٹا بھیجنے کے لیے)۔ جو چیز بہت سے لوگوں کے لیے اسٹریمز کے استعمال کو سمجھنا مشکل بناتی ہے وہ یہ ہے کہ جاوا میں متعدد I/O اسٹریم کلاسز ہیں۔

تجاویز اور سفارشات

"جاوا میں بہت ساری I/O اسٹریم کلاسز ہیں بنیادی طور پر دو معاون عوامل کی وجہ سے۔ سب سے پہلے میراث ہے۔ کچھ کلاسیں تاریخی وجوہات کی بناء پر اب بھی موجود ہیں اور انہیں فرسودہ نہیں کیا گیا ہے کیونکہ انہیں نقصان دہ نہیں سمجھا جاتا ہے۔ دوسرا، لچک. مختلف ایپلی کیشنز کے مختلف تقاضے ہوتے ہیں اور اس طرح، آپ کے پاس اپنی ضروریات کے لحاظ سے متعدد اختیارات ہوتے ہیں۔ سویڈن کے جاوا کے ماہر جوناس میلن کا کہنا ہے کہ جب آپ اسے پڑھتے ہیں تو مفید تجریدیں واضح ہوتی ہیں اور کوڈ کی چند لائنوں کے ساتھ آپ بہت کچھ کر سکتے ہیں۔ جاوا کے کن پہلوؤں کو آپ کو سمجھنا سب سے مشکل لگا یا کچھ وقت کے لیے پھنس گئے؟ تبصرے میں اپنے تجربات شیئر کریں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION