[Arabic] Demystifying NodeJS's Philosophy
ماتيجوا كده ندردش شوية عن Nodejs بالعربي والنهارده ممكن نتكلم عن ال Philosophy behind it
طيب أولََا اي تكنولوجي ظهرت بتبقى عندها Philosophy معينه او خلينا نقول مجموعه من ال principles أو ال guidelines اللي بتكون متعارف عليها من ال community، والحاجات دي مش مجرد حاجات كده والسلام، ده بيأثر تدريجيا ع ال evolution بتاع التكنولوجي وازاي ال applications هتتبنى
كمثال الـ guidelines بتاع Nodejs كانت نابعه من ال creator بتاعها Ryan Dahl ومن الناس اللي بت contribute فيها since انها Open source بل كمان من JavaScript philosophy
الـ Runtime بتاع Nodejs ف الأساس مبني ع فكرة بسيطة جدََا وهيا إننا يبقى عندنا smallest possible set of functionalities وهنسيب الباقي لل community أو ال ecosystem إنه ي experiment solutions بقى ف ال scope بتاعه ده بس
وده خلى بدل ما يكون عندي solution ضخم جدََا ويكون كل حاجه built-in وهواجه مشاكل كتير ف ال maintainability، قالك لأ، خلينا يكون عندنا core set of functionalities والباقي لل community ي experiment مع نفسه وده أدى ل impact كبير جدََا و evolution للـ ecosystem ككل.
حاجة مهمة بردو وهيا Keep the modules as small as possible وده احد اهم المبادئ ف Nodejs مش بس انك تخلي ال module بتاعك صغير من ناحية الـ code، بل اهم اكتر من ناحيه ال scope.
ال scope ده مأخوذ من Unix principles: - Small is beautiful - Make each program (in our case -- module) do only one thing -- https://en.wikipedia.org/wiki/Unix_philosophy
فكرة إن ال modules should be as small as possible بيخلي ال module سهل جدا للفهم والاستخدام، وهيكون more maintainable and testable ونقطه مهمه تانيه وهو هي drive فكرة ال DRY إن ال small modules can be reused and shared -- https://en.wikipedia.org/wiki/Don%27t_repeat_yourself
حاجه تانيه ال modules جوا Nodejs بت expose بس minimal set of functionalities لأن اغلب الوقت ال User بتاع ال Component دي مهتم بس ب limited and focused set of features ومش محتاج ي extend او يدخل ف حاجات advanced underneath the hoods
أغلب الـ Concepts اللي ف Nodejs هتلاقيها ماشيه تحت KISS pattern - Keep it Stupid Simple ودي أحد أهم المبادئ عمومََا إننا دايما ن Seek for simplicity وف بعض الوقت زي ما Rob pike قال: Simplicity is complicated
بس ف نقطه نذكرها هنا وهيا بعض ال concepts اللي موجوده بتحاول انها ت replicate ال Real world بدون ما تبدأ ت consider the imperfection and complexity of the real world itself ف كل اللي بنحاول نعمله اننا نعمل approximation لل real world وليس full replica
ف هنا النصيحه إنه Seek for simplicity, for correctness and not for perfectionism first. -- Premature optimization is the root of all evil - Donald Knuth. -- Don't optimize until you profile -- http://wiki.c2.com/?ProfileBeforeOptimizing
المصادر:
- Nodejs Design Patterns Third edition.