سی شارپ یا وی بی دانت نت؟ VB.Net VS C-sharp
#1
Note 
[ATTACH=CONFIG]357[/ATTACH]

از وقتی که روی زبان سی شارپ و قابلیت های آن دقیق شده ام ، خیلی کنجکاوی می کنم ببینم نظر مردم (برنامه نویسان و کارشناسان شرکت ها) درباره دو زبان اصلی دات
نت فریم ورک چیست. نکته بسیار مهمی که اخیرا متوجه شدم اینست که هنوز بسیاری از افراد به اشتباه تصور می کنند زبان سی شارپ خیلی بهتر از زبان VB.NET است. حتی بعضی از برنامه نویسان آماتور که به تازگی با Framework دات نت آشنا شده اند به من گفتند که (( میگن VB.NET ضعیفه ، فقط سی شارپ! )) متاسفانه بسیاری از مدیران شرکت های نرم افزاری نیز دچار این توهم جدی هستند که سی شارپ نسبت به VB.NET مزیت قابل توجهی دارد و حتی قابل مقایسه نیست ! در این یادداشت می خواهم تفاوتهای اصلی این دو زبان را دقیقا ادرس بدهم و نسبت به این برداشت به شدت غلط هشدار بدهم. ابتدا یک پاراگراف از مقاله ای که اخیرا درباره معرفی زبان سی شارپ برای ماهنامه شبکه نوشتم را اینجا (با اضافه کردن چند جمله تکمیلی بیشتر) تکرار می کنم:

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

دلیل این ادعا بسیار ساده است : هر دو زبان چیزی نیستند جز یک پوشش ظاهری برای زبان MSIL که هنگام کامپایل شدن سورس کد برنامه ای که با یک زبان دات نتی نوشته شده است تولید می شود. تمام برنامه هایی که برای پلاتفرم دات نت نوشته می شوند پیش از اینکه به کد زبان ماشین (Native Code) تبدیل شود به یک زبان میانی به نام Microsoft Intermediate Language تبدیل می شوند. زبانهای پلاترم دات نت به طور یکسان از این زبان میانی پشتیبانی می کنند. در واقع این زبانها مجبورند که از استاندارد MSIL تبعیت کنند نه اینکه هر مقداری از آن که دلشان بخواهد را پشتیبانی کنند. بنابراین وقتی قرار باشد نتیجه کار هر دو زبان ویژوال بیسیک دات نت و سی شارپ نهایتا به کد MSIL تبدیل شود ، دیگر چندان مهم نیست که مبدا این کد به چه زبانی نوشته شده است.

بنابراین هر دو زبان به یک ترتیب از قابلیتهای کلیدی چارچوب دات نت پشتیبانی می کنند. مثلا مدیریت حافظه در VB.NET دقیقا به همان ترتیبی اتفاق می افتد که در سی شارپ. در گذشته چنین نبود و یکی از دلایل گزینش زبان C به جای ویژال بیسیک ، برتری محسوس C نسبت به ویژوال بیسیک در زمینه مدیریت حافظه و راندمان برنامه بود. این تفاوت دیگر از بین رفته است. مدیریت حافظه مستقیما توسط چارچوب دات نت انجام می شود و نوع زبان برنامه نویسی تاثیری ندارد. حتی برتری ویژوال بیسیک در زمینه Rapid Application Development و معماری Windows forms نیز در پلاتفرم دات نت از بین رفته است. برنامه سازی در سی شارپ دقیقا به همان سادگی ویژوال بیسیک دات نت است.
تفاوت های اصلی میان دو زبان بیشتر در گرامر و Syntax زبان  است. در مقاله مفصلی که از اینجا قابل دریافت است ، مایکروسافت تمام کلیدواژه ها و syntax دو زبان را نظیر به نظیر بررسی کرده است و شما پس از مطالعه دقیقا این مقاله ۱۸ صفحه متوجه خواهید شد که این دو زبان تفاوت اندکی از نظر قابلیت ها و مزیتها دارند و هیچ کدام از نظر راندمان برنامه تولید شده و مدیریت حافظه به دیگری رجحان ندارند.

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

یکی از تفاوت های شناخته شده میان دو زبان ، امکان تعریف سندهای مربوط به سورس برنامه است. در زبان سی شارپ می توانید سندهایی از نوع XML ایجاد کنید که با سورس کد برنامه شما پیوند خورده است. به این ترتیب به موازات پیشرفت پروژه برنامه نویسی می توانید خیلی راحت Documentation آن را نیز آماده کنید. چنین قابلیتی در VB.NET وجود ندارد اما خبر خوب اینست که در نسخه بعدی پلاتفرم دات نت (موسوم به Whidbey) این قابلیت به VB.NET افزوده شده است.
یک تفاوت دیگر بین دو زبان آن است که در سی شارپ می توانید عملگر ها یا Operator های سفارشی بسازید. مثلا علامت > را طوری تعریف کنید که عبارت Today > Yesterday معنا پیدا کند و عملگرهای ریاضی بزرگتر و کوچکتر تنها محدود به اعداد نباشد. البته این قابلیت نیز در نسخه بعدی VB.NET افزوده شده است. در حقیقت همین چند درصد تفاوت فعلی میان قابلیتهای گرامر دو زبان ویژوال بیسیک دات نت و سی شارپ ، در نسخه شماره دو چارچوب دات نت ناپدید شده است. مقایسه ای میان قابلیت های سی شارپ و ویژوال بیسیک دات نت را می توانید .

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

تکمیل ۱: یک سوال ، اگر سی شارپ و VB.NET از نظر قدرت و توانایی با هم فرقی ندارند پس مایکروسافت چرا این دوتا را درست کرد؟ دلیلش اینست که مایکروسافت نمی توانست برنامه نویسان هریک از این دو گروه را وادار به پذیرش syntax زبان دیگر کند. بهتر بود که آنهایی که به syntax زبان سی عادت دارند با همان روش ادامه بدهند و آنهایی که به ویژوال بیسیک علاقه دارند به همان منوال ادامه دهند. البته کار کسانی که از VB6 به VB.NET می آیند خیلی مشکل است زیرا VB.NET یک زبان OOP پیشرفته است و این موضوع کار برنامه نویسان ویژوال بیسیک را که به راحت طلبی عادت کرده بودند سخت می کند. ولی برنامه نویسان C کار چندان مشکلی ندارند و می توانند از دانش خود در زمینه برنامه نویسی شیء گرا کماکان بهره بگیرند.

تکمیل ۲: صادقانه بگویم که زبان سی شارپ در اصل برای رقابت و چشم و همچشمی با جاوا خلق شده است و مزیت خاص دیگری نسبت به VB.NEّT ندارند. در واقع چون syntax سی شارپ خیلی شبیه جاوا و C است ، این ویژگی می تواند برخی از برنامه نویسان جبهه رقیب - جاوا - را قانع کند که ((بابا ! این سی شارپ و فناوری دات نت واقعا یک رقیب جدی برای جاوا است...)) همین ! واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.

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

kianrad.com

پاسخ
#2
Note 
نقل قول: تکمیل ۲: صادقانه بگویم که زبان سی شارپ در اصل برای رقابت و چشم و همچشمی با جاوا خلق شده است و مزیت خاص دیگری نسبت به VB.NEّT ندارند. در واقع چون syntax سی شارپ خیلی شبیه جاوا و C است ، این ویژگی می تواند برخی از برنامه نویسان جبهه رقیب - جاوا - را قانع کند که ((بابا ! این سی شارپ و فناوری دات نت واقعا یک رقیب جدی برای جاوا است...)) همین ! واقعا زبان سی شارپ هیچ مزیت استراتژیک دیگری نسبت به ویژوال بیسیک دات نت ندارد. من خود با هر دو زبان کار کرده ام و از هر دو زبان خوشم میآید و هیچ تفاوت خاصی بین این دو نمی بینم.

کاملا موافقم
مایکروسافت دیوانه وار تقلید کاره! تا میبینه یه شرکتی چیز جدیدی درست کرده و درست و حسابیه رو خیلی سریع مثل همون درست میکنه و یخورده اینور اونور میکنه و به مردم میفروشه (البته بجز ما ایرانی ها :whistleSmile اگه با برنامه NetBeans کار کرده باشید میبینید که ویرایشکر اون کاملا هوشمند مثل ویرایشگر VS هست البته نه،بهتره بگیم که ویرایشگر VS شبیه NetBeans هست.

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note کار با فایلها در سی شارپ (ایجاد فایل) WWWorker 0 490 25-01-2014 ساعت 16:36
آخرین ارسال: WWWorker

کاربرانِ درحال بازدید از این موضوع:   1 مهمان