معایب متلب (Disadvantages of MATLAB)
متلب با همهی مزیتهایی که دارد، دو عیب اصلی دارد: سرعت و هزینه.
۱. سرعت اجرای کمتر
متلب یک زبان تفسیری (Interpreted) است؛ بنابراین ممکن است کندتر از زبانهای کامپایلشده (Compiled) مثل C یا Fortran اجرا شود. در زبان کامپایلشده، کل برنامه قبل از اجرا به کد ماشین تبدیل میشود، اما در زبان تفسیری دستورها همزمان با اجرا خوانده و اجرا میشوند.
خوشبختانه میشود این مشکل را کم کرد:
- ساختاردهی درست برنامه: برنامه را طوری بنویسید که از کد برداریشده (Vectorized Code) بیشترین بهره را ببرد. یعنی بهجای حلقههای طولانی، عملیات را مستقیم روی کل آرایهها انجام دهید. (در فصل ۵ بهطور کامل بررسی میکنیم.)
- استفاده از کامپایلر JIT: این کامپایلر بخشهایی از کد را همزمان با اجرا کامپایل میکند تا سرعت بالا برود.
برای اینکه تفاوت را حس کنید، این دو روش برای محاسبهی مربع اعداد ۱ تا ۱۰۰۰۰ هستند. روش دوم (برداری) معمولاً سریعتر و کوتاهتر است:
% روش اول: با حلقه
x = 1:10000;
y = zeros(size(x));
for k = 1:length(x)
y(k) = x(k)^2;
end
% روش دوم: برداریشده
y = x.^2;
فعلاً نگران جزئیات این کدها نباشید؛ در فصلهای بعد با for، zeros و عملگر .^ آشنا میشوید.
۲. هزینه
نسخهی کامل متلب ۵ تا ۱۰ برابر گرانتر از یک کامپایلر معمولی C یا Fortran است. این هزینهی نسبتاً بالا برای شرکتها و کسبوکارها توجیهپذیر است، چون زمانی که مهندس یا دانشمند برای ساخت یک برنامهی کارآمد صرف میکند بهمراتب کمتر میشود؛ پس از نظر اقتصادی مقرونبهصرفه است. اما برای بیشتر افراد حقیقی خرید آن گران است.
برای دانشجویان یک نسخهی دانشجویی (Student Edition) ارزانتر وجود دارد که ابزار عالیای برای یادگیری زبان است و در اصل با نسخهی کامل یکی است.
خلاصه
- عیب اول: تفسیری بودن و در نتیجه سرعت کمتر نسبت به زبانهای کامپایلشده. با کد برداریشده و کامپایلر JIT قابلجبران است.
- عیب دوم: هزینهی بالا (۵ تا ۱۰ برابر کامپایلر C/Fortran). برای شرکتها بهصرفه است و برای دانشجویان نسخهی دانشجویی وجود دارد.
