ما هو أسلوبك مع الدوال: هل أنت المبرمج الذي يحفظ أم المبرمج الذي يبحث؟

28  تعليق

يوجد نوعان من المبرمجين:

  1. مبرمج يحفظ الدوال.
  2. مبرمج يبحث عن الدوال وفق الحاجة.

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

كما تعلم، المشكلة الواحدة من الممكن أن تُحل بألف طريقة. وهذا يعني أن المبرمج يقوم بكتابة مئات الأفكار يومياً ليوفر حلولاً للمشاكل أو يجعل الحاسب ينفذ مهمةً ما،

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

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

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

خضت هذا الحوار مع أحد أصدقائي المبرمجين وكان كلاً منا يتبنى نظريةً مختلفةً عن الآخر. سأستعرضُ لك الرأين ثم أخبرني عن موقفك بعد ذلك وكيف تعمل؟

نظريةُ صديقي: البحث عن الدوال عند الحاجة

البحث عن الشفرات المصدرية
البحث عن الشفرات المصدرية

النظرية التي يتبناها صديقي -وهنا أتقمص موقفه- أن جميع لغات البرمجة المعروفة اليوم لها توثيقٌ جيّد على الأقل، وبالتالي أغلب -إن لم يكن كل- ما تحتاجه من معلومات عن الدوال التي لم تتعامل معها من قبل متوفرٌ في الانترنت.

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

ولا تنسى أن هنالك موقعاً يسمى stackoverflow والذي فيه تقريباً جميع المشاكل البرمجية التي واجهتك أو قد تواجهك أو لم تواجهك بعد مع حلّها !

فلماذا نعيد اختراع العجلة ونهدر الوقت والجهد في محاولة تذكر العديد من الأسماء التي قد لا نحتاجها أثناء البرمجة؟!!

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

نظريتي: حفظ جميع الدوال قدر الامكان

تذكر الشفرات المصدرية
تذكر الشفرات المصدرية

العمل البرمجي يحتاجُ قدراً كبيراً من التركيز بلا شك، وعملية إفراغ الأفكار من الذهن وتحويلها إلى شفراتٍ مصدرية يحتاجُ قدراً كبيراً من التركيز والاتصال.

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

صحيحٌ أن جميع الدوال والأسماء موجودة بالانترنت، ولكن لا يجبُ الاعتماد عليها كمصدرٍ أساسي لاتمام عملية البرمجة. فمن الممكن مثلاً أن ينقطع الانترنت لأي سببٍ كان أثناء العمل البرمجة أو أن يعمل المبرمج في منشأة لا تسمح باستخدام الانترنت اطلاقاً !! جهةٌ أمنية مثلاً !!

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

وبذلك تستطيع أن تبرمج بلا انقطاع لأطولِ وقتٍ ممكن، وستعود إلى الانترنت والبحث نادراً.

ما هي النظرية التي تتبناها أنت؟

آخذاً في الاعتبار أن النظريتين السابقتين تتفقان على أن المبرمج يجب أن يعلم الأساسيات، مثل أن يعلم ما هي أنواع البيانات الرئيسية وكيف يتم تعريف المتغيرات وكيف يتم استخدام الدوال وغيرها من المفاهيم الرئيسية، ولكن الاختلاف في التعمق في معرفة مهام وتذكَُر أسماء الدوال والمتغيرات التي لا تستخدم بكثرة.

ما هي النظرية التتي تتبعها أنت؟ وما هي الطريقة التي ترى أنها أكثر فائدةً وصحةً للمبرمج وللعمل البرمجي كذلك؟


قد يعجبك أيضا

هاكاثون الحج | قصةٌّ جميلة بحضور جيمي ويلز مؤسس ويكيبيديا

هاكاثون الحج | قصةٌّ جميلة بحضور جيمي ويلز مؤسس ويكيبيديا
ما رأيك؟ اترك تعليقاً أدناه


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

  2. العلم صيد والكتابة قيده فقيّد صيودك بالحبال الواثقات افضل البحث مع حفظها كتابةوتصنيفها مع بيان الغرض من استخدامها و حفظها في الكمبيوتر لوقت الحاجة ولا مانع من حفظ اكثر من طريقة لنفس حل المشكلة وبجميع اللغات التي تستخدمها في مشروعك.

  3. الحفظ يسرع العمل ، لكن البحث يعطيك نتائج أفضل و أيضا البحث مهارة لابد منها ، جزاك الله خيرا

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

    شكراً لك

  5. في السابق كُنت أعتمد طريقة حفظ جميع الدوال من أيام توربو باسكال أي ما قبل اﻹنترنت (منتصف تسعينيات القرن الماضي)، ثم دلفي بعد دخول الإنترنت لكن بدون توفر مستمر، وكُنت استخدم لغة برمجة واحدة لأكثر من عشر سنوات (لغة أوبجكت باسكال) وكانت بيئة التطوير الخاصة بها، تحتوي على معلومات عن الدوال والأنواع المختلفة تغنيك إلى حد كبير من استخدام النت.
    في عام 2011 عندما بدأت تعلم الجافا لم تكن بها نفس إمكانية دلفي في توفر الـ Help في بيئة التطوير لذلك اعتمدت أكثر على النت و اصبحت لا استغنى عنه للبداية في كل عمل.
    في عام 2017 تقريباً بدأت بتعلم لغة Golang لكن بطريقة مختلفة هذه المرة، حيث كان أحد نتائج التعلم هو كتابة عدد من البرامج لأغراض التعليم: مثلاً برنامج لقراءة وكتابة ملف نصي، وآخر للإتصال مع قاعدة البيانات، وآخر كخدمة ويب، وآخر لنداء صفحة في النت. فأصبح لدي عدد من البرامج، وعندما بدأت في كتابة برامج حقيقية استعين ببرامجي التعليمية الموجودة والتي أصبحت كأنها مكتبة ومرجع لتنفيذ المهمات المتكررة.
    الآن استخدم ثلاث لغات: أوبجكت باسكال، ولغة جافا ولغة Go كل لغة لها طريقة وقواعد مختلفة، اصبح الحفظ مستحيلاً بالإضافة للتقدم في العمر والعمل اﻹداري، لذلك أصبحت اعتمد البحث في النت والاعتماد على نسخ الكود من البرامج القديمة أو استخدام مكتبات تُسهل إعادة الاستخدام لكل لغة برمجة استخدمها

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

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

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

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

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

      سرعة التطور والتقدم ورقي الحل.

      أخاك مصطفى يقدم اعجابه برأيك 🙂 وأتمنى كل من التوفيق أكثر.

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

    1. وعليكم السلام ورحمة الله وبركاته حليمة، جزُيتِ الجنّة،
      أرى أنكِ تتفقين مع أغلب المعلقين في أن البحث هو الطريقة المفضّلة. أتساءل.. كيف تتعاملين مع حالة الانقطاع المتكرر لتسلسل أفكارك أثناء البرمجة عندما تضطرين لاجراء العديد من البحوث لكتابة شفرة مصدرية جديدة عليك؟

      شكراً لوجودك في مدونة علوم وأتمنى لكِ التوفيق كذلك.

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

    1. كيف اعالج بطريقه بسيطه بدون اخطاء احفظ طرق المعالجه وابتكر طرق معالجه

    2. يبدو أنك تتفق مع النظرية الأولى إسلام، طريقةٌ لا بأس بها اطلاقاً، عندما تعتمد على البحث وفق الحاجة يحدث التطور التدريجي والتثبيت الدائم للمعلومة نسبةً لاستخدامها كذلك.
      لكن الحل الخاص باستخدام المرجع أثناء للبحث عن معلومة .. أوه ! إذا كان البحث عبر قوقل أحياناً يحتاج لأيام لايجاد المعلومة المناسبة ماذا سيحدث مع المراجع!
      ولكن على كُلٍ الاساسيات وقود البداية كما تفضّلت، وما تبقى هو أسلوب أو طريقة مختلفة للوصول إلى نفس الهدف.

      أشكرك على تعليقك

  10. في رئي الطريقة الاولى تناسب الشخص المبتدي لاداعي ليزحم وقته ليحفظ كل شي ولكن مع الوقت سيجد نفسه حفظ الدوال التي بحث عنها في ما سبق.

  11. حسب رئي الطريقة الثانية لانو بتجدد مجموعة من الافكار البرمجية
    ومجموعة من الحلول مبنية علي الدالة الانتا حافظا

  12. برأيي ان الاثنيين ليسوا على خطأ ولكن اميل اكثر الى الطريقة الثانية , فيجب على المبرمج معرفة اهم الدوال والوظائف المهمة على الاقل في اللغة البرمجية التي يعمل بها

    1. موقف وسطي جميل …

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

      أعجبني ذلك..

{"email":"البريد الالكتروني غير صحيح","url":"رابط الموقع غير صحيح","required":"بعض الحقول المطلوبة لم تتم تعبئتها"}

نجاح!

تنبيه!

خطأ!