مقالات عملية مرتبة حسب المجال والمستوى، اختر المجال المناسب واقرأ من مستوى مبتدئ إلى محترف.
لو كودك بيرد في 30ms على 500 صف وبيقعد 8 ثواني على 50 ألف صف، المشكلة مش السيرفر. المشكلة في Big O بتاع الخوارزمية. شرح للمبتدئ بمثال دفتر التليفون، تعريف علمي دقيق، كود Python شغّال يقارن O(n²) مع O(n)، أرقام timeit مقاسة، trade-offs الذاكرة، وحالات لا تشغل بالك بـ Big O فيها.
لو عميلك ضغط زرّ الدفع مرّتين بسبب بطء النت، البنك ممكن يخصم منه المبلغ مرّتين. Idempotency Key بيخلّي السيرفر يرفض النسخة الثانية ويرجّع نتيجة الأولى — بسطر واحد على قاعدة البيانات. مقال للمستوى المتوسط بمثال شركة دفع، تعريف علمي، كود Express + PostgreSQL شغّال، أرقام إنتاج، trade-offs، وحالات ما تستخدمهوش فيها.
لو فتحت Console وكتبت 0.1 + 0.2 وجالك 0.30000000000000004، ده مش غلطة في JavaScript. ده طبيعة الـ Floating Point في كل لغة برمجة. شرح للمبتدئ بمثال المسطرة، تعريف علمي لـ IEEE 754، كود JavaScript و Python شغّال، حلول عملية لمشكلة المقارنة وحسابات النقود، trade-offs، وحالات لا تستخدم فيها decimal libraries.
لو كتبت 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.