الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه A.S Hack في 31 أكتوبر 2011 · 35 رد · 3,381 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#26
asm-soft كتب:

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

+1

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

2

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#27
Khaled.Alshaya كتب:

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

+1

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

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

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

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

تم تعديل هذه المشاركة بواسطة A.S Hack في 8 نوفمبر 2011 في 20:24

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

#28

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

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

.:: Wish to become better and better ::.

#29
اقتباس
اخي خالد لايوجد فرق بين اللغتين على مستوى الـ IL

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

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

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

#30

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

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

.:: Wish to become better and better ::.

#31
اقتباس
اخي خالد تقصد 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 في 9 نوفمبر 2011 في 14:31

#32
VB Helper كتب:

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

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

google Application Binary Interface

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

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

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

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

تم تعديل هذه المشاركة بواسطة A.S Hack في 9 نوفمبر 2011 في 15:09

1

" إن الله كتب الإحسان على كل شيء"

::

الإرادة ... تحقق السيادة.

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

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

#34

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

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

تحياتي...

تم تعديل هذه المشاركة بواسطة Khaled.Alshaya في 9 نوفمبر 2011 في 16:06

#35

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

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

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

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

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

تم تعديل هذه المشاركة بواسطة VB Helper في 9 نوفمبر 2011 في 17:47

.:: Wish to become better and better ::.

#36

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

اللهم أرزقني علما نافعا وعملا صالحا

مواضيع مشابهة