عزيزى/تى الطالب هذا المنتدى يضم بعض الأبحاث والتقارير التى قام بها طلاب قسم تكنولوجيا التعليم الأربع فرق - أى انها لا يعتد بها كمستند رسمى وانما هى مجهود شخصى للطلاب - وعليك عزيزى الطالب المشاركة معنا
 
الرئيسيةالبوابةاليوميةمكتبة الصورس .و .جبحـثالأعضاءالمجموعاتالتسجيلدخول

شاطر | 
 

 الفرق بين لغة السي واللغات الاخرى من حيث امن اللغة والوصول منخفض المستوى

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل 

ما رأيك فى الموضوع؟؟؟؟
ممتاز
0%
 0% [ 0 ]
جيد
0%
 0% [ 0 ]
مقبول
0%
 0% [ 0 ]
ضعيف
0%
 0% [ 0 ]
مجموع عدد الأصوات : 0
 

كاتب الموضوعرسالة
Admin
Admin


المساهمات : 11
تاريخ التسجيل : 29/05/2011

مُساهمةموضوع: الفرق بين لغة السي واللغات الاخرى من حيث امن اللغة والوصول منخفض المستوى   الأربعاء يونيو 01, 2011 5:10 pm

اولا : امن اللغه

لا نقصد أي من مفاهيم الأمن المتعلقة بالاختراق أو حماية البرامج.
ما نقصده هنا هو تساهل اللغة مع أخطاء المستخدم والسماح له بإنتاج تطبيقات غير مستقرة .
فاللغة الآمنة تبعد المستخدم عن الخطر قدر المستطاع, وتوجههُ إلى إتباع الطرق الآمنة أكثر في الحل, وتعطيه أدوية ذات أعراض جانبيه قليلة قدر المستطاع.

الفرق بين اللغات من حيث أمن اللغه:

1-لغه جافا
جافا جيده جدا من هذه الناحية, تسمح لك بتنفيذ الأشياء من وجهه النظر الآمنة فهي تجبرك مثلا على التعامل مع الأغراض في بنيتها غرضية التوجه الصرفة حتى في برامجك الصغيرة , مما يخدمك في المستقبل في حال توسيع برنامجك . حيث تكون قد بنيت قاعدة سليمة وفق قوانين البرمجة الغرضية التي تسهل إعادة استخدام الشفرة وتوسيعها مما يجعلك تزيد حجوم برامجك بثبات وإستقرارية بعيدا عن الأخطاء التي كان من الممكن أن تقع بها لولا أن أجبرتك بالعمل على الأصول من البداية والتي ربما كلفتك إنتاج برامج غير مستقرة ..
كما أنها مثلا تحميك من الوقوع في أخطاء المؤشرات الحسابية ولاتسمح لك باستخدامها أو تعريفها مع أنها تعتمد عليها داخليا وتستفيد من ميزاتها .
نعم تعتبر المؤشرات أدوات فائقة القوه ورائعة للتحكم والسرعة, ولكن حديثا تم اعتبار المؤشرات أنماط غير آمنه,وهذا ما يفسر التخوف الحالي من دعم المؤشرات .
مثلا في بيئة (NET) لا يوجد دعم كامل للمؤشرات كما كان في Win32 حتى الآن الدعم يتم بطريقة غير مباشره وبحالات خاصة في معظم الأحيان .(
ربما C++/CLI هي اللغة الوحيدة التي ستبقى مع المؤشرات لكن كل من VB.Net و C# و Delphi.NET لا يدعم المؤشرات , ولكن توجد التفافات برمجيّة تسمح لك بالقيام بأعمال المؤشرات بطرق آمنه أكثر , بشكل عام باستخدام الأغراض , أو مثلا بالعمل تحت نمط Unsafe الذي يتيح استخدام المؤشرات. ولكن نادرا ما يستخدم إلا إذا أردنا معالجه شفرة قديمة وتستخدم بدل ذلك المراجع reference وهي مشابهه لما هي موجود في الـ C++ لكن مع تخطي بعض القصور .
مع أن المؤشرات قويه جدا وسريعة جدا ومهمة جدا , قامت لغة عريقة مثل Java بالاستغناء عنها , لصالح مبرمج الجافا
كما أن جافا تسمح بالتمرير بواسطة القيمة فقط (pass-by-value) وبالتالي تجعل جافا شفرتك أقل عمومية وأكثر أمانا فهي لا تسمح بالتمرير بواسطة المرجع (pass-by-reference)
اللغة C القديمة تشاركها هذه الخاصة , لكن كل من ++ C و باسكال يختلفان معها.
حتى الإدارة الآلية للذاكرة ومجمع النفايات المتقدم في جافا تعتبر مزايا مهمة من ناحية أمن اللغة , فهي تحمي المستخدم من الوقوع في أخطاء إدارة الذاكرة بلا شك لها سلبياتها هي أيضا, فهي تفقد اللغة بعض مزايا القوه والتحكم وقد تسبب لها بطىء إضافي في التنفيذ, ولكن النتيجة أن تطبيقات مبرمجي جافا خالية من أخطاء المستخدم في إدارة الذاكرة إلى مدى بعيد مقارنه بمبرمجي C او C++ .

2- لغه Delphi
تملك نظره مشابهه ولكنها مختلفة عمليا عن جافا ، فهي تعتمد مبدأ تغليف احتياجاتك من نظام التشغيل بأدوات خاصة (تذكر الكميه الكبيرة من الأدوات الموجودة في شريط أدوات دلفي ) وهذا يجعلك تحل المسألة من وجهه نظر دلفي نفسها وبطريقتها الخاصة,مما يزيد من أمن برنامجك ضد الأخطاء التي قد ترتكبها , أو ضد نقص في معالجتك لكامل الحالات البرمجيّة، كما أن دلفي استفادت من النحو الدقيق للغة Object
Pascal
وهى ليست كالجافا تماما , فهي تسمح لك بالدخول في نهاية المطاف ولكنها تجعل الحلول الآمنة هي الحلول الإفتراضية . وعندما تقرر أن لا تعمل وفق هذه الحلول عليك أن تتحمل مسؤولية شفرتك.

3- لغه C#
قفزت قفزه مهمة في هذا المجال إذا ما قارناها ب C++ القديمة فهي تولد شفرة آمنه أكثر منها , لن تستطيع في C# إنجاز تحويل غير آمن مثل تحويل قيمه رقميه ( Double ) إلى قيمه منطقيه (Boolean ) , فكل الأنماط ذات القيم ( Value Types) يتم تهيئتها إلى صفر وكل الأنماط ذات المرجع يتم تهيئتها إلى Null أوتوماتيكيا من المترجم .

4- لغه VB.Net
شبيهة لغه C# إيضا ولكنها أكثر أمنا منها , والسبب هو طبيعة VB.Net ذات الوضوح العالي , وهذا يضاعف ميزة الأمن بشكل أسي , فلا تتوقع خروقات أمنية كبيرة في ظل عملك في بيئة مثل Visual Basic
5- لغه C++
بلا شك هي خاسر مهم لهذه الناحية , وعلى C أن تدفع ثمن التفصيل الكبير واليدوية اللتان تجبر مستخدمي السي على إتباعهما . ما أراه في C++ أنها عكس جافا تماما , فهي تجبرك على فهم المؤشرات والتعامل معها عندما تريد كتابه برامج مصفوفات مثلا ؟؟؟؟ لاحظ الفرق , لاتريد مؤشرات ولكنها تقحمها أمام عينيك دائما
كما أن C++ تزودك بكافه أدوات القوه دون أدنى قيد و شرط .
6- لغه Perl
لغة جميلة وجيدة, ولكنها ببساطه تسمح لك أن تكتب شفرة بغاية السوء بنفس البساطة التي تكتب بها شفرة أنيقة, وهي مثل C++ يمكن أن تتساهل مع أخطاء المستخدم ويمكن أن تسمح له بإنتاج شفرة غير آمنه.

7- لغه Python
متساهلة كثيراً مع أخطاء المبرمج لدرجه أنها لن تظهر لك أي تنبيه في حال لم يتم تعريف التابع أو الحقل أو المتحول , أو عند تمرير بارامتر غير صحيح للتابع أو أي شيء آخر وبذلك فإنه لا سبيل لاكتشاف الخطأ إلا بالوقوع به عند الأمر بتنفيذ البرنامج .
مع العلم أن بايثون يؤمن معالجة جيدة جداً للاستثناءات وذلك في زمن التنفيذ.

8- لغه Lisp
لا تتسامح أبداً مع أخطاء المبرمج وسوف يظهر لنا تنبيه لجميع الأخطاء النحوية على خلاف بايثون وذلك في زمني التصميم والتنفيذ .



ثانياً: الوصول منخفض المستوى

يقصد به قدرة لغة البرمجة على إنجاز وظائف غير تقليديه مع العتاد أو قدرتها على الوصول بمستوى منخفض إلى تفاصيل نظام التشغيل وتفاصيل المشغلات والمنافذ والمكونات .
وهناك أمور كثيرة تلعب دورا في تحديد قدرة لغة البرمجة على الوصول المنخفض ومنها دعم أساليب الولوج المنخفض مثل دعم كتابه شفرات بلغة الأسمبلي كذلك الدعم الجيد للمؤشرات لا يقل أهميه عن سابقه, بالإضافة إلى تكوين اللغة بشكل عام وآليتها بتنفيذ المهام, هل تعتمد التفصيل والشمولية, أم أنها تدعم التقنيات من مستوى المستخدم نفسه, أو ما يسمى القشرة.
والوصول منخفض المستوى في كثير من الأحيان ينظر اليه على أنه أهم عوامل قوه لغة البرمجة .

الفرق بين اللغات

1- لغه C++
تملك كل العوامل التي تجعلها لغة مناسبة لتنفيذ وصول منخفض والمنافسة معها في هذا المجال تنحسر كثيرا .

2- لغه JAVA
لا تملك دخولا منخفض المستوى, فلا تستطيع أن تتعامل مع مواقع ذاكرة, أو تقرأ من منافذ الخ .. ربما منع ذلك من أجل السرية, ولكنه بالنهاية غير مسموح ولايمكن تحقيقه, لذلك لايمكن أن تفكر بأن تكتب مشغلات أجهزه في جافا (device driver), ربما يمكن الالتفاف على كل ذلك باستخدام مناهج محليه , ولكن تقنيا لا يمكن اعتبار أن ذلك يندرج تحت إطار الوصول المنخفض المستوى

3- لغه DELPHI
أفضل بكثير من جافا , فهي تدعم التقنيات السابقة الذكر بشكل ممتاز , يمكنك كتابه أجزاء بلغة الأسمبلي أو استخدام المؤشرات بالحدود الكاملة، يمكنك الوصول إلى مختلف المنافذ وتحقيق كثير من الأمور التي لم تعتد عليها , ولكن نقول أن لغة الدلفي مختلفة في تكوينها عن لغة C++ وأنها ليست جديرة أن تصمم برامج مشغلات تقارن ببرامج C++ وإنما ما تمنحه من الوصول المنخفض ينصب أساسا لخدمه المبرمج في بعض الحالات،
وهدفه شحن الدلفي بجرعة إضافية من القوه التي قد يضطر المستخدم إلى كشف الغطاء عنها أحيانا لتنفيذ وصولات محدده .
فدلفي ليست اللغة الأقوى ولكنها لغة قويه بشكل كافي .
وتختلف Delphi.NET كثيرا عن Delphi win32 التقليدية في هذا المجال , حيث خسرت جولات مقارنه معها وربحت اخرى ,,.. حيث لم يعد يوجد دعم للأسمبلي المضمن في النسخ الجديدة , كما خسرت الكثير من دعم المؤشرات السابق .
ولكنها ربحت العديد من المزايا المتوفرة من منصة .net والتي أكسبتها وصول رسمي ومنظم مثلها مثل غيرها ك C# و VB.NET إلى أصناف ال.Net المتوفرة

4- لغه Python
تملك قصورا واضحا هنا أيضا ، من الأفضل استخدام البايثون لإنشاء التطبيقات الخدمية للمستثمر بمختلف أنواعها مع الأخذ بعين الاعتبار الابتعاد عن البرامج التي تتعامل مع بنية الحاسب بشكل مباشر فلغة البايثون لغة عالية المستوى وغير مناسبة للتعامل مع ركائز النظام والحاسب (برامج تعاريف الأجهزة مثلا (

5- لغه VB.net
ليست سيئة في هذا المجال , أنها تريد توجية مثل هذة الميزات نحو C# أكثر من VB.NE

6- لغه C#
الآن ليست أفضل بكثير من VB.Net ولكن يتوقع ان تكون اللغة الأكثر إهتماما بهذة الجوانب بين اللغتين السابقتين مع مرور الزمن





منقوووووووووووووووول
الرجوع الى أعلى الصفحة اذهب الى الأسفل
معاينة صفحة البيانات الشخصي للعضو http://educationtechnology.forumegypt.net
 
الفرق بين لغة السي واللغات الاخرى من حيث امن اللغة والوصول منخفض المستوى
استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
مدخل الى تكنولوجيا التعليم :: البرمجة :: لغة السي-
انتقل الى: