مقارنة بين Visual Basic و Visual Basic .NET
أصدرت مايكروسوفت لغة البرمجة Visual Basic .NET عام 2002 كخليفة للغة Visual Basic الأصلية . وقد تم تطويرها باستخدام إطار عمل .NET Framework 1.0 . وكانت الميزة الجديدة الرئيسية هي إدارة التعليمات البرمجية . ربما واجه المبرمجون الذين لا يعرفون سوى Visual Basic صعوبات في العمل مع الإصدار الجديد أو في تكييف البرامج الحالية معه.
اختلافات رئيسية واضحة
لم تكن المنصة الجديدة تشبه سابقتها إلا قليلاً. فبينما توقع المبرمجون أن يكونوا قادرين على إعادة ترجمة كود Visual Basic الخاص بهم إلى بيئة .NET، إلا أن الواقع كان أن Visual Basic .NET يمثل نموذجاً مختلفاً تماماً.
بغض النظر عن اختلافات بناء الجملة الواضحة، فإن Visual Basic .NET يوفر نفس الوظائف تقريبًا مثل C# (حيث يتم تجميع كليهما إلى MSIL ، مع كون الاختلاف الأكثر وضوحًا هو عدم حساسية Visual Basic .NET لحالة الأحرف، مع الحفاظ على عدم حساسية Visual Basic الأصلية لحالة الأحرف)، وهو ما يمثل مشكلة أكبر لمبرمجي C# الذين يحاولون التفاعل مع مطوري Visual Basic .NET أكثر من أي شيء آخر.
يظل بناء الجملة الأساسي متشابهًا إلى حد كبير: تُعلن الشروط والحلقات والإجراءات والروتينات الفرعية وتُكتب بنفس الطريقة (انظر Visual Basic). يُعد الانتقال من إصدارات Visual Basic السابقة إلى Visual Basic .NET جزءًا لا يتجزأ من الشيفرة البرمجية الحالية: إذ يتطلب الأمر من المبرمجين ذوي الخبرة في كلا المجالين استهداف المنصة الجديدة بفعالية باستخدام المنطق القديم. سيتعين على مطور Visual Basic .NET تعلم استخدام أنواع .NET الأساسية بدلًا من تلك التي اعتاد عليها في Visual Basic.
قد يواجه المبرمج الذي لم يعمل إلا بلغة فيجوال بيسك صعوبةً في الانتقال إلى فيجوال بيسك دوت نت. أما المبرمج المتمكن من لغة برمجة أخرى أو الذي سبق له العمل مع بيئة تشغيل دوت نت، فسيكون قادرًا على التكيف. من الأفضل اعتبار فيجوال بيسك دوت نت لغةً جديدةً مستوحاةً من فيجوال بيسك الكلاسيكية، لا امتدادًا لفيجوال بيسك 6.0، مع ما يترتب على ذلك من صعوبة إضافية للمبرمجين المنتقلين، وهي أن فيجوال بيسك دوت نت تتفاعل مع إطار عمل دوت نت، بينما كانت فيجوال بيسك 6 تعتمد على نموذج كائنات المكونات (COM).
مقارنة أكثر تفصيلاً
هناك بعض التغييرات الفورية التي يجب على المطورين أخذها في الاعتبار:
بنية نحوية أقرب إلى لغة C
تتيح لغة Visual Basic .NET استخدام المعاملات المركبة +=, -=, *=, /=, \=, ^=, &=بحيث يمكن كتابة أسطر أطول مثل:
المتغير = المتغير + 1يمكن الآن كتابتها على النحو التالي:
المتغير += 1ومع ذلك، فإن عوامل الزيادة والنقصان غير مدعومة.
منطق الدائرة القصيرة
في الإصدارات السابقة من لغة فيجوال بيسك، كان يتم تقييم جميع العبارات في الشرط حتى لو كان من الممكن تحديد نتيجة الشرط قبل تقييمه. على سبيل المثال:
إذا كانت foo () و bar () صحيحتين ، فسيتم تنفيذ الكود هنا إذا أعادت كل من foo() و bar() القيمة True، أما إذا أعادت foo() القيمة False، فسيتم تقييم bar() أيضًا .لم يكن هذا غير فعال فحسب، بل كان من الممكن أن يؤدي إلى نتائج غير متوقعة لأي شخص معتاد على لغة برمجة أخرى. في Visual Basic .NET، تمت إضافة عاملي الربط AndAlso و OrElse [ 1 ] لتوفير تقييم مختصر كما هو الحال في العديد من اللغات الأخرى.
لم تعد الأنواع الشبيهة بالمؤشرات الصريحة موجودة
تم إيقاف استخدام أنواع المتغيرات Var* في Visual Basic .NET. يحدد وقت التشغيل المشترك أي الأنواع هي أنواع مرجعية وأيها أنواع قيم، لذا لم يعد هذا الأمر من اختصاص المبرمج.
الخصائص: ليكن و ليكن
لم تعد خصائص الفئة تتطلب عبارات Let و Set
طباعة تصحيح الأخطاء
تم استبدال Debug.Print بـ Debug.Write و Debug.WriteLine
إجراءات
يجب أن يحتوي استدعاء الإجراء على أقواس في Visual Basic .NET.
يتطلب Visual Basic .NET تحديد نوع البيانات ByVal أو ByRef للمعاملات. في Visual Basic، يمكن حذف هذا التحديد، مما يعني استخدام ByRef افتراضيًا. تقوم معظم بيئات التطوير، مثل Visual Studio .NET ، بإدراج ByVal تلقائيًا، لذا فإن ByVal هو النوع الافتراضي وليس ByRef. توجد أدوات لتحويل كود Visual Basic إلى VB.NET، مثل معالج ترقية Visual Basic المُضمّن في Visual Studio .NET 2002 و2003. تقوم أدوات التحويل بإدراج ByRef تلقائيًا عند الحاجة، مع الحفاظ على دلالات تطبيق Visual Basic.
المصفوفات ذات البداية الصفرية
اعتادت لغتا Visual Basic 5.0 و 6.0 على استخدام المصفوفات ذات الأساس الصفري (الحد الأدنى الافتراضي)، إلا إذا تم تعريف "Option Base 1". وكان هذا سببًا للعديد من أخطاء تجاوز الحد الأدنى بمقدار واحد في برامج Visual Basic، خاصةً عند التعامل مع التوافق بين مكتبات البرامج المختلفة. على الرغم من أن بيئة تشغيل اللغة المشتركة لـ .NET تدعم المصفوفات ذات أي قيمة أساسية، إلا أن Visual Basic .NET و C# لا توفران سوى المصفوفات والقوائم ذات الأساس الصفري، وتشترط مواصفات اللغة المشتركة لـ .NET استخدام المصفوفات ذات الأساس الصفري لضمان التوافق بين لغات .NET.
المصفوفات غير المنتظمة
قدمت لغة Visual Basic .NET مفهوم المصفوفة المتعرجة ، حيث يمكن أن يكون للصفوف أطوال غير متساوية على عكس الطول الموحد للمصفوفات المفروضة على مبرمجي Visual Basic.
تم حذف نوع بيانات المتغير
في اللغات التي تُترجم إلى منصة .NET، تكون أنواع البيانات صارمة. فبينما يسمح وقت التشغيل بالكائنات المجهولة التي لا تملك نوعًا مُحددًا مُسبقًا ومُسمى، قد لا يتغير نوع المتغير طوال دورة حياته، ومن هنا تأتي الحاجة إلى حذف نوع البيانات Variant. مع ذلك، فإن النوع "Object" له سلوك مشابه إلى حد ما عمليًا.
البرمجة الكائنية التوجه الحقيقية
كانت لغة فيجوال بيسك لغةً كائنية التوجه . كانت تدعم الأصناف، لكنها لم تدعم المفاهيم الأخرى التي تجعلها لغةً كائنية التوجه. أما فيجوال بيسك دوت نت فهي لغة كائنية التوجه حقيقية ، وتتميز بالخصائص التالية:
- الميراث
- تحميل الوظائف الزائدة
على الرغم من أن أي لغة تستهدف .NET لا تسمح بالوراثة المتعددة للفئات، إلا أن الوراثة المتعددة للواجهات مدعومة.
قم بالتغيير من COM إلى NET
على الرغم من أن بيئة التطوير المتكاملة (IDE) تُخفي هذه الحقيقة بشكل معقول، إلا أن الاعتماد على كائنات ActiveX قد تم الاستغناء عنه في Visual Basic .NET (مع وجود آليات للتفاعل مع COM في .NET [ 2 ] ) لصالح مكونات .NET التي توفر وظائف مماثلة. يُعد هذا التحول مفيدًا لمطوري Visual Basic، حيث أن معظم مشكلات الأداء في Visual Basic كانت ناتجة عن تكلفة واجهة COM.
إدارة الهندسة الأساسية عبر مصمم النماذج
لطالما كانت كتابة أكواد تغيير الحجم من أكثر الأمور إزعاجًا لمطوري Visual Basic. ورغم أن نموذج WinForms لا يزال يعاني من قصور كبير في إدارة العناصر الهندسية مقارنةً بأدوات مثل Qt و GTK+ ، إلا أنه على الأقل يُمكن للمطور تثبيت عناصر واجهة المستخدم على النماذج بدلًا من كتابة كميات هائلة من الأكواد في معالجات OnResize.
الخيار صريح افتراضياً
في Visual Basic .NET، يكون خيار Option Explicit مُفعلاً بشكل افتراضي.
مراجع
روابط خارجية
- أهم 5 تغييرات بين VB 6 و VB.NET (مؤرشفة بتاريخ 16 أكتوبر 2011 على موقع Wayback Machine)
- المصفوفات غير المنتظمة في VB.NET
- .شبكة
- لغة البرمجة الأساسية
- مقارنة لغات البرمجة الفردية
- عائلة لغات البرمجة الأساسية
