السلام عليكم ارجو مساعدتي. ياجماعة اني الان في حيرة بين تعلم (الفي بي و السي شارب)اخواني انا اجد هناك شبه بين اللغتين
واريد جواب شافي حول تعلم احدا اللغتين ولا اعرف ماذا افعل ارجوكم اخوكم في حيرة ارجو تحديد الاختلافات بينهما ايبارك بيكم ربي.
السلام عليكم ارجو مساعدتي. ياجماعة اني الان في حيرة بين تعلم (الفي بي و السي شارب)اخواني انا اجد هناك شبه بين اللغتين
واريد جواب شافي حول تعلم احدا اللغتين ولا اعرف ماذا افعل ارجوكم اخوكم في حيرة ارجو تحديد الاختلافات بينهما ايبارك بيكم ربي.
لا توجد اختلافات جوهرية كبيرة بين الإثنين. اختر التي تعجبك وتعلمها. وستجد أنك ستستطيع البرمجة بالثانية مع القليل من المجهود.
في عالم الدوت نت يوجد العديد من لغات البرمجة التي تصنع مشاريع الدوت نت .. الفيجوال بيسك والسي شارب متشابات لدرجة كبيرة مصطلع متشابهات هنا لا يعني ان الفيجوال بيزك يصنع ما تصنعه السي شارب ، السي شارب هيه اللغة الام للدوت نت وهي اللغة الوحيدة من لغات الدوت نت التي تتمتع بامتيازات باستخدام التقنيات جميعها بدون اي استثناء فهي قادرة على انشاء جميع المشاريع المتعلقة في الدوت نت ، يوجد فرقين جوهريين بين السي شارب والفيجوال بيسك ان السي شارب تحتوي على بيونترس Pointers اما الفيجوال بيسك لا يحتوي لذلك بعض التطبيقات التي تستخدم البويتنرس كمعالجة الصور وبرمجة الالعاب من الصعب عملهم على االفيجوال بيسك بشكل مباشر او باخر.
عند تعلمك لاي لغة منهم واتقانها فمن السهل جدا تعلم اللغة الاخرى في زمن قصير جدا ، في تطبيقات الويب وقواعد البيانات جودة التططبيقات وانجازها لا يختلف سواء كان بالفيجوال بيسك او السي شارب.
لاانترنت يحتوي على الكثير من المصادر لتعلم السي شارب والفيجوال بيسك ولك الاغلبية الساحقة السي شارب وهيه اللغة الاكثر شعبية الان ومتوفر لها الكثير من المصادر القيمة والمشاريع على الانترنت اكثر من الفيجوال بيسك.
انا انصحك بتعلم اللغة الام او القياسية للدوت نت التي تتمتع باشنااء كل تطبيقات الدوت نت بدون اي استثناء ، انصحك بتعلم لغة المستقبل لغة الس شارب C#
لا أخالف ClassCoder في كلامه، ولكن لي مداخلة.
الـPointers (أو ما يدعى بالبرمجة الغير آمنة Unsafe Coding) هي الشئ الوحيد الذي لا تستطيع البيسك عمله. ولكنني سأقولها لك بصراحة، أنك لن تستخدم هذه الخاصية. هناك بدائل كثيرة لها بدايةً بالـreferences و نهايةً بالـdelegates. أي استخدام آخر للـpointers لا تغطيه هذه الخصائص يعني أن برنامجك ليس مناسباً للدوت نت من أصله. لأن أحد أسباب وجود الدوت نت هو عدم استخدام الـunsafe coding والعمل داخل بيئة آمنة من هجمات الـoverflow buffering وغيرها من مخاطر الولوج المباشر في الذاكرة. هذه الخاصية وضعت في الـ#C في البداية كأداة تسويقية لجعلها تبدو أفضل من جافا (خصمها اللدود) التي لا تحويها. مضى عليها الآن أكثر من 9 سنوات ولن تجد أي تطوير إضافي لهذه الخاصية (بعكس بقية اللغة)، بل ستجد أن مراجع مايكروسوفت نفسها تنصحك بعدم استخدامها.
من ناحية أخرى ستجد أن الـ#C تتمتع بالتالي:
* أنها أكثر شعبية.
* أنها مقياس مفتوح لذا يمكنك أن تجدها في اللينوكس (ولو أنك هناك جهود حثيثة لجعل بيسك تتمتع بذلك أيضاً).
* قد تجدها أسهل من البيسك في التعلم إذا كنت متعوداً على الـsyntax الخاص بلغات الـC لتشابه المفردات.
هل هذا يعني أن #C أفضل؟ ليس بالضرورة. جواب هذا السؤال يختلف من مبرمج لآخر، ولا يوجد جواب صحيح أو خاطئ له. المسألة مسألة ذوق شخصي، لا أكثر ولا أقل. :)
السلام عليكم
الأخ الفاضل System Down وجميع من لديه خلفية عن هذا الموضوع .
كان لدي برنامج قمت بتصميمه بلغة VB.Net في وقت سايق وعندما انتقلت إلى لغة C# حاولت البدأ بهذا التطبيق وتحويله إلى الـ C#
المفاجأة أن حجم الملف الناتج كان نصف حجم الملف الناتج عن الـ VB.Net !
وحتى تكون المقارنة منصفة أكثر البرنامج المرفق عبارة عن ثلاث مربعات نص وزر تقوم بكتابة رقم بالمربع الاول والثاني وعند الضغط على الزر يتم الجمع .
طبعا للتحويل استخدمت الكلاس Convert وهو متاح لكلا اللغتين .
كانت النتيجة ملف الـ C# 8 كيلو بايت و ملف الـ VB.Net حجمه 16.5 كيلو بايت .
هذا والتطبيق صغير جدا فماذا سيكون الفرق عند التطبيقات الكبيرة ؟
هل هناك تفسير منطقي لذلك؟
الحمد الله الان استطيع اشق طريق مشكورين على المجهود وبارك الله فيكم.
الحمد الله الان استطيع اشق طريق مشكورين على المجهود وبارك الله فيكم.
hfsh80 كتب:السلام عليكم
الأخ الفاضل System Down وجميع من لديه خلفية عن هذا الموضوع .
كان لدي برنامج قمت بتصميمه بلغة VB.Net في وقت سايق وعندما انتقلت إلى لغة C# حاولت البدأ بهذا التطبيق وتحويله إلى الـ C#
المفاجأة أن حجم الملف الناتج كان نصف حجم الملف الناتج عن الـ VB.Net !
وحتى تكون المقارنة منصفة أكثر البرنامج المرفق عبارة عن ثلاث مربعات نص وزر تقوم بكتابة رقم بالمربع الاول والثاني وعند الضغط على الزر يتم الجمع .
طبعا للتحويل استخدمت الكلاس Convert وهو متاح لكلا اللغتين .
كانت النتيجة ملف الـ C# 8 كيلو بايت و ملف الـ VB.Net حجمه 16.5 كيلو بايت .
هذا والتطبيق صغير جدا فماذا سيكون الفرق عند التطبيقات الكبيرة ؟
هل هناك تفسير منطقي لذلك؟
لغة VB.NET بطبيعتها أكوادها ستكون أطول. لأنك ستكتب End Sub بدلاً من { و Dim a as Integer بدلاً من int a. الكثيرون (بما فيهم أنا) نرى أن هذا ثمن معقول مقابل ما نراه كوداً أنظف وأوضح. وفي النهاية الحجم الذي يهمنا هو حجم البرنامج بعد الكومبايل (الـDLL أو الـEXE). هنا ستجد أن الحجم متقارب لأن اللغتين سوف يتم تحويلهما إلى لغة واحدة هي لغة IL. هناك اختلافات طفيفة بين الإثنين في طريقة التحويل إلى الـIL وأحياناً في البرامج الصغيرة ستبدو هذه الاختلافات كبيرة. ولكن كلما أصبح حجم البرنامج كبيراً ستجد أن هذه الاختلافات الطفيفة ستصبح أقل وأقل حجماً بالنسبة لحجم البرنامج الكامل.
الـVB.NET لغة "ثرثارة" والـ#C لغة مختصرة. أي هاتين النقطتين أفضل يعود، مرة أخرى، للذوق الشخصي للمبرمج.
System Down كتب:لغة VB.NET بطبيعتها أكوادها ستكون أطول. لأنك ستكتب End Sub بدلاً من { و Dim a as Integer بدلاً من int a. الكثيرون (بما فيهم أنا) نرى أن هذا ثمن معقول مقابل ما نراه كوداً أنظف وأوضح. وفي النهاية الحجم الذي يهمنا هو حجم البرنامج بعد الكومبايل (الـDLL أو الـEXE). هنا ستجد أن الحجم متقارب لأن اللغتين سوف يتم تحويلهما إلى لغة واحدة هي لغة IL. هناك اختلافات طفيفة بين الإثنين في طريقة التحويل إلى الـIL وأحياناً في البرامج الصغيرة ستبدو هذه الاختلافات كبيرة. ولكن كلما أصبح حجم البرنامج كبيراً ستجد أن هذه الاختلافات الطفيفة ستصبح أقل وأقل حجماً بالنسبة لحجم البرنامج الكامل.
الـVB.NET لغة "ثرثارة" والـ#C لغة مختصرة. أي هاتين النقطتين أفضل يعود، مرة أخرى، للذوق الشخصي للمبرمج.
أخي العزيز System Down
البرنامج الذي عرضته الآن بسيط جدا لكن فقط لتوضيح الفكرة
طول العبارة في التعبير عن المتغير الرقمي في الـ vb لايهم مادامنا في النهاية سنحول مايكتبه المبرمج للغة الوسيطة لذلك من المفترض أن تكون العبارة :
Dim a as Integer
مكافئة عند التحويل للعبارة :
int a;
عموما للحديث بقية سأعود في وقت لاحق لانشغالي الآن :)
مكافئات مثل هذه العبارات البسيطة في الـIL ستكون نفسها طبعاً. ولكن هناك منشئات مختلفة بين اللغتين، لذا ستكون طريقة ترجمتها مختلفة. مثل Select Case بالنسبة لبيسك و Switch بالنسبة للـ#C. خارجياً تبدوان متشابهتان، ولكن حين تغوص في التفاصيل ستجد أن هناك اختلافات. وحسب ما أتذكر أيضاً أن اللغتين تفسران الحلقات Loops وغيرها من المنشئات المعقدة بطريقة مختلفة إلى الـIL.