نقاش حول اهمية الرياضيات في البرمجة
- saifalharthi
- 2013-08-15T18:05:19+00:00
اعترف اني اشدد دائما على ان الرياضيات مهمة للمبرمجين لأنها تساعد على التفكير المنطقي و التوجه بشكل جيد لحل المشاكل .. لكن ارى في الطرف الاخر من يقلل من اهميتها بل بعضهم يمحي اهميتها تماما بحجو ان هناك مبرمجين بخبرة سنين يقولوا انهم لم يستخدموا الرياضيات في عملهم اطلاقا
سؤالي لأحبتي في هذا المجتمع الجميل ما رأيكم حول هذا الموضوع و هل ترى الرياضيات مهمة ؟ و لماذا
معرفة جيدة بالرياضيات أمر ضروري لكن بنفس الوقت لا أجد الأمر معيب ان لم يكن المبرمج قد درس الرياضيات بشكل متقدم. صحيح، يوجد مجالات كثيرة في البرمجة تعتمد على الرياضيات بشكل أساسي كالتشفير، الذكاء الاصطناعي، محركات الألعاب والفيزياء، الاحتمالات، المعاملات المالية والنسب... الخ. لكن بوقتنا هذا يوجد خوارزميات ومكتبات جاهزة وقوية مفتوحة المصدر يمكن استخدامها مباشرة والبناء عليها، بالواقع من الأفضل استخدام هذه المكتبات عوضاً عن محاولة بناء شيء من الصفر مالم يكن مجال المبرمج أساساً متخصص بالتشفير وتطوير محركات الألعاب مثلا.
ليس جميع المبرمجين سواء، يوجد المتخصص بتطوير الأنظمة أو الخوارزميات ويتعامل مع الأمور المنخفضة المستوى ويوجد من يستعمل لغات برمجة عالية المستوى ومكتبات جاهزة يبني تطبيقات عليها.
لست مبرمجاً، أعرف ما البرمجة ومارستها في الماضي قليلاً، لدي نقطتان، الأولى أنني أتمنى أن تكتب مقالة تشرح فيها أين تستخدم الرياضيات في البرمجة، لا شك برمجة الألعاب والبرامج التي تتعامل مع الرسومات تحتاج إلى الرياضيات، كذلك التشفير كما أعلم، هل هناك مجالات أخرى غير هذه تعتمد على الرياضيات؟
الثانية أنني أرى البرمجة متعلقة بالمنطق أكثر من الرياضيات، تقسيم البرامج إلى عناصر مختلفة صغيرة وخطوات بترتيب محدد لكي تصل إلى نتيجة تريدها، التعامل مع أوامر اللغة المختلفة وخصائصها المتوفرة يشبه كثيراً تعلم لغات البشر وفهم منطقها، لذلك لا غرابة أن هناك من لم يستخدم الرياضيات في مشاريع البرمجة، الأمر يعتمد على حاجتهم، لذلك هذه دعوة لكتابة مقال يوضح أين تستخدم الرياضيات في البرمجة.
وانا مع ان يكتب مقالة عن اهمية الرياضات في البرمجة , مازلت طالبة جامعة والمناهج التي تدرس في الرياضيات نأخدها بالنظري البحت بدون ان نفهم ما علاقة كل ما نأخده في مجالنا , وكلما حاولت ان احاور احد دكاترة الرياضيات بخصوص هذا الموضوع يحاولون الخروج من الموضوع دون ان افهم بشكل كافي ..
السلام عليكم.
سأرد عليك من واقع تجربتي، أشير هنا إلى أن تخصصي كان رياضيات في شهادة الباكلوريا (الثانوية العامة) قبل دراسة علوم الحاسب والتخصص فيها. خلال دراستي الجامعية كان المنهج يضم قدرا لا بأس به من الرياضيات: الجير، التحليل، الاحتمالات والهندسة. خلال سنة التخصص في شهادة الماستر الأكاديمية ذات التوجه البحثي اخترتً تخصص "النمذجة، التحسين واتخاذ القرار" (ترجمة تقريبية لعنوان الشهادة). انطلاقا من دراستي والتجارب اللاحقة أستطيع أن أقول إن أهم المجالات البرمجية التي نحتاج فيها للرياضيات هي
الألعاب، البرامج التي يستخدمها المهندسون المعماريون والمهندسون المدنيون. في أغلب الأحيان هذه البرامج تتطلب من المبرمجين معرفة جيدة بالهندسة في الفضاء إضافة إلى بعض القوانين الفيزيائية خصوصا قوانين الحركة.
الذكاء الاصطناعي، النمذجة Modelization والمحاكاة. وذقد عملتُ شخصيا على أحدها لمدة ستة أشهر. الرياضيات المستخدمة هنا غالبا ذات علاقة بالاحتمالات (سلاسل ماركوف، قوانين بايس على سبيل المثال)
برمجة العتاد بشكل عام وخصوصا في معدات الشبكات (Routers, switches, ...).
-الأنظمة المتوازية وإدارة الموارد.
أذكر هنا قصة أوردها لنا أحد الأساتذة قال إن أحد تلاميذه أجرى تدريبا في إدارة المستشفيات الفرنسية بباريس بداية التسعينات حيث كانوا يستخدمون برنامجا لإدارة دوريات الإسعاف التابعة لهم. المتدرب لاحظ أنه بالاستفادة من إحدى خواص المخططات graphes يمكن تسريع أداء البرنامج حيث كان يتطلب 3 أسابيع من العمل للحصول على تنظيم الفترة القادمة من عمل الدوريات وأصبح لا يتعدى الثلاثة أيام,
بعد هذا أستطيع أن أجيب على السؤال "هل ترى الرياضيات مهمة ؟" بنعم. وستكون الإجابة بضرورية جدا إن كنت تعمل في أحد المجالات التي ذكرتُها. بالنسبة لبرمجة المواقع لا أظنها تحتاج كثيرا من الرياضيات، مستوى الثانوية بنظري يكفي.
أختم برابطين يتعلقان بالموضوع
الأول انجليزي بعنوان "Programming as a discipline of mathematical nature"
والثاني فرنسي وهو لأحد أهم مطوري PHP في فرنسا
Mathématiques = informatique ?
أرجو ألا أكون قد أطلت.
طوال فترة برمجتي لم احتج الرياضيات بشكل فعلي ، المرة الوحيدة التي احتجت فيها الى الرياضيات كان في الجامعة حين كنا نتعلم كيفية معالجة الصور والتي إستخدمنا فيها الجبر الخطي.
التقليل من أهمية الرياضيات يأتي بسبب أن العديد من المبرمجين لايستخدومونها في بناء اغلب برامجهم وشخصيا، سوى العمليات الحسابية البسيطة لم أقم بإستخدام الرياضيات أبدا في برمجتي.
هل هذا يعني أن الرياضيات غير مهمة، لا طبعا لكن مالم تكن متخصصا في برامج معقدة مثل تلك المتعلقة بمعالجة الصور والصوت والفيديو فإنك لن تهتم بالرياضيات أبدا.
بمجرد رؤية السؤال علمت أنك طارحه. و الله طرحت مشكل أرى أننا كمبرمجين عرب و كعاملين في مجال الحاسوب بشكل عام قد قللنا من أهميته، المشكل يبدأ من التكوين في الجامعات و مدارس تخرج المهندسين التي لا تعطي أهمية للرياضيات خاصة في تدريس الخوارزميات و التي ركز تكويننا على الجانب البرمجي للخوارزميات أي الجانب الظاهو من الايسبرغ.
أما أهميتها فهي من الأمور التي لا شك بل هناك تخصصات في مجال الحاسوب متخصصة في الرياضيات و لا تلمس فيها ولا مرة البرمجةو فالخوارزميات هي شعبة من شعب الرياضيات الكثيرة ليس إلا.
كنا في مشروع PHP واللغة العربية قد توصلنا إلى قناعة بأن الوقت قد حان للتعامل مع اللغة العربية في مشروعنا من المنظور الإحصائي الرياضي وتخطي حدود المفاهيم والطرائق القائمة على أساس القواعد وهي التي كانت أداتنا ووسيلتنا طيلة الأعوام الستة الماضية من عمر مشروع PHP واللغة العربية، هذا التوجه الإحصائي الجديد كان ملهمه ومحفزه هو ما نراه كل يوم ونلمسه من نجاحات تحققها عملاقة الشابكة (الإنترنت) شركة غوغل.
لكننا فوجئنا من افتقار لغة PHP للعديد من الأدوات والدوال الأساسية التي يعتمد عليها علم الإحصاء في بناء نماذجه الإحصائية وتوصيف فضاء احتمالاتها، وما زاد من استغرابنا أننا نعلم أن طيف تطبيق مثل هكذا دوال وأدوات يتسع ليتجاوز النطاق الضيق لنمذجة اللغات الطبيعية ومعالجتها وهو ما كان دافعنا في الأساس، ليطال مختلف تطبيقات ذكاء الأعمال والتنقيب عن البيانات، ومن الأمثلة التي تتبادر إلى الذهن عن مثل تلك التطبيقات نذكر منها ما يختص باستخلاص المعلومات المختزلة من بين ركام البيانات الخام الهائل، والذي نحصل عليه عادة من مصادر مختلفة نذكر منها على سبيل المثال وليس الحصر ملفات سجلات زيارة المواقع أو دراسة أرقام الحملات الإعلانية أو حتى نتائج الاستبيانات وعمليات التصويت المباشرة على الشابكة.
لمزيد من المعلومات:
أما الصفحة الرسمية لمشروع الكاشي فيمكن زيارتها على الرابط التالي:
لماذا سميت الرياضيات بهذا الاسم اصلا؟
لأنها تعتبر "رياضة" لعقل الإنسان، فهي مثل رياضة الجسم، لا تقصد لذاتها، وإنما لما تعطيه للجسم من قوة ولياقة تفيده في حياته، وهكذا الرياضيات (حسبما أراها) فائدتها ليست في ذاتها بل في تقويتها لعقل الإنسان، وبالتحديد، فالفائدة الأهم في إكسابها المرئ قوّة التفكير المنطقي، والتفكير المتسلسل، والتفكير الاحتماليّ..
المنطق، والتسلسل، والاحتمالية، من صفات العقل القوي، الذي يلزم المبرمج وغيره، ولكنها قد تلزم المبرمج أكثر من غيره إذا كانت مهمة هذا المبرمج «حل المشاكل».
في النهاية ستنجح بدون عقل قوي، لكن التميز والبراعة قد لا تكون من نصيبك
كل تعليقاتكم إجابات متقدمة و (عامة) الله يعطيكم العافية، تمنيت لو كل شخص وضح مثال على كل جزء قام بذكره، مثلاً من قال التشفير؟ ياحبذا لو قام بتوضيح كيف يتم جمع وطرح وقسمة وضرب الكلمة ليتم تشفيرها؟ لكي تكون الإجابة شافية.
سأقوم بذكر استخدام معادلات الرياضيات في مواقع الويب بشكل مبسط كما في الأمثلة التالية:
١. حساب عدد الزيارات (مجموع الزيارات+١).
٢. حساب نجمات التقييم لموضوع مثلاً (عدد الأصوات للنجمة الأولى + (عدد الأصوات للنجمة الثانية x ٢) + (عدد الأصوات للنجمة الثالثة x ٣) ) / مجموع الأصوات = تقييم الموضوع من ثلاث نجمات. هذا المثال قد يتم استخدامه حتى ولو لم يكن هناك نظام تقييم بالنجمات ويتم استبدال ذلك مثلاً بنسبة المشاهدات مع نسبة تحميل الملف مثلاً، وبذلك يتم معرفة تقييم هذا الملف حيث أن ٧٠٪ ممن قام بمشاهدته قام بتحميله. وقس على ذلك أمور كثيرة بإمكانك إنشاء معادلة مخصصة لكل حالة وبناءاً على قياسات محددة في بالك.
٣. حساب نتائج الاستبيان ونسبة كل إجابة إلى مجموع الإجابات. مثلاً (الإجابة الأولى حصلت على نسبة ٣٠٪ من مجموع الأصوات).
٤. تحليل بيانات الزيارات واستخراج معدلات متقدمة ومفصلة عن كل رقم وهذه تكون المعادلة بناءاً على عدد أنواع الأرقام وعلاقتها ببعضها، مثلاً نسبة الزوار العائدين لزيارة الموقع بالنسبة للزوار الجدد، ونسبة مكوث الزائر في الصفحة من خلال مراقبة أوقات الزيارات وربطها بجلسات ...
٥. تقييم وزن الكلمات في البحث والأرشفة وإعطاء كل كلمة وزن معين بناءاً على أوزان الكلمات الأخرى. مثلاً إعطاء الكلمة وزن بناءاً على عدد مرات تكرارها أو مطابقتها لكلمات محددة تم تحديدها على أنها مهمة.
وبالتأكيد هناك المزيد من الأمثلة ولكن هذا اللي على بالي الآن!
والعمل على المعادلات ممتع لأنه يعطي المبرمج تجربة عمل أخرى.
الرياضيات ستحتاجها بالتأكيد وكل ما زادت خلفيتك زادت سرعتك في استيعاب المعادلات
مثال:
اذا احتجت في برنامج ما لعرض المدة الزمنيه لعمل البرنامج ولكن العرض بالثواني ولكنك تريد عرض الزمن بالساعة.يعرض الزمن الزمن: 43344 ثانية
سنحتاج لقسمة عدد الثواني علي 60 لنخرج بالدقائق =722 دقيقة.
سنحتاج للقسمة مرة اخري علي 60 لنخرج بالساعات=12 ساعة
او يمكننا القسمة كلها في نفس الوقت. الخلاصة هي اذا كنت ضعيفا في الرياضيات ستتأخر في استيعاب الكود او في كتابته
- حذف بواسطة المستخدم
في رأيي ان الأساسيات مهمه جدا .. فاذا كانت اساسياتك قويه .. راح تصير مبرمج قوي اما اذا كانت اساسياتك ركيكه .. راح تصير مشي حالك
وما اعتقد انه من الصحي انه كل شوي ترجع خطوات للورا عشان تتعلم شي انت كان المفروض انك تعلمته من زمان !!
الرياضيات وخاصتا Discrete Mathematics مهمه جدا في مجال البرمجه لأنها تساعده على اختيار افضل خوارزميه ممكنه لكتابة البرنامج
اللي يقول ان الرياضيات غير مهمه يشرح لي بالله كيف كيتب برامج !!
هل على طول يبدا في كتابة الكود !!
كتابة الكود هي من اخر الخطوات .. تسبقها عدة خطوات مهمه جدا عشان يكون البرنامج مصمم بأتقان واللي مايعرف رياضيات ماراح يكون برنامجه متقن من ناحية السرعه واستخدام الميموري وغيره .. اضافه الى انه ممكن يكون فيه bugs ..
البرمجه هي الوجه العملي ولكن ليس كل البرمجه عمليه .. فيه جزء مهم نظري ويتكون من رياضيات عشان تبني برامج تتمتع بالأتقان .. وماتحتاج كل شوي تصليح وكل شوي يطلع لك بق وخطا !!
هذا رأيي وشكرا
الرياضيات في البرمجة مهمة لكن في مرحلة معينة، لا ينفع ان تخبر شخص مبتدئ في البرمجة بأن يتعلم الرياضيات اولا ً ثم يتعلم البرمجة، بل هي مفيدة جدا ً لشخص متمرس ولديه خبرة كافية في البرمجة ثم تاتي الرياضيات لتنمي افكاره اكثر وتكسبه خبرة اكبرة تجعله ينظر للامور خارج النطاق البرمجي ويحللها بمنطقية اكبر.
قمت بنشر موضوع قديم يتحدث عن بناء نظام صلاحيات بأستخدام المعاملات الثنائية، موجود على هذا الرابط :
الموضوع يحتاج معرفة بالنظام العشري والنظام الثنائي وطرق التحويل فيما بينهم، هو في النهائية استغلال الرياضيات في البرمجة.
بالتأكيد هي مهمه , في معظم مجتمعاتنا العربية نرى أن الشيئ الذي لا نحتاجه بشكل مباشر هو شيئ لا قيمة له وهذا غير صحيح , فالرياضيات لا تقتصر على حاصل جمع او طرح او تكامل او اشتقاق وغيره , هناك بعض التخصصات المباشرة في البرمجة قد تستخدم فيها الرياضيات بشكل مباشر , ولكن أكثر ما يهم هو أن تعلمك أسلوب علمي منطقي في التفكير بحل المشكلات , على سبيل المثال في كلية الهندسة تخصص هندسة حاسوب يمكن لأي شخص أن ياخذ ملخص مواد الكهربا والكمبيوتر والشبكات ويتخرج في سنتان بدل من 5 , ولكن لماذا ياخذ مواد الرياضيات وبعض مواد الاتصالات والاحتمالات وغيرها ,, هي فقط لتطوير الفكر والمنطق لديه ليملك اسلوب تفكير يمكنه على حل المشكلات ,, لن تستطيع تعلم كل شيئ في الجامعة ولكنك ستتعلم اساس تستطيع أن تفكر بناء عليه , والبرمجة كذلك مع الرياضيات
البرمجة بشكل عام تعتمد على المنطق أكثر من الرياضيات، قد تجد شخص مستواه عالي في البرمجة بينما مستواه في الرياضيات ضعيف أو العكس، وقد شاهدت هذا الشيء في الجامعة التي أدرس فيها.
بعض من يدرّسون مبادئ الرياضيات في تقنية المعلومات يعتمدون على مسائل برمجية تستخدم فيها الرياضيات بشكل أساسي، خصوصاً إن طُلب من الطالب حل المسألة دون الإستعانه بدوال أو مكتبات معينة، هذه الطريقة تقوي المنطق والرياضيات معاً.. لكن لا أرى أنها تقوي الجانب البرمجي بشكل رئيسي.
لا أقصد أن أقلل من الرياضيات في كلامي فهي ضرورية، ولكن البرمجة (حسب إستخداماتها) قد تعتمد على الرياضيات حسب نوع ومتطلبات المشروع وقد لا تعتمد، خلال تجاربي لم أحتاج إلى الرياضيات إلا في برمجة الألعاب وذلك لضرورة إستخدامها في المحرك الفيزيائي في اللعبة.
أول ما بدأت دراسة البرمجة في العالم كانت تندرج تحت قسم الرياضيات بحكم أن بداية البرمجة كانت بلغات قريبة جداً من الآلة و تحتاج الكثير من كتابة المعادلات الرياضية وعمليات الجبر. أما الآن فالأساسيات التي يحصل عليها المبرمج من المرحلة الثانوية أو السنة الأولى في الجامعة، كافية. غالباً لا يحتاج للرياضيات المتقدمة الا في حالات قليلة مثل برمجة الخوارزميات و الأنظمة المحاسبية إلى حد ما.
ايضاً الرياضيات مفيدة لرفغ مستوى الأداء فأحيانا بعمليات رياضية للتعامل مع الهاردوير و الذاكرة والتخزين والمعالجة و تأمين البيانات والتشفير أحياً.
ايضاً بعض الأنظمة الطبية و المحاسبية تحتاج لمستوى جيد في الرياضيات.
لكن بشكل عام بناء تطبيقات قواعد البيانات و الجوالات و الويب في الغالب لا تحتاج لكثير معرفة في الرياضيات.
لا يشترط أن يكون المبرمج ملماً بدروس الرياضيات بل أن يكون ملماً بروح الرياضيات ومنطقها.
لا أوافقك في إستبعاد دروس الرياضيات لأن فيها علاقات مهمة خصوصا في مجال برمجة الأشكال و التموضعات
مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.