شنبه ۱۱ فروردین ۱۴۰۳   

برنامه نویسی

Home > بلاگ > آموزش شطرنج > برنامه نویسی
     

بهترین زبان برنامه نویسی برای رباتیک چیست ؟

 

الکس اون هیل
Alex Owen-Hill
کارشناس تخصصی و مشاور مرکز تحقیقات اتمی اتحادیه اروپا CERN است.

در این مقاله، او توضیح کاملی در مورد انتخاب بهترین زبان برنامه‌نویسی در حوزه رباتیک ارائه داده است. این مقاله در مارس ۲۰۱۶ به رشته تحریر درآمده و توسط خانم زهره نورانی، ترجمه‌ شده است.

این سؤالی است که اکثر افراد مبتدی در رباتیک در طول مدت فعالیت خود، دست‌کم یک‌بار از خود می‌پرسند. متأسفانه این سؤال، پاسخ ساده‌ای ندارد. در این مقاله ما به بررسی ۱۰ زبان محبوب برنامه‌نویسی که در رباتیک کاربرد دارند، خواهیم پرداخت و در مورد نقاط ضعف و قدرت این زبان‌ها و چرایی استفاده یا عدم استفاده از آن‌ها، بحث خواهیم کرد.
در حقیقت این سؤال، یک چالش بسیار به‌جا و منطقی است. چراکه صرف زمان و تلاش زیاد برای آموختن یک‌زبان برنامه‌نویسی جدید، در صورت بلااستفاده بودن کاری عبث و بیهوده است. اگر شما به‌تازگی به دنیای رباتیک وارد شده‌اید، حتماً قصد دارید به یادگیری زبان‌هایی بپردازید که بعدها به کمک شما بیایند و مفید واقع شوند.
متأسفانه شما هرگز در جواب سؤال ” بهترین زبان برنامه‌نویسی چیست؟” پاسخ ساده‌ای دریافت نخواهید کرد. حتی اگر سؤال خود را در اتاقی پر از کارشناسان حرفه‌ای رباتیک یا در فروم‌هایی مانند Stack Overflow، Quora، Trossen، Reddit یا Research Gate مطرح کنید.
مهندسان الکترونیک پاسخ متفاوتی نسبت به پاسخ تکنسین‌های رباتیک صنعتی خواهند داد. برنامه‌نویسان کامپیوتر نیز دید خاصی به این مسئله‌ دارند و هرکسی با آنچه به‌عنوان بهترین زبان برنامه‌نویسی معرفی شود، مخالف خواهد بود. در آخر، پاسخی که اکثر افراد با آن موافق‌اند این است که “بستگی دارد.” این ‌یک پاسخ نسبتاً بی‌فایده برای مبتدی رباتیک است که نمی‌داند کدام زبان را باید اول بیاموزد. اگرچه این واقع‌بینانه‌ترین پاسخ ممکن است چراکه بستگی به نرم‌افزاری که قصد توسعه آن را دارید یا سیستمی که استفاده می‌کنید دارد.
کدام زبان برنامه‌نویسی را باید اول بیاموزم؟
احتمالاً بهتر است سؤال خود را این‌گونه مطرح کنید که: کدام زبان برنامه‌نویسی؛ همانی است که توصیه می‌شود شما اول بیاموزید؟
با پرسیدن این سؤال کماکان نظرات متفاوتی دریافت می‌کنید، اما اکثر کارشناسان رباتیک در زبان‌های کلیدی باهم به توافق رسیده‌اند. همان‌طور که پیش‌تر در مورد مهارت‌های ضروری در رباتیک بحث کردیم، مهم‌ترین نکته برای سازنده‌ی ربات پرورش ذهنیت برنامه‌نویسی است که بسیار پراهمیت‌تر از حرفه‌ای بودن در یک‌زبان برنامه‌نویسی است. در بسیاری از روش‌ها این مسئله که کدام زبان برنامه‌نویسی را اول باید آموخت، اهمیتی ندارد. هر زبانی که بیاموزید ذهنیت برنامه‌نویسی شما را تقویت کرده و آموختن زبان‌های جدید موردنیاز را برای شما ساده‌تر می‌کند.
۱۰ زبان برنامه‌نویسی برتر در رباتیک
بیش از ۱۵۰۰ زبان برنامه‌نویسی در جهان وجود دارند که برای یادگیری، تعداد بسیار زیادی است. در اینجا ۱۰ زبان برنامه‌نویسی محبوب در رباتیک آورده شده است. اگر زبان برنامه‌نویسی موردعلاقه‌ی شما در این لیست وجود ندارد، لطفاً آن را به دیگران معرفی کنید. هر زبانی مزیت‌های خاص خود را در رباتیک دارد. اسامی به ترتیب کم ارزش ترین به پر ارزش‌ترین ذکر شده اند.
۱۰) بیسیک/پاسکال
بیسیک و پاسکال دوتا از اولین زبانهای برنامه نویسی بودند که من تاکنون یاد گرفته ام. اگرچه این تنها دلیلی نیست که من آنها را اینجا ذکر کرده‌ام. آنها پایه و اساس تعداد زیادی از زبان‌های برنامه نویسی رباتیک صنعتی هستند که درادامه آمده است. زبان بیسیک برای افراد تازه وارد طراحی شده است. (که مخفف Beginners All-Purpose Symbolic Instruction Code
به معنی کدهای دستوالعمل سمبلیک چند منظوره برای مبتدیان، است)؛ که آن را به گزینه‌ی مناسبی جهت انتخاب شدن به عنوان اولین زبان برنامه نویسی برای آموختن تبدیل می‌کند.
زبان پاسکال برای تشویق برنامه‌های خوب و معرفی ساختارهایی نظیر اشاره‌گرها طراحی شد؛ که از زبان بیسیک به عنوان پله جهت رشد به سمت یک زبان برنامه نویسی پیچیده‌تر بهره گرفته است. امروزه هردو این زبان‌ها کمی برای استفاده‌ی روزمره، از رده خارج شده‌اند. اگرچه آموختن آنها در صورتی که قصد دارید برنامه های سطح پایین بنویسید یا می‌خواهید با دیگر زبانهای برنامه نویسی صنعتی آشنا شوید، می‌تواند مفید باشد.
۹) زبان‌های ربات صنعتی:
هر تولیدکننده‌ی ربات یک ‌زبان برنامه‌نویسی مختص به خود را گسترش داده است که یکی از مشکلات رباتیک صنعتی است. شما می‌توانید با یادگیری زبان پاسکال با بسیاری از این زبان‌ها آَشنا شوید. اگرچه شما هر بار که کار با یک ربات جدید را شروع می‌کنید باید یک‌زبان جدید بیاموزید.
کمپانی ABB از زبان RAPID استفاده می‌کند.Kuka از KRL (Kuka Robot Language). Comau از PDL2، Yaskawa از INFORM و Kawasaki ازAS. درحالی‌که Fanuc robots از Karel، Stäubli robots ازVAL3 و Universal Robots از URScript استفاده می‌کنند.
در سال‌های اخیر، مواردی همچون ROS Industrial شروع به فراهم کردن گزینه‌های استاندارد برای برنامه نویسان کرده‌اند. اگرچه اگر شما یک تکنسین هستید هنوز هم احتمال می‌رود که از زبان برنامه‌نویسی تولیدکننده‌ی ربات استفاده کنید.
۸) LISP
LISP دومین زبان برنامه‌نویسی قدیمی در جهان است. (فورترن با اختلاف یک سال، قدیمی‌تر است). این زبان به گستردگی دیگر زبان‌های این لیست مورد استفاده قرار نمی‌گیرد، اگرچه این زبان هنوز از اهمیت نسبتاً خوبی در برنامه‌نویسی هوش مصنوعی برخوردار است. بخش‌هایی از ROS در LISP نوشته‌ شده‌اند با این‌حال برای استفاده از ROS نیازی به یادگیری LISP نیست.
۷)HDL‌ها (زبان‌های سخت‌افزاری)
زبان‌های سخت‌افزاری عمدتاً یک روش برنامه‌نویسی در حوزه الکترونیک هستند. این زبان‌ها تقریباً برای بعضی از طراحان رباتیک آشنا هستند چراکه در برنامه‌نویسی FPGA مورد استفاده قرار می‌گیرند. FPGA به شما اجازه می‌دهد سخت‌افزارهای الکترونیکی را بدون دست‌کاری در ساختار چیپ توسعه دهید؛ که یک آپشن ساده و سریع برای بعضی از پروژه‌هاست. اگر شما نمونه‌ی الکترونیکی تهیه نمی‌کنید بنابراین هرگز از HDLS استفاده نخواهید کرد. بااین‌حال باید بدانید این زبان وجود دارد و با دیگر زبان‌های برنامه‌نویسی فرق می‎کند.
یک نکته اساسی در مورد این زبان این است که تمامی عملیات به‌صورت موازی انجام می‌شود، برخلاف زبان‌های مبتنی بر پروسسور که عملیات در آن به‌توالی صورت می‌گیرد.
۶) اسمبلی
اسمبلی به شما این امکان را می‌دهد که در سطح ۰ و ۱ برنامه بنویسید. این روش کم‌وبیش، برنامه‌نویسی در پایین‌ترین حد است. در سال‌های اخیر، در بیشتر پروژه‌های سطح پایین الکترونیک از زبان اسمبلی استفاده می‌شده است.
با ظهور آردوینو و میکرو کنترلرهای دیگر، شما می‌توانید به‌راحتی در این سطح به زبان C و C++ برنامه بنویسید که به این معنی است که از اهمیت اسمبلی در رباتیک کاسته شده است.
۵) متلب
متلب و دیگر برنامه‌های متن‌باز وابسته به آن مانند “اکتاو ” جهت آنالیز اطلاعات و گسترش دادن سیستم‌های کنترلی، از سوی بعضی مهندسان رباتیک بسیار محبوب واقع ‌شده‌اند. همچنین یک جعبه ‌ابزار رباتیک در متلب وجود دارد که بسیار طرفدار دارد. من افرادی را می‌شناسم که کل سیستم رباتیک را تنها با متلب گسترش داده‌اند. اگر شما قصد آنالیز اطلاعات، تهیه نمودارهای پیشرفته یا پیاده‌سازی سیستم کنترلی دارید، احتمالاً بخواهید متلب را بیاموزید.
۴) سی شارپ/ دات نت
C# یک‌زبان برنامه‌نویسی مختص مایکروسافت است. من اینجا اسم این دو زبان را تا حد زیادی به دلیل استودیو گسترش رباتیک مایکروسافت می‌آورم؛ که از آن به‌عنوان زبان اولیه استفاده می‌کند. اگر شما قصد استفاده از این سیستم را دارید احتمالاً باید از C# استفاده کنید. اگرچه یادگیری C و C++ در ابتدا می‌تواند گزینه‌ی خوبی برای گسترش طولانی‌مدت مهارت‌های کد نویسی شما باشد.
به‌عنوان یک مهندس الکترونیک من همیشه شگفت‌زده می‌شوم از اینکه در بعضی مواقع به دانشجویان علوم کامپیوتر زبان جاوا به‌عنوان اولین زبان آموزش داده می‌شود. جاوا کاربرد اساسی حافظه را از دید برنامه‌نویس پنهان می‌کند که برنامه‌نویسی را نسبت به مثلاً زبان C ساده‌تر می‌کند ولی به این معنی است که شما دید و فهم کمتری ازآنچه با کدهای شما انجام می‌شود، خواهید داشت.
۳) JAVA
اگر شما با دید علوم کامپیوتر وارد رباتیک شدید (که با توجه به تحقیقات اکثراً این‌گونه است) احتمالاً جاوا را یاد گرفته‌اید؛ مانند C# و متلب، جاوا یک‌زبان توصیفی است به این معنی که به کدهای ماشین کامپایل نمی‌شود. می‌توان گفت ماشین مجازی جاوا کدها را در زمان اجرا، تفسیر می‎کند. تئوری استفاده از جاوا این است که با ماشین مجازی جاوا، شما می‌توانید از یک کد یکسان در ماشین‌های متفاوتی استفاده کنید. در عمل این همیشه کارایی ندارد و بعضی‌اوقات باعث می‌شود کدها به‌آرامی اجرا شوند. اگرچه جاوا در بخش‌هایی از رباتیک بسیار محبوب است بنابراین ممکن است شما به آن نیاز داشته باشید.
۲) پایتون
پایتون در سال‌های اخیر به‌خصوص در رباتیک تجدید حیات یافته است؛ که یکی از دلایل آن احتمالاً این است که پایتون (و C++) دو زبان مهمی هستند که در ROS استفاده‌شده‌اند؛ مانند جاوا این‌یک زبان تفسیری است. برخلاف جاوا اولین تمرکز این زبان روی ساده‌سازی کاربرد است. بسیاری بر این عقیده‌اند که پایتون به این هدف خود دست‌یافته است. پایتون بسیاری از چیزهای عادی که در برنامه‌نویسی وقت‌گیر هستند را باطل می‌کند؛ مانند تعریف کردن انواع متغیرها. همچنین تعداد زیادی کتابخانه‌ی رایگان برای آن وجود دارد بنابراین نیازی نیست هنگام پیاده‌سازی یک عملیات پایه، چیزی را دوباره به وجود آورید.
و به دلیل پیوستگی ساده‌ی این زبان با کدهای C/C++ می‌توان بخش‌های سنگین برنامه را در این زبان‌ها پیاده‌سازی کنید تا نتیجه‌ی خوبی به دست آید. همان‌طور که بیشتر مهندسان الکترونیک شروع به حمایت از پایتون کرده‌اند احتمال می‌رود در رباتیک نیز بیشتر شاهد استفاده از این زبان باشیم.

۱)C /C++
بالاخره به زبان اول برنامه‌نویسی رباتیک رسیدیم. بسیاری موافق‌اند که C و C++ نقطه‌ی شروع مناسبی برای مبتدیان رباتیک هستند. چرا؟ چون بسیاری از کتابخانه‌های سخت‌افزاری از این زبان استفاده می‌کنند. آن‌ها تقابل و ارتباط با سخت‌افزارهای سطح پایین را ممکن می‌سازند، عملکرد در زمان واقعی را ممکن می‌سازند و زبان‌های کاملی هستند. امروزه، شما احتمالاً از C++ بیش از C استفاده می‌کنید چون کاربرد بیشتری دارد. C++ در حقیقت شکل گسترش‌یافته‌ی C است. بهتر است ابتدا حداقل کمی از زبان C را یاد بگیرید بنابراین شما قادر خواهید بود وقتی یک کتابخانه‌ی سخت‌افزاری که به زبان C نوشته‌شده است را تشخیص دهید.
استفاده از Cو C++ به‌سادگی پایتون یا متلب نیست. برای پیاده‌سازی یک عملکرد در این زبان، نسبتاً زمان بیشتری باید صرف کرد و کدهای بیشتری نیز نوشته می‌شوند. با این‌حال چون رباتیک بسیار به عملکرد در زمان واقعی وابسته است، Cو C++ احتمالاً نزدیک‌ترین گزینه به “یک‌زبان برجسته” است که در رباتیک وجود دارد.
به چه ترتیبی باید آن‌ها را آموخت؟
فقط به این خاطر که من این ۱۰ زبان را اینجا لیست کرده‌ام شما ملزم به یادگیری همه‌ی آن‌ها یا اصلاً هیچ‌کدام از آن‌ها نیستید. مهم‌ترین نکته پیدا کردن زبانی است که به شما حس طبیعی بدهد و به سخت‌افزار رباتیک شما بخورد. شما به زبانی نیاز دارید که به کمک آن بتوانید برنامه را سریع و ساده گسترش دهید، بنابراین شما قادر خواهید بود بیشتر روی عمل گسترش تمرکز کنید.
به همین دلیل من یادگیری پایتون را به‌عنوان اولین زبان پیشنهاد می‌کنم. این فقط پیشنهاد و نظر شخصی من است. اگر زبان دیگری به نظر شما منطقی‌تر می‌آید آن را بیاموزید. اگرچه پایتون به دلیل کتابخانه‌های زیادش که به‌راحتی در دسترس هستند، برنامه‌نویسی را برای یادگیری بسیار ساده کرده و زبان قوی‌ای است.
من برنامه نویسان (باتجربه ) زیادی را می‌شناسم که پایتون را دریکی دو روز یاد گرفته‌اند و به‌سرعت از آن در اکثر نیازهای برنامه‌نویسی خود استفاده کرده‌اند. یکی از آن‌ها می‌گوید” من قادرم با همان سرعتی که تایپ می‌کنم، کدهای کاربردی زیادی در پایتون خلق کنم.” بعدازاینکه در پایتون مهارت پیدا کردید من شخصاً پیشنهاد می‌کنم زبان C را پس از C++ یاد بگیرید.شما این زبان را برای ارتباط با اکثر درایورهای سخت‌افزاری در رباتیک نیاز خواهید داشت.

 

اضافه کردن دیدگاه

Designed BY Separook

WordPress Themes