عادةً ما يفتقر من درسوا البرمجة ذاتيًا أمرين مُهمّين: فهم كل من الخوارزميات Algorithms وبُنى البيانات Data structures، وهي مواضيع ستدرسها في مُعظم اختصاصات علوم الحاسوب الأكاديمية.
غالبًا ما يتجاوز المتعلّمون ذاتيًا هذه المواضيع بسبب عدم وجود حاجة لمعرفتها كي تبدأ البرمجة، ولأنها مُعقدة نوعًا ما وتحتاج إلى وقت طويل نسبيًا لدراستها، ولأنه يمكنك بالفعل البرمجة وصنع التطبيقات دون أن تعرف شيئًا عن الخوارزميات وبُنى البيانات وذلك لأن جميع لغات البرمجة المتوفرة اليوم تحتوي فعلًا على معظم بُنى البيانات والخوارزميات التي تحتاجها وبالتالي فأنت لن تُعيد اختراع العجلة وستستخدم ما هو موجود وجاهز لديك في لُغة البرمجة. صحيح؟
نعم إلى حدٍ ما يمكنك بالفعل قطع مرحلة كبيرة في البرمجة دون الحاجة لفهم بعض هذه الأساسيات، لكن لاحقًا وعند الوصول إلى درجة متقدمة، ستواجهك مفاهيم جديدة ستجد صعوبة في فهمها واستيعابها. ثم ستكتشف لاحقًا بأن جميع هذه المفاهيم (بعضها قد يبدو لك وكأنها تقنيات حديثة جدًا وثورية) ما هي إلّا تطبيقات لخوارزميات أو بُنى بيانات شهيرة وقديمة. وبالتأكيد فإن فهمك العميق لهذه المواضيع الأساسية كان سيُساعدك في اختصار الكثير من الوقت في فهم أي شيء جديد يمر عليك تقريبًا.
على سبيل المثال كنت أقرأ قبل أيام عن بعض الميزات الجديدة في لغة Kotlin مثل Flow و Streams. في البداية بدا لي الأمر مُعقدًا نوعًا ما قبل أن أدرك أن هذه الميزات ما هي إلا تنويعات على بُنية البيانات الشهيرة باسم Queue مع بعض الإضافات هنا وهناك تُقدمها لغة البرمجة نفسها
مواضيع ذات صلة