الرياضيات وبرمجة الحاسوب

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

http://bit.ly/1zk3Ti7

أرجو من الأخوة الأفاضل قراءة ما سأكتبه حتى النهاية قبل إبداء الرأي ولكم جزيل الشكر.

ينقسم الموضوع برأيي إلى قسمين:

1- البرمجة التي تتطلب ارتباطا قوياً بالرياضيات:

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

2- البرمجة التي لا تحتاج إلى تدخل مباشر في الرياضيات:

هنا كما هو معلوم قد لا يتعدى الأمر استخدام العمليات الحسابية الأربع. ولست هنا أقلل من هذا الجانب.

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

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

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

والسبب هنا بسيط. إذ أنّ الملم بالرياضيات على المستوى الأكاديمي (الجامعي) يكون قد واجه خلال دراسته الكثير من المسائل الرياضية (التي لا علاقة لها بالبرمجة) والتي استطاع حلها بشكل أو بآخر. وهذا يكسب دماغه البشري القدرة على حل أي مسالة جديدة بفعالية أكبر حتى لو كانت هذه المسألة هي عبارة عن مسألة برمجية (تطبيق برمجي) يواجهه مستقبلاً.

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

فأنا أعرف مثلا مبرمجاً فذاً ودراسته كانت أدب انكليزي! ولكن قد لا تستغرب إذا علمت أنه كان يعشق الشطرنج!

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

وختاماً... إذا لم تكن ملماً بالرياضيات فلا بأس ولا تقلق وقم بالبرمجة واستمتع. ولكن إذا أحسست بضعف أو بإرتباك بعد أن تكبر وتنمو برامجك، فلا تيأس واعلم أنَّ الدواء بالنسبة لك سيكون الرياضيات.


التعليق السابق

كنت اود كتابة تعليق مستقل لكن انت كتبت نفس الفكرة التي اريد ايصالها, فاثرت ان اعقب, تجربة شخصية حدثت معي في مشروع تخرجي, كنت احتاج لتوليد ارقام عشوائية ضمن نطاق معين بحيث ان الرقم العشوائي يجب ان لا يتكرر باس شكل من الاشكال, كان هنالك جزء من المعادلة تطلب ايجاد مصفوفة ارقام اولية, الرقم الاولي في الطريقة البدائية البسيطة هي ان تقوم بعمل دوران كامل فلنقل من 1 الى مليون, فتخيل مليون دورة لعمل مصفوفة, الحل كان ابسط من هذا وهو بعمل دوران من 1 الى جذر المليون مع تجنب الارقام الزوجية ! البرنامج تحسنت سرعته بطريقة مذهلة ! طبعاً الطريقة تعلمتها من مادة رياضيات في مساق الجامعة !

موقف آخر هو ايجاد مضروب الرقم, مثلاً مضروب 4 هو 4 * 3 * 2 * 1 , ماذا لو احتجت مضروب المليون, صراحة وقتها كانت اجهزة الحاسب ضعيفة نوعاً ما, لذلك كان الامر يستحق التحدي, مدرس المادة كانت فكرته ان نستخدم long , الحلو بالموضوع انها كانت نظرية وعملياً لم تكن حل, وحتى ان كانت حل فكانت تأخذ ما يقارب 15 دقيقة لانهائها, قمت بمعادلة بسيطة اوجدت مضروب 10 مليون وليس المليون ب3 ثواني :) المدرس للمادة لم يعقب ولم يعلق كثيراً وكان رده محبط وقال لي كان يكفي استخدام long فقلت له انا اتحداك اذن :) , وطبعاً هو علم انه في تحدي خاسر, وانسحب من الموضوع بالاعتراف بان طريقتي افضل لكن هو لم يكن يريد هذا التعقيد هو فقط كان يريد ايصال فكرة استخدام long او double !!!!

وايضاً في مادة الرسم الجرافيكي في الجامعة, كان هنالك تحدي رسم نجمة بادخال عدد الرؤوس, من 3 الى 100, بحيث لو ادخلت 7 يرسم نجمة سباعية, ان اخترت 50 يرسل نجمة ب50 رأس. هو كان تحدي عليه علامة اضافية ليس الا وبالبحث في معادلات الرياضيات استطتعت حل التحدي.

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

رائع جداً وشكراً لمشاركتك لنا هذه التجارب الجميلة. هذه هي بالضبط الفكرة التي أردت إيصالها.

جميل اخي فعلا في بعض الاحيان القوه في الرياضيات توفر المجهود في البرمجه