how to start
كلنا عندنا أفكار أكثر من رائعة ولكن عندما يأتي التنفيذ نتكاسل أو نستسلم بسهولة.
القصة من البداية
عندك مشروع هيكسر الدنيا و عرضت فكرتك على بعض العملاء اللي المشروع هيخدمهم وعجبتهم الفكرة جدا
فكرت هتبدأ ازاي معايا فكره ناجحه هتحقق ارباح كبيره .
لسه مبدأتش التنفيذ مستني إيه ؟
طيب يلا نبدأ website طيب يلا نبدأ بس استني هيا الفكرة عبارة عن ايه
وتيجي المفاجأة أنا مش عارف هيدأ ازاي؟
هستخدم أي لغة برمجة
• هستخدم أي framework
• هستخدم أي داتا بيز
• هستخدم أي hosting provider إلخ…..
عندي اختيارات كتير ولازم اختار الاسرع في عملية development وكمان لازم أضع في الاعتبار الكفاءة .
الحماس بدأ يقل وممكن بعد فتره صغيرة تموت الفكرة
بس أنا مشتت بين لغات كتير مش عارف الأفضل
الحل : استخدام لغة واحدة
ازاي لغه واحده هتحل المشكله ؟
افترض معايا ان فعلا في لغه واحده هتحل المشكله وهي JavaScript
شوف ده
Full Stack Paradigm
من الشكل اللي قدامي أقدر ابني باستخدام لغة واحدة full feature web application
ومش بس جافا سكربت بتستخدم في server , client بتستخدم أيضا في building , testing ,templating
طيب جميل هبدأ استخدمها وخلاص مشكلتي اتحلت let’s put javascript on the server
استني هل فعلا جافا سكربت هي الحل ؟
مممممم مش عارف
طيب تعالى معايا نشوف هل ممكن تحقق كل اللي انت عاوزه ولا لأ
نرجع بالزمن شوية
سنه 1998 كان معطم مطورين الويب بيستخدموا perl ومع ظهور الجافا سكربت client side تغيرت web server technology
لتشمل الكثير من اللغات
php , jsp , .net ,ruby ,python
مبرمجين بدأوا يدركوون أنا استخدام لغة برمجة لل server ولغة برمجة لل client أمر معقد بعض الشئ ومن هنا ظهرت المحاولات الأولى : لعمل compiling ل client component مكتوبة بجافا سكربت ولكن فشلت المحاولة ودي بعض المحاولات :-
• ASP MVC replacing ASP.NET web forms
• GWT arguably being replaced in the near future by Polymer
فشلت طيب خلاص أشوف حاجة تانية استنى بس
بعد فشل المبدأي للفكرة إلا أنها ما زالت فكرة عظيمة وهي استخدام لغة واحدة client , server
وكمان لو جافا سكربت اللي تعتبر من اللغات سهلة التعلم .
في الحقيقة :
أول ميلاد للجافا سكربت ك server side في Netscape Enterprise Server ولكن اللغة لم تكن جاهزة في ذلك الوقت للاستخدام . ولكن بعد سنوات من المحاولات والاخطاء ظهرت node.js
ولكن لم تكن الميزة الوحيدة هي وضع جافا سكربت على السيرفر ولكن ايضا تطوير استخدام non-blocking programming
وده ببساطة
في بعض العمليات التي تستغرق وقت طويل في التنفيذ مثال :-
• file access
• network communication
• database operations
كل ما عليه سوي ان يقوم بعمل request ويضع جانبا إلى أن تنتهي العملية ويصبح هناك نتائج ويتم استرجاع النتائج باستخدام callback function
مش فاهم ؟
مثال صغير
في الحاله دي السيرفر هيستني العملية لما تخلص وهيتجاهل أي request تانية وهنشوف اسم المستخدم وبعدين done
لكن مع الحل السحري اللي قدمته node.js السيرفر مش هيستنى هيستقبل اي request تاني
وهيكون ناتج الكود اللي قدامك ده done وبعدين لما العملية تتنفذ اسم المستخدم هنشوف الناتج في console
ومن هنا بدات تاخد node.js شهرة كبيرة
طيب ثواني الفكره مش جديده ليه node.js أخدت الشهره دي ؟
ببساطة لأنها استخدام non-blocking programming بطريقتين :-
callback , event-loop
بس callback موجودة في لغات كتير
لكن لو فكرت في event-loop لو حبيت تستخدمها في بايثون مثلا هتحتاج لمكتبات زي Tornado
لكن تخيل ان كل الخصائص دي موجوده في اللغه نفسها .
شكرا لل non-blocking programming
طيب انا قررت خلاص هستخدم جافا سكربت ابدأ ازاي استخدم full stack java script ؟
ده ان شاء الله اللي هنعرفه في المقال القادم .
+1 waiting for the next article isA
ان شاء الله 😀