A.S Hack

مما شاع بطريق الخطأ.

36 ردود في هذا الموضوع

من الأخطاء الشائعة الإعتقاد أن SQLite تصلح للبرامج الصغيرة فقط.

+1

من الأخطاء الشائعة الإعتقاد أن SQLite هي قاعدة البيانات الوحيدة المُضمّنة والخفيفة والقادرة على اعتماد ملف بسيط كقاعدة، والصواب أن أن هناك الكثير من البدائل التي تستحق التجربة مثل Berkeley DB والتي تدعم SQLite نفسها وتعتبر سريعة جدا. انظر هذه القائمة لمزيد بيان.

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أعتقد أن هذا خطأ شائع. ما تقوله Microsoft هو أن الناتج من اللغتين هو نفس اللغة(مايسمى CIL).

+1

بالضبط، لم تقل ميكروسوفت يوما أن VB.NET و #C هما الشيء نفسه باختلاف النص النحوي فقط Syntax.

ميكروسوفت تقول أن اللغتان تنتجان شفرة وسيطية اسمها MSIL أو CIL، ولكن لم تقل أن لناتجهما (MSIL) نفس درجة الكفاءة والحُسن كما يعتقد الكثير من الأخوة هنا.

والملفت أيضا إعتقاد الكثير - من الناحية الأخرى - أن أحد اللغتين يمكن أن تنتج شفرة MSIL محسنة بدرجة قوية وملحوظة جدا significant optimization عن اللغة الأخرى،وهو أمر غير صحيح البتة. فحتى الآن، لم يفتحر أحد بأن VB.NET لها الفضل عن #C في هذه النقطة (أو العكس).

ملحوظة للحيادية: لمقارنة شفرتي MSIL من مترجم سي شارب و في بي، وجب أن يكون الكود الأصل يستخدم نفس ال procedure ونفس الفصائل Classes..(وثوابت وشروط أخرى كثيرة) الخ.

تم تعديل بواسطه A.S Hack
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

اخي خالد لايوجد فرق بين اللغتين على مستوى الـ IL, شوف الرابط التالي http://stackoverflow.com/questions/637224/is-the-foreach-in-vb-net-faster-than-in-c كمثال ينفي لم يقول جملة الـ For Each في الفيجوال بيسك اسرع من السي شارب وانهما متماثلتان, لقد سمعت الكثير الكثير .. ولكن حسب خبرتي وتعاملي حتى مع الـ IL ان الفرق مجرد صياغة ومميزات توفرها اللغات نفسها, وللعلم ان اللغتين تطوران يدا بيد وهذا ليس كلامي انما كلام احد كبار معماري لغة السي شارب, واعتقد انه مما شاع بالخطأ .. والحكاية مستمره ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
اخي خالد لايوجد فرق بين اللغتين على مستوى الـ IL

أخي, دع موضوع جودة المترجمين خارج الموضوع لأنه من الظاهر أن الموضوع جدلي دون تصريح رسمي من Microsoft لذلك أسحب كلامي حول جودة المترجم.

بالنسبة, للكود الناتج فلا تخلط وجود ABI واحدة مع اختلاف الكود الناتج من كل لغة. أنا لا أقول أنه يجب أن يكون مختلفاً تماماً, و لكن بكل تأكيد هناك فروق في معاني بعض التركيبات بين VB و #C و هذا يؤدي إلى إنتاج كود مختلف بلاشك. خذ على سبيل المثال, الـ for loop العادية و قارن بينها في #C و بينها في VB هل هي متطابقة تماماً في كل الحالات؟ هل الكود الناتج قد يختلف؟

بالنسبة للمثال الذي وضعته حضرتك, فهذا قد يكون صحيحاً لتطابق معنى for each في اللغتين بشكل شبه تام. لهذا الكود الناتج قد لا يكون مختلفاً.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

اخي خالد تقصد API, اصلا هذه الدوال واحده لك لغات البرمجة لأنها تبع النظام, اما بالنسبة للتركيبات فأكيد تختلف من لغة الى اخرى ولكن في النهاية تتحول الى كود واحد مقابل لها في الـ IL وانا لا اقول انه لا توجد اختلافات بين الكود الناتج اطلاقا ولكن ان وجدت فهي قليلة مرررة ولا تؤخذ على وجه المقارنة, اما مثال الـ For Each الا نموذج في الاول والاخير ولكن لن نخوض كثيرا ولنركز على الموضوع الاساسي ولكن لمن اراد اليقين عليه القراءة بعمق في الـ IL ولقد قمت بتطوير لغة عربية ضمن الدوت نت يقوم مترجمها بتحويل مصدرها الى كود IL مشابه تمام لكود الفيجوال بيسك والسي شارب

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
اخي خالد تقصد API, اصلا هذه الدوال واحده لك لغات البرمجة لأنها تبع النظام, اما بالنسبة للتركيبات فأكيد تختلف من لغة الى اخرى ولكن في النهاية تتحول الى كود واحد مقابل لها في الـ IL

ممم...

أخي أن تقول بأن Intermidate Code الناتج متطابق, و هو مستحيل. أنا لست خبيراً باللغتين على الإطلاق, و لكن بدون جدال هناك فروق في معاني التركيبات بين اللغتين. و هذا ينتج عنه اختلاف في الكود الناتج. هذا خطأ شائع بين المبرمجين, يعتقدون بأن الكود الناتج متطابق. لاحظ عزيزي أن الكود الناتج من التركيبات قد يختلف بين مترجمين لنفس اللغة, و قد يختلف بين إصدارات المترجم نفسه! الذي يتطابق, هو الـ ABI أو فكر فيها على أنها شكل الكائنات في الذاكرة. الـ Layout Representation للكائنات و "كل" البيانات بين جميع لغات الـ Net. متماثلة و متطابقة و لهذا يمكن التواصل بين لغات الـ Net. ,هذا الامر ليس له علاقة بكون الكود الناتج عن التركيبات اللغوية متشابه أم لا. فمثلاً COM هو ABI يمكن لأي لغة أن تتواصل مع الأخرى من خلاله.

كما قلت لك لست خبيراً في اللغتين, و لكن وحدة الـ ABI لا تعني وحدة الكود الناتج :happy:

http://www.codeproject.com/KB/msil/vbvscsmsil.aspx

http://stackoverflow.com/questions/5300256/will-vb-net-and-c-sharp-cil-look-the-same

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

اخي خالد تقصد API

لا، يقصد ABI بشحمها ولحمها.

google Application Binary Interface

لاحظ عزيزي أن الكود الناتج من التركيبات قد يختلف بين مترجمين لنفس اللغة, و قد يختلف بين إصدارات المترجم نفسه!

بل أن المترجم نفسه وبنفس الاصدار ولنفس الشفرة المصدرية قد يُنتج شفرة منخفضة تختلف عن الشفرة السابقة في تجربة أولى.

مثلا في مشروع يحوي عدد من النياسب threads غير المتُزامنة، هنالك احتمالية لاختلاف الشفرة المنخفضة، مسألة تحسين الشفرة optimization هي الأخرى تعتمد على كم الذاكرة الحرة المتوفرة عند كل عملية ترجمة.. الخ.

لكن الاحتمال الاكثر "حدوثا" هو انتاج نفس الشفرة.

تم تعديل بواسطه A.S Hack
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
بل أن المترجم نفسه وبنفس الاصدار ولنفس الشفرة المصدرية قد يُنتج شفرة منخفضة تختلف عن الشفرة السابقة في تجربة أولى.

عالم الـ Indeterminism في المترجمات يصيب أي مبرمج بالصداع لذلك ينصح بالابتعاد عنه لمن أراد الحفاظ على الفيوزات الباقية في المخ البشري :lol:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

كان هناك نقاش قديم بين بعض خبراء AT&T لم أستطع التوصل لرابطه للأسف, و لكن سأشرح مضمون ذلك النقاش باختصار.

جاء مبرمج و طرح الفكرة التالية. المبرمج يريد كتابة Formatter للكود. بحيث أن تمثيل البرنامج نفسه لا يختلف, و إنما ما اختلف هو التمثيل النصي الأولي للبرنامج. المبرمج أراد اختبار البرنامج, و لكنه وجد عملية الاختبار صعبة جداً, لأنه يجب أن يقوم ببناء AST و من ثم يقوم بمقارنة الـ AST الناتجة من عينات الاختبار مع الـ AST الناتجة من مترجم الـ C الذي كان يعمل عليه. ففكر أنه ربما من الأفضل, أن يقوم بمقارنة الـ executable الناتج بحيث إذا كان متطابقاً قبل و بعد الـ Formatting فإنه لا بد أن الـ beautifier لا يؤثر على معنى البرنامج و لكنه يعدل التمثيل النصي للبرنامج فقط. نتيجة النقاش, أنه لا يمكن ذلك لأن هناك مترجمات Indeterministic مثلما قال الأخ A.S Hack! بالطبع النقاش أخذ في عين الاعتبار اهمال اختلاف الـ Timestamp في الملف التنفيذي و باقي الحقول الغير مؤثرة على معنى البرنامج نفسه.

تحياتي...

تم تعديل بواسطه Khaled.Alshaya
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمه الله وبركاته

أن تقول بأن Intermidate Code الناتج متطابق

انا لم اقل هذا ولكن قلت

وانا لا اقول انه لا توجد اختلافات بين الكود الناتج اطلاقا

على العموم شكلنا سندور في دوامة كبيرة ... شكرا للجميع ولنركز اكثر على الموضوع الاساسي

تم تعديل بواسطه VB Helper
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

معلومات قيمة ..شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .