في هذه الصفحة
من أوائل ما نقوم بدراسته كمبرمجين وينوه أساتذتنا على مدى أهميتها هي دورة هياكل البيانات وكيف نٌخزن فيها أشكال مختلفة من البيانات وكيف نبحث عن البيانات بداخلها إلخ..
ولكن قد يغفل البعض عن معرفة أين سيستخدم هذه الهياكل في عمله عندما يتخرج من الجامعة, فهل هي حقًا بهذه الأهمية؟
في الواقع أنه لولا فكرة هياكل البيانات ما كان سيكون عندنا برمجيات من الأساس!
فهي تحتفظ لنا بالبيانات في شكل يٌمكن لنا التعامل معه وهي تمثل ذاكرة برنامجنا ليس فقط عن ماذا يفعل ولكن عن نفسه.
ومع كون مجال صناعة البرمجيات تطور كثيرًا إلا إنه لازلنا نعتمد عليها بشكل كامل في تطوير البرمجيات وإن اختلفت صورها من تقنية لأخرى ومن لغة لأخرى لكنها نفس المبادئ التي لا غنى عن فهمها جيدًا ومعرفة أي هيكل مناسب لأي مهمة.
اليوم نستعرض بعض استخدامات هياكل البيانات في الحياة العملية, والغرض من هذه الأمثلة هو تمرين العقل على استحضارها عند تصميم المشاريع لا أن تكون فقط مقتصرة على حل المسائل والتمارين
وكي تزيد من استفادتك حاول أن تسأل نفسك لماذا اخترنا هذا الهيكل لحل هذه المشكلة ما هي المميزات التي يقدمها وهل يعطينا الأداء السريع في عمليات تخزين العناصر بداخله واستعادتها؟
1. Lists or Arrays
الArrays أو المصفوفات هي أكثر هياكل البيانات شيوعًا ويتم تخزين العناصر فيها بشكل خطي أي كل عنصر بجانب الآخر وتكون إما أحادية البعد أو ثنائية البعد ولكل نوع استخداماته فمن أشهر استخدامات ال Arrays أحادية البعد هو تخزين البيانات: يتم استخدام الـ Array على نطاق واسع في تخزين البيانات في بعض قواعد البيانات مثل MongoDB.
بينما تٌستخدم المصفوفات أو القوائم ثنائية الأبعاد في معالجة الصور حيث أن الصور التي يخزنها الكمبيوتر تكون على هيئة Pixels مرتبة في مصفوفة بقيم محددة فيسهل علي الكمبيوتر التعامل معها رياضيًا فلإضافة Filter معين يجعل صورتك ذات ألوان سينمائية ما علي الكمبيوتر سوي أن يضرب القيم داخل المصفوفة في معامل معين لتعديل الألوان.
استخدامات أخري:
- حفظ بيانات جهات الاتصال علي الهاتف
- تستخدم في الألعاب لترتيب أفضل اللاعبين وأعلي نتائج اللعب
2. Stacks
يستخدم المبرمجون هياكل البيانات Stack عادة لتنظيم البيانات والعمليات بطريقة معينة فهي أيضًا كقائمة ولكنها تتميز بأنها تتيح للمستخدمين الوصول السريع إلى عناصر معينة من مجموعة العناصر بطريقة مؤقتة, حيث أخر عنصر قد دخل المجموعة هو أول عنصر سيخرج منها (Last In First Out) وتذكرها دومًا بشنطة ترص فيها الكتب فوق بعضها حيث إن آخر كتاب تضعه فيها هو أول كتاب يجب أن تٌخرجه منها, ونستخدمها في تطبيقات هامة جدًا مثل:
خاصية Undo and Redo
لا تخلو البرامج كلها علي الكمبيوتر من هذه الخاصية وكل ما يفعله المبرمج هو تخرين الأوامر التي ضغطت عليها في Stack فإذا أردت إلغاء أخر آمر فإنه يزيله من أعلي ال Stack وإذا أردت إعادته مرة أخري يعيده إلي أعلي الStack.
تطبيق الآلة الحاسبة
لا تستطيع الحواسيب القراءة مثل البشر ولكنها تستطيع حساب المعادلات الرياضية باعتمادها علي ال Stacks في قراءة أطراف المعادلة ثم حساب الناتج بأكثر من طريقة يمكن القراءة أكثر عنها من هذا المقال
3. Queue
تٌعد هياكل البيانات Queue – الطابور- الند الأهم لل Stack فهي تنظم البيانات والعمليات عكس ما ينظمها الStack. فهي تتيح للمستخدمين الوصول السريع إلى عناصر معينة من مجموعة العناصر بطريقة FIFO (First In First Out) ، أي أن العناصر التي تم إدخالها أولاً تخرج أولاً.
وفكرة الطابور كما نستخدمها كثيرًا في حياتنا اليومية نستخدمها كمبرمجين في برمجة الحاسوب في تطبيقات عديدة مثل:
الإشعارات Notifications
تٌحافظ جميع البرامج علي ترتيب حدوث الإشعارات من خلال الQueue فالإشعار الذي يحدث أولاً يصلك أولاً
تحميل الملفات
تٌقسم الملفات وتوضع في Queue كي يتم تحميلها وعندما يكتمل التحميل تٌجمع الأجزاء المختلفة من الملف الواحد سويًا.
4. Trees
تُستخدم هياكل البيانات الشجرية (Tree Data Structure) بشكل واسع في صناعة البرمجيات لحفظ وتنظيم البيانات بشكل يتيح الوصول الفعال إليها. وتتميز هذه الهياكل بالقدرة على تمثيل البيانات الشديدة التعقيد، مثل الهياكل الهرمية والترابطات والشبكات. وفيما يلي بعض الاستخدامات الشائعة لها:
HTML DOM
نعم لا يرى المتصفح صفحات ال HTML بالترتيب الذي نراها به بل يري ال Tags في شكل شجرة أعلاها هو html tag وأوراقها هي أصغر عناصر مكونة للصفحة وبهذا يستطيع تحميل الصفحة ورسمها بسرعة كبيرة.
نظام الملفات File Directory
نظام الملفات علي الكمبيوتر هو أيضًا على شكل شجرة رأسها يكون ال Home Directory والأوراق هي الملفات التي تخزنها داخل المجلدات.
البحث و قواعد البيانات
هذان موضوعان كبيران كفاية لتحتويها كتب ومجلدات ولكن نٌحب أن تعرف في هذه المرحلة أن الهياكل الشجرية بجميع أنواعها يتم استخدامها بكثافة في تمثيل البيانات داخل قواعد البيانات لكي يتاح لنا استدعائها والبحث عنها بسهولة.
5. Graphs
تُستخدم هياكل البيانات الرسومية (Graph Data Structure) بشكل واسع في تمثيل العلاقات غير المتجهة والمتعددة الاتجاهات. تُساعدنا هذه الهياكل على تمثيل العلاقات المعقدة بشكل رسومي نفهمه سريعًا كبشر ونستنتج منه الكثير, وفيما يلي بعض من أهم استخدامتنا لها في صناعة البرمجيات:
الشبكات الاجتماعية
تستخدم شبكات التواصل الاجتماعي مثل فيسبوك وتويتر وانستجرام ولينكد إن هياكل البيانات الرسومية لتمثيل العلاقات بين المستخدمين وبعضهم البعض والمشاركات والتعليقات.
خوارزميات البحث عن الطرق Path Finding Algorithms
أشعر بامتنان لل Graphs كل مرة استخدم فيها Google maps للذهاب من بيتي لمكان جديد, لأن هيكل البيانات البسيط هذا تمثل فيه الأماكن في المدينة على هيئة نقاط ثم يستخدم خوارزمية Dijkstra للبحث على أقصر طريق بيني -نقطة أ- وبين المكان الذي أرغب بالذهاب إليه -نقطة ب-.
هل لمست أهمية هياكل البيانات الآن؟شاركنا برأيك عن المقال وعن هياكل بيانات تريد أن تعرف عنها وعن استخدامتها!
أما بالنسبة لي أري أنها هي ما تجعل الحواسيب علي شكلها الذي نعرفها عليه اليوم, وفي الجزء الثاني من المقال بإذن الله نتعرف علي هياكل بيانات متتعدة أخري واستخدامات مهمة لها.