اذا كنت تعتقد ان الشبكات هي مجال Hardware اخر بعيد عن البرمجة فهذا اعتقاد خاطيء. اجهزة الشبكات المختلفة مثل الRouters و الSwitches ماهي الا كمبيوترات عادية بانظمة معروفة مثل Linux و الجزء الأهم فيها و الأكبر هو السوفتوير. لكنها كهاردوير هي Optimized لهذا الغرض.
لاحظ مثلا انه بتقنيات مثل Docker او بالVMs ممكن تبني شبكة متكاملة داخل جهاز كمبيوتر عادي وفيها كل خصائص الشبكات مثل الRouting و غيره. ممكن تسمي الNetwork programming بأم التقنيات. الNetwork جزء مهم من انظمة التشغيل.
موضوع الNetworking عميق و متشعب. هناك كتاب اسمه Understanding Linux network Internals فوق 1000 صفحة. لكن لا نحتاج قراءته لنبني برامج حتى لو كانت محرك قاعدة بيانات جديد. ممكن تبدأ بكتاب مخصص عن برمجة الشبكات بلغة البرمجة اللي تستخدمها.
المواضيع التي تحتاج ان تتعلمها قريبة من ما يدرسه مهندسي الشبكات , مثل الSocket و ال Port و بروتوكولات مثل الTCP و ما بني فوقها من بروتوكولات مثل HTTP او مافوق كالgRPC. لكنك هنا ستراها من زاوية مختلفة.
اذا اردت التعلم ابدأ ببرنامج Chat بسيط , تعلم من خلاله كيف تفتح Socket من نوع TCP و كيف تخليه يقبل Client واحد او اكثر و كيف يتعامل مع الMulti threads.
البيانات بتوصلك binary و تحولها لtext في الchat لكن لبرامج اخرى قد تحولها لأي شيء اخر تريده.
البيانات بتوصلك binary و تحولها لtext في الchat لكن لبرامج اخرى قد تحولها لأي شيء اخر تريده.
بعدها قرر مالذي تريد عمله بالبيانات , و كيف تخطط تتعامل معها, هل تحتاج Array او Stack او Queue حسب الحالة.
مثلاً اذا برنامج تشات او Message broker انت تحتاج Queue او Priority Queue اذا عندك برنامج تتبع GPS و تحتاج تعرف اخر موقع هنا تحتاج Stack.
مثلاً اذا برنامج تشات او Message broker انت تحتاج Queue او Priority Queue اذا عندك برنامج تتبع GPS و تحتاج تعرف اخر موقع هنا تحتاج Stack.
اذا داتا مبعثرة وتحتاج توصل لها بسرعة انت هنا تحتاج Tree او ممكن Graph او HashTable. و هذي Data structures توفرها اغلب اللغات جاهزة. او تستخدم قاعدة بيانات مناسبة.
اذا فكرنا في بناء Message Broker لا نقول كـ كافكا او Rabbit MQ لكن شيء بسيط مثل Mosquitto فتحتاج بالاضافة الى ماسبق أن تتعلم بعض الDesign patterns
مثل الObserver و ممكن الCommand و تحتاج تحدد الطريقة الامثل لتخزين البيانات كما ذكرت في الاعلى.
مثل الObserver و ممكن الCommand و تحتاج تحدد الطريقة الامثل لتخزين البيانات كما ذكرت في الاعلى.
دائماً البرامج التي تظهر معقدة تحتاج لتحليلها الى اجزاء عامة منفصلة بورقة وقلم فكر ماذا يمكن ان يحدث بداخل البرنامج بين تلك الاجزاء و كيف تتواصل مع بعضها. لاحظ ان اغلب البرامج التي احدثت Impact وصدى خصوصا في عصر الCloud هي برامج شبكات. هي التقنية الحقيقية وليس مجرد تطبيقات.
جاري تحميل الاقتراحات...