مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو كتبت setTimeout(callback, 0) واتفاجأت إن السطر اللي بعده اتنفذ الأول، المشكلة مش غلطة في الكود. دي طريقة JavaScript الطبيعية. شرح للمبتدئ بمثال الطاهي المنفرد، تعريف علمي دقيق لحلقة الأحداث، كود JS قابل للنسخ، أرقام مقاسة على Node 24، trade-offs، وحالات لا تستخدم فيها setTimeout(0) أصلاً.
لو شفت دالة فيها سطر بيستدعي اسم الدالة نفسها واتلخبطت، Recursion مش معقد. مقال للمبتدئ بمثال دمى ماتريوشكا، تعريف علمي دقيق، كود Python شغّال، أرقام call stack مقاسة، سيناريو شجرة الملفات، trade-offs، ومتى لا تستخدمه فعلاً.
لو سيرفر Node.js بيقع OOM لما يبعت ملف 5GB، الذاكرة بتقفز 4GB، والـ stream شكله شغال — المشكلة إنك بتتجاهل backpressure. شرح للمحترف بمثال للمستوى المتوسط، تعريف علمي، كود قبل وبعد قابل للنسخ، أرقام مقاسة على Node 22.13، trade-offs، ومتى لا تستخدم streams أصلاً.
لو دالة بتعمل allocate لـ struct صغيرة في 0.4 نانوثانية ودالة تانية بتعمل نفس الـ struct في 24 نانوثانية، الفرق مش CPU. الفرق إن وحدة بتقعد على Stack والثانية بتروح Heap. مقال للمستوى المتوسط بمثال المطعم، تعريف علمي دقيق، كود Go شغّال، أرقام قياس فعلية، escape analysis، وtrade-offs واضحة.
لو سكربت Python بتاعك بيقع OOM لما بتقرا ملف logs بـ 8GB أو CSV بـ 10 مليون صف، المشكلة مش حجم البيانات. المشكلة إنك بتحمّلها كلها في الذاكرة. yield بيوفر 95% من الذاكرة بتعديل سطرين. شرح للمستوى المتوسط بمثال بائع الكنافة، تعريف علمي دقيق لـ lazy evaluation، كود Python شغّال، أرقام tracemalloc قبل وبعد، pipeline من generators، trade-offs، وحالات ما تستخدمهوش فيها.
لو الـ Borrow Checker في Rust لسه بيخوّفك، الفكرة أبسط مما تتخيل: 3 قواعد بتمنع 70% من بَجز الذاكرة قبل الـ compile. مقال للمستوى المتوسط بمثال للمبتدئ، تعريف علمي دقيق، كود Rust شغّال، أرقام Microsoft و Google و Android، trade-offs، وحالات لا تختار فيها Rust.
لو بحثت في list بمليون عنصر هتنتظر 30ms على الأقل. dict في Python بيرد نفس النتيجة في أقل من ميكروثانية. الفرق ليس CPU، الفرق هيكل بيانات اسمه HashMap. شرح للمبتدئ بمثال دفتر التليفون، تعريف علمي، كود Python شغال، أرقام مقاسة، trade-offs، ومتى لا تستخدمه.
لو endpoint الـ autocomplete بياخد 380ms على dataset مليون صف، Trie data structure بترد نفس النتائج في 4ms بدون لمس قاعدة البيانات. شرح للمستوى المتوسط بمثال القاموس، تعريف علمي دقيق، كود Python شغّال، أرقام قياس فعلية، trade-offs على الذاكرة، وحالات ما تستخدمهوش فيها.
لو 60% من lookups تطبيقك بترجع "مش موجود"، Bloom Filter بيرد نفس الإجابة في 50 ميكروثانية بذاكرة أقل بـ 70 ضعف من set عادي. مقال للمستوى المتوسط بمثال البوّاب، تعريف علمي دقيق، كود Python شغّال، أرقام before/after، وحالات لا تستخدمه فيها.