# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > مقالات مرتبط با Microsoft .Net Framework >  سرعت برنامه در زبانهای تحت دات نت

## ali_hadian

بسمه تعالی

به نظر شما کدامیک از زبانهای دات نت سرعت بالاتری داره یا این که فرقی نداره؟
VB.NET
visual C#‎
delphi .net 
C#‎builder

----------


## Barbababak

اصولا در شرایط مشابه زبانی سریعتره که برای نوشتن برنامه احتیاج به کد نویسی بیشتری داره بخاطر اینکه برنامه نویس مقدار کد اضافه کمتری می‌نویسه و کدش تخصصی تر می‌شه (فقط کاری رو که می‌خواد سفارش می‌ده نه کار اضافه دیگه‌ای رو)
زبانهایی که کدنویسی رو کم می‌کنند معمولا همراه با کاری که برنامه نویس خواسته کارهای اضافه دیگه‌آی هم انجام می‌دهند (مثل ویژوال بیسیک 6)
در نتیجه VB.Net و ‍C#‎.Net مثل هم اند
Delphi و C#‎Builder: قدیما Delphi سریعتر از C Builder بود شاید در مورد دات نتشون هم همینطور باشه! :wink: 
می‌مونه Delph.Net و C#‎ که خودتون ببینید کدوم سریعترند!!!!!!!! :wink:

----------


## houtanal

چون تمامی کد ها به IL ترجمه می شوند فرقی ندارد.

----------


## vcldeveloper

> چون تمامی کد ها به IL ترجمه می شوند فرقی ندارد


ایشون درست میگن. توی دات نت فرقی نمی کنه!!

----------


## Inprise

لزوما" اینطور نیست . درسته که نهایتا" همهء برنامه ها به IL تبدیل میشن ، اما تعهدی وجود نداره که برنامه هائی یک شکل ، دقیقا" به تعدادی کد IL یکسان مبدل بشن . زبانهای مبتنی بر دات نت دارای ویژگیهای متفاوتی هستند ( سی شارپ ویژگیهائی داره که وی بی دات نت نداره ؛ ایضا دلفی دات نت ویژگیهائی داره که سی شارپ نداره و البته بالعکس ) که باعث میشه در بسیاری از موارد برای انجام وظیفه ای یکسان کدهای IL متفاوتی تولید بشه . لازم به ذکره وجود تفاوت در کدهای IL نیز ایضا" لزوما به معنای کندتر یا سریعتر شدن کد نیست .

----------


## hmm

من شک دارم سرعت تفاوت داشته باشه چون فلسفه وجودی IL همینه که ناهماهنگی رو از میان برداره یعنی همه از یک نوع منابع (سخت افزاری/نرم افزاری) استفاده کنند و نحوه پاسخ گویی سیستم عامل و ایضا framework به هرکدام هم مشابه باشه وتازه مایکروسافت ادعا میکنه که برای تولید یک محصول استراتژیک دیگه لازم نیست توسعه دهندگان یا بهتر بگم کدنویسان مجبور به استفاده از یک نوع زبان برنامه نویسی خاص باشند یکی از شعارهایی که همیشه طرفداران دات نت دادن اینه که وپژگیها تفاوتی نداره و فقط سبک نوشتن متفاوته البته قبول دارم که #C قابلیتهایی که داره که بعضی کار ها رو راحتر میکنه ولی این تو ذات خود C و هم خانواده های اونه که #C هم به ارث برده ولی دلیلی برای برتری اون نمیشه
البته این فقط نظر منه




> سی شارپ ویژگیهائی داره که وی بی دات نت نداره ؛ ایضا دلفی دات نت ویژگیهائی داره که سی شارپ نداره و البته بالعکس


اگه جناب inprise برای این موارد مصادیقی رو بفرمایند مورد امتنان است
البته اگه بجای جواب پست من حذف نشه :shock:

----------


## Inprise

> البته این فقط نظر منه


"نظر شخصی " دادن در مورد مسائلی که سلیقه میتونه توش دخیل باشه معنی داره ! این از اون دسته مسائل نیست




> چون فلسفه وجودی IL همینه که ناهماهنگی رو از میان برداره


فلسفهء وجودی IL اینی که گفتی نیست ، اما حالا مورد بحث چیز دیگریه . اگر کمی دقت کنی به وضوح تفاوت آنچه میگی با آنچه در عمل اتفاق می افته رو میتونی ببینی :




> *زبانهای مبتنی بر دات نت دارای ویژگیهای متفاوتی هستند ( سی شارپ ویژگیهائی داره که وی بی دات نت نداره ؛ ایضا دلفی دات نت ویژگیهائی داره که سی شارپ نداره و البته بالعکس ) که باعث میشه در بسیاری از موارد برای انجام وظیفه ای یکسان کدهای IL متفاوتی تولید بشه*






> اگه جناب inprise برای این موارد مصادیقی رو بفرمایند مورد امتنان است 
> البته اگه بجای جواب پست من حذف نشه


اگر برنامه نویس دات نت باشی لابد تفاوتهای ماهیتی سی شارپ و وی بی ، یا سی شارپ و سی مدیریت شده یا دلفی دات نت و وی بی و ... رو میدونی . اگر نمیدونی جستجو کن ، پیدا میکنی ، ربطی به موضوع این تاپیک نداره . حتی اگر بیخیال تفاوتهای ذاتی زبانها بشیم ، تفاوت عملکرد "کامپایلر"های زبانهای مبتنی بر دات نت میتونه براحتی باعث ایجاد خروجی های مختلف بشه . با جستجو میتونی نمونه های مختلفی رو پیدا کنی مثل : http://www.iunknown.com/000144.html و مواردی از این دست 

در نتیجه :

بدون توجه به مقوله سرعت :

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

با توجه به مقوله سرعت :

تفاوت IL مرتبط با دو برنامهء مشابه ، ممکنه باعث تفاوت سرعت اجرا بشه ، و ممکنه نشه . بستگی به شرایط داره .

موفق باشید

----------


## hmm

سلام 
از جوابتون ممنونم ولی...



> اگر برنامه نویس دات نت باشی لابد تفاوتهای ماهیتی سی شارپ و وی بی ، یا سی شارپ و سی مدیریت شده یا دلفی دات نت و وی بی و ... رو میدونی . اگر نمیدونی جستجو کن ، پیدا میکنی ، ربطی به موضوع این تاپیک نداره . حتی اگر بیخیال تفاوتهای ذاتی زبانها بشیم ، تفاوت عملکرد "کامپایلر"های زبانهای مبتنی بر دات نت میتونه براحتی باعث ایجاد خروجی های مختلف بشه . با جستجو میتونی نمونه های مختلفی رو پیدا کنی مثل : http://www.iunknown.com/000144.html و مواردی از این دست


من حرفه ای دات نت کار نمیکنم حرفه ای هم نیستم 
منظور من تفاوت ماهیتی میان وی بی و #C نیست منظورم تفاوت ماهیتی بین زبانهای دات نته 
چه چیزی در #C از نظر ماهیتی بر vb.net  رجحان دارد و احتمالا برعکس




> بدون توجه به مقوله سرعت : 
> 
> زبانهای مختلف مبتنی بر دات نت ، برای وظایف یکسان و مشابه ، گاهی ، کدهای IL مختلفی ایجاد میکنند


حتما درسته




> با توجه به مقوله سرعت : 
> 
> تفاوت IL مرتبط با دو برنامهء مشابه ، ممکنه باعث تفاوت سرعت اجرا بشه ، و ممکنه نشه . بستگی به شرایط داره .


اینجا یکم جای بحث داره 
افزایش سرعت چه موقع روی میده 
وقتی برنامه شما دسترسی بیشتری به منابع (سخت افزاری/نرم افزاری) نسبت به بقیه داشته باشه
که در زبانهایی مثل C و اجدادش و نوادگانش بدلیل ارتباط صریح و بدون واسطه با کرنل سیستم عامل و یا حتی سخت افزار اینگونه بود ولی در مورد دات نت چطور؟
آیا میزان استفاده از توانایی freamwork در زبانهای خاص متفاته ؟ یا دلیل دیگه ای داره؟
خوش باشی :flower:

----------


## Inprise

> افزایش سرعت چه موقع روی میده 
> وقتی برنامه شما دسترسی بیشتری به منابع (سخت افزاری/نرم افزاری) نسبت به بقیه داشته باشه


خیر . اینا رو کی بهت گفته ؟




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


ایضا" اینها رو ...؟





> در مورد دات نت چطور؟


تفاوت کدهای IL تولید شده ، در بسیاری موارد معادل است با تفاوت سیکلهائی که پردازنده باید برای پردازش دستورات مصرف شده و در موارد دیگری معادل است با Memory Allocation متفاوت و Allocation Time متفاوت و یا حتی Library&Resource Usage متفاوت ؛ که این یعنی در برخی موارد تفاوت در اجرای سرعت برنامه های به ظاهر مشابه . دات نت از یک دیدگاه ، داره وظایف یک اسمبلر رو در یک لایهء بالاتر انجام میده . تو یه مثال نسبتا" قابل مقایسه ، ممکنه ظاهر دو برنامه دلفی و BCB که هر دو بصورت همزمان از یک متن یکسان VCL استفاده میکنند ، مشابه باشه ، اما طبیعتا" کدهای تولید شده توسط مترجم ها ( بدون توجه به کتابخانه های متفاوت که شاید در محیط دات نت قابل طرح نباشه ) متفاوت است که "میتونه" باعث تفاوت در سرعت اجرای کد بشه . اینجا بحث رجحان یا برتری یک زبان بر زبان دیگه مطرح نیست . میشه بصورت مفصل اینا رو بررسی کرد که گفتم ربطی به این تاپیک نداره . اونی که به اینجا مربوطه اینه که چون خروجی ها میتونن متفاوت باشن ( = IL های متفاوت ) پس سرعتهای اجرا هم ممکنه در شرایطی متفاوت باشن . پس یک نتیجه گیری کلی به این شکل که یک برنامه با وظایفی خاص و با استفاده از کلاسها و روتینهای مشخص ، با هر زبانی ، تحت دات نت ، سرعت اجرای یکسان خواهد داشت ، غیر علمی و غلط است . چون میتونیم شرایط متعددی بر خلاف این داشته باشیم .

یک وظیفهء خاص---- استفاده از کلاسهای مشخص دات نت ---- سی شارپ ---- IL 1
یک وظیفهء خاص---- استفاده از کلاسهای مشخص دات نت ---- وی بی ---- IL 2

چون تضمین و تعهدی وجود نداره که IL1 و IL2 با هم یکسان باشن ، تعهد و تضمینی برای یکسان بودن روند اجرای اونها ( از جمله سرعت ) وجود نداره .

----------


## ara_prg

بهتر است بجای این همه دعوا نگاهی به این سایت بکنید.

http://msdn.microsoft.com/vstudio/pr...s/default.aspx

نتیجه :
برنامه نوشته شده با زبان VB.net و VC#‎.net تقریبا در یک سطح می باشند ولی برنامه نوشته شده با VC++‎.Net علاوه بر اینکه بسیار Optimize تر است قابلیت های بسیار زیادی را در اختیار برنامه نویس قرار می دهد.


موفق باشید :wink:

----------


## Vahid_Nasiri

شبیه به این سوال چند وقت پیش در قسمت دلفی هم مطرح شده بود، البته با دید دیگری...  (به جوابهای کامبیز خان دقت بفرمایید)
http://www.barnamenevis.org/vi...er=asc&start=0

----------


## Inprise

> بهتر است بجای این همه دعوا نگاهی به این سایت بکنید


اگر با فرهنگ مباحثه آشنا نیستی سعی کن خودت رو قاطیش نکنی .




> برنامه نوشته شده با زبان VB.net و VC#‎.net تقریبا در یک سطح می باشند


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




> برنامه نوشته شده با VC++‎.Net علاوه بر اینکه بسیار Optimize تر است قابلیت های بسیار زیادی را در اختیار برنامه نویس قرار می دهد.


Managed CPP هیچ امکانی فراتر از سایر زبانها ، وقتی هدف توسعه بر فراز دات نت باشه ، در اختیار توسعه گر قرار نمیده .





> به جوابهای کامبیز خان دقت بفرمایید


بین مطالب این دو تاپیک هیچ ارتباط منطقی ندیدم .

موفق باشید

----------


## Vahid_Nasiri

> بین مطالب این دو تاپیک هیچ ارتباط منطقی ندیدم .


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

----------


## hmm

> نقل قول:
> افزایش سرعت چه موقع روی میده 
> وقتی برنامه شما دسترسی بیشتری به منابع (سخت افزاری/نرم افزاری) نسبت به بقیه داشته باشه 
> 
> 
> خیر . اینا رو کی بهت گفته ؟ 
> 
> نقل قول:
> در زبانهایی مثل C و اجدادش و نوادگانش بدلیل ارتباط صریح و بدون واسطه با کرنل سیستم عامل و یا حتی سخت افزار اینگونه بود 
> ...


شما دلیل بهتری برای افزایش سرعت سراغ دارید؟



> تفاوت کدهای IL تولید شده ، در بسیاری موارد معادل است با تفاوت سیکلهائی که پردازنده باید برای پردازش دستورات مصرف شده و در موارد دیگری معادل است با Memory Allocation متفاوت و Allocation Time متفاوت و یا حتی Library&Resource Usage متفاوت ؛


دقیقا و این یعنی استفاده متفاوت از منابع سخت/نرم افزاری




> بهتر است بجای این همه دعوا نگاهی به این سایت بکنید.


من به جناب inprise ارادت شدیدی دارم 
عزیز من ما دعوا نمیکنیم فقط داریم بلند بلند فکر میکنیم :roll: 




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


شدیدا قبول دارم




> این یعنی تفاوت در کارکرد .


آیا راه های مختلف برای رسیدن به هدف موجب سرعت متفاوت میشه؟

----------


## Inprise

> شما دلیل بهتری برای افزایش سرعت سراغ دارید؟


لازم نیست من دلیل داشته باشم . این مباحث سالهاست که بصورت آکادمیک تدریس میشه و میتونی برای کسب اطلاع به منابعش مراجعه کنی . جوابت قبلا داده شده :

_تفاوت کدهای IL تولید شده ، در بسیاری موارد معادل است با تفاوت سیکلهائی که پردازنده باید برای پردازش دستورات مصرف شده زمان و توان صرف کنه و در موارد دیگری معادل است با Memory Allocation متفاوت و Allocation Time متفاوت و یا حتی Library&Resource Usage متفاوت ؛ که این یعنی در برخی موارد تفاوت در اجرای سرعت برنامه های به ظاهر مشابه . دات نت از یک دیدگاه ، داره وظایف یک اسمبلر رو در یک لایهء بالاتر انجام میده . تو یه مثال نسبتا" قابل مقایسه ، ممکنه ظاهر دو برنامه دلفی و BCB که هر دو بصورت همزمان از یک متن یکسان VCL استفاده میکنند ، مشابه باشه ، اما طبیعتا" کدهای تولید شده توسط مترجم ها ( بدون توجه به کتابخانه های متفاوت که شاید در محیط دات نت قابل طرح نباشه ) متفاوت است که "میتونه" باعث تفاوت در سرعت اجرای کد بشه . اینجا بحث رجحان یا برتری یک زبان بر زبان دیگه مطرح نیست_ 





> آیا راه های مختلف برای رسیدن به هدف موجب سرعت متفاوت میشه؟


لزوما" خیر . اما همانطور که تفاوت در راههای رسیدن به خدا ، میتونه باعث تفاوت در زمان رسیدن به خدا - یا در مواردی زمان رسیدن به جهنم ! - بشه ، تفاوت کد خروجی کامپایلرهای متعدد ، هر چند اون کد یک زبان واحد و مشخص باشه - چه IL چه اسمبلی چه خود ِ زبان ماشین - اغلب باعث تفاوت کارکرد خواهد شد .

----------


## hmm

فکر میکنم ادامه این بحث زیاد مفید نیست چون هر دو داریم از زاویه مختلف به بحث نگاه می کنیم
من در فکر رد یا اثبات فرمایشات جناب inprise نیستم فکر میخواهم به سوالی که چند وقته برام پیش اومده جوابی پیدا کنم
سوال : چرا مایکروسافت به فکر ایجاد محیط توسعه یکپارچه (NET.) افتاد و هدف او چه بود
جوابی که خودم بهش رسیدم : برای اینکه تیم های توسعه دهنده فارغ از نوع کد نویسی بتوانند محیط های Enterprise رو سریع ایجاد کنند (البته شاید شما صدها دلیل دیگه هم ذکر کنید که ما به آنها نمی پردازیم)
تذکر : این جواب هیچ استنادی نداره و فقط برداشت من از مجلات ، کتابها ، سایتها ، و... حتی سخنان رفتگر محله میباشد.

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

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

بهرحال اگه ادامه این بحث موجب ملال خاطر میشود این تاپیک را قفل کنید تا بیشتر در مورد آن تحقیق کنیم

----------


## Inprise

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


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





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


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




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


استناد فنی این ادعا چیه ؟ چه کسی گفته که در یک محیط یکپارچه با حمایت از زبانها مختلف ( که حالا برای اولین بار ! توسط مایکروسافت منتشر شده ) باید همه زبانها در یک سطح و قواره باشند ؟ طبق کدام قاعده و دلیل منطقی ؟ 




> با توجه به فرمایشات inprise دوباره یکسری از کد نویسان بر دیگران رجحان پیدا میکنند که این با روح دات نت سازگار نیست


الف- کدوم بخش از نوشته ها من مستقیما" ناظر بر وجود رجحان یک زبان بر زبان دیگر بود ؟ وقتی گفته میشه بین چند زبان ، میشه تفاوت هائی وجود داشته باشه ، یعنی الزاما" یکی بر دیگری مطلقا" رجحان و برتری داره ؟ 

ب- طبق چه استدلالی این حقیقت با "روح دات نت " (؟) در تضاده ؟ روح دات نت چیست و کجاست ؟ و چه کسی ویژگیهای اون رو تدوین کرده ؟ طبق کدوم مستند و دلیل فنی ؟





> اگه ادامه این بحث موجب ملال خاطر میشود این تاپیک را قفل کنید تا بیشتر در مورد آن تحقیق کنیم


چنین تاپیکهائی برای دوستانی مثل تو میتونه شروع تحقیق باشه . فراگیری روش برخورد حرفه ای فن نرم افزار ، از فراگیری خود این فن مهمتره . این رو قبل از شروع تحقیق بخاطر داشته باش . یک مهندس نرم افزار ، یک مهندس مکانیک ، عمران ، الکترونیک و ... حق نداره ، همینطوری از رو هوا یا مبتنی بر شنیده ها و گفته های غیر تکنیکی ، بدون وجود مطالعه و دانش ، در مورد یک موجودیت فنی اظهار نظر کنه . به عنوان مثال وقتی در جواب سوال " کدام زبان سریعتر است" کسی بگه فرقی نمیکنه ، چون همگی به اسمبلی ترجمه میشن ، چه فکری میشه در موردش کرد ؟ آیا غیر از این است که این آدم حتی مختصری دانش در مورد نرم افزار نداره ؟ دات نت ، جاوا و ... همگی از یک منطق تکنیکی و ثابت تبعیت میکنن ، که نمیشه اون رو از زوایای مختلف نگاه کرد و نتایج مختلفی گرفت . مطالب قبلی من ، مبتنی بر الفبا و مقدمات نرم افزار بود ، نه حاوی Trick پیچیده ای است نه مطلب عمیق و دشوار که با وجود تجربه و مطالعه و بدون دانش اکادمیک هم این مطالب قابل اخذ است . به عنوان مثال میتونی چند نمونه کد بنویسی ، با زبانهای مختلف دات نت ، و بعد IL ها رو مقایسه کنی ، یا حتی میتونی خروجی باینری JIT رو دیس اسمبل کنی و تفاوتهاشون رو ببینی و ... 

شاید یکی از تفاوتهای جدی وجود یا عدم وجود تحصیلات و مطالعات آکادمیک در حوزهء نرم افزار ، این باشه که ، عطف به داستان اشی مشی ، کسانی که بدون وجود پایهء علمی لازم ، از بین راه وارد یک مبحث نرم افزاری میشن ، آخر داستان ، یکی از بالهاشون همچنان آبی میمونه و حوض نقاشی هم کمک چندانی نمیتونه بهشون بکنه  :) ( پاراگراف آخر استئناء هم داره که مورد بحث ما نیست )

موفق باشید

----------


## linux

ما که داریم استفاده می کنیم! بحث خوبی هست.
و این به نظر من خیلی طبیعی هست بین کدهای il که توسط زبان های مختلف تولید میشه تفاوتهای باشه.

----------


## hmm

مقدمه :

بنده برای ادامه بحث(اگه شما تمایل داشته باشید) پیشنهاد میکنم ادبیات نوشتاری خود را عوض کنید
چون شما با طرح سوالات باز عملا راه را برای رسیدن به هدفمون (سرعت کمتر با بیشتر) میبندید
درضمن شما با طرح مسائلی همچون :


و حال ادامه بحث و گفتمان:



> یک مسئله نظری یا فلسفی یا اجتماعی نیست که بشه بهش از زوایای مختلف نگاه کرد


در هر مسئله میشود از زوایای مختلف بحث کرد مثلا وقتی شما از تواناییهای زبانی مثل c صبحت میکنید و من از مشکلات یادگیری واستفاده از این زبان آیا از دید و زاویه مختلف به بحث نگاه نمیکینم وآیا ادامه بحث هم به نظر شما مفیده ؟



> ما مجاز نیستیم در مورد مسائل فنی ، مطابق میل و خواسته خودمون ایده و نظریه صادر کنیم .


ما لزوما از یک موجودیت یا یک واقعیت خاص یک برداشت مشترک نداریم هرچه که جنابعالی ، بنده ، و یا حتی جناب بیل گیتز از دات نت مطرح میکنیم منطبق با برداشت ما از دات نته و ممکنه با واقعیت فاصله داشته باشه
یک سوال از شما دارم آیا شما با خواندن کتاب (مثلا صادق هدایت  :wink: ) میتونی اداعا کنی همان برداشتی رو از کتاب داشتی که مولف خواسته منتقل کنه
و مهمتر از اون چه لزومی به درستی ادعاهای منابع دارید (عطف به گفته های قبلیم درباره رقابت مایکروسافت)
یکبار گفتم که واقعیات رو باید در عمل سنجید و البته دانش فنی قبلی لازم و واجبه

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




> کدوم بخش از نوشته ها من مستقیما" ناظر بر وجود رجحان یک زبان بر زبان دیگر بود ؟ وقتی گفته میشه بین چند زبان ، میشه تفاوت هائی وجود داشته باشه ، یعنی الزاما" یکی بر دیگری مطلقا" رجحان و برتری داره ؟


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



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


و ایضا نظرتون رو به برخی از سوالات باز از طرف شما جلب میکنم 



> طبق چه استدلالی این حقیقت با "روح دات نت " (؟) در تضاده ؟ روح دات نت چیست و کجاست ؟ و چه کسی ویژگیهای اون رو تدوین کرده ؟ طبق کدوم مستند و دلیل فنی ؟


بگذارید من به روش شما این بحث رو ادامه بدم
تعریف (برداشت) شما از دات نت چیه ؟
ویژگیهای دات نت چیه ؟ و هدف از طراحی او چه بوده ؟




> فراگیری روش برخورد حرفه ای فن نرم افزار


لطفا کمی در مورد این روش صحبت کنید(نمونه ای از اصطلاحات غیر ضروری که هیچ تعریف آکادمیک نمیشه از اون کرد)




> شاید یکی از تفاوتهای جدی وجود یا عدم وجود تحصیلات و مطالعات آکادمیک در حوزهء نرم افزار


اگه منظورت مطالعه آکادمیک در ایرانه که همه کسانی که بر اساس دانش دانشگاهی کار میکنن همون گنجشکک اشی مشی هستند 

و در مورد جناب linux



> ما که داریم استفاده می کنیم! بحث خوبی هست. 
> و این به نظر من خیلی طبیعی هست بین کدهای il که توسط زبان های مختلف تولید میشه تفاوتهای باشه.


برای من هم این بحث خیلی مفیده چون از یک زاویه دیگه داریم به دات نت نگاه میکنیم :wink: 
اینجا بحث تفاوت در il ها نیست تفاوت در سرعت و تفاوت (شاید ساختاری) در محیط یکپارچه سازی است 

شما هم موفق باشید

_---
Edited_

----------


## Inprise

سلام؛

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

موفق باشید

----------


## einian85

با اینکه تمام اینها به IL ترجمه می شوند ولی به نظر میرسه IL به دست اومده از زبونی مثل vb.net سرعت پایین تری نسبت به IL بدست اومده از managed C++‎ باشه. برای اینکه بفهمید آیا IL دو برنامه به زبانهای سی شارپ و وی بی یکی هست یا نه یه برنامه ی خیلی کوچک کنسول تو هر دو بنویسید و کامپایل کنید و سپس کد بدست اومده رو با ildasm کد il ش رو ببینید. در ضمن سرعت یه برنامه ی دات نت چیز اونقدر مهمی نیست که با همدیگه دعوا بکنیم!

----------


## alians802

با سلام 
وقتی قرار است که برنامه همه زبانهای دات نت به یک IL تبدیل بشوند و بعد نسخه اجرایی آنها ساخته شود پس معنا ندارد که راجع به این که کدام کد سریع تر عمل خواهد کرد بحث کنیم چون همگی اول به یک زبان تبدیل می شوند و بعد نسخه اجرایی ساخته می شود. 
اما من با Inprise موافقم از این جهت که تبدیل شدن از زبان مبدا به زبان واسط حالت های مختلفی خواهد داشت . به این معنی که فرض کنید دو الگوریتم دقیقا به یک شکل در دو زبان سی شارپ و وی بی نوشته می شوند. آیا تضمینی وجود دارد که زبان واسطی که این دو الگوریتم تولید می کنند دقیقا مثل هم باشد؟ خیلی راحت می توان نتیجه گرفت که زمان اجرایی دو کامپایلر برای یک کار مشخص تفاوت خواهد داشت. 
این همه دعوا هم لازم نبود ...  :wink:    :D

----------


## حسن صفوی

آقا یک کلام به صد کلام من از وقتی روز اول ماکروسافت دات نت را ارزه کرد تحقیقات فراوانی انجام دادم و با خیلی از برنامه نویسان خارجی تماس گرفتم اما کسی که برنامه نویس ++ :VCهیچ وقت به سی شارپ نمی یاد مگر کسی که تک برنامه نویس باشد الآن شرکت های بزرگ فقط با vC++‎ برنامه می نویسند .

----------


## M.GhanaatPisheh

> کسی که برنامه نویس ++ :VCهیچ وقت به سی شارپ نمی یاد


چرا؟




> مگر کسی که تک برنامه نویس باشد


یعنی چی؟




> الآن شرکت های بزرگ فقط با vC++‎ برنامه می نویسند .


  :گیج:

----------


## AS Programmer

البته به نظر من همه زبان ها یک خصوصیت منحصر به فرد دارند و هر یک در جای خود خوب هستند و نباید در مورد این که کدام زبان سریع تر است تعصب به خرج دهیم و زبانی را که خودمان بلدیم نام ببریم هر چند که سی شارپ سریعترین است . :sunglass:

----------


## حسن صفوی

در جواب کاربر نقره ای باید اینرو خدمتشون عرض کنم که ماکروسافت زبانVC#‎ به این دلیل ارزه کرد که برنامه نویسانی که با زبان C/C++‎ کارکردندومی خواهند برنامه های تحت ویندوز یا وب اتوماسیون های کوچک یا متوسطی ایجاد کنند بجای استفاده از VC++‎ از VC#‎ استفاده کنند ولی نه اینکه مثلا شرکت دیسکریت بیاید 3دی مکس خود را با VC#‎ بسازد .زبان VC++‎ هر چند که دارای خصوصیات قدیمی تری نسبت به C#‎ است ولی هنوز برای ساخت نرم افزار های حجیمی که چنصد برنامه نویس متحدانه کار می کنندزبان VC++‎ بهترین انتخاب است البته اینهم بگویم که تمام قابلیت های زبان VC#‎ در  managed C++‎ وجود دارد در کشور ما زبانی مثل VC#‎ طرفداران زیادتری دارد چرا؟ چون ما در ایران شرکت های بزرگ برنامه نویسی نظیر آتودسک ودیسکریت یا ماکروسافت نداریم که بخواهد VC++‎ زبان اول قلمداد شود. در ضمن سرعت ایجاد نرم افزار در C#‎ از VC++‎ بالاتر است.حتی زبان هایی مثل VB.net و delphi هم در ایجاد نرم افزار از VC++‎ سریعتر است چون جز محصولات Rad هستند ولی از لحاظ سرعت اجرا نرم افزار های تشکیل شده توسط این زبان ها ماکروسافت حرف اول رو می زند وسازگاری بیشتری با ویندوز دارد تا محصولات بورلند.

----------


## Inprise

فقط در مورد "دات نت" حرف بزنید .

----------


## Delphi Skyline

به نظر من C#‎

----------


## Delphi Skyline

البته .NET

----------


## مهدی کرامتی

فکر کنم بحث به بیراهه کشیده شده.

بعضی دوستان نیز بصورت چشمگیری در ارسال پستهای آف تاپیک و تک خطی و بی ربط در جهت افزایش تعداد پست هایشان (چرا؟) فعالیت میکنند!

----------


## M.GhanaatPisheh

اینکه ابزار ما در پیاده سازی یک پروژه چی باشه بر میگرده به اینکه نوع پروژه چی باشه.
chapter 6 از کتاب Solution Atchitectures مایکروسافت اینجوری بیان میکنه که توی مرحله Physical Design ما ابزارهای مختلف رو برای پیاده سازی پروژه بررسی میکنیم و بهترین ابزار رو با توجه به نیازمون انتخاب میکنیم

پس دفاع کردن از یه ابزار خاص نشانه آگاهی کمه یا بهتر بگم تعصب نشانه جهل است.

روی اینترنت جستجو کنید ببینید اساتید مسلم technologyهای مختلف مثل  WebServices,Remoting,Messagingو غیره و غیره کیا هستند و Backgroundشون رو ببینید.
موفق باشید.

----------


## hmm

سرعت برنامه های دات نت ارتباطی با طراحی فیزیکی نداره اون ابزارهای گفته شده ابزار های طراحی هستند مثلا oracle case یکی از این ابزارهاست.
انتخاب پلتفرم برنامه نویسی و ایضا زبان آن در موقع پیاده سازیه و اون هم به فاکتور ها و پارامترهای بسیاری (حتی سیاسی) بستگی داره

"*اعترافیه*:" :kaf: 
بنده امروز متوجه شدم این تاپیک بعد از مدتی باز شده (شاید به لطف اون هکر باشه ، نمیدونم)
ولی در مورد سرعت برنامه های تحت دات نت حقیر با راهنماییهای جناب inprise (ع) متقاعد شدم و این بحث باعث شد جدی تر و حتی علمی تر و نه تعصبی تر به این مسئله نگاه کنم دوستان رو هم دعوت میکنم دوباره فرمایشات این استاد گرامی رو مرور بفرمایند.

---

----------


## M.GhanaatPisheh

> سرعت برنامه های دات نت ارتباطی با طراحی فیزیکی نداره


حق با شماست ظاهرا بحث اولیه به بیراهه رفته.
من جواب این دوستمون رو دادم که گفته بود برنامه نویسای حرفه ای VC++‎ سراغ C#‎ نمیرن.

در کل این challenge topic جالبی بود 
با تشکر از inprise  :موفق:

----------


## dotnet

من یک بار یه کد برنامه ساده  رو برای همه پیچوندم کامپایل هم همه جوره زدم سرعت خیلی محسوس نبود 
نه که فرقی نداشت از وی بی رو بیشتر دوست دارم ولی بلاخره از همه کند تر بود. این از قابلیتهای وی بی کم نمی کنه چون اگه اون یکی ها می خواستن مثل وی بی حرف بزنن حتما تر می زدن.بی ادبی من رو ببخشین.
حالا سر چی وقت تلف می کنین ؟   :flower:

----------


## M.GhanaatPisheh

> حالا سر چی وقت تلف می کنین ؟


اگر بحث فوق رو درست میخوندی اینجوری حرف نمی زدی.

----------


## فاطمه هاشمیان

سلام 
اصلا احتیاجی به این همه بحث نیست با یک تست کوچیک با کد نویسی و اجرای یه حلقه و به کار بردن یه Timer برای اندارزه گیری زمان می شه فهمید که سرعت اجرای برنامه توی #C چهار برابر VB است میشه همین تست رو برای زبان های دیگه هم اعمال کرد  :)

----------


## dotnet

> اگر بحث فوق رو درست میخوندی اینجوری حرف نمی زدی.


 سوال  مگه رو سرعت اجرای کدهای مشابه تو زبانهای دات نت نیست ؟
اقای مجتبی قناعت پیشه  عزیز دوست گرامی من جوابم اینه که یه تست کوچولو رو یه کد مشابه طوری بود که وی بی کند تر عمل می کرد حالا خانم فاطمه هاشمیان میگه :
سرعت اجرای برنامه توی #C چهار برابر VB است کاری ندارم ولی نود ونه درصد سرعت اجرا فرق میکنه
چیزی که عیان است ...
باز اگه نفهمیدم سوال چیه دیگه یا جواب نمیدم یا اگه بدون عجله دوباره خونم یه جواب میدم که سرزنشم نکنی :flower:

----------


## ali_hadian

آقا من چند ماهه این تاپیک رو زدم شما هنوز دارید سرش جنگ و دعوا میکنید :mad:

----------


## حسن صفوی

آقای Dot_net_lover ماکروسافت که نمی گه ماست من ترشه و بیاد یکی از ابزار هایشرا بر یکی برتر بدانه او از VC بعنوان Power oriented یاد کرده ونشاندهنده قدرت زیاد VC در پروژه های بزرگه بهمین دلیل برنامه نویسانی که پروژه های بزرگ می خواهند بنویسند VC رو انتخواب می کنند نه C#‎ را .من هم فقط در مورد این نوع پروژه ها گفتم VC از #C بهتر است نه در چیز دیگری مثل Web Application 
 :flower:  موفق باشید

----------


## M.GhanaatPisheh

> گفتم VC از #C بهتر است


جواب :



> اینکه ابزار ما در پیاده سازی یک پروژه چی باشه بر میگرده به اینکه نوع پروژه چی باشه. 
> chapter 6 از کتاب Solution Atchitectures مایکروسافت اینجوری بیان میکنه که توی مرحله Physical Design ما ابزارهای مختلف رو برای پیاده سازی پروژه بررسی میکنیم و بهترین ابزار رو با توجه به نیازمون انتخاب میکنیم 
> 
> پس دفاع کردن از یه ابزار خاص نشانه آگاهی کمه یا بهتر بگم تعصب نشانه جهل است. 
> 
> روی اینترنت جستجو کنید ببینید اساتید مسلم technologyهای مختلف مثل WebServices,Remoting,Messagingو غیره و غیره کیا هستند و Backgroundشون رو ببینید. 
> موفق باشید






> سرعت اجرای برنامه توی #C چهار برابر VB است


به بار دیگه از اول challenge بالا و بیانات Inprise (ع) رو با دقت بخونید.




> باز اگه نفهمیدم سوال چیه دیگه یا جواب نمیدم یا اگه بدون عجله دوباره خونم یه جواب میدم که سرزنشم نکنی


 :flower:

----------


## Peyman_Ranjbar

> سرعت اجرای برنامه توی #C چهار برابر VB است


اصلا اینجور نیست چون چند وقت پیش برتامه ای با #c نوشتم که حدود یک دقیقه طول میکشید تا اجرا بشه
لابد با vb  چهار دقیقه طول میکشه؟؟؟!!!! :oops:

----------


## rezaei manesh

من با آقای علی کشاورز موافقم.
 ::نوشتن::

----------


## حسن صفوی

سرعت اجرایی برنامه در #C و vb هیچ فرقی ندارد حتی در ساخت نرم افزار VB سریعتر است .

----------


## ali_hadian

سلام
من که   :گیج:   :confy2: 
هنوز جواب سوالم رو نگرفتم
یکی یه جمع بندی کلی انجام بده لطفا

----------


## vDelphi

> سرعت اجرایی برنامه در #C و vb هیچ فرقی ندارد حتی در ساخت نرم افزار VB سریعتر است .


اصلا اینطور نیست! :strange:

----------


## حسن صفوی

> اصلا اینطور نیست!


پس چه طور است می تونی به کتاب های MCSD مراجعه کنی پس از بررسی های زیاد بالاخره به همین نتیجه می رسی.

----------


## ealireza

دوستان بحث بر سر برتری C#‎.net یا Vb.net هیچ وقت به نتیجه منتقی نخواهد رسید 
در اجرای بعضی از دستورات VB بر #C پیشته میگیره و برتری پیدا میکنه و بلعکس ...

قدرت این دوزبان از لحاظ سرعتی و... برابر نیست همونطور که گفتم در بضی جاها سرعت اجرا با هم فرق داره و یکی بیشتر از دیگری میشه 
مثلا برای حلقه های For  و Replace های Anycase که سنگین هم باشن Vb.net ضعیف بنظر میاد 
ولی باز نمیتوان گفت VB.net کنده یا ضعیف تر از #C هست 

در بعضی جاها هم #C خیلی کند تر از Vb.net عمل میکنه 


اما مسئله جالبی که من دیدم حجم خروجی برنامه کامپایل شده بود ...
در صورتی که یک حلقه FOR بود 
VB.net  ===> 10 KB
C#‎ ===> 6KB
و همین امر موجب شده بود #C سریع تر عمل کنه

البته همونطور که گفتم خروجی این دو در دستورات مختلف با هم یکسان نیستند ...


امید وارم مسیر بحث رو عوض نکرده باشم ...

----------


## ali_hadian

سلام
اگه کسی از جاهای دیگه لینکی در  همین زمینه داره بذاره

----------


## Mirzabenevis

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

----------


## mostafa_leman

همونطور که میدونید vs.net بر خلاف vb کد برنامه رو مستقیما به کد ماشین تبدیل میکنه
و جالبه Convertor این دو زبان زیاد فرقی نداره
بنا بر ابن تقریبا سرعت برابری دارند
اما من با حرف آقای Mirzabenevis موافقم
(( در دات نت اونقدری که نوع برنامه نویسی و الگوریتم ها و نحوه به کار گیری دستورات مثلا بلاک ها در سرعت برنامه مهم هست ، نوع زبان مهم نیست  ))

----------


## omid_Ahmadi

> همونطور که میدونید vs.net بر خلاف vb کد برنامه رو مستقیما به کد ماشین تبدیل میکنه


 :متعجب:  




> و جالبه Convertor این دو زبان زیاد فرقی نداره


 :متعجب:  




> بنا بر ابن تقریبا سرعت برابری دارند


:kaf: چه طور به این نتیجه رسیدید؟

----------

