PDA

View Full Version : مبتدی: ترکیب زبان های برنامه نویسی در طراحی نرم افزار



mohamad0098
یک شنبه 19 اسفند 1397, 17:14 عصر
سلام خدمت دوستان
سوال من اینه که چطور میشه در طراحی یک برنامه از چند زبان برنامه نویسی استفاده کرد؟ مخصوصا قسمت های ظاهری برنامه مثل پنجره و کنترل ها(ویندوز فرم) با سی شارپ طراحی بشه اما قسمت منطق اصلی برنامه با یک زبان سریعتر مثل سی پلاس پلاس.
به عنوان مثال برنامه محاسبه فاکتوریل یک عدد رو طوری طراحی کنیم که قسمت پنجره ها و دکمه و کنترل ها با امکانات سی شارپ طراحی بشه اما قسمت کد محاسبه فاکتوریل به زبان سی پلاس پلاس باشه؟ آیا امکان چنین کاری هست؟ و چقدر در سرعت اجرای برنامه تاثیر گذاره؟

barnamenevisjavan
یک شنبه 19 اسفند 1397, 20:09 عصر
سلام خدمت دوستان
سوال من اینه که چطور میشه در طراحی یک برنامه از چند زبان برنامه نویسی استفاده کرد؟ مخصوصا قسمت های ظاهری برنامه مثل پنجره و کنترل ها(ویندوز فرم) با سی شارپ طراحی بشه اما قسمت منطق اصلی برنامه با یک زبان سریعتر مثل سی پلاس پلاس.
به عنوان مثال برنامه محاسبه فاکتوریل یک عدد رو طوری طراحی کنیم که قسمت پنجره ها و دکمه و کنترل ها با امکانات سی شارپ طراحی بشه اما قسمت کد محاسبه فاکتوریل به زبان سی پلاس پلاس باشه؟ آیا امکان چنین کاری هست؟ و چقدر در سرعت اجرای برنامه تاثیر گذاره؟
سلام کدهارو با هر زبانی نوشتین بصورت dll خروجی میگیرین و داخل سی شارپ فراخوانی میکنین

mohamad0098
یک شنبه 19 اسفند 1397, 22:36 عصر
سلام کدهارو با هر زبانی نوشتین بصورت dll خروجی میگیرین و داخل سی شارپ فراخوانی میکنین

بعد آیا در سرعت اجرای برنامه تاثیری داره؟ مثلا زمانی که فقط از سی شارپ استفاده کنیم

farhad_shiri_ex
دوشنبه 20 اسفند 1397, 08:28 صبح
سلام کدهارو با هر زبانی نوشتین بصورت dll خروجی میگیرین و داخل سی شارپ فراخوانی میکنین

البته توجه داشته باشید گه اگر بخواهید از DLL های غیر دات نتی استفاده کنید در محیط سی شارپ حتما باید از unmanaged code ها استفاده کنید که اونهم تو سی شارپ دردسر های خاص خودش را داره! بنابراین توجه داشته باشید که برنامه ای که طراحی میکنید چقدر اهمیت داره که ریسک استفاده از کد های نا امن را در یک محیط مدیریت شده امن مثل سی شارپ، بپذیرید.
یک نمونه خیلی ساده...

using System;
using System.Runtime.InteropServices;

[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
// a specific DLL method/function call
mpscExit();
// user32.dll is Microsoft, path not needed
MessageBox(new IntPtr(0), "Test", "Test Dialog", 0);

اما اگر به زبان سی پلاس پلاس تسلط دارید و همچنین به برنامه نویسی های تحت وب مثل Java script , PHP , Html7 , CSS ,Jquery, AJAX آشنایی کافی دارید پیشنهاد من این هست که لایه منطق و همچنین لایه ارتباطی پایگاه داده و لایه ارتباطی با سمت وب را با زبان ++C طراحی کنید البته به کمک سوکت پروگرمینگ و لایه کاربری را در سمت وب با زبانهای وب پیاده سازی کنید وبا استفاده از جاوا اسکریپت به سوکت ها دسترسی پیدا کنید.
البته روش پیچیده ای هست ولی خیلی به روز تر و کارآمد تر هست.



بعد آیا در سرعت اجرای برنامه تاثیری داره؟ مثلا زمانی که فقط از سی شارپ استفاده کنیم

بله قطعا استفاده از زبان سی پلاس پلاس در سرعت الگوریتم ها تاثیر چشمگیری خواهد داشت نسبت به سی شارپ ولی باید ببنید که همان طور که عرض کردم واقعا ارزش داره یا نه قطعا برای محاسبه یک فاکتوریل به نظرم خیر تفاوت محسوسی بین سی شارپ و سی پلاس پلاس نخواهد بود.

رامین مرادی
دوشنبه 20 اسفند 1397, 09:23 صبح
بعد آیا در سرعت اجرای برنامه تاثیری داره؟ مثلا زمانی که فقط از سی شارپ استفاده کنیم
طبیعتا سرعت اجرای کدها با زبان سی++ به مراتب بالاتر از سی شارپ هست. اما مسئله اصلی الگوریتمی که شما طراحی میکنید. ممکنه یه الگوریتمی که تو سی شارپ پیاده کردید خیلی خیلی بهتر از الگوریتمی که تو سی ++ پیاده کردید سریعتر اجرا بشه. باید همه جوانب کارو در نظر بگیرید.

ASKaffash
دوشنبه 20 اسفند 1397, 09:30 صبح
سلام
اگر سرعت و حجم محاسبات شما زیاد است بخش محاسباتی را با #F بنویسید و بصورت یک dll در سی شارپ استفاده کنید