PDA

View Full Version : گفتگو: جابجایی از سی شارپ به سی پلاس



winner1
جمعه 21 اسفند 1394, 14:00 عصر
سلام دوستان یه تاپیکی همینجا دیدم و کمی فکر من رو مشغول کرد و شاید بگم جرقه ای تو ذهن من خورد واسه رفتن به سمت سی پلاس پلاس البته وب رو حتما و حتما از ام وی سی استفاده میکنم حالا میخوام نظراتتون رو بدونم ممنون لطفا تو گفتگو شرکت کنین خیلی از دوستان مثل من هستن
و چنتا سوال :
1- اینده کاری سی پلاس ببه چه شکلیه
2- بنظر میرسه یه مقدار پراکندگی در کتابخانه های سی وجود داره ما واسه شروع باید از چه ابزاری برای تولید استفاده کنیم؟

درکل این تاپیک رو زدم تا نظرات رو بدونم در هر بعدی و دوستان استفاده کنن ممنون از همگی

khokhan
جمعه 21 اسفند 1394, 15:17 عصر
درکل این تاپیک رو زدم تا نظرات رو بدونم در هر بعدی و دوستان استفاده کنن ممنون از همگی

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

این یک خط کد سی پلاس پلاس را ببینید:

vector<rule> *rulePartitions = new vector<rule>[NP];

این خط در یک تابع قرار دارد که بار ها و بارها فراخوانی می شود، ,ولی اگه یادتون بره آخر آن تابع حافظه ای را که گرفته بودید بعد از تمام شدن کار به صورت زیر آزاد کنید:


delete[]rulePartitions;

همین اشتباه باعث می شود که برنامه ای که باید ۵۰MB حافظه می گرفت ۷۰۰MB حافظه بگیرد! و اگر آن برنامه برای پردازش یک سری داده های زیاد و ساختن یک سری ساختمان داده ی پیچیده باشد در ابتدا اصلا متوجه نخواهید شد که مشکلی وجود دارد! از این دست مشکلات در رابطه با مدیریت حافظه توی سی پلاس پلاس زیاد است! ولی برای بعضی از آن ها درمان وجود دارد ! برای رفع بعضی از این مشکلات می توان از smart pointer ها (اشاره گر های هوشمند) استفاده کرد، که از ویزگی های جدید سی پلاس پلاس در استاندارد C++‎‎‎ 11 است

کامبیز اسدزاده
جمعه 21 اسفند 1394, 15:28 عصر
سلام دوستان یه تاپیکی همینجا دیدم و کمی فکر من رو مشغول کرد و شاید بگم جرقه ای تو ذهن من خورد واسه رفتن به سمت سی پلاس پلاس البته وب رو حتما و حتما از ام وی سی استفاده میکنم حالا میخوام نظراتتون رو بدونم ممنون لطفا تو گفتگو شرکت کنین خیلی از دوستان مثل من هستن
و چنتا سوال :
1- اینده کاری سی پلاس ببه چه شکلیه
2- بنظر میرسه یه مقدار پراکندگی در کتابخانه های سی وجود داره ما واسه شروع باید از چه ابزاری برای تولید استفاده کنیم؟

درکل این تاپیک رو زدم تا نظرات رو بدونم در هر بعدی و دوستان استفاده کنن ممنون از همگی

این لینک کمکتون خواهد کرد نه تنها سوالات شما پاسخ داده شده بلکه به سوالات دیگری هم اشاره کرده ایم : http://barnamenevis.org/showthread.php?501356-%D8%B2%D8%A8%D8%A7%D9%86-C-%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%8 0%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D9%87-%D9%85%D8%B2%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C%DB%8C-%D9%86%D8%B3%D8%A8%D8%AA-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%AF%D8%A7%D8%B1%D8%AF

winner1
جمعه 21 اسفند 1394, 18:16 عصر
زبان سی پلاس پلاس به خاطر وجود Pointer و … امکانات خیلی خوبی در اختیار برنامه نویس قرار می دهد به طوری که می تواند شخصا حافظه را برای برنامه اش کنترل کند و از هزینه ی اضافی زمان و حافظه بکاهد، زبان هایی که اجازه ی مدیریت حافظه را نمی دهند، خود این کار را می کنند که این کار هم مسلما یک سری ساختمان داده و الگوریتم نیاز دارد که از نظر زمان و هم از نظر حافظه هزینه بر است و مواردی که زمان و حافظه برنامه مهم باشد مسلما راحتی استفاده شان به سنگینی شان نمی ارزد!
از این نظر سی پلاس پلاس خیلی خوب است چون مدیریت حافظه را خود برنامه نویس در برنامه اش انجام می دهد. ولی این کار اصلا آسان نیست مخصوصا اگر پای برنامه های بزرگ و یا برنامه هایی که همروند هستند در وسط باشد! آن موقع کوچک ترین اشتباهی در رابطه با مدیریت حافظه می تواند بسیار هزینه بر باشد و کل برنامه را از کار بیاندازد! بدی این اشتباهات هم معمولا این است که به راحتی قابل شناسایی نیستند حتی بعد از رخ دادن ارور! و یا ممکن است برنامه ی شما با دیتاهای زیادی درست کار کند ولی در یک مورد بخصوص حالتی پیش بیاد که موجب مشکل در حافظه شود.

این یک خط کد سی پلاس پلاس را ببینید:

vector<rule> *rulePartitions = new vector<rule>[NP];

این خط در یک تابع قرار دارد که بار ها و بارها فراخوانی می شود، ,ولی اگه یادتون بره آخر آن تابع حافظه ای را که گرفته بودید بعد از تمام شدن کار به صورت زیر آزاد کنید:


delete[]rulePartitions;

همین اشتباه باعث می شود که برنامه ای که باید ۵۰MB حافظه می گرفت ۷۰۰MB حافظه بگیرد! و اگر آن برنامه برای پردازش یک سری داده های زیاد و ساختن یک سری ساختمان داده ی پیچیده باشد در ابتدا اصلا متوجه نخواهید شد که مشکلی وجود دارد! از این دست مشکلات در رابطه با مدیریت حافظه توی سی پلاس پلاس زیاد است! ولی برای بعضی از آن ها درمان وجود دارد ! برای رفع بعضی از این مشکلات می توان از smart pointer ها (اشاره گر های هوشمند) استفاده کرد، که از ویزگی های جدید سی پلاس پلاس در استاندارد C++‎‎‎‎ 11 است

مرسی مشتی من از این درگیریا خیلی خوشم میاد ولی در کل پیشنهادتون اینه برم به سمت سی ؟

winner1
جمعه 21 اسفند 1394, 18:20 عصر
این لینک کمکتون خواهد کرد نه تنها سوالات شما پاسخ داده شده بلکه به سوالات دیگری هم اشاره کرده ایم : http://barnamenevis.org/showthread.php?501356-%D8%B2%D8%A8%D8%A7%D9%86-C-%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%8 0%8E%E2%80%8E%E2%80%8E%E2%80%8E%E2%80%8E-%DA%86%DB%8C%D8%B3%D8%AA-%D9%88-%DA%86%D9%87-%D9%85%D8%B2%DB%8C%D8%AA-%D9%87%D8%A7%DB%8C%DB%8C-%D9%86%D8%B3%D8%A8%D8%AA-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D9%87%D8%A7%DB%8C-%D8%AF%DB%8C%DA%AF%D8%B1-%D8%AF%D8%A7%D8%B1%D8%AF
ممنون حتما البته یکیم قبل اینکه این تاپیک رو بزنم تحقیق کردم علاقم دو چندان شد ممنون اینم مطاله میکنم تو سی شارپ احساس راحتی میکنم ولی زیاد از برنامه نویسی لذتی نمیبرم