رفتن به مطلب
برای استفاده از انجمن و عضـویت کلیک کنید.

پست های پیشنهاد شده

noob programmer    2

گروه دانشجو

درود دوستان


من چند تا سوال داشتم با اینکه توی سایت های مختلفی رفتم و کلی مظلب خوندم


ظبق چیزایی که خوندم قاعدتا نمیشه گفت کدوم بهتره c++ یا c#


اما سوال من اینه که یعنی چی میگن c# واسه برنامه نویسی .net استفاده میشه ؟ یعنی نرم افزار قابلیت اینو داره به سرور یا سایت متصل بشه ؟


 با c++ نمیشه یه نرم افزار با محیط گرافیکی خوب و البته متصل به یک سرور برای رد و بدل کردن اظلاعات نوشت


برای مثال میخوام یه نرم افزار بنویسم که از محیط گرافیکی خوبی برخوردار باشه و یه بخشی مخصوص اخبار داشته باشه که میخوام این اطلاعات توی خود نرم افزار اجرا بشه


منظورم اینه نمیخوام یه صفحه باشه که سایتمو باز کنه بلکه میخوام اطلاعات با نرم افزار رابطه ی مستقیمی داشته باشه


شما برای این مدل برنامه نویسی کدومش رو توصیه میکنین ؟ البته توجه کنین میخوام دستم برای اضافه کردن قابلیت ها ازاد باشه و نییازمند سرعت بالای نرم افزار هم هستم


 


  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
شایان آباد    6,137

بنیان گذار و مدیر فنی

درود

پیشنهاد میکنم کمی حوصله به خرج بدید

+

مطالب زیر رو بخوانید :

https://fa.wikipedia.org/wiki/%D8%B3%DB%8C_%D9%BE%D9%84%D8%A7%D8%B3%E2%80%8C%D9%BE%D9%84%D8%A7%D8%B3

 

https://fa.wikipedia.org/wiki/%D8%B3%DB%8C_%D8%B4%D8%A7%D8%B1%D9%BE

  • پسندیدم 2

به اشتراک گذاری این ارسال


لینک به ارسال
Knight    81

گروه دانشجو

 

 

ظبق چیزایی که خوندم قاعدتا نمیشه گفت کدوم بهتره c++ یا c#

سلام

شما قاعدتاً میتونید بگید کدوم زبون بهتره، اما در صورتی که منظورتون از بهتر بودن رو تعریف کنید.

سی پلاس در دسته زبان هایی که اصطلاحاً بهشون میگن Unmanaged Languages قرار میگیره، درصورتی که سی شارپ یک Managed Language هست، به این معنی که حافظه در سی شارپ بصورت خودکار مدیریت میشه، اما در سی پلاس این شما هستید که باید حافظه رو مدیریت کنید و به جرات میتونم بگم بیشتر از 95% افرادی که در ایران ادعا میکنن برنامه نویس سی پلاس هستند بلد نیستن چجوری حافظه رو مدیریت کنن و همچنان به زبان C در داخل سی پلاس برنامه مینویسن.

 

 

 

اما سوال من اینه که یعنی چی میگن c# واسه برنامه نویسی .net استفاده میشه ؟ یعنی نرم افزار قابلیت اینو داره به سرور یا سایت متصل بشه ؟

 

دات نت یک فریم ورک برنامه نویسی است. یعنی یک سری از کتابخانه ها و ابزارها و کلاس های انتزاعی رو در کنار هم قرار دادن تا برنامه نویسا بتونن بسیار بسیار ساده تر اقدام به برنامه نویسی کنن و بجای اینکه مثلا 1000 خط کد بنویسن، با استفاده از کلاس های آماده ای که فریم ورک ر اختیارشون قرار میده بتونن مثلا همون برنامه رو با 100 خط بنویسن.

حالا این دات نت یکی از زبون هایی که برای برنامه نویسی باهاش میشه استفاده کرد سی شارپ هست.

شما اشتباهاً فکر کردید که دات نت یعنی چیزی که به اینترنت متصل میشه که اشتباهه، دات نت نام یک فریم ورک هست

 

 

 

با c++ نمیشه یه نرم افزار با محیط گرافیکی خوب و البته متصل به یک سرور برای رد و بدل کردن اظلاعات نوشت

 

100% میشه نوشت، خود ویندوز با سی و سی پلاس نوشته شده، اگر میخواهید محیط گرافیکی داشته باشید باید هنگام ساخت پروژه بجای اینکه کنسول رو انتخاب کنید windows form رو انتخاب کنید.

در مورد اتصال به اینترنت هم خیلی عالی میتونید اینکارو انجام بدید، بسیاری از ویروس ها و برنامه های تحت شبکه به زبان سی پلاس نوشته شدند.

 

 

 

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

 

برای کار شما سی شارپ مناسب تره

شما به هیچوجه نیازی به قابلیت های سی پلاس ندارید، سی پلاس برای پروژه های بزرگ که نیاز به قدرت و سرعت در پردازش دارن استفاده میشه.

با سی شارپ میتونید این پروژه رو بسیار راحت تر و سریع تر پیاده سازی کنید.

  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
noob programmer    2

گروه دانشجو

درود

پیشنهاد میکنم کمی حوصله به خرج بدید

+

مطالب زیر رو بخوانید :

https://fa.wikipedia.org/wiki/%D8%B3%DB%8C_%D9%BE%D9%84%D8%A7%D8%B3%E2%80%8C%D9%BE%D9%84%D8%A7%D8%B3

 

https://fa.wikipedia.org/wiki/%D8%B3%DB%8C_%D8%B4%D8%A7%D8%B1%D9%BE

 

سپاس فراوان بابت راهنماییتون

اگر زود به زود در انجمن سوال میپرسم بخاطر کنجکاوی و علاقه ای که به این زبان دارم و اگر موجب ناراحتی شده عذر خواهی میکنم

 

 

 

سلام

شما قاعدتاً میتونید بگید کدوم زبون بهتره، اما در صورتی که منظورتون از بهتر بودن رو تعریف کنید.

سی پلاس در دسته زبان هایی که اصطلاحاً بهشون میگن Unmanaged Languages قرار میگیره، درصورتی که سی شارپ یک Managed Language هست، به این معنی که حافظه در سی شارپ بصورت خودکار مدیریت میشه، اما در سی پلاس این شما هستید که باید حافظه رو مدیریت کنید و به جرات میتونم بگم بیشتر از 95% افرادی که در ایران ادعا میکنن برنامه نویس سی پلاس هستند بلد نیستن چجوری حافظه رو مدیریت کنن و همچنان به زبان C در داخل سی پلاس برنامه مینویسن.

 

 

 

 

دات نت یک فریم ورک برنامه نویسی است. یعنی یک سری از کتابخانه ها و ابزارها و کلاس های انتزاعی رو در کنار هم قرار دادن تا برنامه نویسا بتونن بسیار بسیار ساده تر اقدام به برنامه نویسی کنن و بجای اینکه مثلا 1000 خط کد بنویسن، با استفاده از کلاس های آماده ای که فریم ورک ر اختیارشون قرار میده بتونن مثلا همون برنامه رو با 100 خط بنویسن.

حالا این دات نت یکی از زبون هایی که برای برنامه نویسی باهاش میشه استفاده کرد سی شارپ هست.

شما اشتباهاً فکر کردید که دات نت یعنی چیزی که به اینترنت متصل میشه که اشتباهه، دات نت نام یک فریم ورک هست

 

 

 

 

100% میشه نوشت، خود ویندوز با سی و سی پلاس نوشته شده، اگر میخواهید محیط گرافیکی داشته باشید باید هنگام ساخت پروژه بجای اینکه کنسول رو انتخاب کنید windows form رو انتخاب کنید.

در مورد اتصال به اینترنت هم خیلی عالی میتونید اینکارو انجام بدید، بسیاری از ویروس ها و برنامه های تحت شبکه به زبان سی پلاس نوشته شدند.

 

 

 

 

برای کار شما سی شارپ مناسب تره

شما به هیچوجه نیازی به قابلیت های سی پلاس ندارید، سی پلاس برای پروژه های بزرگ که نیاز به قدرت و سرعت در پردازش دارن استفاده میشه.

با سی شارپ میتونید این پروژه رو بسیار راحت تر و سریع تر پیاده سازی کنید.

 

بسیار سپاس گزارم بابت پاسخ بسیار مفید و توضیح کاملتون

همچنین تبریک عرض میکنم چون شما به جز علم برنامه نویسی , دارای قدرت فن بیان بالا هم هستین و به جرات میتونم بگم که واقعا لایق این مقام و حتی بالاتر در سایت هستین

 

 

به جرات میتونم بگم بیشتر از 95% افرادی که در ایران ادعا میکنن برنامه نویس سی پلاس هستند بلد نیستن چجوری حافظه رو مدیریت کنن و همچنان به زبان C در داخل سی پلاس برنامه مینویسن.

 

آموزش خاصی در رابطه با این مدیریت حافظه وجود داره ؟

قاعدتا هر چیزی رو میشه امروزه توی اینترنت پیدا کرد ولی در کل منظورم اینه اموزش های در اینترنت میتونه کمک زیادی به یاد گیری این مبحث کنه یا حتما باید با شرکت در کلاس های اموزشی اقدام به یادگیری کرد؟

 

 

 

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

 

منظورتون از پروژه های بزرگ مثل ویندوز , فتوشاپ و یا ... ؟!

  • پسندیدم 1

به اشتراک گذاری این ارسال


لینک به ارسال
Knight    81

گروه دانشجو

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

 

سلام

ممنون، شرمنده میفرمایید :give_rose:

 

 

 

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

 

متاسفانه نظام آموزشی تو کشور ما مشکل داره و من کلاسی رو ندیدم یا نشنیدم که به درستی به مباحث ++C مدرن یا مدیریت حافظه بپردازه.

بهترین راه سرچ کردن و استفاده از منابع خارجی هست و یادتون باشه که حتماً باید خودتون کد بزنید و تست کنید تا متوجه این مسائل بشید.

اگر کلاسی هم پیدا کنید که در اون به آموزش این موارد هم پرداخته بشه خیلی موثره، ولی متاسفانه تا حالا همچین کلاسی رو ندیدم

متاسفانه تو دانشگاه های ما هم این زبان درست تدریس نمیشه و بجای سی پلاس بیشتر سی درس میدن، چه برسه به آموزشگاه ها

 

یادگیری مدیریت حافظه در سی پلاس تا حدودی سخت هست، مخصوصاً اگر بخواید به شیوه سنتی و با اشاره گرهای خام اینکار رو انجام بدید.

شما برای یادگیری اول باید کاملاً با نحوه کارکرد حافظه آشنا بشید، بدونید استک چیه، هیپ چیه، چه فرقایی دارن و چه موقع هایی باید از کدوم استفاده کرد، بعد از اینکه با این مسائل آشنا شدید میتونید به یادگیری دستورات مدیریت حافظه بپردازید.

در گذشته از اشاره گرهای خام برای مدیریت حافظه استفاده میشد که علاوه بر آشنایی با دستورات نیازمند تجربه بسیاری بالایی بود تا کدمون به اصطلاح memory leak نداشته بشه. از این روش جز کتابخانه نویس ها (اونم در موارد خیلی کم) دیگه کسی استفاده نمیکنه.

امروزه و در سی پلاس پلاس مدرن از اشاره گرهای هوشمند (smart pointer ها) جهت مدیریت حافظه استفاده میشه که نه تنها کار رو بسیار ساده کرده، بلکه مشکلاتی نظیر memory leak رو که در اثر کم تجربی برنامه نویس بوجود میومد رو به حداقل رسونده.

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

 

 

 

منظورتون از پروژه های بزرگ مثل ویندوز , فتوشاپ و یا ... ؟!

 

البته ویندوز و فتوشاپ از پروژه بزرگ گذشتن و بهتره جز پروژه های غول پیکر دسته بندیشون کنیم :biggrin1:

ببینید تِز سی پلاس این هست که برنامه نویس تنها هزینه چیزی رو میپردازه که از اون استفاده میکنه، ما به هنگام برنامه نویسی به زبان سی پلاس overhaed اضافه نداریم. (مگر اینکه برنامه نویس خوبی نباشیم و خودمون باعث بوجود اومدن overhead بشیم)

منظور از هزینه هم مقدار حافظه استفاده شده، مقدار پردازش مورد نیاز و زمان لازم جهت رسیدن به جواب مساله و اجرای کامل کد هست.

اجازه بدید یه مثال بزنم و برای اینکار اول نحوه مدیریت حافظه در یک زبان مدیریت شده (Managed Languages) مثل #C رو خیلی جزیی براتون توضیح بدم:

تمامی مقادیر رفرنس در سی شارپ همیشه در free store قرار میگیرند، انواع رفرنس در سی شارپ عبارتند از:

  • class
  • interface
  • delegate
  • object
  • string

 

یعنی اگر شما یک رشته ایجاد کنید، اون رشته در هیپ (یا همون free store) قرار میگیره. اگر از یک کلاس نمونه ای بسازید، اون کلاس در هیپ قرار میگیره. (البته اشاره گیری که به اون شی در هیپ اشاره میکنه هم در استک ساخته میشه)

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

با پایان بلوک کد این موارد از هیپ پاک نمیشن (هر چیزی که در استک قرار بگیره با پایان بلوک مربوط به اون از حافظه پاک میشه و هر چیزی که در هیپ قرار بگیره با پایان بلوک مربوطه پاک نمشه و باید بصورت دستی پاکش کنیم) و در حافظه باقی میمونن تا garbage collector اونا رو منقضی شده تشخیص بده و از حافظه پاک کنه.

ما اینجا چند تا overhead داریم: اول اینکه در خیلی از موارد وقتی میتونستیم دادمون رو در stack قرار بدیم در heap قرار دادیم، دوم اینکه وقتی کارمون با اون داده تموم شد از heap پاک نشد و منتظر موندیم تا garbage collector اون رو منقضی شده تشخیص بده و سوم اینکه خوده garbage collector باعث بوجود اومدن سربار اضافه میشه و منابع ما رو مصرف و سرعت ما رو کم میکنه.

ما در سی پلاس تکنیک و مفهومی منحصربفردی داریم به اسم RAII که تمام برنامه نویس های جاوا و سی شارپ و وی بی و ... به سمت خودش میکشه و خیلی وقتا مجبور میکنه که حداقل قسمتی از کدشون رو با سی پلاس بنویسن، بطور ساده این تکنیک باعث میشه (بهتره بگیم گارانتی میکنه) که وقتی کارمون با شیی تموم شد اون شی بلافاصله از حافظه حذف بشه و بیخودی حافظه رو درگیر خودش نکنه.

 

البته خیلی فاکتورهای دیگه هم دخیل هستن مثل این موضوع که برنامه ما بصورت byte code هست و native نیست و خیلی بحثای دیگه که همیشه موقع نقد زبان های مدیریت شده پیش میاد و باعث دعوا بین برنامه نویسا میشه :biggrin1:

با این پیش زمینه میریم مثال میزنیم

در دنیای مرورگرها سرعت و مقدار حافظه مصرفی بسیار مهمه. شما بجای اینترنت اکسپلورر به سمت فایرفاکس یا گوگل کروم میرید، چرا؟ چون سرعت اینترنت اکسپلورر در لود کردن خودش یا صفحات وب بسیار پایینتر از دو مرورگر ذکر شده هست

شخص دیگه ای ممکنه بجای گوگل کروم به سمت فایرفاکس بره و فایرفاکس رو ترجیح بده، چون حافظه کمتری مصرف میکنه.

بنابراین در دنیای مرورگر ها سرعت و مصرف کمتر حافظه جهت رقابت بسیار مهم هست و هر کی سرعت بیشتری داشته باشه محبوب تره.

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

این موضوعات همه و همه باعث کند شدن مرورگر ما میشه و به هیچوجه کسی از مرورگر ما استفاده نخواهد کرد.

 

یا بطور مثال در دنیای آنتی ویروس ها

شما وقتی فایلی رو اجرا میکنید، آنتی ویروس پروسس اون فایل رو به حالت suspend در میاره، اسکن میکنه، اگر برنامه ویروسی نبود پروسه به حالت resume در میاد و اگر برنامه حاوی کد مخرب بود terminate میشه و از حافظه پاک میشه و به کاربر هشدار داده میشه. (از موارد دیگه ای مثل کنترل رفتار فایل در این مثال صرف نظر کردیم.)

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

پس در هنگام ساخت آنتی ویروس سرعت بسیار بسیار حائز اهمیت هست، ضمن اینکه باید اینکار رو با کمترین مقدار مصرف حافظه انجام بدید. پس شما نیازمند قدرت ++C هستید.

 

مثال دیگه هم که میشه زد در مورد موتورهای بازی هست، مخصوصاً در سیستم های با منابع محدود مثل گوشی های هوشمند.

اگر شما نتونید با حداقل حافظه و پردازش مورد نیاز سرعت بالایی رو فراهم کنید، گیم پلی بازی شما کند و دارای لگ میشه.

پس برای اینکه از گردونه رقابت خارج نشید باید کدتون رو بصورت native با استفاده از سی یا سی پلاس بنویسید.

 

در نتیجه بطور کلی میشه اینجوری گفت:

اگر در برنامه شما سرعت یا میزان مصرف حافظه مهم هست، حتما باید از زبان های مدیریت نشده مثل سی پلاس استفاده کنید.

حالا پروژه شما هر چیزی که میخواد باشه، اما این موضوع معمولا در مورد پروژه های تجاری بزرگ مثل آنتی ویروس ها، موتورهای بازی، ابزارهای مدیریتی کامپیوتر، ابزارهای رمزنگاری و... صدق میکنه.

  • پسندیدم 3

به اشتراک گذاری این ارسال


لینک به ارسال

برای ارسال دیدگاه یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

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

ایجاد یک حساب کاربری

برای حساب کاربری جدید در سایت ما ثبت نام کنید. عضویت خیلی ساده است !

ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید

ورود به حساب کاربری

  • مطالب مشابه

    • توسط msabory1997
      سلام دوستان میخواستم بات تلگرامی بسازم که شماره کاربر رو ازش بگیره و تو یه متغیر ذخیره کنه
      .
      مثله بات انجمن
      شماره با request share contact گرفته بشه از کاربر و اونو دستی وارد نکنه(که احتمال خطا بالا باشه و هرکس هرچیزی خواست وارد کنه!)
    • توسط هیدن بوی
      سلام دوستان مطالبتون واموزشاتون عالین میخوام بپرسم چطوری میشه یه ربات cli به زبان c# نوشت ؟؟ چون من هر چی گشتم نتونستم کتابخانه ای برای cli پیدا کنم

      لطفا کمکم کنید
    • توسط محمد سینا موثقی نژاد
      به نام خدا
      با عرض سلام و خسته نباشید خدمت تمامی کاربران گرامی انجمن برنامه نویس ایرانی.
      با آموزش پست کردن (توییت) در شبکه اجتماعی توییتر با من همراه هست ، که در این آموزش یاد خواهید گرفت که چگونه :
      برای اکانت خود api بسازید چگونه به api ساخته شده وصل شید چونه از ریفرنس توییتر در سی شارپ استفاده کنید ارسال توییت در اکانت خود بررسی ارسال شدن یا نشدن توییت  
      آموزش با کیفیت بالا ضبط شده و برای استفاده از این آموزش باید سطح مقدماتی سی شارپ رو گذرانده باشید.
      سوالی بود در قسمت سوالات پشتیبانی مطرح کنید پاسخ داده خواهد شد.
      موفق باشید.
       
      Tweet.rar
    • توسط Tesla
      درود
      من میخوام یک برنامه ای مانند notepad که به طور پیشفرض برای باز کردن فایل های متنی هست یا یک برنامه مانند image viewer ویندوز بنویسم ولی در مورد نحوه اینکه چه جوری نام فایل رو بگیرم موندم.
      ممنون میشم کمکم کنید.
  • کاربران آنلاین در این صفحه   0 کاربر

    هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.

×