از وقتي كه روي زبان سي شارپ و قابليت هاي آن دقيق شده ام ، خيلي كنجكاوي مي كنم ببينم نظر مردم (برنامه نويسان و كارشناسان شركت ها) درباره دو زبان اصلي دات نت فريم ورك چيست. نكته بسيار مهمي كه اخيرا متوجه شدم اينست كه هنوز بسياري از افراد به اشتباه تصور مي كنند زبان سي شارپ خيلي بهتر از زبان 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 زبان است. در مقاله مفصلي که [a href=http://download.microsoft.com/download/VisualStudioNET/document/1.0/WIN98MeXP/EN-US/VBCSharpWp.exe]از اينجا [/a]قابل دريافت است ، مايکروسافت تمام کليدواژهها و syntax دو زبان را نظير به نظير بررسي کرده است و شما پس از مطالعه دقيقا اين مقاله ۱۸ صفحه متوجه خواهيد شد كه اين دو زبان تفاوت اندكي از نظر قابليت ها و مزيتها دارند و هيچ كدام از نظر راندمان برنامه توليد شده و مديريت حافظه به ديگري رجحان ندارند.
تنها چيزي كه مي توانم بگويم اينست كه زبان سي شارپ زبان خلاصهتر و موجزتري است. اين شايد بهترين توصيف براي سي شارپ باشد. به عبارت ديگر براي پياده سازي يک قطعه کد در زبان سي شارپ به حجم برنامهنويسي کمتري نياز است. اين مشابه تفاوت برخي زبانهاي تکلم در دنياست. مثلا خيلي از جملات در زبان ژاپني ممکن است تنها به دو کلمه احتياج داشته باشند در حالي که در برخي زبانها مثل فارسي شايد نتوان اغلب جملات را با تنها دو کلمه بيان کرد.
يکي از تفاوتهاي شناخته شده ميان دو زبان ، امکان تعريف سندهاي مربوط به سورس برنامه است. در زبان سي شارپ ميتوانيد سندهايي از نوع XML ايجاد کنيد که با سورس کد برنامه شما پيوند خورده است. به اين ترتيب به موازات پيشرفت پروژه برنامه نويسي ميتوانيد خيلي راحت Documentation آن را نيز آماده کنيد. چنين قابليتي در VB.NET وجود ندارد اما خبر خوب اينست که در نسخه بعدي پلاتفرم داتنت (موسوم به Whidbey) اين قابليت به VB.NET افزوده شده است.
يک تفاوت ديگر بين دو زبان آن است که در سيشارپ ميتوانيد عملگرها يا Operator هاي سفارشي بسازيد. مثلا علامت > را طوري تعريف کنيد که عبارت Today > Yesterday معنا پيدا کند و عملگرهاي رياضي بزرگتر و کوچکتر تنها محدود به اعداد نباشد. البته اين قابليت نيز در نسخه بعدي VB.NET افزوده شده است. در حقيقت همين چند درصد تفاوت فعلي ميان قابليتهاي گرامر دو زبان ويژوال بيسيک داتنت و سيشارپ ، در نسخه شماره دو چارچوب داتنت ناپديد شده است. مقايسهاي ميان قابليت هاي سي شارپ و ويژوال بيسيک داتنت را ميتوانيد [a href=http://blogs.msdn.com/csharpfaq/archive/2004/03/11/87816.aspx]از اينجا بخوانيد[/a].
بنابراين دقت كنيد كه برتر بودن زبان سي شارپ نسبت به 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 است ، اين ويژگي مي تواند برخي از برنامه نويسان جبهه رقيب - جاوا - را قانع كند كه ((بابا ! اين سي شارپ و فناوري دات نت واقعا يك رقيب جدي براي جاوا است...)) همين ! واقعا زبان سي شارپ هيچ مزيت استراتژيك ديگري نسبت به ويژوال بيسيك دات نت ندارد. من خود با هر دو زبان كار كرده ام و از هر دو زبان خوشم ميآيد و هيچ تفاوت خاصي بين اين دو نمي بينم.
تكميل ۳: لطفا مديران و كارشناسان شركت هاي برنامه نويسي چشم و گوششان را باز كنند : نبايد بين برنامه نويسان اين دو زبان تبعيض قائل شد. نبايد حقوق و دستمزد اين دو گروه متفاوت باشد. اگر شركت شما هنوز يك دسيپلين مشخص درباره زبان سورس كد برنامه هايي كه در شركت مي نويسيد ندارد ، انتخاب زبان برنامه نويسي را به برنامه نويسان دات نت تحميل نكنيد. اصلا فرقي نمي كند كه يك پروژه را با كدام يك از اين دو زبان اجرا كنيد (اين براي دهمين بار !)
تكميل ۴ : آماده مناظره با هركسي كه بازهم قانع نشده است هستم!! هركس كه به شما اصرار كرد كه سي شارپ از VB.NET بهتر است ّ به او بگوييد ((من نميدونم ، اينو بهروز گفته ، برو از خودش بپرس))
پ.ن: راستي بابت اين غيبت سه روزه بدون اطلاع معذرت! در واقع مشغول دستكاري كردن سورس كد صفحات اين سايت بودم و يكمي خراب كاري كردم و مجبور شدم اين ۴۸ ساعت گذشته را صرف برگرداندن وضعيت به شرايط قبلي كنم....
اولین امتياز دهنده به این مطلب باشید
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5