ورود

View Full Version : معایب دات نت



aliyeh
شنبه 06 آبان 1385, 07:59 صبح
راستش هر جا صحبت از دات نت میشه همه از مزایایی که دات نت داره صحبت میکنن.ولی این تکنولوژی نسبتا جدید باید در کنار همه این مزایا معایبی هم داشته باشه.اگر کسی مطلبی داره میشه لطف کنه و مارو هم بی نصیب نذاره؟

baambooli
یک شنبه 07 آبان 1385, 11:12 صبح
اولین عیبی که باعث شده من هیچوقت طرفش نروم این است که باید پلتفرم دات نت را روی کامپیوترت نصب کنی و با این کار کلی سرعت اون پایین میاد

dkhatibi
یک شنبه 07 آبان 1385, 11:52 صبح
به نظر می آید در نسخه های بعدی ویندوز دات نت به همراه سیستم عامل عرضه می گردد؛ لذا شاید این عیب بزرگی نباشه!

hmm
یک شنبه 07 آبان 1385, 14:15 عصر
هیچ موقع این عیب محسوب نشده و نمیشه

amir_civil
یک شنبه 07 آبان 1385, 17:51 عصر
سلام
به نظر من میشه راحت سورس برنامه های نوشته شده با دات نت رو بدست اورد
بزرگترین عیب

Azad_swk
یک شنبه 07 آبان 1385, 18:33 عصر
به نظر من میشه راحت سورس برنامه های نوشته شده با دات نت رو بدست اورد
بزرگترین عیب

این موضوع نیز عیب محسوب نمی شود چون شما میتوانید با استفاده از Packer هایی که وجود دارد تاحد بسیار زیادی امنیت کد خود را تامین نمایید. مانند Dotfuscator که نسخه Community آن همراه VS وجود دارد و یا Xenocode و ...
برای آشنایی بیشتر در مورد Packer ها میتوانید به مجموعه مطالب مفیدی که جناب Inpriseو دوستان دیگر در قسمت "امنیت در نرم افزار" نوشته اند مراجعه کنید.

mehrzad007
یک شنبه 07 آبان 1385, 20:36 عصر
شاید این که هم کار رو آسون می کنه و هم سخت یه مشکل باشه . (اون شاید اول رو هم ببینین)
خیلی از کارها با زبانهای ویژوال ساده شدن اما به همون اندازه گسترده و در عوض مشکل شدن . برای مثال یه نگاه به تول باکس خودتون بندازین از خیلی هاشون شما استفاده نمی کنین و بیشتر بخاطر اینه که نمی دونین چیه تا این که به دردتون نخوره

محمد میرمصطفی
دوشنبه 08 آبان 1385, 00:30 صبح
به نظر من همونی که جناب amir_civil (http://barnamenevis.org/forum/member.php?u=11251) گفتن: بدست آوردن سورس برنامه ها آسونه.
تو Vista خود بخود NET 3. نصب هست. این شاید بهترین خبر باشه ولی کو تا فراگیر شه.

soroush_vs
پنج شنبه 11 آبان 1385, 16:47 عصر
یکی از معایب غیر انکار سرعت Run برنامه هست. این هم شبیه جاوا است . بخاطر وجود یک پلت فرم(واسطه)بین Application و سیستم عامل است.

محمد میرمصطفی
پنج شنبه 11 آبان 1385, 23:19 عصر
میشه بیشتر توضیح بدی؟ البته علمی

soroush_vs
جمعه 12 آبان 1385, 11:06 صبح
ببینید برنامه هایی که تحت سیستم عامل اجرا میشن خب با حداکثر سرعت Run میشوند.
اما برنامه هایی که برای سیستم عامل نوشته نشده اند یعنی برای یک پلت فرو خاص مثل VM جاوا یا CLR دات نت نوشته میشن کمی متفاوتند.بنابراین برای اجرا روی سیستم عامل یک واسطه میان سیستم عامل وApplication وجود خواهد داشت که بطور قابل توجهی زمان اجرای برنامه رو کاهش میدهد.البته این مورد برای برنامه های بزرگ خودش رو به عنوان یک ضعف بزرگ معرفی و نمایان تر میکند.
مثال عیان:اگه با لینوکس کار کرده باشید حتما برنامه ی Open Office که توسط شرکت Sun با زبان جاوا نوشته شده را دیده اید.(زمان اجرای بسیار زیاد)

omid_Ahmadi
شنبه 13 آبان 1385, 07:18 صبح
البته این قدر هم که شما میگید کند نیست، در جاوا با بهینه سازیهایی که در این قسمت صورت گرفته به سرعت مناسب و قابل قبولی دست پیدا کرده، .NET هم با استفاده از سیستمهایی مثل Code Caching و یا بهتر کردن الگوریتمهای JIT Compiler سعی داره که به یک سرعت منطقی برسه که البته تا حالا هم موفق بوده.
اگر سیستم Code Caching که در JIT وجود داره و بررسی کنید متوجه می شید که با اجرای برنامه، فقط مرتبه اول اجرای هم تابع، مقداری زمان صرف کامپایل اون میشه. در مقابل این مورد (استفاده از VM) فایده های زیادی هم داره، مثلا سرعت در پیاده سازی برنامه...

soroush_vs
شنبه 13 آبان 1385, 08:21 صبح
کاملا درسته.
نسبت به مزایای بسیار زیاد این معایب اصلا حتی قابل بحث نیستند.
اما همیشه وقتی که خوبی های یک نفر زیاد میشه زشتیهای اون اگر چه خیلی کوچک باشند بیشتر به چشم میرسند.
عملا این عیوب قابل چشم پوشی هستند

vahidiran
جمعه 01 دی 1385, 15:48 عصر
خود .net من نمی تونم براش عیب بتراشم ، ولی عیبی می تونم بگیرم اینه که خیلی help اش چکشی هستش و مثال هاش قابل درک نیست یا زمان زیادی می بره تا بتونم اونو آنالیز کنم اینجوی بگم helpاش قابل مقایسه با زیبایی مثال ها و توضیحاتی که msdn library 2000 داره نیست ، شاید هم من این طور فکر می کنم و هنوز حرفای نشده ام؟

Asad.Safari
جمعه 01 دی 1385, 19:14 عصر
شاید هم من این طور فکر می کنم و هنوز حرفای نشده ام؟

باید زحمت بکشی .
msdn هاش حرف نداره !


موفق باشید

M A R S H A L
دوشنبه 04 دی 1385, 09:13 صبح
دوستان اصلا نمیشه دلخوش به امنیت اعمال شده روی برنامه های تولید شده بر اساس دات نت بود. یعنی بعلت معماری اون (IL) بودن اون با هر Packer / Protector ی هم بخواهید ازش محافظت کنید، ظرف مدت کوتاهی و بسادگی از حالت حفاظت شده میشه خارجش کرد.
(کافیه کمی در این مورد تحقیق کنید)
بعد از اون هم که خود برنامه کدش بسادگی قابل حدس و تغییر هست ( ر-ک IL DASM).
سرعت لود برنامه هم که بعلت کامپایل دوباره نسبت به معماری ها غیر دات نت بسیار کند است.
مشکل بعدی هم اینکه روی سیستمی که Net FrameWork روش نصب نیست برای اجرای یک برنامه کوچک و ساده ، کاربر مجبور به نصب FrameWork حدودا 20 مگا بایتی میباشد.
شما اگه کمی به برنامه های نوشته شده توسط شرکتهای بزرگ و کوچک نرم افزاری داشته باشید، متوجه میشید که هیچ کدوم از تکنولوژی دات نت استفاده نمیکنند.
فکر میکنم وجود همین مسائل برای عدم انتخاب تکنولوژی دات نت برای برنامه نویسی کافی باشه. ( البته نظر شخصی بنده )
موفق باشید.

Inprise
دوشنبه 04 دی 1385, 13:25 عصر
شما اگه کمی به برنامه های نوشته شده توسط شرکتهای بزرگ و کوچک نرم افزاری داشته باشید، متوجه میشید که هیچ کدوم از تکنولوژی دات نت استفاده نمیکنن

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

amir.NET2
پنج شنبه 07 دی 1385, 12:24 عصر
به نظر من هرطرفی مایکروسافت بره فعلا مجبوریم بریم

گرچه خود مایکروسافت دیگه از .NET استفاده نمی کنه

ولی چون الان میگه .NET چاره ای نیست باید بنویسیم

اَرژنگ
پنج شنبه 07 دی 1385, 13:50 عصر
به نظر من هرطرفی مایکروسافت بره فعلا مجبوریم بریم

گرچه خود مایکروسافت دیگه از .NET استفاده نمی کنه

ولی چون الان میگه .NET چاره ای نیست باید بنویسیم
Delphi ???

مهدی کرامتی
پنج شنبه 07 دی 1385, 14:05 عصر
گرچه خود مایکروسافت دیگه از .NET استفاده نمی کنه

اتفاقا مایکروسافت این روزها استفاده زیادی از دات نت میکنه.

مثلا بزرگترین تغییر آفیس 2007 مجهز شدن به ارتباط از طریق SharePoint است و این ارتباط و مدیریت مسائل مربوطه مبتنی بر دات نت است.

همین طور محصولات وب مایکروسافت این روزها همگی مبتنی بر دات نت هستند.

Microsoft.net
جمعه 08 دی 1385, 00:17 صبح
در ضمن در نسل جدید سیستم عامل ویندوز ویستا فریم وورک به صورت توکار وجود داره جوری که نمیتونین حذفش کننین من نسخه فاینالشو نصب کردم و همه برنامه های دات نت رو اجرا میکرد

SYSMAN
جمعه 08 دی 1385, 23:39 عصر
به نظر من هرطرفی مایکروسافت بره فعلا مجبوریم بریم

گرچه خود مایکروسافت دیگه از .NET استفاده نمی کنه

ولی چون الان میگه .NET چاره ای نیست باید بنویسیم

دوست عزیز پس حتما برنامه Microsoft accounting 2007 express edition رو بگیرید تا ببینید کل برنامه چه طور با NET. پیاده سازی شده.

komail_sh
چهارشنبه 27 دی 1385, 11:35 صبح
یکی از معایب غیر انکار سرعت Run برنامه هست. این هم شبیه جاوا است . بخاطر وجود یک پلت فرم(واسطه)بین Application و سیستم عامل است.

باید بگم که یکی از محاسن .net اینه که مستقل از سیستم عامل کار میکنه

komail_sh
چهارشنبه 27 دی 1385, 11:37 صبح
باید بگم یکی از محاسنات .net اینه که مستقل از سیستم عامل عمل میکنه

ali_kolahdoozan
چهارشنبه 27 دی 1385, 11:42 صبح
راست میگن microsoft money رو نسخه 2007 ببینید آن وقت قدرت دات نت رو میبینید

vahidiran
یک شنبه 01 بهمن 1385, 10:31 صبح
می شه یه توضیحی درباره این برنامه بدید که چکار می کنه

pswin.pooya
شنبه 19 اسفند 1385, 11:34 صبح
سلام
در مورد سرعت دات نت باید بگم که برنامه های دات نت فقط در بارگذاری اولیه کند هستن و بعداز خیلی خوب و سریع اجرا میشن

ar.shirazi
یک شنبه 20 اسفند 1385, 03:37 صبح
راست میگن microsoft money رو نسخه 2007 ببینید آن وقت قدرت دات نت رو میبینید

علی جان در مورد استفاده زیاد دات نت از منابع سیستم و به خصوص حافظه چه نظری داریی؟؟

CodeMasterX
سه شنبه 22 اسفند 1385, 00:36 صبح
محصولات جدید مایکروسافت مثل MS-Robotics Studio و MS-XNA Game Studio و یه سری محصول دیگه هم تقریبا 1 سال پیش داد بیرون که برای رقابت با Macromedia DreamWeaver-Flash و Adobe Photoshop بود که اسمش رو الان دقیقا یادم نیست.این ها هم بر پایه دات نت طراحی شدن و یا دات نت Integrate هستند.در کنار این ها توی همین ایران خودمون خیلی از محصولات Enterprise و خوبی که سال هاست دارن به فروش می رسن نسخه های حدیدشون رو با دات نت پیاده سازی کردن.به نظر من هم در کنار این همه مزایا و در ضمن تازه و نو بودن دات نت این مباحث عیب نیستن.این رو هم در نظر داشته باشیم که برای مسائلی مثل امنیت کد و سرعت برنامه ها مایکروسافت همینجوری اوضاع رو رها نکرده،با کمی تحقیق و مطالعه در msdn و منابع مایکروسافت راه حل هایی رو میشه پیدا کرد که اگر صد درصد رفع نکنن ولی کمک می کنند تا با این مشکلات راحت تر برخورد کنیم.

Delphi Skyline
سه شنبه 29 اسفند 1385, 11:24 صبح
این رو هم باید بگیم که قسمت هایی از ویندوز ویستا رو با دات نت نوشتن (زبانش مهم نیست) . یکی از چیزهای جالبی که دات نت داره اینه که شما می تونید راحت در چند زبان دات نت برنامه بنویسید زیرا زبان های دات نت همگی ::
1 - از یک کتابخانه استفاده می کنند .
2 - وحدت کد دارند .
3 - همگی در واقع لایه ای بین شما و ماشین دات نت هستند پس میشه گفت همگی یکی هستند . بیشتر در Syntax فرق دارند .

در کل میشه گفت با امدن ویندوز ویستا که خودش .NET3 رو داره (SDK رو نداره - یعنی شما برای نوشتن برنامه باید SDK رو نصب کنی فقط خود فریم ورک رو داره) دیگه از نظر مشکل نصب ماشین مشکلی نیست و از این لحاظ فرقی با Win32 نداره .
اما مساله بین جاوا و دات نت است ::
1 - جاوا به سمت سرس باز و چند پلات فرمی پیش رفته و میره (پلات فرم های PC , اسمارت فون ها , پاکت پیسی ها و گیم کنسول ها) .
2 - دات نت موفق ترین در وب بوده - البته رقیب سرسختش یعنی PHP را هم کمی کنار زده .
3 - استفاده از دات نت اسان تر است .

ar.shirazi
یک شنبه 05 فروردین 1386, 23:09 عصر
سلام
در مورد سرعت دات نت باید بگم که برنامه های دات نت فقط در بارگذاری اولیه کند هستن و بعداز خیلی خوب و سریع اجرا میشن

این مشکل کمی نیست .

ضمن اینکه برنامه های دات نتی حافظه زیادی مصرف میکنند

omid_Ahmadi
دوشنبه 06 فروردین 1386, 07:48 صبح
این مشکل کمی نیست .
در واقع این مورد اصلا مشکل نیست. اگر شما در حال پیاده سازی برنامه ای هستید که سرعت، یکی از اساسی ترین فاکتورهای اون به شمار میره و اهمیتی بیشتر از زمان طراحی، امنیت و ... داره، خوب سولوشنهای دیگه ای برای این حالت وجود دارن. در واقع در این موارد طراحی برنامه به صورتی که به یک لایه میانی وابسته باشه (مثلا به CLR یا JVM) اصلا کار منطقی به نظر نمیرسه.



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

ar.shirazi
دوشنبه 06 فروردین 1386, 15:21 عصر
در واقع این مورد اصلا مشکل نیست. اگر شما در حال پیاده سازی برنامه ای هستید که سرعت، یکی از اساسی ترین فاکتورهای اون به شمار میره و اهمیتی بیشتر از زمان طراحی، امنیت و ... داره، خوب سولوشنهای دیگه ای برای این حالت وجود دارن. در واقع در این موارد طراحی برنامه به صورتی که به یک لایه میانی وابسته باشه (مثلا به CLR یا JVM) اصلا کار منطقی به نظر نمیرسه.

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


امید جان

بسیاری از تئوریها در عمل درست از آب در نمی آیند.

بنده از مفاهیم دات نت و GC و ... کاملا اطلاع دارم ولی بیاید یک تمرین عملی با هم داشته باشیم :
شما میتوانید در VS.Net یک برنامه ویندوز اپلیکیشن ایجاد کرده و بدون هیچ کنترلی آن را اجرا کنید و ببینید که همین فرم ساده ، 8 مگابایت حافظه اشغال میکند!!!!

این کار را در VB 6 انجام دهید ، زیر 1 مگا بایت خواهد شد .

منظور بنده از مصرف حافظه همین بود.

ar.shirazi
دوشنبه 06 فروردین 1386, 15:24 عصر
ضمنا ، میدانم که به این بخش مربوط نمی شود ولی میشود بگویید در سال 1348 که پدر بنده تازه 10 سال داشته اند !!! چگونه بنده در آن زمان در این فوروم عضو شده و پست زده ام ؟؟؟


به تاریخ عضویت بنده نگاه کنید :
تاریخ عضویت: دی 1348

ar.shirazi
دوشنبه 06 فروردین 1386, 15:26 عصر
ضمنا ، میدانم که به این بخش مربوط نمی شود ولی میشود بگویید در سال 1348 که پدر بنده تازه 10 سال داشته اند !!! چگونه بنده در آن زمان در این فوروم عضو شده و پست زده ام ؟؟؟


به تاریخ عضویت بنده نگاه کنید :
تاریخ عضویت: دی 1348

omid_Ahmadi
دوشنبه 06 فروردین 1386, 15:31 عصر
بسیاری از تئوریها در عمل درست از آب در نمی آیند.

بنده از مفاهیم دات نت و GC و ... کاملا اطلاع دارم ولی بیاید یک تمرین عملی با هم داشته باشیم :
شما میتوانید در VS.Net یک برنامه ویندوز اپلیکیشن ایجاد کرده و بدون هیچ کنترلی آن را اجرا کنید و ببینید که همین فرم ساده ، 8 مگابایت حافظه اشغال میکند!!!!

این کار را در VB 6 انجام دهید ، زیر 1 مگا بایت خواهد شد .


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

ar.shirazi
یک شنبه 12 فروردین 1386, 23:28 عصر
بهتره ابزاری که برای بررسی یک تکنولوژی انتخاب می کنید، مقداری کاملتر از چیزی مثل Task Manager، برنامه ای که برای تست ایجاد می کنید، مقداری کاملتر از یه فرم خالی و زمان اجرای برنامه تست هم بیشتر از یک کامپایل (که حتی Configuration اون هم مشخص نیست که برای چه حالتی تنظیم شده) باشه. به این ترتیب تضمین می کنم که به نتایج دقیق تری برسید و درک کنید که تئوری های دقیق که برای اونها بررسی های کاملی انجام گرفته، در عمل هم نتایج خوبی رو دارن.


بازهم این مساله در حد تئوری باقی میماند.

ببینین ، مثل تفاوت Asp.net و php مه از لحاظ تئوری هر چند قاعدتا بایستی سرعت asp.net به دلیل کامپایل شدن خیلی بالاتر باشد ولی در عمل این مساله کاملا برعکس است . البته بنده میدانم که مشکل به خاطر ضعف سیستم عامل های میایکروسافت است ولی میخواهم عرض کنم که لزوما آنچه در تئوری خوانده ایم ، در عمل درست از آب در نمی آید .

در مورد دات و نت و مصرف حافظه هم اینگونه عرض کنم . شما یک برنامه به همان سادگی که عرض کردم را ایجاد کنید و build کرده و اجرا نمایید . حالا من نمیدانم شما چه ابزاری را بیشتر از task manager قبول دارید که مصرف حافظه و سی پی یو را نشان دهد ولی فکر نمیکنم تفاوت به آن فاحشی باشد !! .

آیا میتوانید ثابت کنید برنامه ای که با دات نت نوشته شده و از تعداد کمی کنترل تشکیل شده و همینطور چند عمل دیتابیسی بسیار ساده انجام میدهد ، از برنامه نویشته شده مثلا در محیط دلفی یا حتی vb6 کمتر حافظه و سی پی یو اشغال میکند ؟

deuce
شنبه 25 فروردین 1386, 13:16 عصر
با سلام
اگر یک WinForm ساده در سی شارپ ایجاد کنید و اون رو اجرا کنید تقریبا" 8 مگ فضا اشغال می کنه ولی اگر همین فرم رو Minimize کنید حافظه مصرفی نشان داده شده در task manager به 1 مگ کاهش پیدا می کنه. این که برنامه در ابتدای اجرا مقدار زیادی از حافظه رو "در خواست" می کنه این فایده رو داره که در صورت نیاز می تونه از همون استفاده کنه و به این ترتیب حافظه مصرف شده توسط برنامه پخش و پلا (fragmented) نمی شه
این روش توسط اکثر برنامه های ویندوز استفاده میشه مثلا" pageFile خود ویندوز یا TransAction LOG مربوط به SQL Server هم همین حالت رو داره، که این بار در مدیریت حافظه در دات نت هم از همین روش استفاده کردند.
موضوع دوم اینکه، امروزه ارزش زمان هزینه شده برای توسعه یک نرم افزار بسیار بیشتر از هزینه سخت افزار هاست و این زمان در دات نت کمتره، بنابراین به جای صرف زمان روی بهینه سازی مصرف CPU و RAM خیلی راحت به کاربر میشه گفت برو سخت افزارت رو ارتقا بده

Sajjad1364
شنبه 25 فروردین 1386, 22:14 عصر
با سلام
اولا تازه ترین نسخه نرم افزار بزرگ اتو کد رو با دات نت نوشتن(فوق العادس)

دوما اگر سرعت پایینه دلیلش اینه که:
1) دنیای دات نت واقعا بزرگه و همه کارس .پس وجود این همه گستردگی مستلزم کاهش سرعت هست. در واقع دلیل بزرگ کاهش سرعت به راحت شدن کار مثلابا ویژوال استودیو برمیگرده .بعنوان مثال وقتی که ما از َشیی به نام Table Adapter
استفاده میکنیم میفهمیم که ایجاد این شئ و استفاده از آن بار اضافی بر دوش کامپایلر ایجاد میکنه.چون این شئ به وسیله واسطه ها این راحتی را برای برنامه نویس به ارمغان میاورد
در نتیجه وجود اجزاء مختلف در این شئ غیر قابل اجتناب است واین عمل لایه ای به لایه های
مورد استفاده شما در برنامه نویسی اضافه میکند.در حالیکه CLR مجبوره تمام این لایه های تحمیلی (که برای دخالت دادن کم برنامه نویس در کار با داده ها اضافه شدن)رو اجرا کنه.
در حالیکه ما فقط یک لایه رو می بینیم.یعنی فقط خود Table Adapter
2)وجود پلت فرم قدرتمندی مثل دات نت و تبدیل کدهایی که در زمان اجرا انجام میشه .
همونطور که همه میدونن IL واقعا یک زبان اسمبلی شئ گراس و میتونه از قابلیتهای اضافی یک CPU استفاده کنه.در حالیکه VB یا Delphi اصلا توانایی تشخیص و کا ر با قابلیتهای CPU
های مختلف رو ندارند.پس داشتن این توانایی ها مستلزم صرف زمان در هنگام اجرا میباشد .
راستی فراموش نکنید که تکنولوژی دات نت ,سی شارپ و ECMA Script از سوی شرکتهای
Intel,Microsoft,HP پیشنهاد شد.همچنین با توجه به مشارکت بزرگترین شرکت سازنده CPU
و نهادینه شدن دستورات IL در نسل آینده CPU های این شرکت (بنا بر اظهارات Microsoft)
در صورت تحقق این مهم سرعت برنامه های دات نت چه شود :متعجب:
3)تضمین های مختلفی که برای اجرای صحیح و ایمن برنامه های کاربر میده
مطمئنا تا حالا برای همه پیش اومده که در حال کار با برنامه ای یکدفعه یه پیغام خطا ظاهر وبا زدن دکمه Dont Send برنامه بسته میشود(بدون اینکه دلیل ایجاد اون Bug رو بفهمید).دات نت تضمین میکنه که هیچگاه این گونه Bug ها در برنامه های مبنی بر دات نت بوجود نمیان.
در واقع Exception Handling قدرتمند دات نت بهیچ وجه اجازه نمیده که هیچگونه Exception ی
بدون اینکه هندل بشه باعث پایان دادن به اجرای برنامه بشه(مگرکاربر مایل باشد).این قابلیت هم باعث صرف زمان میشه.

البته اظهارات بالا دلایل اندکی مبنی بر سرعت کم می باشند.همچنین باید توجه داشت که این دلایل تنها توجیه سرعت کم محسوب میشوند و مشکلات و کاستی های دات نت
نمی باشند.

ar.shirazi
چهارشنبه 29 فروردین 1386, 20:35 عصر
با سلام
اگر یک WinForm ساده در سی شارپ ایجاد کنید و اون رو اجرا کنید تقریبا" 8 مگ فضا اشغال می کنه ولی اگر همین فرم رو Minimize کنید حافظه مصرفی نشان داده شده در task manager به 1 مگ کاهش پیدا می کنه. این که برنامه در ابتدای اجرا مقدار زیادی از حافظه رو "در خواست" می کنه این فایده رو داره که در صورت نیاز می تونه از همون استفاده کنه و به این ترتیب حافظه مصرف شده توسط برنامه پخش و پلا (fragmented) نمی شه
این روش توسط اکثر برنامه های ویندوز استفاده میشه مثلا" pageFile خود ویندوز یا TransAction LOG مربوط به SQL Server هم همین حالت رو داره، که این بار در مدیریت حافظه در دات نت هم از همین روش استفاده کردند.
موضوع دوم اینکه، امروزه ارزش زمان هزینه شده برای توسعه یک نرم افزار بسیار بیشتر از هزینه سخت افزار هاست و این زمان در دات نت کمتره، بنابراین به جای صرف زمان روی بهینه سازی مصرف CPU و RAM خیلی راحت به کاربر میشه گفت برو سخت افزارت رو ارتقا بده


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

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

یا اینکه با دات نت 2005 و sql server 2005 بنویسم که یک گیگ رم بخواهد و بگویم بروید 500 هزار تومان خرج کنید تا نرم افزار من اجرا شود .

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

Sajjad1364
پنج شنبه 30 فروردین 1386, 11:29 صبح
با سلام
ازضعف های دات نت و ارتباطش با برنامه نویسی شیء گرا میتوان به Special Class ها اشاره کرد.این نوع کلاس ها (مثلا کلاس Array) رو علیرغم چیزی که نشون میدن نمیتوان در کاربردهای معمولی ازشون استفاده کرد.مثلا در ژنریک ها.به عنوان مثال اگر بخایم یه متد ژنریک رو بنویسیم که بتونه تمام عناصر آرایه های یک بعدی (به جز آرایه های دندانه دار) رو
بدون در نظر گرفتن نوعشون چاپ کنه اگر این متد رو برای پذیرش تمام انواع آرایه های یک بعدی اینطور

public void IterateAll<T>(T myArray) where T:System.Array

بنویسیم اون موقس که کامپایلر میگه نمی تونی از این کلاس استفاده کنی چون این کلاس
Special Class میباشد.:متفکر:
البته خوشبختانه جایگذین اون کلاس وجود داره یعنی بجای System.Array بنویسیم ILsit
اما دیگه از متدهای مخصوص خود کلاس System.Array خبری نیست:ناراحت:
از طرفی تعریف این کلاس از سوی دات نت اینجوری بیان میشه

Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime
اینکه بررسی این کلاس در CLR هستش به این خاطره که ما انواع مختلفی از آرایه ها رو ایجاد میکنیم و این بررسی در CLR طبیعیه.اما مگر ژنریک ها هم در زمان کامپایل بررسی نمیشن
و کاملا دینامیک نیستن پس تعامل اونا با تمام کلاس های موجود در دات نت باید طبیعی و امری محتمل به نظر بیاد.ژنریک ها نه باSpecial Class بلکه باید با تمام کلاس های دات نت طبیعی کار کنن.ژنریک ها اوج قدرت برنامه نویسی شیء گرای خالصن پس تمام عناصر یک زبان باید در خدمتشون باشن نه اونا رو محدود کنن.کلا وجود عنصری بنام Special Class
در دات نت وتعاملاشون با ژنریک ها خلاف OOP می باشد و ضعفی در OOP ی دات نت محسوب میشن.

deuce
شنبه 01 اردیبهشت 1386, 14:59 عصر
بله ، حق با شماست .
کاربر هم خیلی راحت به بنده میگوید من میروم از یک شرکت دیگه نرم افزار را خریداری میکنم. خیلی راحت !
بنده میتوانم یک نرم افزار حسابداری با دلفی بنویسم که روی پنتویم 2 هم اجرا شود و دهها مشتری راضی داشته باشم که با همان سیستم قدیمی میتوانند کار کنند
یا اینکه با دات نت 2005 و sql server 2005 بنویسم که یک گیگ رم بخواهد و بگویم بروید 500 هزار تومان خرج کنید تا نرم افزار من اجرا شود .
فریمورک.
سلام
فکر می کنم نگاهی به شرکت های بزرگ، چه در خارج و چه حتی در ایران (مثل همکاران ، رایورز، داده پردازان دوران و ... ) این نکته را مشخص می کند که شرکت های موفق ، هیچ وقت نرم افزار خود را برای سازگاری با سخت افزار های ضعیف ننوشته اند و همواره بازار سخت افزار و نرم افزار در جهت تقویت هم حرکت کرده اند. امروز قیمت 512 مگا بایت رم در حدود 40,000 تومان است و اگر مشتری به خاطر افزایش رم سیستم هایش حاضر به خرید نرم افزار از شما نباشد مطمئن باشید این مشتری چند ماه دیگر حاضر به پرداخت هزینه پشتیبانی هم نیست و سال اینده حاضر به پرداخت هزینه به روز رسانی نرم افزار هم نخواهد بود. بنابراین اگر با دید دراز مدت نگاه کنید شاید اصولا خرید نرم افزار توسط چنین مشتریانی حتی به صرفه نیز نباشد. کما اینکه هر روز شاهد ورشکستگی شرکتهای نرم افزاری هستیم که پله پله با خواسته های مشتری قیمت خدمات خود را پایین آورده اند. فکر می کنم اگر مشتری حاضر به آماده کردن بستر سخت افزاری لازم نباشد واقعا" بهتر است که از شرکت دیگری نرم افزار بخرد.

ar.shirazi
پنج شنبه 06 اردیبهشت 1386, 11:57 صبح
سلام
فکر می کنم نگاهی به شرکت های بزرگ، چه در خارج و چه حتی در ایران (مثل همکاران ، رایورز، داده پردازان دوران و ... ) این نکته را مشخص می کند که شرکت های موفق ، هیچ وقت نرم افزار خود را برای سازگاری با سخت افزار های ضعیف ننوشته اند و همواره بازار سخت افزار و نرم افزار در جهت تقویت هم حرکت کرده اند. امروز قیمت 512 مگا بایت رم در حدود 40,000 تومان است و اگر مشتری به خاطر افزایش رم سیستم هایش حاضر به خرید نرم افزار از شما نباشد مطمئن باشید این مشتری چند ماه دیگر حاضر به پرداخت هزینه پشتیبانی هم نیست و سال اینده حاضر به پرداخت هزینه به روز رسانی نرم افزار هم نخواهد بود. بنابراین اگر با دید دراز مدت نگاه کنید شاید اصولا خرید نرم افزار توسط چنین مشتریانی حتی به صرفه نیز نباشد. کما اینکه هر روز شاهد ورشکستگی شرکتهای نرم افزاری هستیم که پله پله با خواسته های مشتری قیمت خدمات خود را پایین آورده اند. فکر می کنم اگر مشتری حاضر به آماده کردن بستر سخت افزاری لازم نباشد واقعا" بهتر است که از شرکت دیگری نرم افزار بخرد.

فرمایش شما در مورد قیمت درست ، ولی این نکته را داشته باشید

شما مدیر عامل شرکتی هستید که 50 کامپیوتر پنتیوم 4 با 256 مگابایت رم دارد. و 30 کامپیوتر پنتیوم 3 با 128 مگابایت رم

میخواهید نرم افزاری بخرید

آیا نرم افزاری میخرید که با همین سیستم ها هم به خوبی کار میکند یا اینکه سراغ نرم افزاری میروید که مجبور باشید 10 میلیون تومان ابتدا هزینه سخت افزاری بدهید ؟؟؟؟

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


اساسا ، آیا میتوان به دات نت اعتماد کرد و یک سی دی مالتی مدیا با آن ساخت ؟؟؟

آیا به همان راحتی که شما برای موبایل و pocket pc با جاوا برنامه مینویسید ، میتوانید با دات نت هم بنویسید و از نصب شدن آن و اجرای آن روی همه گوشی ها مطمئن باشید ؟؟

ar.shirazi
پنج شنبه 06 اردیبهشت 1386, 11:58 صبح
ضمنا فراموش نکنیم بسیاری از بانکها هنوز با سیستمهای وارد شده توسط ناصرالدین شاه قاجار کار میکنند . در بسیاری از ادارات هم هنوز پنتیوم 2 یک سیستم خوب محسوب میشود

deuce
شنبه 08 اردیبهشت 1386, 01:11 صبح
فرمایش شما در مورد قیمت درست ، ولی این نکته را داشته باشید
شما مدیر عامل شرکتی هستید که 50 کامپیوتر پنتیوم 4 با 256 مگابایت رم دارد. و 30 کامپیوتر پنتیوم 3 با 128 مگابایت رم میخواهید نرم افزاری بخرید
آیا نرم افزاری میخرید که با همین سیستم ها هم به خوبی کار میکند یا اینکه سراغ نرم افزاری میروید که مجبور باشید 10 میلیون تومان ابتدا هزینه سخت افزاری بدهید ؟؟؟؟

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


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

فکر می کنم تنها منبع سیستم که بیشتر مصرف می شود RAM می باشد و که آن هم با آمدن ویستا ، دیگر غیر قابل اجتناب خواهد بود.
(در خانواده Server ها از زمان Windows 2003، .دات نت همراه سیستم عامل نصب و بارگزاری می شود)


اساسا ، آیا میتوان به دات نت اعتماد کرد و یک سی دی مالتی مدیا با آن ساخت ؟؟؟
آیا به همان راحتی که شما برای موبایل و pocket pc با جاوا برنامه مینویسید ، میتوانید با دات نت هم بنویسید و از نصب شدن آن و اجرای آن روی همه گوشی ها مطمئن باشید ؟؟
جاوا ده سال قبل از دات نت ارائه شده و طبیعتا" در برخی زمینه های خاص از آن پخته تر است ولی اگر به سرعت پیشرفت دات نت از سال 2001 تا به حال دقت کنید، می بینید که با این سرعت تکمیل، ظرف چند سال آینده در زمینه های خاص هم قابل مقایسه با جاوا خواهد بود.
به عنوان مثال در سال 2004 اگر در مورد pocket pc می پرسیدید جوابم خیر بود ولی امروز می توانم به شما نرم افزار فارسی روی Pocket PC نشان بدهم که روی همه ی PPC های مجهز به ویندوزهای موبایل 5 و بالاتر بدون مشکل کار می کند.

ar.shirazi
سه شنبه 11 اردیبهشت 1386, 23:04 عصر
با سلام خدمت شما


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



آیا نرم افزارهای تحت وب و کلا وب اپلیکیشن ها همان راحتی ویندوز اپلیکیشن ها را دارند ؟ چه در زمان توسعه و چه برای طراحی واسط کاربری ؟ آیا میتوانید از آن همه کامپوننت و کنترلهای ویندوزی به ان زیبایی استفاده کنید ؟

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

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



فکر می کنم تنها منبع سیستم که بیشتر مصرف می شود RAM می باشد و که آن هم با آمدن ویستا ، دیگر غیر قابل اجتناب خواهد بود.

خیر ، سی پی یو هم بیشتر اشغال میشود . سرعت هم بدلیل استفاده از JIT کمتر میشود


(در خانواده Server ها از زمان Windows 2003، .دات نت همراه سیستم عامل نصب و بارگزاری می شود)


بازهم خیر ، چون ورژن 1.1 با ویندوز 2003 ارائه شده است و نه ورژن 2 و 3 و ...


به عنوان مثال در سال 2004 اگر در مورد pocket pc می پرسیدید جوابم خیر بود ولی امروز می توانم به شما نرم افزار فارسی روی Pocket PC نشان بدهم که روی همه ی PPC های مجهز به ویندوزهای موبایل 5 و بالاتر بدون مشکل کار می کند.

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

موفق باشید دوست عزیز

manager
چهارشنبه 12 اردیبهشت 1386, 06:28 صبح
...
از طرفی تعریف این کلاس از سوی دات نت اینجوری بیان میشه

Provides methods for creating, manipulating, searching, and sorting arrays, thereby serving as the base class for all arrays in the common language runtime
اینکه بررسی این کلاس در CLR هستش به این خاطره که ما انواع مختلفی از آرایه ها رو ایجاد میکنیم و این بررسی در CLR طبیعیه.اما مگر ژنریک ها هم در زمان کامپایل بررسی نمیشن
و کاملا دینامیک نیستن پس تعامل اونا با تمام کلاس های موجود در دات نت باید طبیعی و امری محتمل به نظر بیاد.ژنریک ها نه باSpecial Class بلکه باید با تمام کلاس های دات نت طبیعی کار کنن
می شه بیشتر توضیح بدید، منظورتون رو متوجه نمی شم !


.ژنریک ها اوج قدرت برنامه نویسی شیء گرای خالصن پس تمام عناصر یک زبان باید در خدمتشون باشن نه اونا رو محدود کنن.کلا وجود عنصری بنام Special Class
در دات نت وتعاملاشون با ژنریک ها خلاف OOP می باشد و ضعفی در OOP ی دات نت محسوب میشن.یعنی .Netframework 1.X زیاد شیئ گرا نبوده ؟ اتفاقا من فکر می کنم Genericها جزء اصول OOP نیستند. اگر امکان داره بیشتر توضیح بدید !

Sajjad1364
یک شنبه 13 خرداد 1386, 20:33 عصر
با عرض پوزش از اینکه دیر خدمت رسیدم.من سربازی بودم و نتونستم سر بزنم.
خوب توضیح قسمت اول:
انواع مختلفی از آرایه ها موجود اند (یکب بعدی,دو بعدی,دندانه دار,ترکیبی از این انواع و...).در کنار شیء بودن آرایه هاو همچنین ارث بری دینامیکشان ازشیء System.Array باعث میشود
از اجزایی باشند که در زمان اجرا و در CLR بررسی شوند.آندسته از اشیایی که در CLR بررسی میشوند ,اشیاء پیچیده وکاملا دینامیکی هستند.این گونه اشیاء یا اینکه دارای وضعیت نا معلومی درزمان کامپایل هستند(Delegate ها)و یادارای وضعیت پیچیده ای هستند(آرایه ها) و یا هر دو وضعیت را با هم دارا هستند (ژنریک ها).در استفاده از ژنریک ها محدودیتی وجود دارد بنام Special Class.این محدودیت تعامل ژنریک ها را با اشیاء دیگر محدود می کند,و از ترکیب بعضی از اشیاء (که معمولا در CLR بررسی میشوند ودارای وضعیت دینامیک هستند.)با ژنریک ها که معمولا ترکیبی از سه نوع وضعیت بالا را بوجود میآورند,جلوگیری میکنند.مثلا اگر شی ای از کلاس Array را با ژنریکی بکار ببریم وضعیت بسیار پیچیده ای در زمان اجرا بوجود میآید و کامپایل و ایجاد تعامل بدلیل وجود عناصر دینامیک خیلی سخت میباشد.آندسته از اشیاء که دارای یکی از سه وضعیت بالا هستن نمیتوانند در تعامل با ژنریک ها باشند.در نتیجه عجز و عدم توانایی CLR در برخورد با این وضعیت های خاص Special Class بهانه ای میشود که بعضی از اشیاء در تعامل با ژنریک ها از میدان بدر شوند و این نقص را در شیء گرایی دات نت بوجود می آورند.شیئ Object هم این وضعیت را داراست یعنی در لیست Special Classها میباشد .خودت دلیلشو پیدا کن

خدمت شما عرض کنم که Net Framework 1.x بدلیل عدم وجود ژنریک ها شیء گرا نبود و
شیء گرایی Net Framework 2.x هم بدلیل وجود Special Class ها زیر سوال میرود.
اما چرا ژنریک ها عناصر شیء گرایی بودند :
همانطور که شما هم می دانید ژنریک ها تمام قوانین برنامه نویسی شیء گرای
Net Framework 1.x را رعایت میکنند وخصوصیات بسیار خوبی دارند که کارایی , انواع بهتر و مطمئن تری را بوجود میآورند.اما اینها فواید ژنریک ها هستن و تاثیر آنها بر برنامه نویسی شئ گرا اینطور بیان میشود:
فرض کنیم با استفاده از شئ Stack میخواهیم تعدادی عدد را Push کنیم ,سپس یکی از آنها را برداریم کد این مثال اینگونه میباشد:


Stack s = new Stack();
s.Push(10);
s.Push(20);
int a = (int)s.Pop();


همانطور که می بینیم با اینکه به شئ پشته فقط اعدادی را در محدوده int فرستاده ایم ,اما برای برداشتن یک عدد باید تبدیل نوع صریح انجام بدهیم.
در برنامه نویسی شئ گرا این تبدیل نوع دو نوع خطا محسوب میشود:
1)کاربر در کار شئ غیر مستقیم دخالت و نوع بازگشتی را دستکاری کرده
2)کاربر مجبورست خود داده صحیح را بوسیله تبدیل نوع استخراج کند .هر چند که کاربر داده های درست را به شئ پشته فرستاده ولی نوع داده Object تحویل میگیرد.
Encapsulation یا کپسوله سازی دارای سه اصل میباشد.یکی از این اصول اختفای کد نام دارد
اختفای کد نیز دارای اصول زیر است
1)محافظت از شئ در مقابل کاربر:یعنی کاربر در کار شئ دخالت نکند و یا آنرا توسط صفات درونی شئ در وضعیت اشتباه قرار ندهد.
2)محافظت از کاربر در مقابل شئ:یعنی شئ با دریافت داده های درست کاربر را با جزییات درونی خود درگیر نکند و داده های درستی را برگرداند.
اگر به خطوط قرمز و آبی نگاه کنیم متوجه میشویم که خطوط قرمز اصول اختفای کد را نادیده گرفته است.اما اگر همین کد را با کمک ژنریک ها بنویسیم این دو اصل نیز رعایت میشوند.


Stack<int> s = new Stack<int>();
s.Push(10);
s.Push(12);
int a = s.Pop();


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

amir_saniyan
پنج شنبه 15 شهریور 1386, 17:06 عصر
به نظر من یکی از بزرگ ترین مشکلات دات نت عدم توانایی اون در پشتیبانی از برنامه ها و کتابخانه های قدیمی (legacy) نوشته شده است.
مثلا چند درصد برنامه نویس ها می توانند به راحتی برنامه ای که با VB6.0 نوشته شده رو به روز کنند؟ و یا از کتابخانه های قدیمی (مثلا DLL های قدیمی که عملیات خاصی رو انجام میدن) استفاده کنند؟

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

البته در این جا نباید زبان C++.NET رو که پل ارتباطی بین دات نت و کد ماشین است رو فراموش کرد. بنابراین برنامه نویسانی که مشکل سرعت دارند می تونند قسمت حساس برنامه شون رو با زبان C و یا C++ و یا حتی اسمبلی بنویسند، سپس با استفاده از زبان C++.NET یک کتابخانه دات نتی درست کنند که اون قسمت حساس رو بپوشونه، بعد با C# از کتابخانه جدید دات نتی استفاده کنند. یعنی در واقع قسمت حساس برنامه دیگه در محیط دات نت اجرا نمی شه و طبیعتا چنین برنامه ای مستقل از سیستم عامل هم نخواهد بود. پس اگه واقعا سرعت بسیار زیاد رو احتیاج داری و از طرفی گلاب بودن دات نت رو هم نمی تونی از دست بدی، برو C++.NET یاد بگیر. راستش C++.NET خیلی هم سخت نیست و فقط یک کم syntax اون اضافه تر از C++ معمولی است.

در واقع خود مایکرو سافت هم اصلا همین کار رو کرده. یعنی شما باورتون می شه که دات نت فریم ورک با این همه عظمتش و با بیش از 2000 کلاس که هر کلاس هم کلی متد داره، فقط 20 مگابایت باشه؟ نه! دات نت فریم ورک فقط یک پوشش خیلی خوشگل و تر و تمیز روی هزاران API موجود در ویندوز است (که چند گیگا بایت حجم داره) و به خاطر همینه که سرعتش این همه خوبه. چون اکثر API های ویندوز رو با زبان هایی مثل C و C++ و حتی اسمبلی نوشتند. در واقع وقتی شما مثلا یک پنجره رو نمایش می‌دید، در نهایت دارید یک API ویندوزی رو صدا می‌زنید و کلاس های فریم ورک دارند از اون API ها استفاده می‌کنند.

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

بنابراین تا زمانی که شما نخواهید تو دات نت کار عجیب و غریبی انجام بدید و هر کاری که قرار باشه انجام بدید رو با استفاده از کتابخانه های استاندارد دات نت انجام بدید، بعید می دونم مشکل سرعت و یا حافظه پیدا کنید و تازه برنامه ها تون از لحاظ سرعت خیلی هم با برنامه هایی که مثلا با MFC نوشته شده اند فرق نخواهد داشت چون برنامه شما فقط یک پوشش اضافه تر داره، اما اگه قرار باشه تو دات نت مثلا خودتان بیایید از صفر صفر یک کنترلی مثل TextBox درست کنید، مطمنا دات نت کم می‌یاره. یک مثال دیگه‌اش درست کردن بازی های با گرافیک بالا توسط دات نت است. (البته به تازگی دات نت اومده روی DIRECTX که خیلی خفنه و برنامه نویسی‌اش کار حضرت فیله یک پوشش گلابی به نام XNA گذاشته تا حتی مهندسین کشاورزی هم بتونند یک بازی گرافیکی توپ درست کنند و به ریش اون C++ کارهایی که خودشون رو می‌کشتند تا بازی با کیفیت قابل قبول درست کنند، بخندند.)

نتیجه اخلاقی اینکه: برخی از ایرادهایی که به دات نت وارد می‌کنند اصلا جز هدف های دات نت نبوده (ماکروسافت هم ادعا نداره برید با دات نت درایور سخت افزاری بنویسید) هدف این بوده که برنامه نویس حتی با دانش اندک بتونه کارهاش را راه بیاندازه و به هدفس برسه. مثلا برای برنامه نویس دونستن الگوریتم QuickSort مهم نیست، مهم اینه که تو دات نت می‌نویسی: myArray.Sort().

یک نتیجه اخلاقی دیگه: اگه برنامه نویس شدی چون می‌خوایی پول دربیاری که هیچی. دات نت انتخاب خوبیه چون مثل گلاب برنامه می‌نویسی و تا دلت بخواد کد آماده وجود داره. (پول در آوردن اصلا هم بد نیست!) ولی اگه ادعات می‌شه که چون مثلا زبون C# و VB.NET و ASP.NET بلدی پس از کامپیوتر سر در می‌آری، بایدبگم که کاملا اشتباه است. این ها همه ابزارند (یا به عبارت بهتر فن‌آوری هستند)، علم کامپیوتر همون دروس طراحی الگوریتم‌ها و سیستم عامل و ساختمان داده و ... است.

دانش رایانه با فن‌آوری (Technology) مرتبط با رایانه خیلی متفاوت است.

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

از کجا به کجا رسیدیم :)

Leo_messi
چهارشنبه 04 مهر 1386, 01:50 صبح
این که برنامه نوشته شده با داتنت خیلی از حافظه رو می گیرن چی عیب نیست؟

PC2st
یک شنبه 08 مهر 1386, 17:40 عصر
دات نت فریم ورک فقط یک پوشش خیلی خوشگل و تر و تمیز روی هزاران API موجود در ویندوز است (که چند گیگا بایت حجم داره) و به خاطر همینه که سرعتش این همه خوبه. چون اکثر API های ویندوز رو با زبان هایی مثل C و C++ و حتی اسمبلی نوشتند. در واقع وقتی شما مثلا یک پنجره رو نمایش می‌دید، در نهایت دارید یک API ویندوزی رو صدا می‌زنید و کلاس های فریم ورک دارند از اون API ها استفاده می‌کنند.
این گونه نیست :-) دات نت فریم ورک حاوی یک CLR یا Runtime است (که با سی++ نوشته شده)
و در واقع برای اجرای برنامه های مبتنی بر دات از CLR استفاده میشود نه API های ویندوز!

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

Rocker
دوشنبه 09 مهر 1386, 12:40 عصر
سلام دوستان:
راستش من چند وقتیه دارم در مورد دات نت تحقیق می کنم تا به این تکنولوژی مهاجرت کنم خوب در این زمینه مطالب زیادی رو خوندم.

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

Inprise
دوشنبه 09 مهر 1386, 12:55 عصر
این گونه نیست :-)

از اون "گیگا بایت"ش که فاکتور بگیریم ، دقیقا همان گونه است که نوشته .

hector2000
دوشنبه 09 مهر 1386, 14:02 عصر
ایا واقعا دات نت علم روز است؟
ایا در خارج از ایران هم شرکتهای برنامه نویسی برای نوشتن برنامه هایی نظیر کاربردی،بازی،محاسبه ای و.. سراغ مجموعه دات نت می روند و یا اینکه فقط این اوضاع در ایران صادقه؟
متشکرم

M A R S H A L
دوشنبه 09 مهر 1386, 14:07 عصر
از اون "گیگا بایت"ش که فاکتور بگیریم ، دقیقا همان گونه است که نوشته .


یعنی شما به سریعتر بودن برنامه های وابسته به دات نت فریم ورک نسبت به Native code معتقد هستین؟

__H2__
دوشنبه 09 مهر 1386, 15:57 عصر
سلام

با سلام
ازضعف های دات نت و ارتباطش با برنامه نویسی شیء گرا میتوان به Special Class ها اشاره کرد.این نوع کلاس ها (مثلا کلاس Array) رو علیرغم چیزی که نشون میدن نمیتوان در کاربردهای معمولی ازشون استفاده کرد.مثلا در ژنریک ها.به عنوان مثال اگر بخایم یه متد ژنریک رو بنویسیم که بتونه تمام عناصر آرایه های یک بعدی (به جز آرایه های دندانه دار) رو
بدون در نظر گرفتن نوعشون چاپ کنه.
:قهقهه::قهقهه::قهقهه:


Private Sub Main()
Dim array() As Integer = {1, 2, 3, 4}
Print(Of Integer)(array)
Print(array)
End Sub
Private Sub Print(Of T)(ByVal array() As T)
'...
End Sub

Private Sub Print(ByVal array As System.Array)
'...
End Sub

Inprise
دوشنبه 09 مهر 1386, 17:20 عصر
یعنی شما به سریعتر بودن برنامه های وابسته به دات نت فریم ورک نسبت به Native code معتقد هستین؟

نه . منظورم قسمت اول مطلبش و API و Wrapper و ...بود فقط .

amin joon
شنبه 05 آبان 1386, 17:57 عصر
با سلام
به نظر من زمانی میشه به نتیجه رسید که مزایا و معایب این تکنولوژی را با هم مقایسه کنیم.
1- سرعت کم در اجرای برنامه <----------------> تنها در بار اول اجرای برنامه، سرعت آن پایین است و در دفعات بعد اینگونه نیست. علاوه بر این پایین بودن سرعت جتی در بار اول اجرا آنچنان محسوس نیست.
2- بالا بودن حافظه مصرفی(ram) <-------------------> ذزسته . در واقع برنامه های دات نت به دلیل وجود .net framework بیشتر از حافظه استفاده میکنند.ولی نیاز به حافظه بزرگ آنقدر هم لازم نیست. یعنی اگر شما یه برنامه با یکی از زبانهایwin32 بنویسید که نیاز به 128مگ حافظه داشته باشه. اگر همان برنامه رو داخل .net پیاده کنید مطمئنا به 256مگ حافظه نیاز نخواهد داشت. و به احتمال زیاد با همان 128مگ به راحتی جواب میده.
3- ذکمپایل شدن کدها <---------------> در حال حاظر به همین صوذت هست یعنی میشه اونها رو دکمپایل کرد. ولی در آینده چیزی معلوم نیست. با توجه به سابقه ی microsoft در پشتیبانی و رفع نواقص محصولاتش ، ممکن هست این ایراد به زودی رفع شود.
4- نیاز به وجود دات نت <-------------------> این موضوع در برنامه هایی مثل حسابداری و دیگر برنامه های کاربردی بیمعنی خست چون به راحتی میشه اون رو همراه با نصب بخشهای مختلف برنامه به راحتی نصب کرد. این موضوع تنها در نوشتن برنامه های کوچک مثلا برنامه برای اتوران سی دی یا موارد مشابه این معنی پیدا میکنه.
5- نوشتن راه انداز و کار با سخت افزار<------------------> من در این رابطه قبلا کاری انجام ندادم ولی به طور قطع در بین انبوه کلاسهای .net framework کلاسهای زیادی جهت کار با سخت افزار وجود داره . . . (چند بار برای شما پیش اومده که درایور بنویسید؟ اگه زیاد نیاز دارید باید برید سراغ ++C)
به نظر من در کنار این عیوب باید به مزایای بزرگ دات نت نیز توجه کرد. شما با بلد بودن یک زبان برنامه نویسی مثل C# خیلی کارها میتونید انجام بدید.مثلا : نوشتن کد سمت سرور در صفحات وب، نوشتن Win Application که البته در آینده ممکنه رو لینوکس هم قابل اجرا باشه، استفاده از کلاسهای قدرت مند دات نت،سرعت در برنامه نویسی ، نوشتن وب سرویس ، برنامه نویسی موبایل که احتمالش میره در آینده خیلی از مبایلها دات نت رو در خودشان پیاده سازی کنند و خیلی مزایای دیگه . . .
شما تو هیچ محیط و زبانی، غیر از زبانهای .net و البته java نمیتونید این همه توانایی رو یکجا داشته باشید. و این یه مزیت بزرگ برای دات نت کارها به حساب میاد.

در خاذج از کشور این تکنولوژی به طور گسترده داره مورد استفاده قرار میگیره. دلیلم هم تعداد کاربران C# و بقیه زبانهای دات نت هست که چند ده برابر دیگر زبانها هست(میتوانید به امارهای سایتهایی مثل codeproject مراجعه کنید )
در ضمن این رو هم فراموش نکنید که ماکروسافت هیچ وقت همه چیزش رو یکجا رو نمیکنه.

به نظر من .net یک تکنولوژی بزرگ هست که نباید از اون عقب موند. هر چند در حال حاظر جوابگوی 100% نیازهای ما نباشه.


به امید ایرانی بهتر . . .

Xcalivorse
شنبه 03 فروردین 1387, 00:25 صبح
اگر مشکل سرعتش حل می شد دیگه هیچ عیبی نداشت