به نام خدا
یادگیری و استفاده از زبانهای برنامهنویسی، در انجام محاسبات ریاضی کمک زیادی میکند. دو زبان برنامهنویسی پرکاربرد در انجام محاسبات ریاضی، پایتون (Python) و سیپلاسپلاس (++C) هستند؛ اما بنده میخواستم برای انجام محاسبات ریاضی، یکی از این دو زبان که سریعتر هستند را انتخاب کنم. برای همین، خودم شخصاً مقایسهای بین سرعت این دو زبان برنامهنویسی انجام دادم و از نتیجۀ این مقایسه، بسیار شگفتزده شدم!
ابتدا، کدی بهزبان برنامهنویسی سیپلاسپلاس نوشتم که شمارندههای طبیعی یک عدد را بهدست میآورد و نمایش میدهد:
#include <iostream>
using namespace std;
int main(){
int n;
cout << "Enter any Number: ";
cin >> n;
int i=1;
while (i <= n){
if (n%i==0){
cout << i << endl;
i++;
}
else{
i++;
}
}
return 0;
}
و بعد دقیقاً همین کد را بهزبان برنامهنویسی پایتون، باز نویسی کردم:
n = int(input("Enter any Number: "))
i = 1
while i <= n:
if n%i == 0:
print(i)
i += 1
else:
i += 1
سپس عدد 300000000 (300 میلیون) را در نظر گرفتم. و بعد در نرمافزار PyCharm (یکی از نرمافزارهای حرفهای برای اجرای کدهای پایتون) کد بالا را اجرا کردم و بعد عدد 300000000 را وارد کردم و بلافاصله تایمر گوشیام را روشن کردم.
تقریباً یک دقیقه و چهل ثانیه (01:40) طول کشید تا پایتون کل شمارندههای عدد 300000000 را محاسبه کند و نمایش دهد.
سپس بهسراغ سیپلاسپلاس رفتم و کدی که بهزبان سیپلاسپلاس نوشتهبودم را در نرمافزار ++Dev-C (یکی از نرمافزارهای ساده و البته حرفهای برای اجرا کردن کدهای سیپلاسپلاس) اجرا کردم و بعد عدد 300000000 را وارد کردم و بلافاصله تایمر گوشیام را روشن کردم.
تنها دو ثانیه (00:02) طول کشید تا سیپلاسپلاس کل شمارندههای عدد 300000000 را محاسبه کند و نمایش دهد!
این یعنی این که مدتزمانی که سیپلاسپلاس صرف محاسبۀ تمام شمارندههای این عدد کردهبود، $ \frac{1}{50} $ مدتزمانی است که پایتون هم همین کار را انجام داده بود!
- اما واقعاً علت این همه تفاوت بین سرعت پایتون و سیپلاسپلاس، چیست؟
پایتون یک زبان سطح بالا و مفسری است. سطح بالا بودن و مفسری بودن یک زبان برنامهنویسی باعث میشود که سرعت آن نسبت بهزبانهای برنامهنویسی دیگر، پائینتر باشد. اما سیپلاسپلاس یک زبان سطح پائین و کامپایلری است. همین موضوع باعث میشود تا سرعت آن نسبت بهپایتون و حتی بعضی از زبانهای برنامهنویسی دیگر، بالاتر باشد؛ در واقع، در زبانهای کامپایلری ابتدا یکبار کدها به صورت کامل ترجمه میگردند و سپس برنامه برای اجرا از روی فایل کامپایل شده اجرا میگردد. اما در زبانهای مفسری کدها به صورت خط به خط تفسیر و اجرا میشوند و این روند در اجراهای بعدی برنامه نیز به همین صورت ادامه مییابد.
پس در نهایت میتوان نتیجه گرفت که پایتون برای کار با اعداد بزرگ و محاسبات سنگین ریاضی، خیلی مناسب نیست؛ زیرا در انجام محاسبات سنگین ریاضی و کار با اعداد بزرگ، واقعاً آهسته است.