11

علاقة الرياضيات بالبرمجه

  • 3bdullelah

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

عمتم صباحاً بكل خير ...

سؤالي هو : ماهي علاقة الرياضيات بالبرمجة؟ و كيف نستخدمها في البرمجه ؟

تلميح:

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

وشكراً،،،،

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

22

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

1- المحاكيات: بناء محاكيات فيزيائية أو فلكية أو محركات ألعاب أو غيرها يحتاج لفهم متعمق بالرياضيات لتكون واقعية وهو أمر مهم حيث أن كثيراً من هذه المحاكيات يستخدم في الأبحاث العلمية كما أنها تستخدم في المجال الطبي بكثرة.

2- الرسوميات ثنائية الأبعاد: تعتمد على رسم الأشكال على محورين أفقي وعمودي لتحديد مكان ظهورها على الشاشة التي تصبح بمثابة النظام الإحداثي.

3- الرسوميات ثلاثية الأبعاد: تعتمد على المصفوفات بشكل كبير ومع التعمق تحتاج لفهم معمق لعدة مجالات في الرياضيات حتى تستطيع معرفة كيف يتم عرض الرسوم الثلاثية الأبعاد لتظهر على شاشتك الثنائية الأبعاد.

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

5- فهم طريقة عمل الكمبيوتر: الكمبيوتر من الأساس لا يفهم إلا إشارتين: التيار موجود "1" و التيار منقطع "0" ولتسهيل عملية البرمجة تم تطوير لغات برمجة لتترجم للغة الآلة وفهم كيفية تخزن الأرقام والبيانات والقيم في الكمبيوتر يحتاج إلى أن يكون مستعداً للحساب كثيراً.

6- تعلم بعض لغات البرمجة: عندما تكتب كود بلغة ++С كي يعمل الكود يتم تحويله للغة Assembly والذي يتم بدوره تحويله إلى لغة الآلة 0 و 1. ولكل بنية معالجات لغتها الخاصة بها ولولا Assembly لكان من الصعب كتابة كود ليعمل على مختلف أنواع الأجهزة. هذه اللغة تحتاج استخداماً كثيراً للرياضيات نظراً لطبيعتها ومحدوديتها. فهم اللغة طبعاً سيجعلك مبرمجاً أفضل حيث ستعرف مالذي سيترجم إليه كل سطر تكتبه مايدفعك لتحسين طريقة برمجتك لتقليل استهلاك موارد الجهاز.

7- التشفير وحماية المعلومات: أحد أساسيات التشفير هو استخدام معادلات تقوم بتغيير المحتوى ولا يمكن استعادة المحتوى الأصلي إلا عبر استخدام معادلات معاكسة. ودوماً ماتستخدم أرقام أولية لانتاج هذه المعادلات

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

مثال 2: الرقم 0.1 كقيمة لا يستطيع الكمبيوتر استيعابها بشكل دقيق ولكن يقوم بتخزينها بشكل تقريبي وهي مشكلة قد تواجهها في عدد من لغات البرمجة المهمة والمشهورة مثل ++С ولمعرفة السبب عليك أن تفهم كيف يحسب الكمبيوتر الفواصل.

مثال 3: في عام 1999 قام مطور بإصدار لعبة مدينة ملاهي بالكامل تقريباً بلغة Assembly ماجعلها أحد أفضل الألعاب على الأطلاق من ناحية استغلال الموارد حيث تستطيع رسم أكثر من ألف زائر وعدد القطارات التي تدور حول المدينة دون أي مشاكل على جهاز متهالك دون أن يتأثر أداء الجهاز ونتيجة ذلك قامت شركة ألعاب أمريكية بشراء سلسلة ألعابه بمبلغ 180 مليون دولار. تحسين أداء الكود يؤثر على جودة البرنامج.

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

19

لا ترتبط بشكل مباشر,

طالب علم الحاسوب يدرس الرياضيات ليتعلم طريقة التفكير, والتحليل المنطقي, وبناء الخوارزميات

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

طبعا سوف تستخدم اثناء كتابتك للاكواد ما يعرف ب arithmetic operations وهي رياضيات, لكنها بسيطة, مثل

(c/d)+(a+b)

والله اعلم ..

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

أخي الكريم،

يوجد علاقة قوية جداً ومتينة تربط البرمجة بالرياضيات

هذه العلاقة ليست فقط مرتبطة ببرمجة الألعاب أو برامج الحساب أو الإحصاء بل بالعكس هي مرتبطة في كل مجالات علم الحاسوب

فمثلاً إذا كنت سوف تتعامل مع تشفير البيانات فأنت تحتاج للرياضيات لكي تكتب المعادلة المناسبة للتشفير وهنا يبرز لدينا علم Number theory

عند تعاملك مع الكثير الخوارزميات وتركيب الشبكات يبرز لدينا Graph theory وهذا بحر واسع ،

عملية معالجة الصور يدخل فيها Linear Algebra وجزء من Complex Analysis

وهذا قطرة من محيط هذه العلوم

نصيحتي الأخيرة : لكي تكون مبرمجاً مبدعاً تقدر على أن تصنع ما تريد أنظر للبرمجة من خلال الرياضيات أما إذا كنت أن تكون مجرد مستخدم ينتظر الغرب لكي يطوروا لغة برمجة أو يضيفوا ميزة للغات البرمجة لكي تأتي أنت وتستخدمها (كالأغلبية) فاترك الرياضيات

البرمجة أساساً هي رياضيات لأن الشفرات Codes هي خوارزميات

في التعليم الأكاديمي طالب علوم الحاسوب أو هندسة البرمجيات يتعلم مقررر مهم جداً يسمى الهياكل المنفصلة Discrete Structures و سمي بذلك لأن مواضيعه هي عدة مواضيع يدرسها طلاب تخصص الرياضيات في مقررات متفرقة

مثلاً مواضيع المنطق Logic و المجموعات Sets يدرسها طلاب الرياضيات في مقرر اسمه نظرية المجموعات Set Theory

و المخططات Graphs و الأشجار Trees يدرسها طلاب الرياضيات في نظرية المخططات Graph Theory

و الخوارزميات Algorithms و تحليلها كذلك هي رياضيات

البرمجة بدون رياضيات حسابية فهي لا شئ

البرمجة الفيزياء مثلاً تحتاج الى رياضيات فيزيائية بحثة

لذا أنصحك بتعلم الرياضيات من الصفر حتى تفهم البرمجة تدريجياً

مثلاً صوت محركات ممن تتكون في الرياضيات والفيزياء

فهي عملية معقدة فيزيائية ورياضياً

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

لذا فكر فيها وبرمجها حسب تعليمات رياضية فيزيائية بحتة

واترك لك الخيار عندئذاً

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

سوف تحتاجها عندم تقوم بحل مشاكل برمجية مرتبطة بالإحصائيات في الغالب

مثل مسابقة المليون دولار من Netflix الى من كم سنة

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

الرابط بين الرياضيات والبرمجة هو المنطق: الطريقة التي يعمل بها العقل ليحل مشكلة رياضية ما، هي ذات الطريقة التي يعمل بها ليحل مشكلة برمجية ما.

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