مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو بتكتب prog في صندوق البحث وفي 0.4 ms بتظهرلك 10 اقتراحات بدأ كلهم بـ prog، ده مش لأن السيرفر بيمر على كل الكلمات. ده هيكل بيانات اسمه Trie. مقال للمبتدئ بمثال القاموس، تعريف علمي دقيق لـ Prefix Tree، كود Python 3.12 شغّال على 100 ألف كلمة من NLTK، أرقام مقاسة بـ timeit (78.40 ms مقابل 0.41 ms)، 3 استخدامات حقيقية (autocomplete, spell checker, IP routing)، الفخ الكلاسيكي، trade-offs الذاكرة، ومتى لا تستخدمه فيها.
لو حاولت تقرا ملف log حجمه 10 جيجا بـ readlines() السيرفر بياكل 10 جيجا رام في 4 ثواني وبيقع بـ MemoryError. Generators بكلمة واحدة yield بتخلّيك تقرا نفس الملف بـ 8 ميجا رام بس. مقال للمبتدئ بمثال المخبز، تعريف علمي من PEP 255، كود Python 3.12 شغّال يقرا ملف 10GB، أرقام مقاسة بـ tracemalloc، 3 استخدامات إنتاج (logs، API streaming، pipelines)، الفخ الكلاسيكي للاستهلاك مرتين، trade-offs، وحالات لا تستخدم generators فيها.
لو الـ API بتاعك بيرجّع 20 صف من جدول 5 ملايين باستخدام OFFSET 100000، الـ query بياخد 1.8 ثانية. Cursor pagination بينزّل ده لـ 12 مللي ثانية ثابتة. مقال للمستوى المتوسط بمثال الكتاب والـ bookmark للمبتدئ، تعريف علمي دقيق لـ keyset pagination، كود PostgreSQL 16 شغّال على index مركّب (created_at, id)، أرقام مقاسة فعلياً على 5 ملايين صف، trade-offs واضحة، وحالات لا تستخدمه فيها مع المصادر الرسمية.
لو سيرفر Python بتاعك بيقع OOM لمّا بتفتح ملف لوج 50GB، المشكلة مش في الـ RAM. سطر واحد اسمه yield بينزّل استهلاك الذاكرة من 50GB لـ 8MB بدون ما يمسّ السرعة. شرح للمبتدئ بمثال الشيف، تعريف علمي من PEP 255، كود Python 3.12 شغّال، أرقام مقاسة على ملف 52GB، أخطاء شائعة، trade-offs، وحالات لا تستخدمها فيها.
لو fibonacci(40) عندك بياخد ثانية ونصف، المشكلة مش الـ CPU. نفس الرقم بيتحسب 165 مليون مرة. سطر واحد اسمه Memoization بينزّل الزمن لـ 0.3 مللي ثانية. شرح للمبتدئ بمثال المكتبة، تعريف علمي، كود JavaScript شغّال على Node 22، أرقام مقاسة، trade-offs الذاكرة، وحالات لا تستخدمه فيها.
لو search box بتاعك بيستعلم على DB لكل حرف، الـ p95 latency بيعدّي 200ms على قاموس 5 ملايين كلمة. Trie في الذاكرة بينزّل ده لـ 80 ميكروثانية، 10000x أسرع. مقال للمتوسط بمثال خزانة الكروت للمبتدئ، تعريف علمي لـ rooted tree، كود Python 3.12 شغّال على __slots__، أرقام مقاسة بـ timeit، 4 استخدامات حقيقية، فخ استهلاك الذاكرة، trade-offs، وحالات لا تستخدمه فيها مع المصادر الرسمية.
لو search box بيشتغل بـ LIKE 'q%' على 500 ألف صف، كل ضربة كيبورد بتدفع 4 مللي ثانية في الـ DB. Trie بينزّل الزمن ده لـ 18 ميكروثانية بدون أي DB call. شرح للمستوى المتوسط بمثال القاموس الورقي للمبتدئ، تعريف علمي دقيق للـ k-ary tree و prefix search في O(L)، كود Python 3.12 شغّال في 30 سطر، أرقام مقاسة فعلياً على 500 ألف كلمة، trade-offs الذاكرة، وحالات لا تستخدمه فيها.
لو search box بياخد 80 مللي ثانية يرجّع 10 اقتراحات من 5 مليون كلمة، المشكلة مش السيرفر. المشكلة إنك بتستخدم LIKE 'prefix%' بدل Trie. شرح للمستوى المتوسط بمثال درج المكتبة للمبتدئ، تعريف علمي دقيق لـ Retrieval Tree، كود Python 3.12 شغّال بـ __slots__، أرقام مقاسة بـ timeit على 5 مليون اسم منتج، trade-offs الذاكرة (480MB)، وحالات لا تستخدمه فيها مع Elasticsearch وBK-Tree.
لو function بتاعتك بتلاقي اسم في 1000 صف في ميلي ثانية وبتقع على 10 مليون، المشكلة مش السيرفر — المشكلة إنك ما حسبتش Big O. شرح للمبتدئ بمثال دفتر التليفون، تعريف علمي، 5 درجات تعقيد أساسية، كود Python شغّال يقيس فرق 31,600 ضعف بين Linear و Binary Search، أرقام واقعية، trade-offs، ومتى Big O ما بيهمش.