راکٹ سے روبوٹ تک اور ازگر کا اس سے کیا تعلق ہے؟ GeekBrains سابق طلباء کی کہانی

راکٹ سے روبوٹ تک اور ازگر کا اس سے کیا تعلق ہے؟ GeekBrains سابق طلباء کی کہانی
آج ہم اینڈری ووکولوف کی آئی ٹی میں منتقلی کی کہانی شائع کر رہے ہیں۔ خلا کے لیے اس کے بچپن کے شوق نے ایک بار انھیں MSTU میں راکٹ سائنس کی تعلیم حاصل کی۔ تلخ حقیقت نے مجھے خواب کے بارے میں بھلا دیا، لیکن سب کچھ اور بھی دلچسپ نکلا۔ C++ اور Python کے مطالعہ نے مجھے اتنا ہی دلچسپ کام کرنے کی اجازت دی: روبوٹ کنٹرول سسٹم کی منطق کو پروگرام کرنا۔

شروع

میں خوش قسمت تھا کہ میں اپنے پورے بچپن میں خلا کے بارے میں بڑبڑاتا رہا۔ اس لیے، اسکول کے بعد، مجھے ایک منٹ کے لیے بھی شک نہیں ہوا کہ مجھے کہاں پڑھنا چاہیے، اور میں MSTU میں داخل ہوا۔ Bouman، راکٹ پروپلشن انجینئرنگ کے سیکشن میں. تاہم، خود کورس کی شاخ - خلائی راکٹوں کے پاؤڈر یا مائع انجن - کو بالکل بھی منتخب کرنے کی ضرورت نہیں تھی: 2001 میں، ایک خصوصی فیکلٹی کمیشن اب بھی درخواست دہندگان کے ٹارگٹ گروپس کو تقسیم کرتا تھا۔ میں بارود کی ایک پیالی میں پکڑا گیا۔

اس وقت، "راکٹ بوم" صرف منصوبوں میں موجود تھا؛ انجینئروں نے معمولی تنخواہیں حاصل کیں اور خصوصی بند ڈیزائن بیورو اور تحقیقی اداروں میں کام کیا جس میں عملی طور پر کیریئر اور پیشہ ورانہ ترقی کا کوئی امکان نہیں تھا۔ پھر بھی، روس میں پاؤڈر راکٹ خالصتاً فوجی مصنوعات ہیں۔

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

تمام سافٹ ویئر پروڈکٹس کو خصوصی طور پر خصوصی آرڈر پر اور سیکریسی کمیشن (اب FSTEC کا ایک ڈویژن) کی منظوری سے تیار کیا جاتا ہے۔ وہاں کے ڈویلپر کو لفظی طور پر کوڈ کی ہر لائن کو رجسٹر اور لائسنس دینے کی ضرورت ہے۔ تمام سافٹ ویئر ابتدائی طور پر کام کی سطح پر خفیہ ہوتے ہیں۔ یہ جزوی طور پر وضاحت کرتا ہے کہ اب راکٹ سائنس کے طلباء کو تربیت دینے کے لیے استعمال ہونے والا سافٹ ویئر 90 کی دہائی میں جدید ترین کیوں تیار کیا گیا تھا۔

جب میں نے انسٹی ٹیوٹ سے گریجویشن کیا، میں میکانزم تھیوری کے شعبہ میں کام کرنے میں کامیاب ہو گیا اور C++ میں تعلیمی عمل کا سمیلیٹر تیار کرنا شروع کر دیا، اس لیے میرے پاس موازنہ کے لیے ایک مثال تھی اور میں نفع و نقصان کا وزن کر سکتا تھا۔ انتخاب واضح تھا، اور میں نے آہستہ آہستہ آئی ٹی اور روبوٹکس کی طرف بڑھنا شروع کیا۔ اپلائیڈ میکینکس راکٹ سائنس سے کہیں زیادہ مزے کا تھا: بہت سے حل نہ ہونے والے مسائل، کھلا ماحول، ترقی کی صنعت کی کمی، نقلی سافٹ ویئر کی فوری ضرورت۔ روبوٹکس میں، عام سافٹ ویئر کا ایک غیر منظم فن تعمیر ہے اور پیچیدہ الگورتھم کو بار بار لاگو کرنے کی ضرورت ہے، بشمول فزی منطق اور AI کی شروعات۔ اس لیے، تجرباتی ڈیٹا پر کارروائی کرنے کے لیے اپنے پہلے پروگراموں کے بعد، میں تقریباً کبھی راکٹوں پر واپس نہیں آیا (سوائے اپنے گریجویشن پروجیکٹ کے)۔

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

پڑھائی سے لے کر پروگرامنگ تک

راکٹ سے روبوٹ تک اور ازگر کا اس سے کیا تعلق ہے؟ GeekBrains سابق طلباء کی کہانی
IFTOMM ورلڈ کانگریس میں ریسرچ گروپ کے طلباء کے اراکین کے ساتھ (میں دائیں طرف)

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

اس کے علاوہ، کام زیادہ سے زیادہ بیوروکریٹک کام سے مشابہت رکھتا ہے - رپورٹس، پروگرام، معیارات اور کاغذ کے ٹن۔ ایسے حالات میں، درس کی خوشی کو اس خوشی کی وصولی کی اطلاع دینے سے بدل دیا گیا تھا، اور یہ مشق کرنے والے ماہر کے لیے ناخوشگوار سے زیادہ ہے۔

اور آخر کار میں روبوٹکس کی طرف اس طرح آیا: 2007-2009 میں، پروفیسرز A. Golovin اور N. Umnov کے ساتھ مل کر، ہم نے پہلے سائنسی کاموں کی تیاری شروع کی۔ وہاں مجھے سٹروب فوٹوگرافی سے اشیاء کے راستوں کا تعین کرنے کے لیے الگورتھم استعمال کرنا پڑا۔ اس موضوع سے یہ مشین ویژن، اوپن سی وی اور روبوٹک آپریٹنگ سسٹم کی طرف ایک قدم ہے (حالانکہ اس وقت میں نے اس پیمانے کے بارے میں سوچا بھی نہیں تھا)۔ اس کے بعد، میں نے بالآخر تحقیق میں اپلائیڈ میکینکس اور روبوٹکس پر توجہ مرکوز کی، اور ترقی ایک معاون سرگرمی بن گئی۔

تاہم، روبوٹکس میں نئی ​​نوکری تلاش کرنے کے لیے، میرے پروگرامنگ کے علم کو بہتر اور اس میں اضافہ کرنا ضروری تھا۔ بہر حال، میں نے کبھی بھی خاص طور پر IT کا مطالعہ نہیں کیا، سوائے ایک سال طویل یونیورسٹی کورس (C++ میں آبجیکٹ پاسکل اور بورلینڈ VCL) کے، اور ترقی کے نظریاتی پہلوؤں کے لیے ریاضی پر انحصار کیا۔

پہلے میں نے اپنے آبائی ادارے میں کل وقتی کورسز کے اختیارات پر غور کیا۔ سچ ہے، یہ تیزی سے واضح ہو گیا کہ فاسد نظام الاوقات اور اپنے شیڈول سے باہر اکثر کام (متبادل وغیرہ) کی وجہ سے اس طرح کے مطالعے کو محکمے میں کام کے ساتھ جوڑنا تقریباً ناممکن ہو گا۔ لہذا مجھے آہستہ آہستہ دور سے ادا شدہ کورسز مکمل کرنے کا خیال آیا۔ میں Baumanka میں واقع Mail.ru Technopark ٹریننگ سینٹر کے پروفیسرز کی سفارش پر GeekBrains آیا، اور Python پروگرامر کورس میں داخلہ لیا۔

کورسز میں کسی قسم کی دشواری نہیں ہوئی، صرف ایک مسئلہ یہ تھا کہ مجھے انہیں مسلسل محکمے کے کام، سائنسی کاموں اور تقریبات کے ساتھ جوڑنا پڑتا تھا۔ وقت اتنا تنگ تھا کہ گھر سے باہر زیادہ تر سماجی روابط کو قربان کرنا پڑا (خوش قسمتی سے، عارضی طور پر)۔

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

میرا لیپ ٹاپ ایک Dell Latitude 3470 ہے، اور Logitech K 5.5 BT کی بورڈ کے ساتھ 810 انچ یا اس سے زیادہ کے اخترن والا کوئی بھی اسمارٹ فون ایسا کرے گا۔ عام طور پر، میں ہر کسی کو Logitech پروڈکٹس کی سفارش کرتا ہوں؛ وہ بہت قابل اعتماد ہیں اور استعمال کی بہت سخت شرائط کا مقابلہ کر سکتے ہیں (اور یہ کبھی بھی اشتہار نہیں ہے)۔

راکٹ سے روبوٹ تک اور ازگر کا اس سے کیا تعلق ہے؟ GeekBrains سابق طلباء کی کہانی
کی بورڈ لاجٹیک K810

ازگر اس طرح کے کام کے لیے بہت سازگار ہے - اگر آپ کے پاس ایک اچھا ایڈیٹر ہے۔ ایک اور پروگرامنگ ہیک: ڈیسک ٹاپ یا رن ٹائم ماحول سے ریموٹ کنکشن استعمال کریں۔ میں نے اپنے گھر کے کمپیوٹر پر Django چلانے والے ایک محفوظ ویب سرور کا استعمال کرتے ہوئے کئی کام مکمل کیے ہیں۔ میں نے PyDroid، DroidEdit، Maxima سافٹ ویئر کا استعمال کرتے ہوئے ٹرین سے کام کیا۔

ازگر کیوں؟

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

سب سے آسان مثال: غیر معیاری طاقتور ڈرائیو کے لیے ایک کنٹرول سسٹم موجود ہے، جسے RISC پروسیسر والی ایمبیڈڈ مشین پر C++ میں لاگو کیا گیا ہے۔ انتظام ایک بیرونی مشین پر منحصر API کے ذریعے ہوتا ہے، جو کہ معاونت کرتا ہے، مثال کے طور پر، نیٹ ورک پر سب سسٹم کے درمیان مواصلت۔ اعلی سطح پر، ڈرائیو آپریشن الگورتھم ڈیبگ نہیں ہوتا ہے یا مستقل نہیں ہوتا ہے (کام کے عمل کے لحاظ سے مختلف الگورتھم لوڈ کرنا ضروری ہے)۔

اس طرح کے نظام کو حاصل کرنے کا ایک بہترین طریقہ یہ ہے کہ مشین کے لیے مخصوص C++ سب سسٹم API کو ازگر کی کلاسوں کے سیٹ کی بنیاد کے طور پر استعمال کیا جائے جو کراس پلیٹ فارم انٹرپریٹر پر چلتی ہے۔ اس طرح، اعلیٰ درجے کے ڈویلپر کو ایمبیڈڈ مشین اور اس کے OS کی خصوصیات کو مدنظر نہیں رکھنا پڑے گا؛ وہ صرف Python کی کلاسز کے ساتھ کام کرے گا جو نچلے درجے کے API کے "ریپرز" کے طور پر کام کرتی ہیں۔

مجھے C++ اور Python بائنڈنگ تقریباً شروع سے سیکھنی تھی۔ یہ تیزی سے واضح ہو گیا کہ اعلی سطح پر آبجیکٹ پر مبنی صلاحیتیں نچلی سطح کی نسبت بہت زیادہ اہم تھیں۔ اس کی وجہ سے، ہمیں API کو ڈیزائن کرنے اور لاگو کرنے کے طریقہ کار کو مکمل طور پر تبدیل کرنا پڑا، Python کی سطح پر کلاسز کا انتخاب کرنا پڑا اور C/C++ میں عالمی ڈیٹا کا اشتراک کرنا پڑا۔ کوڈ جنریشن کی عادت ڈالیں: مثال کے طور پر، ROS فریم ورک خود ہی Python میں نام اور اشیاء تیار کرتا ہے، اس لیے آپ کو اپنے انٹرفیس کو ڈیزائن کرتے وقت، خاص طور پر ٹائپنگ میں، زبان کے فرق کو مدنظر رکھنا ہوگا۔

موجودہ میں کام کرنا: ازگر اور روبوٹ کنٹرول منطق

اب میں ماسکو اسٹیٹ ٹیکنیکل یونیورسٹی کے روبوٹکس ریسرچ اینڈ ایجوکیشن سینٹر میں ازگر اور C++ پروگرامر کے طور پر کام کرتا ہوں۔ ہم سرکاری محکموں کے ذریعے شروع کیے گئے تحقیقی منصوبوں اور سافٹ ویئر ٹولز کو نافذ کرتے ہیں: ہم بلٹ ان ٹیکنیکل ویژن سسٹمز اور اعلیٰ سطح کے خودکار کنٹرول الگورتھم کے ساتھ ہیرا پھیری تیار کرتے ہیں جو سسٹمز سے آزاد ہیں۔

فی الحال، میں Python میں روبوٹ کنٹرول سسٹمز کے لیے اعلیٰ سطحی منطق کا پروگرام کرتا ہوں؛ یہ زبان C++، اسمبلر، اور Go میں لکھے گئے انتہائی بہتر ماڈیولز کو آپس میں جوڑتی ہے۔

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

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

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

ایسے کام کے لیے کس علم کی ضرورت ہے؟

C++ ٹیمپلیٹ زبان اور Python کی آبجیکٹ پر مبنی صلاحیتوں کا مطالعہ کرنا لازمی ہوگا۔ APIs کو ڈیزائن اور دستاویز کرنے کی صلاحیت تقریباً ایک ناقابل تبدیلی مہارت ہے۔ Boost::Python جیسی خصوصی لائبریریوں کی صلاحیتوں کو تلاش کرنا اچھا خیال ہوگا۔ جو لوگ کم درجے کے سافٹ ویئر کے ساتھ کام کرتے ہیں انہیں یقینی طور پر ملٹی تھریڈنگ (کرنل لیول پر) اور لینکس/UNIX/QNX سسٹم کالز سے نمٹنا پڑے گا۔ روبوٹکس کے اصولوں کے بارے میں اپنی سمجھ کو بہتر بنانے کے لیے، روبوٹک آپریٹنگ سسٹم کے فریم ورک سے خود کو واقف کرانا بہت مفید ہے۔

میں کوشش کرتا ہوں کہ کم از کم ایک مرتب شدہ اور ایک تشریح شدہ پروگرامنگ لینگویج ہو جو ترقی پذیر اور مانگ میں ہو۔ انجینئرنگ میں کام کرنے کے لیے یہ ایک جیتنے والی حکمت عملی ہے، جہاں انتہائی ماہر (پڑھیں: غیر معمولی) الگورتھم تیار کرنے اور انہیں مرتب کرنے والی زبانوں میں لاگو کرنے کی مسلسل ضرورت ہے۔ اس طرح کے سافٹ ویئر کے لیے ڈیٹا تیار کرنے کا کام تشریح شدہ زبانوں کا استعمال کرتے ہوئے حل کرنے کے لیے بہت زیادہ خوشگوار ہے۔ شروع میں، میرے سیٹ میں C++، پاسکل اور BASIC شامل تھے، بعد میں PHP اور BASH شامل کیے گئے۔

طلباء کو پڑھانے میں ترقیاتی ٹولز کس طرح کارآمد ہو سکتے ہیں۔

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

2016 سے، میں نے اعلیٰ تعلیم میں تدریسی مشق میں ترقیاتی ٹولز - پروگرامنگ لینگوئجز، IDEs، دستاویزی جنریٹرز، ورژن کنٹرول سسٹمز - کو متعارف کروانے کا ایک بڑا تجربہ شروع کیا۔ اب ہم ایسے نتائج حاصل کرنے میں کامیاب ہو گئے ہیں جن کو معیاری طور پر عام کیا جا سکتا ہے۔

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

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

سائنسی کام

ابتدائی کام
گھوڑے کی چال کے نفاذ کی مثال کا استعمال کرتے ہوئے چار ٹانگوں والے چلنے کے نظام کو ڈیزائن کرتے وقت چال کی منصوبہ بندی کے مسائل (2010/XNUMX/XNUMX)

حرکیات اور گھوڑے کی اگلی ٹانگ کے معاون عنصر کی لوڈنگ کے معاملے پر چار ٹانگوں والے موور کے ورکنگ سائیکل کے اجزاء کے طور پر سپورٹ تک پہنچنے کے مرحلے میں (2012/XNUMX/XNUMX)

آخری سے
تدریسی طریقہ کار اور مشین تھیوری کے لیے 3D گیئر مینوفیکچرنگ سمولیشن ایپلی کیشن (2019/XNUMX/XNUMX)

ساختی رکاوٹوں کو پہچاننے کا طریقہ اور امدادی اشیاء کی تلاش میں اس کا اطلاق (2018/XNUMX/XNUMX)

سائنسی حوالہ جات کے ڈیٹا بیس کے ذریعہ ترتیب کردہ دیگر کام میرے پروفائل میں دیکھے جا سکتے ہیں۔ ResearchGate. زیادہ تر مضامین مشینوں کی نقل و حرکت کے لیے وقف ہیں، انجینئرنگ تدریس اور تعلیمی سافٹ ویئر پر کام موجود ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں