علمتني البرمجة

· · 772 كلمة · 4 دقيقة قراءة

حل المشكلات 🔗

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

تعلمت من البرمجة لأني لن أصل للحل بمجرد التفكير فقط! لابد من التجريب.

تعلمت من البرمجة أني لن أصل للحل من أول محاولة! لابد من الاستمرار في المحاولة مع محاولة تكوين فكرة صحيحة وشاملة ودقيقة عن المشكلة.

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

لا تنفذ عمل أنت تعلم أنه غير مفيد 🔗

في الواقع نقوم دائماً بأعمال لا نعرف إن كانت مفيدة أم لا .. ثم نعرف بعد تنفيذها أنها غير مفيدة وربما تكون ضارة. ولكن علمتني البرمجة فكرة الـ early return .. مثال : إن كنت تريد وضع array في شكل JSON ثم ترسلها لطالبها .. من الأفضل أن تختبر الـ array إن كانت فارغة أم لا .. بدلاً من أن تقوم بعملية التحويل دون فائدة.

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

الكسل صفة جيدة 🔗

الكسل في البرمجة شئ جميل. الكسل هو أن تقوم بعمل الشئ عندما يُطلب منك فوراً وليس قبل أن يُطلب منك. مثال : تحميل الصور الموجودة في صفحة على الانترنت. من المنطقي أن تقوم بتحميل كل الصور الموجودة في الصفحة مرةً واحدة ، ولكن من الأفضل أن يتم تحميل الصور المطلوب حالياً فقط. وهذه هي خاصية lazy loading وهي أن يتم تنفيذ طلب تحميل الصورة قبل رؤيتها مباشرةً.

مميزات الـ lazy loading هي ترتيب الأولويات وتقليل المسؤوليات في الوقت الحالي. أي أن المتصفح يحتاج إلى تحميل صورة أو اثنين بدلاً من ١٥ صورة مرةً واحدة. في الواقع أيضاً الإنسان يحتاج أن يطبق فكرة الكسل على بعض الأمور الغير ضرورية وقابلة للتنفيذ وقت احتياجها دبلاً من تضييع الوقت الحالي في عملها.

سوف تنسى 🔗

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

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

الرؤية (vision) والفكرة (idea) والمفهوم (concept) والخوارزمية (algorithm) هم أهم من الألفاظ والكلمات التي يمكن الحصول عليها من cheatsheet للغة البرمجة المستخدمة أو إطار العمل المستخدم أو كلاهما.

تقبل نفسك وتعلم من أخطاءك 🔗

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

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

الحل ليس تقوية نفسك وتطويرها فقط ! ولكن الجزء الأكبر من الحل هو في تعديل البيئة من حولك لكي لا تكرر أخطاءك أو تمنع نفسك من مجموعة كثيرة من الأخطاء. في البرمجة نستخدم أطر العمل - frameworks - وهي عبارة عن مجموعة برمجيات ومكتبات موجودة معاً لكي تكتب بها برنامج / برمجية بها أقل أخطاء أو نواقص ممكنة.

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

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

التصنيفات: برمجة
مشاركة: