متلب (Matlab) چیست و چرا؟

هر کسی که وارد دنیای برنامه‌نویسی یا وارد دنیای دانشگاه و محیط آکادمیک می‌شود، خواه یا ناخواه اسم متلب (MATLAB) به گوشش می‌خورد. اما واقعنِ واقعن متلب چیست و به چه دردی می‌خورد؟

در این متلب تلاش شده تا به علل استفاده از متلب و مقایسه‌ی آن با سایر زبان‌ها و محیط‌ها اشاره شود.

عکس از MatlabTips
عکس از MatlabTips

ویکی گفته:

متلب (به انگلیسی: MATLAB) یک محیط نرم‌افزاری برای انجام محاسبات عددی و یک زبان برنامه‌نویسی نسل چهارم است. واژهٔ متلب هم به معنی محیط محاسبات رقمی و هم به معنی خود زبان برنامه‌نویسی مربوطه است که از ترکیب دو واژهٔ Matrix (ماتریس) و Laboratory (آزمایشگاه) ایجاد شده‌است. این نام حاکی از رویکرد ماتریس محور برنامه است، که در آن حتی اعداد منفرد هم به عنوان ماتریس در نظر گرفته می‌شوند.

تصور عمومی و اشتباهی که از متلب وجود دارد، این است که متلب صرفن یک ماشین حساب خیلی بزرگ است و برای محاسبات خیلی پیچیده از آن استفاده می‌شود. متلب صرفن یک ماشین حساب نیست، بلکه یک محیط برنامه‌نویسی است. متلب با سی و سی پلاس پلاس نوشته شده ولی این بدان معنا نیست که برای کار کردن با متلب باید این زبان‌ها را بلد باشید، متلب زبان برنامه‌نویسی مخصوص خودش را دارد. زبان متلب سطح بالا است بدان معنا که به زبان انسان نزدیک‌تر است و خیلی راحت‌تر می‌توانید آن را یاد گرفته و به کار ببرید. شما تنها در محیط برنامه‌(IDE)ی متلب می‌توانید به زبان متلب کد بنویسید و نمی‌توان از آن در سایر محیط‌ها مثل VS CODE یا Atom استفاده کرد.

متلب (بر خلاف پایتون) آزاد (Open Source) نیست و برای تهیه‌ی آن باید هزینه‌ی نسبتن سنگینی بپردازید. (البته در بلاد کفر، ما در ایران کپی رایت نداریم!) با این حال متلب به صورت بسیار گسترده در دانشگاه‌ها و محافل علمی و حتی در شرکت‌های بزرگ (مانند سامسونگ و اپل) استفاده می‌شود. اما چرا؟

کتاب‌خانه‌های گوناگون با توسعه‌ی پایدار

متلب کتاب‌خانه‌های بسیاری در موضوعات مختلف دارد. برای مثال برای هوش مصنوعی (یادگیری ماشینی)، پردازش تصویر، پردازش سیگنال، مخابرات، حل دستگاه معادلات، حل معادلات دیفرانسیل جزئی (PDE)، کنترل و بسیاری از علوم دیگر کتاب‌خانه مخصوص خود را دارد. شما می‌توانید علاوه‌بر این کتاب‌خانه‌ها (که در متلب APP نامیده‌ می‌شوند) ، افزونه‌هایی تحت عنوان Add-ones را هم نصب کنید. همچنین می‌توانید با نصب Hardware Support Package، با استفاده از متلب برای ابزار‌هایی مانند Arduino یا Raspberry Pi برنامه بنویسید!

از سوی دیگر، نرم‌افزار متلب بخشی تحت عنوان Simulink دارد که کار مدل‌سازی و شبیه‌سازی سیستم‌های مختلف (در زمینه‌های مختلف، مانند کنترل، الکترونیک، هوافضا و...) را انجام می‌دهد. در لینک زیر می‌توانید لیستی از تمامی appها و ابزار‌های متلب را مشاهده کنید. (این لیست صرفن محصولات خود شرکت Mathworks را نمایش می‌دهد نه Add-ones را.)

https://www.mathworks.com/products.html?s_tid=gn_ps

همانطور که اشاره شد متلب آزاد یا اوپن سورس نیست و جامعه‌ای بسیار محدود ولی حرفه‌ای آن را توسعه می‌دهند. به همین علت، برنامه‌هایی که با متلب نوشته می‌شوند نسبت‌ به برنامه‌هایی که به زبان‌های دیگر (مانند پایتون) نوشته می‌شوند پایدارترند.

متلب برای فست‌پروتوتایپینگ بسیار کاربردی است.

همان‌طور که در بالا اشاره شد، زبان برنامه‌نویسی متلب (همانند پایتون) سطح بالا بوده و به زبان انسان نزدیک است، بدین جهت برای اجرای سریع ایده‌ها و تولید نمونه اولیه بسیار مناسب است. معمولن زبان‌هایی که سطح بالا هستند در اجرا بهینه نیستند، بدین معنا که در مصرف منابع بهینه نیستند. (دقیقن به همین علت است که ما هنوز از فورترن و سی پلاس پلاس استفاده می‌کنیم!). این مشکل برای متلب هم صدق می‌کند ولی با این حال کاربرد گسترده‌ای در صنعت دارد. برای مثال برنامه دستگاه‌های MRI با متلب نوشته می‌شود. جالب است بدانید که می‌توانید از کد متلب خروجی C و C++ بگیرید!

https://www.mathworks.com/products/matlab-coder.html


محیط توسعه‌ی پیشرفته

بدون شک محیط برنامه‌نویسی متلب یکی از پیشرفته‌ترین محیط‌های برنامه‌نویسی است. امکانات کاربردی زیادی در اجرای کد و دیباگ کردن و همچنین ترسیم نمودار و ... در نرم‌افزار متلب تعبیه شده.

مستندات فوق‌العاده قوی

تمامی کتاب‌خانه‌ها، توابع و دستورات به صورت کاملن دقیق و اغلب با کدِ نمونه در بخش مستندات برای شما تعبیه شده‌اند و شما اغلب اوقات واقعن نیازی به حضرت Google و Stackoverflow ندارید!



نکات ضعف متلب:

  • (برای بار صدم!) هزینه‌ی متلب! اگر بخواهید لایسنس کامل متلب (همراه با سیمیولینک) را خریداری کنید باید رقمی در حدود 50.000 دلار هزینه کنید!
  • متلب رم زیادی را نسبت به رقبا مصرف می‌کند.
  • متلب برای کاربرد‌های علمی و مهندسی فوق‌العاده است ولی برای کار‌هایی مانند توسعه‌ی وب مناسب نیست.



به دوستانی که علاقه‌مند به یادگیری متلب‌اند، جزوه‌ی میثم پور گنجی‌ِ عزیز با نام «الفبای متلب» رو به شدت توصیه‌ می‌کنم. (ولی جای شما باشم از مستندات خود متلب یاد می‌گیرم متلب رو.)

https://virgool.io/@meysampg/%D8%AC%D8%B2%D9%88%D9%87%DB%8C-%D8%A2%D9%85%D9%88%D8%B2%D8%B4%DB%8C-%D9%85%D8%AA%D9%84%D8%A8-fz6s91wym6xv

تلاش بر این بود تا این مطلب کوتاه باشد تا دوستانی که علاقه‌مند به مطالعه‌ی طولانی نیستند (بزرگ‌ترین نمونه‌اش خودم!) زیاد اذیت نشوند! اگر جایی خطایی دیدید، ممنون می‌شوم از طریق نظرات با من در میان بگذارید! از وقتی که گذاشتید ممنونم! ♥