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

لماذا يهمل المبرمجين لغة الاسمبلى ؟!؟

رائج
بدأه احمد غريب في 3 يوليو 2005 · 94 رد · 19,030 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فكرت اين اضع هذا الموضوع ولم اجد له مكان انسب من قسم المقالات لانه يهم جميع المبرمجين...

للاسف الشديد يعتقد الكثير من المبرمجين ان لغه الاسمبلى هى لغه إختياريه, يستطيع المبرمج الاستغناء عنها طالما اجاد لغه اخرى مثل VB او سى بلس بلس الخ...

ولكن فى الواقع المبرمج لايتعبر مبرمج إذا لم يتقن لغة الاسمبلى, ولن يستطيع الاستمرار فى حقل البرمجه طويلاً لان هناك مشاكل لايمكن حلها إلا إذا عرفت لغة الاسمبلى..

طبعاً الذى يقراء هذا الكلام يعتقد اننى من المتعصبين للغه الاسمبلى ومستعد ان احارب الناس حتى اجبرهم على تعلمها, بالظبط مثل جماعة اللينكس ;)

ولكن الامر ليس كذلك دعونى اسرد عليكم بعض الحالات التى لاغنى للمبرمج عن لغة الاسمبلى فيها.

المثال الاول.

افرض انك ضمن فريق وقمتم بكتابة برنامج ضخم حجمه 100 ميجابيت, وربنا فتح عليكم وبيع من البرنامج 1000 نسخه, ولكن بعد شهر من إصدار البرنامج اكتشفتم فيه خلل لابد من إصلاحه وإلا سيفقد المشترى الثقه فى الشركه المنتجه ما هو الحل ؟!؟!؟

قد تكون المشكله مشكله منطقيه فى الخوارزميات او قد تكون مشكله برمجيه, يعنى مثلاُ احد المبرمجين اعطى احد المتغيرات قيمه خاطئه...

طبعاً الحل هو, اولاً إيجاد المشكله فى البرنامج, ثانياً ايجاد حل لها, ثالثاُ ارسال الحل للمستخدم..

دعونا ننظر كيف يحل مبرمج الـVB و السى بلس بلس هذه المشكله..

يجتمع المبرمجين ويمرو على الكود خطوه خطوه على امل ان يعثرو على الخلل..

لنفترض ان الحظ حالفهم ووجدو الخلل, الخطوه التاليه هى حل المشكله فى الشفره...

عمل كمبايل للبرنامج من جديد

تجربة البرنامج وإذا بالفعل حلت المشكله يرسلو البرنامج 100 ميجابيت لكل مستخدم يعنى 1000 سى دى جديد..

طبعاً ليس الجميع من يفعل ذلك هناك من تغلب على المشكله الاخيره وإستطاع إنشاء batch عن طريق برامج وإرسال الـbatch للستخدم بدلاُ من إرسال 100 ميجابيت..

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

الحل بالنسبه لمن يتقن الاسمبلى بسيط جداً وقد لا يستغرق اكثر من بضع ساعات..

افتح البرنامج فى debugger ضع بعض نقاط التوقف, شغل البرنامج وتابع ما يحدث فى الـdebugger, عندما تعثر على الخطاء غير بحيث يعمل البرنامج بالطريقه المطلوبه, ضع التغيرات فى ملف batch ارسله إلى المستخدم...

ماهو الفرق ؟!؟

طبعاُ الفرق كبير جداُ, فى حالت الاسمبلى لن تحتاج إلا لمبرمج واحد يقوم بالعمل, وإذا كان محترف سيقوم بالمهمه فى ظرف ساعات لو المشكله مستعصيه, او فى ظرف دقائق لو المشكله بسيطه..

لن تحتاج إلى عمل كمبايل من جديد من ما يوفر عليك الوقت.

العثور على المشكله سهل إذا لم تكن مشكله منطقيه فيه تكوين البرنامج نفسه, وإذا كانت المشكله مشكله منطقيه فى احد الخوارزميات سيتم إكتشافها بسهوله ولكن حلها سيكون اصعب من المشاكل البرمجيه..

المثال الثانى.

تخيل نفس الموقف السابق ولكن المستخدم طلب منك إضافة وظيفه جديده للبرنامج, ولنقل مثلاُ زرار يقوم بطبع المحتوى.

الله يكون فى عون مبرمجى السى بلس بلس والـVB طبعاُ ستضطر إلى فتح شفرة البرناج وكتابة كود جديد وعمل كمبايل ثم تستخدم الطريقه السابقه لتجربة ومن ثم إرسال البرنامج للمستخدم.

بالنسبه للاسمبلى كل ما عليك هو إستخدم الـdebugger إضافة الشفره وبعد ذلك تقوم بعمل batch للتغيرات التى قمت بها وترسل الباتش للمستخدم..

فى مثل هذه الحالات يكون حجم الباتش صغير جداُ ولا يتجاوز عدة مئات من الكيلوبايت ...

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

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

ولكن من خلال تجاربى ارى انها اسهل من السى والسى بلس بلس وحتى الـVB لانك فى لغه الاسمبلى تعرف مايحدث جيداُ بعكس باقى اللغات, وإذا كنت لا تعرف ما يحدث خلف الكواليس فمن الصعب عليك حل المشكله دون الجوء للمساعده من قبل الخبراء.

واخيراً انا لم اكتب هذا الموضوع لاتهجم على مبرمجى السى بلس بلس او حتى على حبايبنا بتوع الـVB ولكن كتبه لانى ارى عدم إهتمام بها..

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

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#2

مقال جميل جداً

طبعاُ الخبراء فى لغة السى بلس بلس سيعترضو ويقول انه يوجد debugger فى السى بلس بلس

كنت لسه هاقول ذلك .. في بعض العمليات المستعصية (مؤشرات خصوصاً ) استخدم SoftIce ..

BEng , Electronics and communications.

Embedded systems engineer.

Graphics Programmer

عالم الكومبيوتر هو من لديه المعرفة في علوم الكومبيوتر ، الرياضيات ، هندسة الالكترونيات -احمد صالح

#3

السلام عليكم

اقتباس
طبعاً الذى يقراء هذا الكلام يعتقد اننى من المتعصبين للغه الاسمبلى ومستعد ان احارب الناس حتى اجبرهم على تعلمها, بالظبط مثل جماعة اللينكس  ;)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

تم تعديل هذه المشاركة بواسطة caballero في 25 أغسطس 2008 في 04:11

MPSI/MP* - CPR Tanger

#4

وعليكم السلام

يا كابوس الله يهديك اولاً انا استخدم اليونكس واللينكس منذ اكثر من 15 سنه, وفيه بعض البرامج التى لا استطيع ان استغنى عنها مثل emacs و latex و maple والكثير الكثير من البرامج.. ومازلت استخدم pine لقرائة الرسائل البريديه ولكنى لا اتعصب لا للينكس ولا لوندوز..

لكن للاسف الشديد جماعة اللينكس مستعد يعلن عليك حرب لو غلطت فى نظام اللينكس, لدرجة انى بسبب تعصب جماعة اللينكس كنت ناوى ان اترك هذا النظام ولكن لله الحمد راجعت نفسى وشفت إن انا الخصران لو تركته..

على كل حال المسئله ليست إختلاف فى العقيده فرجاً لا تحور الموضوع من الاسمبلى للينكس.

هنا يغلق موضوع اللينكس ونستمر فى مناقشة الموضوع المطروح

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#5

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

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#6

السلام عليكم

اقتباس
لكن للاسف الشديد جماعة اللينكس مستعد يعلن عليك حرب لو غلطت فى نظام اللينكس

لا تعمم ، فأنا مثال حي أمامك :D

و كما قال الأخ أحمد صالح

اقتباس
مقال جميل جداً

و السلام

MPSI/MP* - CPR Tanger

#7

ليش يا ابني .. الـ visual c++ .net 2003 يستطيع يعمل كومبايل لجزء بسيط من البرنامج اثناء تشغيل هذا البرنامج! طبعا هذا لما تكون في وضع الـ debug.

edit and continue

و على كل حال لو عملت تغيير بسيط في ملف cpp واحد فإن هذا الملف فقط هو اللذي سيحصل له compilation و الباقي هو فقط Linking مع بقية المشروع, و هذا لا يستغرق الكثير جدا من الوقت.

كما أن ايجاد الاخطاء في الكود الاصلي اسهل من ايجادها في الـ assembly, فأنت لا تعرف بالظبط اين تقع المتغيرات, و ربما قام الكومبايلر بعمل optamization و قام بالاستغناء عن بعض المتغيرات و وضعها في احد الرجسترات بدلا من الذاكرة ..

أقصد .. ما أدراك كيف قام الكومبايلر بتطبيق كود السي بلص بلص في الاسمبلي.

اسمحلي لذلك ان اختلف معك, الأسمبلي تصلح لعمل optamizations و ليس للـ debugging, خصوصا اذا كان الكود Object Oriented فلا أعتقد ان المبرمج سيستطيع ان يربط كود الاسمبلي بكود السي بلص بلص في دماغه عندها.

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 4 يوليو 2005 في 00:48

#8

السلام عليكم

إذا كان الامر كما تقول يا اخى حسن لكان من السهل على مبرمجى السى بلس بلس ان يضعو شفرة حمايه فى البرنامج عن طريق إستخدام object oriented program ولما استطاع الكراكر ان يخترق البرنامج, ولكن الامر ليس كذلك, ما يحدث فى البرمجه الكائنيه هو فقط مرتبط بالكمبايلر ولكن البرنامج سؤاَ كتب بالسى بلس بلس او كتب بالسى فهو ياخذ نفس الشكل عندما يحول إلى برنامج, وعلى فكره المعالج لا يفهم الفرق بين OOP و Procedural لذلك يستطيع مبرمج الاسمبلى ان يرى ما لا يراه مبرمج السى والسى بلس بلس, طبعاً انا مش حظلم مبرمج السى لانه اقرب واحد للاسمبلى ولكن هناك بعض الخبايا التى لا يراها حتى مبرمج السى المحترف..

بالنسبه لعملية الكمبايل لجزء بسيط من البرنامج انا معاك ولكن حتى هذا الجزء البسيط ياخذ وقت بالاضافه لعملية الlink وايضاً لا تنسى انك مضظر لإرسال البرنامج بالكامل او على الاقل إرسال ملف كبير هذا إذا لم تكن المشكله منتشره فى عدة ملفات..

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#9

يا اخي من قال انهم يهملونها كل مافي الامر

ان القليل فقط من يجيدها بحيث يستطيع ان يعمل بها اشياء حقيقية لا اكثر لا اقل ولكنهم لا يحبون الاعتراف بذلك

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

بصراحة اتمنى ان اجيد عمل مثل هذه الاشياء

اقتباس
طبعاً الذى يقراء هذا الكلام يعتقد اننى من المتعصبين للغه الاسمبلى ومستعد ان احارب الناس حتى اجبرهم على تعلمها

ماذا في ذلك تعصب على كيفك :rolleyes: مادمت على حق اانت خير من يعلم ان الولاء للشئ اهم اسباب التقدم السريع في الموضوع

اما الاسمبلي فلا غبار عليها والقوة مدفوع ثمنها :wacko: :wacko:

اقتباس
على كل حال لو عملت تغيير بسيط في ملف cpp واحد فإن هذا الملف فقط هو اللذي سيحصل له compilation و الباقي هو فقط Linking مع بقية المشروع, و هذا لا يستغرق الكثير جدا من الوقت.

لاحظ انه في الاسمبلي لن تحتاج الى الكود ابدا

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#10

أعتقد أنها مهمة لكل المستخدمين حتى لغير المبرمجين اطلاقا، تخيل أنه مشاكل الهارد دائما تتعلق بأخطاء فى عنوانين كثيره .. وتقريبا بالنسبة لى الفائدة الوحيده حتى الآن هى الـdebugging وأكيد كل المبرمجين عارفينها :D

حتى الفلاش فيه Debugging بشكل آخر ..

#11

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

كما ان استخدام الdebuggers للعودة و تصحيح الاخطاء ليست حلا جيدا و هذا لأنني لن استفيد شيئا عندما اعدل في المنتج (البرنامج النهائي) و خط الانتاج (المصدر) مازال يحوي الخطأ

ففي اي حالة فالعودة الى الكود هي الاصح و الافضل.

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#12

لكن سلموا معي البرامج الموجهة نحو الاجهزة لا مفر منها فلماذا الانكــــــار ؟

ولبرمجة نظم التشغيل حدث ولا حرج!! انا مهك ابو غريب

الكل بهرب من الصعوبة هند البداية(انا الاول ) وهو مايعرف بالخوف من المجهول

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#13

اولاً اشكر كل من شارك فى الموضع وتعليق بسيط على انوريكا: يا انوريكا اوعى تقولى إن دى صورتك, انا شفت صورتك من تقريباً سنه فاتت وكنت شخص مختلف تماما وكمان شفتلك صوره تانيا كنت فيها شخص مختلف تماما فياريت تفهمنا "الحاصل شنو"...

طيب نعود إلى موضوعنا الاخ الباش مهندس طبعاً كلامك فيه اشياء لانستطيع ان نعترض عليها مثل المثال الذى طرحته ولكنه كان مجرد مثال ولكن الا تتفق معى انه إذا اكتشف خطاء ما فى برنامج لابد للشركه ان تراجع جميع الملفات حتى تستطيع تحديد الخطاء, يعنى إذا كان من قام بكتابة البرنامج هو فريق يتكون من 30 او 40 مبرمج فلابد ان يشترك الجميع فى تحديد مكان الخلل, هذا إذا لم يكن الخلل واضح من اول تجربه..

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

واخيراُ حتى لو كان حجم الملف كما ذكرت 1 ميجا فلا يجب ان يكون حل المشكله اكبر من عدد بسيط من الكيلو بايت, ولو لاحظت تجد اغلب الbatch الذى تظعه شركه مثل مايكروسفت لا يتجاوز ذلك, فى بعض الحالات ربما يتم تحديث مكتبه بالكامل ولكن فى اغلب الاحيان ترسل الشركه ملف صغير جداً يحل المشكله...

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#14

اعتقد الـ debugging من الاسمبلي لبرنامج مكتوب بلغة مثل ++C ليس امرا عمليا ..

أولا إذا كنت تكتب بلغة عالية المستوى و حصل خطأ, فمن باب أولى ان يكون احتمال حدوث خطأ في كود الأسمبلي عالي جدا ..

بعدين في البرامج المنظمة (حتى لو لم تكن OO) فإن البرنامج مقسم الى وحدات كل منها يؤدي وظيفة معينة .. يعني لا ادري كيف ستجد الخلل في الأسمبلي .. لانه البرامج المنظمة لا تستطيع النظر الى جزء منها دون ان يكون لديك إدراك بسياق الكود.

يعني في الاسمبلي ستنظر لمجموعة عمليات رياضية و تلاعب بالذاكرة .. لا ادري كيف سيساعدك هذا في حل المشكلة, ربما هذا يحدث اذا كان الكود عبارة عن شي مثل:

int x;
int y;
int z;
long abc;
some_type rt;

for( int a = 0; a < x; y++ )
{
    x =\ x * y + rt.doStuff(x, y, z);
    abc = rt.io;
    z += abc;
}

و لكن في برامج مثل فوتوشوب فإن هذا النوع من الكود يعتبر سيئا جدا, و سأكون مصدوما لو كان مبرمجو adobe يبرمجون بهذه الطريقة!

#15

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

اقتباس
الحل بالنسبه لمن يتقن الاسمبلى بسيط جداً وقد لا يستغرق اكثر من بضع ساعات..

افتح البرنامج فى debugger ضع بعض نقاط التوقف, شغل البرنامج وتابع ما يحدث فى الـdebugger, عندما تعثر على الخطاء غير بحيث يعمل البرنامج بالطريقه المطلوبه, ضع التغيرات فى ملف batch ارسله إلى المستخدم...

هذا من الممكن أن يحدث مع أي مبرمج في العالم ، فهذا الأسلوب لحل المشكلة يعتمد بالدرجة الأولى على المبرمج سواءً كان يستخدم Assembly أو ++C أو حتى VB و يعتمد أيضاً بالدرجة الثانية على الـ Tools و الـ Technologies المتاحة للمبرمج حتى ان استخدم الـ Notepad في عملية الـ Debugging .

فمثلاً بالنسبة لمبرمج الـ dot Net المحنك لن تجده قلقاً بشأن الـ Debugging، فيمكنه القيام بهذه العملية و أيضاً حل المشكلة على جهاز المستخدم طالاما انه مثبت عليه الـ dot Net Framework، فاللغة الوسيطة الـ MSIL تتيح له ذلك بكل سهولة، و أنا لا أتحدث عن الـ Assembly بعينيها بما انها كذلك ;)

إن تعلم لغة كالـ Assembly لن يخلق مبرمجاً قوياً الا اذا كان هذا المبرمج أساساً جيداً ... و هذا الكلام ينطبق على أي لغة كانت.

رأس الحكمة الإيمان بالله

#16
احمد غريب كتب:
طيب نعود إلى موضوعنا الاخ الباش مهندس طبعاً كلامك فيه اشياء لانستطيع ان نعترض عليها مثل المثال الذى طرحته ولكنه كان مجرد مثال ولكن الا تتفق معى انه إذا اكتشف خطاء ما فى برنامج لابد للشركه ان تراجع جميع الملفات حتى تستطيع تحديد الخطاء, يعنى إذا كان من قام بكتابة البرنامج هو فريق يتكون من 30 او 40 مبرمج فلابد ان يشترك الجميع فى تحديد مكان الخلل, هذا إذا لم يكن الخلل واضح من اول تجربه..

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

واخيراُ حتى لو كان حجم الملف كما ذكرت 1 ميجا فلا يجب ان يكون حل المشكله اكبر من عدد بسيط من الكيلو بايت, ولو لاحظت تجد اغلب الbatch  الذى تظعه شركه مثل مايكروسفت لا يتجاوز ذلك, فى بعض الحالات ربما يتم تحديث مكتبه بالكامل ولكن فى اغلب الاحيان ترسل الشركه ملف صغير جداً يحل المشكله...

بالله عليك اذا كان تحديد الخطأ في الكود المصدري صعبا فماذا سيكون الحال في الاسمبلي ؟؟؟؟؟؟ و الذي سيمتلئ الكود كله باكواد متشابهة و عناوين في الذاكرة و اشياء غير معبرة فكيف سيحل المشكلة في عدة ساعات فربما يستغرقه الوصول الى المشكلة نفسها ايام و ليس ساعات

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#17

يا شباب لقد خرجنا عن الموضوع نحن لا نتحدث عن كيفية علاج المشكلة بهذا او تلك نحن نريد ان نعرف لماذا يهمل المبرمجون الاسمبلي او يتجاهلونها بالاصح

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#18

السلام عليكم

يا اخوه فى حاجه إنتو مش فاهمنها وهى ان هناك ادوات واساليب لتتبع الكود فى الاسمبلى, يعنى العمليه ليست عشوائيه, على سبيل المثال لا الحصر نفترض إن برنامج ضخم زى الفوتو شوب هنج او عمل كراش, انت كمبرمج فى السى بلس بلس "على فرض ان الفوتو شوب مكتوب بلغه السى بلس بلس" حتعمل إيه عشان تلاقى الخلل ؟!؟؟

فى الاسمبلى حتلى البرنامج يشتغل لغاية ما يعمل كراش او يهنج وبعد كدا تشوف فى الـdebugger هو عمل كدا ليه, فين مكان الذاكره إلى خلته يعمل كدا, وبعديها مسئلة تصليح المشكله مش صعب طالما عرفت مكان الخلل...

دا مجرد مثال بسيط...

بالنسبه لكلام الاخ حسن البرنامج زى ما هو منظم فى لغة السى بلس بلس فهو ايضاً منظم فى لغة الاسمبلى, بس إلى يشوفو كدا زى ماهو بدون ما يكون درس اللغه يتهيء له إن البرنامج عباره عن رموز غريبه, زى لما الواحد يحاول يقراء صينى وهو عمره ما درسها, اكيد حيشوف كل الحروف زى بعضها او نبش فراخ, إنما لو درسها وفهم معناها مش حتكون نبش فراخ بالعكس.

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#19

الحقيقة هي ان المبرمجين لا يهملون الاسمبلي و لكن لم يتعرضوا لمواقف او مشاكل احتاجوا فيها الى الاسمبلي.

و هذا لا يمنع ان يتعلم المبرمج الاسمبلي حين احتياجه لها.

و احيانا في بعض التطبيقات على ال Microcontrollers مثلا تجد ان كلا من ال Assembly و ال C متاحين امامك فتتجه تلقائيا في الاغلب الى الC و هذا لاعتيادك عليها اولا و سهولتها مقارنة بالassembly ثانيا .

المهم من هذا الكلام هو ان عدم المعرفة بال Assembly ليست عيبا في المبرمج.

على فكرة انا لا اكره الAssembly فانا استخدم الاسمبلي احيانا في بعض مشاريع الكلية و بالذات المتعلقة بالHardware . و ان كنت في اخر مشروع لي في ال Hardware استخدمت C بدلا من الاسمبلي و لم اشعر بمشكلة على العكس كانت الحياة افضل بكثير

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#20

تعليق بسيط على كلام الاخ رومانوف فعلاً الموضوع خرج عن مجراه انا فتحت الموضوع واعطيت فقط مثال بسيط لفوائد لغة الاسمبلى ولكن هناك الكثير...

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

والسلام عليكم

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#21
bashmohandes كتب:
الحقيقة هي ان المبرمجين لا يهملون الاسمبلي و لكن لم يتعرضوا لمواقف او مشاكل احتاجوا فيها الى الاسمبلي.

على فكرة انا لا اكره الAssembly فانا استخدم الاسمبلي احيانا في بعض مشاريع الكلية و بالذات المتعلقة بالHardware . و ان كنت في اخر مشروع لي في ال Hardware استخدمت C بدلا من الاسمبلي و لم اشعر بمشكلة على العكس كانت الحياة افضل بكثير

انت محق في الناحية الاولى نادرا تحتاج اليها هذا واحد من الاسباب

ولم يقل احد انك تكرهها

قال الاستاذ الذي درسني الاسمبلي اذا كان بامكانك كتابة البرنامج بلغة اخرى افعل ذلك طالما أن ذلك لا يؤثر في كفاءة البرنامج

والصعوبة سبب لا يمكن تجاهله

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#22

الباش مهندس ليس بالضرورى ان تتعرض لموقف تحتاج فيه إلى تعلم الاسمبلى, ولن يحدث ابداً طالما انت تحاول التهرب منها, الطبيعى هى ان تقحم نفسك فى كل انواع البرمجه ولا تنتظر حتى تضطر إليها إضطراراُ.

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

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#23

بالنسبه لإشاعة ان الاسمبلى لغه صعبه فهذه إشاعه مغرضه لان لغة الاسمبلى اسهل من لغة السى, والسبب بكل بساطه هو ان لغه السى فيها العديد من المتغيرات والمؤشرات والريفرنس, انا اجدها اصعب من الاسمبلى والسى بلس بلس اصعب منها, ربما سبب هذه الاشاعه هى ان لغة الاسمبلى كانت صعبه على ايام الدوس ولكن الان لايوجد interrupts ولا يوجد memory models ولا يوجد تحديد حجم الستاك, والوضع تغير تماما ولكن مازال الخوف لدى الكثيرين من هذه اللغه..

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#24
اقتباس
الطبيعى هى ان تقحم نفسك فى كل انواع البرمجه ولا تنتظر حتى تضطر إليها إضطراراُ.

يبدو ان الاخ احمد يكسب المعركة

فعلا انا متفق معاك ابو غريب شكلي راح اسيب عمو عروة :lol: :lol:

وانتقل لمنتداك

قريبا ترقبني في المنتدى :lol: :lol:

أضاعوني وأي فتى أضاعـوا * * * ليـوم كــريهـة وســـداد ثغــــر

وخـــــلونـي ومعتـرك المنايـا * * * وقد شـــرعوا أسنــتهم لنحـري

كأني لم أكــــــن فيهـم وسيطـا * * * ولم تك نســبتي في آل عمــرو

أجرر في الجـــوامع كـل يـوم * * * ألا لله مظــــلمتـي وهـصـــري

عسى الملك المجيب لمن دعاه * * * سينجيني فيعلم كيــف شكـري

فأجـــزي بالكرامـة أهـل ودي * * * وأجزي بالضـغينة أهل ضري

منتديات الرياضيات العربية

#25

كنت أعتقد ان الموضوع هو استخدام الاسمبلي في الـ debugging :rolleyes:

و سأستمر على هذه الفرضية :P

اقتباس
يا اخوه فى حاجه إنتو مش فاهمنها وهى ان هناك ادوات واساليب لتتبع الكود فى الاسمبلى, يعنى العمليه ليست عشوائيه

(....)

فى الاسمبلى حتلى البرنامج يشتغل لغاية ما يعمل كراش او يهنج وبعد كدا تشوف فى الـdebugger هو عمل كدا ليه, فين مكان الذاكره إلى خلته يعمل كدا, وبعديها مسئلة تصليح المشكله مش صعب طالما عرفت مكان الخلل...

اعرف هذا, و أنا أصلا تكلمت على أساس انك وجدت السطر اللذي يحدث في الكراش ...

و أي debugger يحترم نفسه سيعطيك نفس القابلية في السي بلص بلص و اي لغة أخرى.

ما اتحدث عنه هو تتبع سبب المشكلة و تصحيحها. كيف ستقوم بذلك في الاسمبلي؟ و كيف يكون أسرع او افضل من السي بلص بلص (او اي كانت اللغة الاصلية)؟ و كيف يكون حجم الباتش اصغر؟

على الفكرة العالم تقدم >>> يعني باتش حجمه 2 ميجا لا يعد مشكلة :)

عندما اتحدث عن التنظيم فأنا لا اتحدث عن فهم الاسطر, انا اتكلم عن سير البرنامج.

فكود الاسمبلي أقرب الى المثال اللذي ضربته قبل قليل .. و هناك عدة مشاكل في طريقة كتابة الكود:

- اسماء المتغيرات لا معنى لها

- لا يوجد initialization

- اللوب لا معنى لها

for( int a = 0; a < x; y++ )

ملا علاقة a بـ x, و لماذا نقوم بزيادة y بدلا من a مثلا؟

كل المبرمجين يعرفون ما معنى ++y و ما معنى a < x و لكن هذا لا يعني انهم سيفهمون كيف سيسير هذا البرنامج.

- ما معنى هذا الـ function

rt.doStuff(x, y, z)

و ماذا يفعل بـ x,y,z و هل يقوم بتغييرها؟ و على فكرة, لو دخلت الى داخل الدالة فستجد كود بنفس هذا المستوى (كود غير مفهوم).

- من أين اتت rt.io و لماذا نحتاجها؟

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

كود الاسمبلي سيكون بهذا المستوى (بل و أسوأ) فلن تجد اي اثر للتصريح بالمتغيرات, كل ما ستجده هو تلاعب بالذاكرة.

أصلا لماذا تم اختراع اللغات العالية المستوى؟ اليس لتسهيل كتابة و debug البرامج؟

فلماذا نرمي كل هذا التاريخ في الزبالة و نعود الى اساليب العصر الحجري في معالجة الأخطاء؟ :o :lol:

تم تعديل هذه المشاركة بواسطة hasan_aljudy في 4 يوليو 2005 في 04:01

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