ايهما افضل C#.NET Or VB.NET برمجيا ... وما الفرق
ايهما افضل C#.NET Or VB.NET
C# أ و VB.NET تقريبا نفس الشئ
السي شارب اسرع قليلا فقط بالبرامج الكبيرة والعكس صحيح
كما أن الفيجوال بيسك نت بها اوامر غير موجودة بالسي شارب وعملها بالسي شارب ليس صعبا لكنها غير جاهزة :
مثل ISDATE
IsNumeric
وهكذا مثل
With
end With
كذلك شغلات اخرى
انا شخصيا استخدم السي شارب
:)
موقوف من المشاركة لقلة الأدب
============================
كلام الباشمهندس صحيح تماماً. لا يوجد فرق السرعة لأن اللغتين تترجمان إلى نفس اللغة عند التجميع و هي لغة MSIL. الموضوع فقط في الـsyntax الذي ترتاح له أكثر. أنا أستطيع البرمجة في الإثنين و لكنني أرتاح أكثر للفيبي. و هناك آخرون يرتاحون للسي شارب.
تم تعديل هذه المشاركة بواسطة System Down في 20 يناير 2007 في 19:36
انا حصلت على مقارنة في الـ syntx بين اللغتين ، يعني باختصار قدرت اتعامل مع اللغتين بمجرد تعلم vb.net ، لكنني ارتاح بشكل كبير للفيبي واستخدمها دوما واتعلم عليها دون سي شارب وذلك لانني تعودت على الفيبي منذ زمن الاصدار السادس وكذلك ترتيب الكلمات في الفبيبي منطقي وحلو اكثر من سي شارب ،
على العموم هي مسألة ذوق وراحة نفسية لا اكثر ..
تحياتي
[/وسط]
Jordan كتب:C# أقوى و افضل برايي ..
أفضل؟
ربما. كمل قلنا هذه مسألة شخصية.
أقوى؟
كيف أقوى و في ماذا؟ يعني لو توضح لنا رأيك على الأقل؟ :)
تصارعنا كثيرا قبل ذلك حول السي شارب والـ VB .NET, وتنتهي الصراعات دائما بحكمة أن "الـ VB لغة مثيرة للشفقة" :P
اشكركم جميعا لهذا التوضيح وانا بالفعل لاحظت عدم وجود فرق بينهما بعدما قمت بأنزال عدة امثله ووجدة التشفرات متقارببه جدا .... لهذا طرحت السؤال ... السؤال الاهم الان ... بما ان لا فرق بينهما لما لا يكونا في منتدى موحد بدل الفصل بينهما
هما متشابهتان نعم و لكنهما ليسا متطابقتان تماماً. كما أن وجود منتدى واحد للإثنين سيسبب حرب أهلية شعواء بين الحرس الفيباوي و الجيش السيشاربي :lol:
اشكر كل الاعضاء على ردودهم لان هذا السؤال كنت اريد اسأل عنه منذ فترة
و الحمد لله وجدت اجابات شافية في هذا الموضوع
أنا أعمل على اللvb.net && c#.net
ومن وجهة نظري أن المستقبل للC# فهي أفضل بالتعامل اما بالنسبة للفجوال تشعر انك تتعامل مع فيجوال 6
ولكن لايفتنا شئ وهو ما هو الاكثر اتقان بالنسبة لك وما الذي تسطيع ان تتعامل معه بشكل أفضل - ولا ننسى ان كلا هما من عائلة واحدة وهي OO
هذا والله أعلم وبارك الله فيكم
دعواتكم
إذا كنت من المحاربين القدامى - مبرمجين Visual Basic and other procedure languages -
VB.net أفضل لأنها قريبه مما تعلمته .
أما اذا كنت من المحاربين الجدد - smalltalk and other OO languages -
C# أفضل .
أقول أفضل من ناحية سرعة التعلم وإلا في الآخر كلهن نفس الشئ VB.net or C#
قد أخالفكم الرأي
صحيح ان كلتا اللغتين تترجمان إلى لغة ميكروسوفت الوسيطة MSIL لكن هل يا ترى سنحصل على ملف MSIL واحد من مشروعين
متشابهين احدهما بالـ C Sharp و الاخر بالـ VB.NET على الاغلب لا
كل لغة لها طريقتها في تحويل كودها إلى لغة MSIL و بالتالي قد تكون هناك اختلافات بالاداء
اقتباسلا يوجد أقوى أو أسرع ففي النهاية الكود الناتج سواء كان exe أو dll لا يمكنك أن تعرف اذا كان مكتوباً ب#C أو VB.net فقد تم بناؤه بال MSIL
برأيي كود C Sharp قد يكون اسرع قليلا اما من ناحية القوة فكلا اللغتين متساويتان نظريا لاعتمادهما على .NET Framework
لكن اذا تعمقنا اكثر لوجدنا في الـ C Sharp ميزات اضافية تميزها و تجعلها افضل من VB.NET و هناك اشياء تقوم بها الـ C Sharp لا تستطيع عليها VB.NET
و بالتالي برأيي C Sharp أقوى قليلا
انا برأيي تعلم كلتا اللغتين مهم و لابد منه ثم تعمل باحداهما اما الاخرى ستنفعك خاصة عندما تبحث عن كود معين و لا تجده إلا بالغة الاخرى
تعالو معي إلى هذا الاختبار العملي :
كتبت برنامجين بسيطين الاول بالـ C Sharp و الثاني بالـ VB.NET و كلا البرنامجين لهما نفس الوظيفة
برنامج الـ C Sharp كتبت فيه ما يلي :
using System;
using System.Collections.Generic;
using System.Text;
namespace csharp_Test
{
class Program
{
static void Main(string[] args)
{
switch (Console.ReadLine())
{
case "1":
Console.Write("1");
break;
case "2":
Console.Write("2");
break;
default :
Console.Write("3");
break;
}
}
}
}برنامج الـ VB.NET شيفرته :
Module Module1
Sub Main()
Select Case Console.ReadLine()
Case 1
Console.Write("1")
Case 2
Console.Write("2")
Case Else
Console.Write("3")
End Select
End Sub
End Moduleقمت بمقارنة الملفين التنفيذيين الناتجين من ترجمة البرنامجين السابقين و ذلك بتحويل كل منهما إلى MSIL فوجدت التالي :
حجم ملف IL الخاص ببرنامج C Sharp أصغر بكثير من حجم ملف IL الناتج عن برنامج VB.NET
الدالة Main لبرنامج الـ C Sharp كانت كالتالي :
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
// Code size 78 (0x4e)
.maxstack 2
.locals init (string V_0)
IL_0000: nop
IL_0001: call string [mscorlib]System.Console::ReadLine()
IL_0006: stloc.0
IL_0007: ldloc.0
IL_0008: brfalse.s IL_0040
IL_000a: ldloc.0
IL_000b: ldstr "1"
IL_0010: call bool [mscorlib]System.String::op_Equality(string,
string)
IL_0015: brtrue.s IL_0026
IL_0017: ldloc.0
IL_0018: ldstr "2"
IL_001d: call bool [mscorlib]System.String::op_Equality(string,
string)
IL_0022: brtrue.s IL_0033
IL_0024: br.s IL_0040
IL_0026: ldstr "1"
IL_002b: call void [mscorlib]System.Console::Write(string)
IL_0030: nop
IL_0031: br.s IL_004d
IL_0033: ldstr "2"
IL_0038: call void [mscorlib]System.Console::Write(string)
IL_003d: nop
IL_003e: br.s IL_004d
IL_0040: ldstr "3"
IL_0045: call void [mscorlib]System.Console::Write(string)
IL_004a: nop
IL_004b: br.s IL_004d
IL_004d: ret
} // end of method Program::Main
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method Program::.ctorالدالة Main لبرنامج VB.NET كانت كالتالي :
.method public static void Main() cil managed
{
.entrypoint
.custom instance void [mscorlib]System.STAThreadAttribute::.ctor() = ( 01 00 00 00 )
// Code size 91 (0x5b)
.maxstack 3
.locals init (string V_0,
bool V_1)
IL_0000: nop
IL_0001: nop
IL_0002: call string [mscorlib]System.Console::ReadLine()
IL_0007: stloc.0
IL_0008: nop
IL_0009: ldloc.0
IL_000a: ldc.i4.1
IL_000b: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)
IL_0010: ldc.i4.0
IL_0011: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Operators::CompareString(string,
string,
bool)
IL_0016: ldc.i4.0
IL_0017: ceq
IL_0019: stloc.1
IL_001a: ldloc.1
IL_001b: brfalse.s IL_002a
IL_001d: ldstr "1"
IL_0022: call void [mscorlib]System.Console::Write(string)
IL_0027: nop
IL_0028: br.s IL_0058
IL_002a: nop
IL_002b: ldloc.0
IL_002c: ldc.i4.2
IL_002d: call string [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToString(int32)
IL_0032: ldc.i4.0
IL_0033: call int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Operators::CompareString(string,
string,
bool)
IL_0038: ldc.i4.0
IL_0039: ceq
IL_003b: stloc.1
IL_003c: ldloc.1
IL_003d: brfalse.s IL_004c
IL_003f: ldstr "2"
IL_0044: call void [mscorlib]System.Console::Write(string)
IL_0049: nop
IL_004a: br.s IL_0058
IL_004c: nop
IL_004d: ldstr "3"
IL_0052: call void [mscorlib]System.Console::Write(string)
IL_0057: nop
IL_0058: nop
IL_0059: nop
IL_005a: ret
} // end of method Module1::Mainبنظرة بسيطة يمكنك ان تدرك ان تعليمة Switch في C sharp تأخذ تعليمات IL أقل من تعليمة Select في VB.NET
رغم ان لهما نفس الوظيفة
و بالتالي نستنتج ان هناك اختلاف في التحويل بين اللغتين إلى MSIL و كذلك اختلاف في الاداء
و لتختبروا ذلك بأنفسكم وضعت الملفات في المرفقات
تم تعديل هذه المشاركة بواسطة تمام كوجان في 22 يناير 2007 في 15:51
اللهم صل و سلم على سيدنا محمد
كاف و نون خلقهم و فنائهم كاف و نون
عالمي شاشة و لغتي صفر و واحد
Just Smile ............You can do it
When you stop learning ... You stop leading
لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل
وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل
مدونتي الشخصية : Tammam Koujan
آخر مواضيع المدونة :
السلام عليكم ..
ياسلام عليك اخي تمام كوجان , فتلك هي نقطه الاختلاف الاساسيه , في طبيعه الترجمه والتحويل الى IL , والمثال الذي ارفقته يوضح انه يوجد فرق في كود الـ IL الناتج .
ولكن يمكن هذا الموضوع ليس مهم للكثير من المطورين لانه مقدار الفرق في السرعه اقل من ان يتم الاهتمام به , او حتى التحول من لغه VB.net الى C# بسببه ..
عموماً للمزيد يمكن الاطلاع على مزيد من الاراء للموضوع على هذا الرابط :
http://discuss.joelonsoftware.com/default....et.12.369517.23
تم تعديل هذه المشاركة بواسطة محمد معاشر في 22 يناير 2007 في 19:35
نعم ستكون هناك اختلافات في الـMSIL و لكن هذا راجع ليس إلى اللغة نفسها بل إلى الكومبايلر.
نقطة أخرى أحب أن أوضحها، و هي أن هذا الإختبار ليس عادلاً لأن الأمرين switch و select case ليسا متشابهين أصلاً. select case أقوى لأنها تسمح باستخدام شروط بداخلها و ليس فقط قيم مثل switch.
تم تعديل هذه المشاركة بواسطة System Down في 22 يناير 2007 في 20:14
اقتباسلكن يمكن هذا الموضوع ليس مهم للكثير من المطورين لانه مقدار الفرق في السرعه اقل من ان يتم الاهتمام به , او حتى التحول من لغه VB.net الى C# بسببه ..
معك حق اخي محمد لا يعني اختلاف كود MSIL انه سبب كافي للتحول من لغة لاخرى لكني
وددت ان اوضح اللبس في ان الغتين تحولان إلى نفس الملف (قصدي ملف MSIL)
و قد قلت سابقا :
اقتباسبرأيي كود C Sharp قد يكون اسرع قليلا اما من ناحية القوة فكلا اللغتين متساويتان نظريا لاعتمادهما على .NET Frameworkلكن اذا تعمقنا اكثر لوجدنا في الـ C Sharp ميزات اضافية تميزها و تجعلها افضل من VB.NET و هناك اشياء تقوم بها الـ C Sharp لا تستطيع عليها VB.NET
و بالتالي برأيي C Sharp أقوى قليلا
اي ان اللغتين شبه متشابهتين مع بعض الميزات لصالح الـ C sharp
حيث انه يوجد امور يمكنك القيام بها بالـ C Sharp ju[. ukih تعجز عنها VB.NET
و لكن حتى هذا ليس سببا كافيا للتحول
لذا كان رأيي كما قلت :
اقتباسانا برأيي تعلم كلتا اللغتين مهم و لابد منه ثم تعمل باحداهما اما الاخرى ستنفعك خاصة عندما تبحث عن كود معين و لا تجده إلا بالغة الاخرى
فأنا على ارض الواقع استخدم احيانا في مشاريعي المكتوبة بالـ C Sharp مكتبات مكتوبة بالـ VB
اقتباسو هي أن هذا الإختبار ليس عادلاً لأن الأمرين switch و select case ليسا متشابهين أصلاً. select case أقوى لأنها تسمح باستخدام شروط بداخلها و ليس فقط قيم مثل switch.
هذا الامر بحد ذاته ليس في صالح الـ VB.NET
فالـ C Sharp قامت بما يلزمني فقط
اما VB.NET فكان في تعليمة Select امور زائدة او "ميزات" لكني لم استفد منها
اقتباسهذا أيضاً لا يمكن اعتباره ميزة لل#C أو مبزة للVB.net ففمكن أن يكون الIL الأطول بالنسبة للJIT Compiler أسرع أو العكس لهذا لا يمكن الحكم على ال IL الناتج اذا كان أسرع أم أبطأ فكلاهما يقوم بنفس المهمة
هل حملت المثال الذي ارفقته انا في مشاركتي السابقة اخي bashmohandes
عندما تقارن ملفي الـ IL فإنك تجد فرقا قدره 30KB هل تعتبر ان 30KB زيادة ستجعل برنامج VB.NET اسرع
على فكرة كل ما قيل سابقا في هذا الموضوع هو فرضيات حتى الكلام الذي قلته انا هو مجرد فرضية
الفرق الوحيد اني قدمت مثالا يبرهن فرضيتي
لذا اتمنى من المشاركين ان يقدموا فرضياتهم مع امثلة و ادلة عملية
بذلك سيكون الموضوع شيقا اكثر و افضل من ناحية المناقشة العلمية
اللهم صل و سلم على سيدنا محمد
كاف و نون خلقهم و فنائهم كاف و نون
عالمي شاشة و لغتي صفر و واحد
Just Smile ............You can do it
When you stop learning ... You stop leading
لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل
وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل
مدونتي الشخصية : Tammam Koujan
آخر مواضيع المدونة :
السلام عليكم ورحمة الله وبركاتة
اولا الموضوع دة تم الكلام فية فى المنتدى كتير
واحب اوضح ان تقريبا مفيش حاجة ممكن تعملها بلغة واللغة التانية متقدرش عليها
لكن بالنسبة لعملية الترجمة ليست متشابهة فى الكود فلزالك احنا منعرفش اصلا ايهم اسرع او المترجم بيشوفهم اذاى
switch او select case
ولكن الاهم السى وريثة السى بلس بلس والجافا فهل تكون مثل الفيبى
ودة بس حاجة فى الخاطر كدة
ولكن الى واضح ان الاهتمام بالسى شرب عالميا اكبر
والدليل عمل مترجمات كثيرة للسى شارب وبالزات اللينكس المونو (مترجم سى شارب على اللينكس)
وسمعت قبل كدة تقريبا موضوع هنا ان السى شارب بيتعمل بيها نظام تشغيل او جزىء كبير بيها
وفى الاخر بحس ان الفيجوال بيسك مش عايزاك تفهم بتديك الى انت عايزة على طبق من فضة ودة بيصبنى بالشلل
لما اجى اتعامل معاها بتحسسنى انى طفل وبتخنقنى
يعنى فى التعريف لمتغير
Dim i As Long
علشان افهمها تلاقى معناها
نفرض ان i مثل اللونج
هههههههههههههههه
فى ناس بتحس ان دة جميل ولكن انا بتخنق منة جد ا
ولكن فى السى منذ الازل
long i
وفعلا هيا جزىء كبير منها عملية تعود
اللغة عبارة عن سلاح
ولكن الاهم من السلاح هو المحارب نفسة
تم تعديل هذه المشاركة بواسطة ™MAX في 23 يناير 2007 في 17:27
محارب بلا زمان
.................................................................................................................................................................................................

انتم تركزون على الاداء مع اني قلت ان الفارق ضئيل و لا يذكر
لأنه و بالاساس كما ذكرت كلتا اللغتين تعتمد على .NET Framework و الدالة التي تستدعيها C Sharp
هي نفس الدالة التي تستدعيها VB.NET
ربما فرق الاداء الاساسي يكون عندما تستدعي VB.NET مكتبات الفضاء Microsoft.VisualBasic و هو فرق بسيط لا يذكر
انا لا اتعصب للـ C sharp و لا اكره الـ VB.NET
احب كلتا اللغتين و ابرمج بهما لكن C Sharp لغتي الاساسية في البرامج لا اكثر
اقتباسلكن بالنسبة لعملية الترجمة ليست متشابهة فى الكود فلزالك احنا منعرفش اصلا ايهم اسرع او المترجم بيشوفهم اذاى
اقتباسواحب اوضح ان تقريبا مفيش حاجة ممكن تعملها بلغة واللغة التانية متقدرش عليها
متأكد مما تقول؟
أتود ان اعطيك بعض الامثلة و تجرب ان تحولها إلى VB.NET
انا لا اذم لغة VB.NET بل هي لغة رائعة
و اذا اردت ان انتقد فعلا فنقدي هو ان الكثير من مبرمجيها (و ليس كلهم) ما يزال يبرمج بعقلية VB6
على كل في بالي تجربتان اخرييان للتأكد من نتائجي السابقة
اللهم صل و سلم على سيدنا محمد
كاف و نون خلقهم و فنائهم كاف و نون
عالمي شاشة و لغتي صفر و واحد
Just Smile ............You can do it
When you stop learning ... You stop leading
لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل
وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل
مدونتي الشخصية : Tammam Koujan
آخر مواضيع المدونة :
تمام كوجان كتب:و اذا اردت ان انتقد فعلا فنقدي هو ان الكثير من مبرمجيها (و ليس كلهم) ما يزال يبرمج بعقلية VB6
هذا الكلام للأسف صحيح و أتفق معك فيه، و هو أحد أهم أسباب النظرة الدونية التي تعاني منها فيبي دوت نت.
الحمد لله اتخذ الموضوع نقاشا تقنيا بحتا نخرج منه بحقائق برمجية وليس مجرد كلام وتعصب مثل كل مره !
تبقى Vb لغة لها شعبيتها ، انا شخصيا ارتاح للكود المكتوب بهااكثر من سي شارب لانه اقرب للغة البشرية ،
تحياتي ،
[/وسط]
السلام عليكم
بعد البحث والتنقيب في الانترنيت استطيع ان اختصر الموضوع :
vb.net و #C وجهان لعملة واحد وهي .Net Framework Platform
وقدرات C# و Vb.Net متشابهة بنسبة 99.9%
والسبب الوحيد للانتشار الكبير للغة C# خصوصا في مجال تصميم المواقع ASP.NET هو ان
العديد من مبرمجي Java و PHP و C++ انتقلوا الى بيئة دوت نت
وطبعا جميعا ندرك التشابه الكبير بين C# واللغات التي ذكرتها .
انا برأي الشخصي المتواضع ان VB.NET اسهل C# من ناحية طريقة كتابة الكود
فمثلا الكود التالي شغال في VB.NET
response.write("Hello, World!")لاحظ ان VB.NET غير حساس للحروف الكبيرة والصغيرة ( انا اجدها نقطة ايجابية وتساعدنا اثناء كتابة الكود )
اما الكود في C# فهو التالي
Response.Write("Hello, World!");اذا غيرنا الكود السابق الى التالي :
response.Write("Hello, World!");فسوف يظهر لنا رسالة خطأ لان C# يتحسس للحروف الكبيرة والصغيرة
وهنالك ميزة اجدها ممتازة في VB.NET وهي انه يضيف الاقواس ذاتيا في نهاية الجمل البرمجية
بينما C# لايفعل .. هنالك نقطة اخيرة وهي ان البرامج المصممة ب C# اسرع قليلا في بداية التشغيل
من البرامج المصممة بالــ VB.NET
بالناهية اعتقد ان كلا اللغتين رائعتين
وانصح الجميع بتعلهما كلاهما لانهم متشابهتين تقريبا
وهذا رابط برنامج رائع استعمله لتحويل اكواد C# الى VB.NET وبالعكس
http://switch.dl.sourceforge.net/sourcefor....1710_Setup.exe
لقد تعلمت لغة C# تقريبا 85% وذلك بفضل البرنامج الذي وضعت رابطه سابقا
وقد اعدت كتابة مشروع كامل من تصميمي من VB.NET الى C# :lol:
وهي عملية سهلة نسبيا
اقتباسانا شخصيا ارتاح للكود المكتوب بهااكثر من سي شارب لانه اقرب للغة البشرية
وانا كمان افضل VB.NET لانها اقرب الى اللغة البشرية
شكرا
تم تعديل هذه المشاركة بواسطة زيد الرافدين في 26 يناير 2007 في 17:25
هههههههههههههههههه ما اجمل هذا السؤال دائما مايطرح ودائما ما يشتعل الصراع بين محبي vb.net و ال #c
دائما لا نتفق , الميزة الوحيدة التي اراها حتى الان في #C انها نسنطيع الكتابة على ذاكرة PC مباشرة اي كود غير امن
بينما vb.net لا علم هل تستطيع ام لا , على العموم انا من عشااااااق vb.net حتى النخاع .
تم تعديل هذه المشاركة بواسطة ahmedd في 26 يناير 2007 في 18:04
هذا الموضوع مغلق.




