منبع اصلی نوشتار زیر در این لینک قرار دارد

C++ or Python

 

CppVsPython

زبان های c++ و Python دو زبان قدرتمند و رایج هستند ! اما شاید انتخاب یک زبان را برای فعالیت های خود کار ساده ای نباشد، ما در اینجا کمی از تفاوت های آن دو را میگوییم شاید شما را در این راه کمک کند :

در مدیریت حافظه C++ جمع آوری زباله ( حذف کردن حافظه هایی که دیگر مورد استفاده قرار نمیگیرند ) وجود ندارد ! همچنین این زبان شما را به استفاده از اشاره گر ها برای دسترسی به حافظه تشویق میکند. زبان c++ به سازماندهی بیشتری برای نحوه ذخیره سازی اطلاعات نیاز دارد که در عین حال کنترل مطلوبی را به شما میدهد که در اغلب موارد لازم نیست.

نوع ها در در زبان c++ به صراحت بیان میشوند، توسط نام محدود و در هنگام کامپایل شدن بررسی میشوند اما در پایتون آن ها با مقدار هایشان محدود و در زمان اجرا بررسی میشوند منظور این است که نوع داده ای در زبان پایتون ساده تر است ! بی خطری و سادگی و عدم اعلان نوع متغییر ها به مردم کمک میکند تا سریعتر حرکت کنند. البته به همین دلیل است که کامپایلر نمیتواند error های منطقی را که توسط کامپایلر c++ قابل شناسایی هستند شناسایی کند! زبان باید در هنگام اجرا متوجه شود نوع این مقدار چیست … این کار باعث کند شدن سرعت اجرای برنامه های Python میشود . البته زبان c++ ذاتا زبان سریعتری است !

برای مثال کتاب خانه های Boost Units به مهندسان و دانشمندان اجازه میدهد تا کد هایشان به گونه ای نوشته شوند تا کامپایر در زمان کامپایل بتواند از نظر آماری برسی کند که محاسبات منطقا به شکل پایدار از واحد ها استفاده میکنند، بدون هیچ گونه سربار اجرایی، که این در Python غیر ممکن است .

از نظر پیچیدگی زبان میتوان گفت c++ به نسبت پیچیده تر از Python است که توجه شما به گفته ای از سایت رسمی Python جلب میکنم :

Python code is typically 3-5 times shorter than equivalent Java code, it is often 5-10 times shorter than equivalent C++ code! Anecdotal evidence suggests that one Python programmer can finish in two months what two C++ programmers can’t complete in a year.

به طور معمول کد در python سه تا پنج برابر کوتاه تر از معادل همان کد در Java هست و حتی ۵-۱۰ برابر کوتاهتر از معادل آن در c++ ! شواهد نشان میدهد که برنامه نویس python میتواند برنامه ای را در دو ماه تمام کند چیزی که ۲ برنامه نویس C++ نمیتوانند در یک سال به انجام برسانند !

برنامه در c++ به شکل صریح تفصیر میشوند ( کامپایل میشوند ) اما در python اینگونه نیست ( در اکثر حالات ) این معمول است که برنامه نویسان python در محیط مترجم کد به برنامه نویسی مشغول میشوند که البته این برای تست و اشکال زدایی سریع عالی است ! کاری که برنامه نویسان c++انجام نمیدهد ( با وجود gdb) .

زبان پایتون به سختی و با ضعف از برنامه های چند وظیفه ای ( multithreading ) پشتیبانی میکند، معماری این زبان به عملگر های ویژه ای برای کاملا بی خطا و صحیح بودن نیاز دارد ( برای مثال برای تغییرات در لیست ) که این منجر به استفاده از محدودیت کلی برای جلوگیری از اجرای دو پردازش در یک زمان در کد های python شده است.

البته زبان c++ ایمن بودن پردازش های همروند را بر عهده ی خوده توسعه دهنده گذاشته که این باعث برنامه نویسی های همروند کارا در این زبان شده.

c++ امکانات خیلی بیشتری برای مدیریت حافظه به توسعه دهنده میدهد، برای مثال ظرف های ژنریک که به توسعه دهده جازه میدهد تا از نوع های داده ای تعریف شده توسط کاربر در ساختمان داده خود استفاده کنند که البته موجب اندکی سربار حافظه شده در مقابل تکنیک ارجا که در python ممکن است، استفاده از تخصیص دهنده حافطه ی کاستوم شده توسط توسعه دهنده و تخصیص حافطه در منطقه ی خاصی از حافظه که منجر به امکان حذف چندین آبجکت با استفاده از یک دستور شده اشاره کرد .

و در آخر زبان c++ زبانی آزاد در نوع دهی است ! این به این معنی است که شما میتوانید یک بخش از حافظه را برای ذخیره سازی نوع خاصی مشخص کنید و سپس با روشی مکارانه آن را عوض کنید تا نوع دیگری را در خود ذخیره کند ! این کار خطرناک است و منجر به حالتی در برنامه شده که دیگر رفتار آن قابل پیشبینی نخواهد بود ! اما اگر بدانید در حال چه کاری هستید میتوانید از این پیاده سازی استفاده کنید تا کد های محلی در زمان اجرا تولید کنید یا به شکل دینامیک ماژول کد ها را بارگذاری کنید ، به شکل مستقیم ساختار فایل را تغییر دهید بدون استخراج جداگانه فیلد های آن چیزی که شما باید در Python انجام دهید، و مقدار زیادی از کاربرد های دیگر .

 

منابع :

programmers.stackexchange.com

stackoverflow.com

python.org

 

Digg This  Reddit This  Stumble Now!  Buzz This  Vote on DZone  Share on Facebook  Bookmark this on Delicious  Kick It on DotNetKicks.com  Shout it  Share on LinkedIn  Bookmark this on Technorati  Post on Twitter  Google Buzz (aka. Google Reader)  



به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد