في يوم من الايام قررت انت و 5 اصحابك انكم تروحوا سنينما تشوفوا فيلم لسه نازل جديد . ولما وصلتوا كانت القاعة فيها ناس وانتم بتحجزوا فا الطبيعي تقولوا لبياع التذاكر شوفلنا 6 كراسي جنب بعض . طيب ولو ملقناش ؟ هيقولك بص انتوا تتقسموا 3 هنا و 3 هناك او تقعدوا في صفوف مختلفة لكن المهم انكم هتتفرجوا علي الفيلم طيب لو فرضنا بقي انكم اصريتوا تقعدوا جنب بعض يبقي لازم نخش القاعة نقوم حد من مكانه نشوفله مكان جديد عشان سيادتكم تقعدوا جنب بعض و بكده اتحلت المشكلة لكن هيكون الفيلم خلص .
المشكلة دي عزيزي المشاهد مش جديدة من نوعها ومعروفه عندنا في عالم البرمجة من سنين كتيرة و الحل كان بسيط جدا بالـ linked lists . في 1953 نشر الدكتور الالماني هانس بيتر ورقه بحثيه هتغير من تاريخ علوم الكمبيوتر حتي وقتنا هذا
وحل مشكلة ادخل بيانات لبرمجيات الذكاء الاصطناعي في الترجمة لأنه اقترح وضع البيانات في مجموعات مختلفة لكنا مرتبطة وده بيسهل وبيسرع عمليات الحاسوب وخلال عقود من التطوير و التحسين دلوقتي الالجوريزم ده بقي اهم الجوريزم بالنسبة لـ ادوات النصوص و خدمات الكلاود و التشفير و حاجات كتير جدا يطول شرحها .
طيب انت بتقولنا الكلام ده كله ليه ؟ لو انت ما عرفتش المشكلة مش هتقدر تستوعب حلها لكن بسيطة الموضوع وما فيه انت معاك 10 عناصر مثلا وعايز تدخلهم في ذاكرة عشوائية بس في نفس الوقت هيبقوا مربوطين ببعض الطبيعي هتقولي نعملهم Array . لكن المشكلة انه كا Array لازم تخزن ال 10 عناصر جنب بعض في نفس الذاكرة فا لوم مثلا هتدخل مليون عنصر مربوطين ببعض هتبقي مشكلة ان يكون عندك مليون مكان فاضي جنب بعض فا هي دي المشكلة عزيز المشاهد
وعشان علماء الحاسب يحلوا المشكلة دي تم اكتشاف القوائم المرتبطة linked lists ودي بقي انت بخزن بشكل عشوائي في الذاكرة لكن في نفس الوقت كل عنصر عارف العنصر اللي بعده
فا مثلا لو معاك 3 عناصر و هيتخزنوا في الذاكرة يبقي 1 له دليل علي مكان 2 و 2 له دليل علي مكان 3 وهكذا
فا كل عنصر هيبقي فيه خانتين الاولي فيها بيانات العنصر والتانية فيها عنوان مكان العنصر التالي ودا كده النوع الاول من الـ linked lists المقطع الثالث مش هطول عليك عزيزي المشاهد بس اشهر 3 انواع من ال linked lists النوع الاول Singly Linked list وده بيتكون من جزئين بس الاول خانة لرقم صحيح و التانية خانة عنوان العنصر التالي
النوع التاني Doubly Linked List وده بيتكون من 3 اجزاء الاول بيدل علي العنصر اللي قبله و الثاني بيكون قيمة العنصر و التالت بيكون دليل علي مكان العنصر التالي
طبعا هتسأل دلوقتي طيب اول عنصر "خانة العنصر اللي قبله بيبقي فيها أي وهو اول عنصر اصلا ؟" زي ما توقعت عزيزي المشاهد بتبقي فاضي .. null يعني وعلي فكرة زيها زي العنصر الاخير برضوا خانة عنوان العنصر اللي بعده بيبقي فاضي والنوع ده بيبقي ممتاز في توصيل السيرفرات ببعضها وتطبيقات كتير بحيث كل عنصر عارف مين قبله ومين بعده
النوع الثالث Circular Linked List ده بقي نوع مثير للدهشة هو ان كل عنصر عبارة عن خانتين بالظبط زي النوع الاول بس الاختلاف ان النوع ده فيه العنصر الاخير بيدل علي العنصر الاول ودوخينا يا لمونا
بعد ما عرفنا المشكلة وعرفنا حلها وعرفنا اذاي وجد الحل ده وفي تطبيقات كتيرة نقدر نعملها بالحل ده منها تشفير البيانات وحماية السيرفرات وربط ال micro services و تخزين البيانات وبعد 58 من وفاة الدكتور هانس بيتر الله يرحمه
قدر انه يوصل علمه ده للعالم والعالم ممتن له
© 1998 - 2025 Eng. AhmedTofaha
Sarissa theme desing by iozcelik