JavaRush /جاوا بلاگ /Random-UR /کی ہورسٹ مین اور اس کے 1500 الفاظ اس بارے میں کہ ایک بہتر...

کی ہورسٹ مین اور اس کے 1500 الفاظ اس بارے میں کہ ایک بہتر جاوا پروگرامر کیسے بنیں۔

گروپ میں شائع ہوا۔
امکانات ہیں کہ آپ نے Cay S. Horstmann کا نام پہلے ہی سنا ہوگا ۔ وہ جاوا کی دنیا میں کافی ممتاز شخص ہیں اور ہماری پیاری زبان پر بہت سی کتابوں کے مصنف ہیں۔ ان میں کلاسک کورس "کور جاوا" (روسی زبان میں دو جلدوں والی کتاب "جاوا۔ پروفیشنل لائبریری" میں شائع ہوا ) اور "جاوا فار بے صبری" کے جوہر کے مختصر خلاصے کے ساتھ ایک سیریز (روسی "جاوا ایس ای" میں شائع ہوئی۔ 8. تعارفی کورس" اور "جاوا SE 8. بنیادی کورس" )۔ اسے "جاوا چیمپیئن" کا قابل فخر خطاب حاصل ہے۔ اور اس لنک پر آپ اس کے پرانے اسکول کی ویب سائٹ کو دلچسپ معلومات کے ساتھ حاصل کر سکتے ہیں۔
ایک بہتر جاوا پروگرامر بننے کے بارے میں Kay Horstmann اور اس کے 1500 الفاظ - 1
ہم انفارم آئی ٹی وسائل کے لیے ایک مضمون کا ترجمہ آپ کی توجہ میں لاتے ہیں ، جس میں Kay نے پروگرامرز کو شروع کرنے اور جاری رکھنے کے لیے اپنے پیشے میں بہتر بننے کے لیے کئی تجاویز دی ہیں۔ ایک دن، انفارم آئی ٹی کے ادارتی ڈائریکٹر جینیفر بورٹیل نے مجھ سے ایک لائن چھوڑنے کو کہا کہ ایک بہتر جاوا پروگرامر کیسے بننا ہے۔ اس نے مشورہ دیا کہ میں، Core Java for the Impatient کی مصنفہ، شاید اس کے بارے میں کچھ جانتی ہوں۔ "کوئی آسان نہیں ہے، بس ایک کتاب خرید لو،" میں نے پہلے سوچا۔ لیکن اس جواب نے کام نہیں کیا، کیونکہ مجھے اسے 1500 الفاظ میں فٹ کرنا ہے، اور اس وقت تک ان میں سے صرف 62 ہیں * ( یقیناً مضمون کا ترجمہ کرتے وقت ہم نے الفاظ کی تعداد برقرار رکھنے کی کوشش نہیں کی - تقریباً ترجمہ )۔ مجھے حال ہی میں ایک ڈویلپر دوست کی طرف سے ایک ای میل موصول ہوئی جس سے ایک انٹرویو میں پوچھا گیا کہ درج ذیل کوڈ تھریڈ محفوظ کیوں نہیں ہے:
class ThreadSafeClass extends Thread
{
     private static int count = 0;

     public synchronized static void increment()
     {
         count++;
     }

     public synchronized void decrement()
     {
         count--;
     }
}
میرے دوست نے فیصلہ کیا کہ اس مثال میں موجود کوڈ تھریڈ سیف تھا، اور میں نے اس سے اتفاق کیا، یہ نوٹ کرتے ہوئے کہ staticدوسرے طریقہ میں ایک کلیدی لفظ موجود نہیں تھا، اور ایک بار اسے داخل کرنے کے بعد رسائی کو کلاس آبجیکٹ کے بلٹ ان لاک کے ذریعے کنٹرول کیا جاتا تھا۔ میں نے یہ بھی کہا کہ یہ انٹرویو کا اچھا سوال نہیں ہے کیونکہ اگر آپ کو تھریڈ کاؤنٹر کی ضرورت ہے تو آپ کو استعمال کرنا بہتر ہے AtomicInteger۔ لیکن پھر آدھی رات کو میں بیدار ہوا اور سوچا: اگر یہ لفظ staticکسی وجہ سے چھوڑ دیا جائے تو کیا ہوگا؟ شاید کچھ ڈرپوک انٹرویو لینے والے نے جان بوجھ کر اس مثال کو اس طرح ترتیب دیا ہے کہ امیدواروں کو گمراہ کیا جائے؟ لہذا میں نے اس ڈویلپر کو واپس لکھا جس نے سوال پوچھا اور کہا کہ میں شاید پہلے غلط تھا: ایک متوازی کائنات میں جسے انٹرویو سوالات کہتے ہیں، اس سوال کا جواب یہ ہے: "دوسرے طریقہ میں ایک آبجیکٹ لاک ہوتا ہے۔" اس جواب کے بعد، لڑکے نے پوچھا کہ کیا میں ایک یوٹیوب چینل چلاتا ہوں جہاں میں انٹرویو کے اس قسم کے مسائل سے نمٹنے کا طریقہ سکھاتا ہوں۔ افسوس، میں یہ نہیں کرتا. میں کمپیوٹر سائنس پڑھاتا ہوں اور کتابیں لکھتا ہوں، لیکن میرا بنیادی مقصد بہتر "انٹرویو کے مسئلے کو حل کرنے والے" نہیں بلکہ اپنے طلباء کو بہتر پروگرامر بنانا ہے۔ ایک دفعہ کا ذکر ہے، پیٹر نارویگ ( مصنوعی ذہانت کے شعبے میں امریکی سائنسدان، گوگل کے ریسرچ ڈائریکٹر - تقریباً ٹرانس۔ ) نے اپنے بلاگ پر ایک شاندار مضمون لکھا۔ اس نے دلیل دی کہ جو کتابیں آپ کو 24 گھنٹے یا 21 دنوں میں جاوا سکھانے کا وعدہ کرتی ہیں وہ محض مضحکہ خیز ہیں۔ اس سے اختلاف کرنا مشکل ہے: کسی بھی شعبے میں ماہر بننے میں 10 سال، یا شاید 10,000 گھنٹے لگتے ہیں۔ اور یہ بات مشہور ہے کہ ماہرین معلومات کو نوزائیدہوں سے مختلف طریقے سے پروسیس کرتے ہیں۔ ایک کلاسک تجربے میں، تجربہ کار اور نوآموز شطرنج کے کھلاڑیوں کو چند سیکنڈ کے لیے ٹکڑوں کی ایک مخصوص ترتیب کے ساتھ ایک بساط دکھایا گیا، اور پھر اسے چھپا دیا گیا اور کہا گیا کہ وہ ٹکڑوں کو ویسے ہی ترتیب دیں۔ ابتدائیوں نے کام کو اچھی طرح سے نہیں سنبھالا، لیکن ماہرین کو کوئی پریشانی نہیں ہوئی۔ لیکن صرف ایک اہم شرط کے تحت: ٹکڑوں کی ترتیب حقیقی کھیل کے مطابق ہونی چاہیے ۔ اگر ٹکڑوں کو تصادفی طور پر رکھا گیا تھا، تو ماہرین بورڈ کو دوبارہ بنانے میں نوزائیدہوں سے بہتر نہیں تھے۔
ایک بہتر جاوا پروگرامر بننے کے بارے میں Kay Horstmann اور اس کے 1500 الفاظ - 2
اس لیے میں نے خط سے سوال کا جواب بالکل ویسا ہی دیا۔ میرا پس منظر اصل پروگرامنگ میں ہے، انٹرویو نہیں، اس لیے میں نے فطری طور پر گمشدہ کلیدی لفظ شامل کیا اور "غلط" نتیجہ نکالا۔ میں یہ سوچنا چاہوں گا کہ مجھے یہ بتانے کے بعد بھی ملازمت پر رکھا جائے گا کہ کیا ہوا اور میں اپنے اضافے کے بغیر مثال جیسا کوڈ کیوں نہیں لکھوں گا۔ شاید، اگر اس طرح کے جواب سے ان کی تسلی نہ ہوئی تو میں خود ان کے ساتھ کام نہیں کرنا چاہتا۔
اب، مجھے نہیں لگتا کہ سرٹیفیکیشن امتحانات یا انٹرویوز کا مطالعہ آپ کو ایک بہتر پروگرامر میں بدل دے گا۔ مجھے یہ بھی یقین ہے کہ پروگرامنگ پر بڑی تعداد میں کتابیں خریدنا اور پھر انہیں سرورق سے دوسرے سرورق تک پڑھنا بھی کام نہیں آئے گا (حالانکہ میں، ان کتابوں کے مصنف کے طور پر، اسے تسلیم کرنا پسند نہیں کروں گا!)۔ درحقیقت، ایک بہتر پروگرامر بننے کا ایک بہت اچھا طریقہ یہ ہے کہ زیادہ سے زیادہ سافٹ ویئر بنایا جائے ۔ وقتاً فوقتاً میں اپنی یونیورسٹی میں کمپیوٹر سائنس کا تعارفی کورس پڑھاتا ہوں۔ یہ اب تک کا سب سے مشکل کورس ہے جو میں نے پڑھایا ہے۔ یہ گریجویٹ کورس سے بھی زیادہ مشکل ہے۔ جب میں نے پہلی بار ایک نوجوان پروفیسر کے طور پر کام کرنا شروع کیا، تو میں نے پوری تندہی سے طلباء کو لیکچر دیے جس میں میں نے پروگرامنگ کے مسائل، جیسے loops forاور whileloops کے درمیان فرق کا احاطہ کیا تھا do۔ اس کے بعد میں نے طلباء کو تین ہفتے کے چار پروجیکٹ تفویض کیے تھے۔ اور یہ مضمون تمام یونیورسٹیوں میں شروع سے ہی اسی طرح پڑھایا جاتا رہا ہے۔ میری پہلی کوشش کے بعد، دوسرے سمسٹر کے کورس کے انسٹرکٹر نے شکایت کی کہ میرے زیادہ تر سابق طلباء اپنے پروگرامنگ کے پہلے سمسٹر کے بعد بھی سادہ لوپس کو نہیں سمجھتے تھے۔ اور اس طرح کے نتائج بھی ابتدائے زمانہ سے ہوتے رہے ہیں۔ مضمون "FizzBuzz یا پروگرامر پروگرام کیوں نہیں کر سکتے" یاد رکھیں ؟ جب آپ کوئی غیر ملکی زبان سیکھتے ہیں، تو زیادہ تر کام مشق اور مشق ہوتے ہیں، نظریہ نہیں ہوتے۔ لا شعور میں علم کو "دھکا" دینا انتہائی ضروری ہے۔ اہم موڑ تب آتا ہے جب آپ کو ہر ایک چکر کے بارے میں یا (فرانسیسی کے معاملے میں) ہر فاسد فعل کے بارے میں مزید سوچنے کی ضرورت نہیں ہوتی ہے۔ اگر یہ لمحہ آ گیا ہے، تو آپ اگلے درجے پر جانے کے لیے تیار ہیں۔ اور اس خیال میں کوئی انقلابی چیز نہیں ہے۔
Kay Horstmann اور اس کے 1500 الفاظ اس بارے میں کہ ایک بہتر جاوا پروگرامر کیسے بنیں - 3
ہر چیز کی کلید فوری رائے ہے۔ کچھ ماہر نفسیات کا خیال ہے کہ ہم فوری تاثرات کے ساتھ کمپیوٹر پر مبنی سیکھنے کے ساتھ بہت کچھ کر سکتے ہیں۔ مثال کے طور پر، ایک اور کلاسک تجربے میں، خواہشمند ٹرینی پائلٹوں نے ایک تربیتی سیشن کیا جس میں انہیں آلات کے پینل کو بار بار دیکھنے اور ہوائی جہاز کی حرکت کو بیان کرنے کی ضرورت تھی۔ ایک ہی وقت میں، انہیں فوری رائے موصول ہوئی جس سے یہ ظاہر ہوتا ہے کہ آیا انہوں نے یہ صحیح طریقے سے کیا ہے یا نہیں۔ دو گھنٹے کی تربیت کے بعد انہوں نے تجربہ کار پائلٹس کو پیچھے چھوڑ دیا۔ بلاشبہ، اس کا مطلب یہ نہیں تھا کہ انہیں فوری طور پر حقیقی پرواز پر بھیجا جا سکتا تھا، لیکن اب وہ آلے کے پینل پر متنوع اور متعدد ڈائلز سے گھبرانے والے نہیں تھے۔ لہذا، اگر آپ ابھی جاوا سیکھنا شروع کر رہے ہیں، تو مشق کرنے کے لیے بہت ساری مشقیں کرنا بہترین خیال ہے۔ ویب سائٹس اور آن لائن کورسز کی ایک بڑی تعداد ہے جو خود بخود آپ کے کوڈ کی درستگی کی جانچ کرتی ہے۔ ایک ایسا انتخاب کریں جو gobbledygook کے بجائے حقیقی چیلنجز پیش کرے۔ سب کے بعد، آپ چاہتے ہیں کہ آپ کا لاشعور اس کوڈ میں اچھا ہو جسے آپ عملی طور پر لکھیں گے۔ یہی وجہ ہے کہ میں پروگرامنگ کی مثالوں کا بہت زیادہ شوقین نہیں ہوں جو متضاد حالات کا استعمال کرتی ہیں، جیسے کہ میانو اور چھال کے طریقوں کے ساتھ جانوروں کی کلاسیں۔ کچھ وقت کے بعد، آپ پروگرامنگ کی بنیادی باتوں میں مہارت حاصل کر لیں گے۔ اگلے درجے پر جانے کے لیے، آپ کچھ پروجیکٹس لکھ سکتے ہیں۔ کئی سال پہلے، InformIT پورٹل نے تجربہ کار پروگرامرز سے ایک سوال پوچھا: "ایک پروگرامر کے لیے نئی زبان سیکھنے کا بہترین طریقہ کیا ہے؟" اگر ہم ان کے جوابات کا خلاصہ کرتے ہیں، تو ہم مندرجہ ذیل نتیجہ اخذ کر سکتے ہیں: "اپنے موجودہ پروجیکٹ میں اس زبان کا استعمال کریں۔" لہذا، اس کے بارے میں سوچیں جسے آپ ہمیشہ نافذ کرنا چاہتے ہیں - اور آگے بڑھیں۔ بیس سال پہلے، جب جاوا ابھی بہت چھوٹا تھا،میرے دوست اور کچھ عرصے کے شریک مصنف گیری کارنیل نے مجھے فون کیا اور کہا، "Kay، ہم جاوا پر ایک کتاب لکھنے جا رہے ہیں۔" میرا جواب تھا کہ نہ تو وہ اور نہ ہی میں واقعی اس جاوا کے بارے میں کچھ جانتا ہوں، جس پر اس نے جواب دیا: "تو کیا؟ ہمارے پاس پہلے سے ہی کتاب کا سودا ہے۔" کرنے کو کچھ نہیں. ہمیں جلدی کرنا پڑی کیونکہ کسی اور نے کتاب "24 گھنٹے میں جاوا ڈمی بننا سکھائیں" کی جلد ریلیز کا اعلان کیا تھا ... میرے خیال میں اسے کچھ ایسا ہی کہا گیا تھا ( کی نے کتابوں کی "For Dummies" سیریز کا مذاق اڑایا - "ڈمی کے لیے" لفظ "ڈمی" کا ترجمہ "ڈمی" کے طور پر کیا جا سکتا ہے - مترجم کا نوٹ )۔ ایک نئی زبان سیکھنے کے لیے، میں نے پروجیکٹس کے ساتھ آغاز کیا - ایک پروگرام لکھنا جس نے ریٹائرمنٹ کی منصوبہ بندی کے لیے ایک صارف انٹرفیس بنایا، اور پھر ایک ایسا پروگرام جو موسم کی سائٹ سے منسلک ہو اور موسم کی رپورٹ ڈسپلے کرے۔ اس کے بعد - ایک پروگرام جو ہائی وے پر کاروں کی نقل و حرکت کی نقل کرتا ہے۔ اس وقت، یہ پروگرام صرف حیرت انگیز تھے!java.awtjava.netاور دھاگے ( threads) اور مجھے یہ سیکھنا تھا کہ اصل میں یہ کام کیسے کیا جائے، نہ کہ صرف دستاویزات میں کیا کہا گیا ہے۔ اس وقت یہ بالکل مختلف چیزیں تھیں۔ یہی وجہ ہے کہ کور جاوا [1] ہٹ تھا: یہ ڈمی کے لیے نہیں تھا۔
Kay Horstmann اور اس کے 1500 الفاظ اس بارے میں کہ ایک بہتر جاوا پروگرامر کیسے بنیں - 4
اس وقت جاوا سیکھنا زیادہ مشکل تھا۔ ہمارے پاس Stack Overflow جیسی سائٹس نہیں تھیں ( اور ہمارے پاس JavaRush بھی نہیں تھا - ایڈیٹر کا نوٹ )۔ اس موقع پر، میں آپ کی پروگرامنگ "مہارت" کو بہتر بنانے کے لیے درج ذیل مشورے تیار کرتا ہوں۔ لہذا، جب آپ اپنے منصوبے پر کام کرتے ہیں، تو آپ کہیں نہ کہیں پھنس جانے کے پابند ہوتے ہیں۔ اس صورت میں، ایک خصوصی فورم پر جائیں اور جوابات تلاش کرنے کی کوشش کریں۔ مجھ پر یقین کرو، یہ ایک بہت اچھا خیال ہے . پہلے، آپ ایسے سوالات پوچھیں گے جو پہلے بھی کئی بار پوچھے جا چکے ہیں۔ لیکن جلد ہی آپ علم حاصل کریں گے اور آپ کے سوالات مزید منفرد ہو جائیں گے۔ یہ سیکھنے کا ایک حیرت انگیز طریقہ ہے! یقینا، یہ صرف کوڈ کے ٹکڑے کو کاپی پیسٹ کرنے اور پوچھنے کے بارے میں نہیں ہے: "اب مجھے اس کے ساتھ کیا کرنا چاہئے؟" آپ کو اس کی تہہ تک جانے کی ضرورت ہے، وضاحت کریں کہ آپ پھنسنے سے پہلے مسئلہ کو حل کرنے کے لیے کیا کوششیں کر چکے ہیں۔ ویسے، زیادہ تر معاملات میں، جب میں تحریری طور پر کوئی سوال بناتا ہوں، تو میں خود ہی اس کا جواب تلاش کرتا ہوں اور مجھے صرف اپنے آپ سے یہ کہنا پڑتا ہے: "یہاں مسئلہ کیا ہے، یہ کوئی دماغ نہیں ہے" یہاں تک کہ میں نے سوال بھیجنے سے پہلے ہی . لیکن یہاں تک کہ اگر ایسا نہیں ہوتا ہے... میرا یقین کریں، سوچے سمجھے سوالات سوچے سمجھے جوابات کو راغب کرتے ہیں۔ بس دوسرے لوگوں کے سوچے سمجھے سوالات کے جوابات دے کر سماجی احسان واپس کرنا یاد رکھیں۔ سوالات پوچھنا اور سوچے سمجھے سوالات کا جواب دینا دونوں ہی آپ کو ایک بہتر پروگرامر بناتے ہیں۔ "تو، کتابوں کا کیا ہوگا؟ - تم پوچھو. "کیا وہ واقعی گوگل اور اسٹیک اوور فلو کی بدولت مکمل طور پر اور اٹل متروک ہو چکے ہیں ؟" میں جب بھی کسی نئی ٹیکنالوجی کو نیویگیٹ کرتا ہوں، مجھے یقین ہوتا ہے کہ میں ایک باہمت انسان ہوں اور اکیلے ہی تمام مشکلات پر قابو پا سکتا ہوں۔ لیکن ایک گھنٹہ بے ہوش عذاب ایک گھنٹہ ہوش میں آتا ہے - اور میں ایک کتاب خریدتا ہوں۔ تکنیکی کتابیں ان دنوں ایک شاندار سودا ہیں۔ اگر میں ایک ای بک کے لیے $40 ادا کرتا ہوں اور صرف ایک سوال کا فوری جواب مل جاتا ہے، تو میں نے پہلے ہی اپنی رقم واپس کر دی ہے۔ مجھے اپنے ساتھی مصنفین کو مایوس کرنے سے نفرت ہے، لیکن میں نے شروع سے آخر تک کوئی تکنیکی کتاب نہیں پڑھی۔ میں وہیں سے شروع کرتا ہوں جہاں سے مجھے لگتا ہے کہ میرا مسئلہ اور اس کا حل لکھا گیا ہے، اور میں اس وقت تک پڑھتا ہوں جب تک مجھے یہ سمجھ نہ آئے کہ اسے کیسے حل کیا جائے۔ اس وجہ سے میں فی الحال ایسی کتابیں لکھنے کی کوشش کر رہا ہوں جو اس طرح پڑھی جا سکیں۔ اس نقطہ نظر نے "بے صبروں کے لیے" سیریز کو جنم دیا۔ اور اس وقت مجھے رکنا چاہیے - میں نے 1500 الفاظ کی ادارتی حد سے تجاوز کر لیا ہے۔ میں صرف یہ شامل کرتا ہوں کہ ایک بہتر پروگرامر بننے کے لیے، یہ تسلیم کرتے ہوئے شروع کریں کہ علم کے کئی درجے ہیں۔
  1. سب سے پہلے، بنیادی زبان کے ڈھانچے کو اپنے لاشعور میں "کھینچیں"، یعنی بڑی تعداد میں مشقوں کو حل کرکے ان کے علم کو خود کار طریقے سے لے آئیں۔

  2. جتنی جلدی ممکن ہو حقیقی منصوبوں پر کام شروع کریں جن میں آپ کی دلچسپی ہو۔

  3. پھر ایک کمیونٹی میں شامل ہوں جہاں آپ سوالات پوچھ سکتے اور جواب دے سکتے ہیں۔

  4. ایک بار جب آپ یہ کر لیں گے تو آپ انٹرویوز میں علم اور تجربے کے ساتھ بات کر سکیں گے۔ اور اس سے کوئی فرق نہیں پڑتا کہ آیا آپ متضاد پہیلی کو حل کرتے ہیں۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION