إذا ندبت حظك وقلت : لقد هربت من شبح البرمجة سابقًا وها هو يطاردني في كل مكان حتى بعد أن تخصصت في الشبكات! إذا كان لك خبرات سابقة فاشلة في البرمجة فدعني أطمئنك بأنها في الشبكات اختيارية وليست إلزامية أما إذا كنت أول مرة تقرأ عن البرمجة فلا تقلق ودعنا نأخذ جولة متخصصة في هذا المقال عن البرمجة، هذا المقال سوف يأخذ بيديك خطوة بخطوة على سلم البرمجة حتى نصل إلى غايتنا وهي برمجة الشبكات.
لماذا يجب أن أتعلم البرمجة ؟
سوف أقتبس إجابة أحد مؤلفي كتب البرمجة عندما قال: ينبغي عليك تعلم البرمجة حتى لا تقع تحت رحمة مبرمج قام ببرمجة البرامج التي تستخدمها دون الأخذ في الاعتبار رأيك في البرنامج أو الإضافات التي تحب أن تراها أو إن كان حتى هذا البرنامج مفيد لك أم لا. بالضبط عندما تدخل مطعم لتطلب وجبتك فأول ما يسألك عليه النادل: ماذا تحب أن تأكل ؟ وتكون إجابتك بالطعام الذي تريده بالإضافات التي تحبها، هذا هو الواقع الذي نعيشه نحن مهندسي الشبكات، فنحن نستخدم عشرات الأدوات في عملنا لا نعرف كيف تمت برمجتها أو إن كان شكلها يعجبنا أو إن كانت الأداة يحصل بها مشاكل على جهازك فكل ما بيدنا هو الإنتقال إلى أداة أخرى تقوم بنفس الوظيفة ، لذلك يمكنك القول أننا مجرد مستخدمين.
لذلك يمكننا تعريف البرمجة بأنها أسلوب عمل لا غنى عنها في أي شيء تستخدمه فكل شيء مبرمج ومُعَد مسبقًا لتأدية الوظيفة المطلوبة منه .
عالم البرمجة كبير جدًا ويستحيل عليك معرفة كل أسراره وخباياه فمثلما يوجد في عالمنا مهندس شبكات ميكروسوفت أو مهندس شبكات سيسكو أو غيرهم تستطيع أيضًا أن تصنّف البرمجة من حيث الوظيفة أو الغرض منها فيوجد برمجة تطبيقات سطح المكتب أو برمجة تطيبقات الويب أو حتى برمجة تطبيقات الموبايل مثل الآيفون والآندرويد.
بإمكاننا تصنيف لغات البرمجة المختلفة عن طريق وظيفتها مثلما وضحت سابقًا فبإمكانك برمجة تطبيقات سطح المكتب عن طريق لغات مثل: C++, C#, Visual Basic, Java, …
وغيرهم من اللغات الأخرى التي تؤدي نفس الوظيفة مع اختلاف طريقة كتابتها وعملها، أما برمجة تطبيقات الويب تكون عن طريق لغات مثل: PHP, Java Script, HTML5, … وغيرها الكثير.
كمهندس شبكات يريد أن يبرمج أدواته بنفسه ينبغى عليك الأخذ في عين الاعتبار بعض النقاط :
- فى البداية تحديد المنصة التي سيعمل عليها برنامجك .. هل هو تطبيق سطح مكتب؟ بمعنى يتم تحميله من على الانترنت ثم تسطيبه على الجهاز المضيف ثم يبدأ في استخدامه، أم هو تطبيق ويب يعمل على الانترنت مباشرة عن طريق الوصول إلى عنوانه على الانترنت دون الحاجة إلى تحميله وتسطيبه على الجهاز المضيف؟
- إذا كان برنامجك سيعمل على سطح المكتب فينبغى عليك مراعاة منصات سطح المكتب المختلفة، بمعنى هل هو مخصص لنظام تشغيل ويندوز أم لينكس أم ماك؟
- لأن لكل نظام ملفاته الخاصة المفروض تواجدها في البرنامج عند برمجته حتى يستطيع العمل على النظام المضيف.
- نفس الشيء لو كان برنامجك عبارة عن تطبيق ويب فسوف يتم رفعه على سيرفر خاص على الانترنت فينبغي عليك معرفة مواصفات هذا السيرفر وهل يدعم لغة البرمجة التي كتب بها البرنامج أم لا.
- تحديد الشريحة المستهدفة من برنامجك، هل هو للمبتدئين أم لمتوسطي الخبرة أم للمحترفين؟ يُعَد تحديد شريحة المستخدمين بمثابة صمّام الأمان لبرنامجك حتى ينتشر بشكل أكبر وأوسع حيث أن تحديد درجة المستخدمين سوف تسهل عليك عملك في برمجة الأداة فتستطيع برمجة الأداة كما تراها أنت كمهندس شبكات ولكن يشترط وصولك للمرحلة التي تبني برنامجك لها ، بمعنى إذا كنت تبني برنامج للمحترفين فيبنغي عليك في المقام الأول أن تكون محترف حتى ترى البرنامج من وجهة نظرك أنت.
- تحديد المستخدمين أيضًا يوفر عليك مستقبلاً في حالة أردت أن تحدث في برنامجك بما تراه من تقنياتٍ وخواصٍ جديدة تمت إتاحتها للمستخدمين، فكل ما يلزمك هو إضافتها لبرنامجك على هيئة تحديثات دورية حتى يكون برنامجك كامل متكامل.
- مثلما حددت المستخدم يمكنك أيضًا تحديد الشركات إذا كان برنامجك يخدم الشركات فيمكنك تحديد برنامجك إذا كان للشركات الصغيرة أم المتوسطة أو حتى الكبيرة عن طريق إضافة خواص ومزايا أكتر في كل نسخة.
- برنامجك لن يكون له قيمة إذا لم تقم بتسويقة بشكل جيد .. قم بنشر نسخة مجانية لبرنامجك ولتكن للمستخدمين العاديين، وقم بنشر نسخة تجريبية للشركات ليقوموا بتجريب برنامجك ورؤية مدى كفاءته وإذا كان سيسهل عملهم أم لا وإذا أثبت كفاءة فسوف يطلبوا شراءه منك بأي ثمن طالما أن الناتج مضمون.
كثير من الشركات الناشئة بدأت ببرنامج واحد وبرمجته على أكمل وجه مما كان له الأثر فى شهرتها وتزاحم المستخدمين على برامجها وشراء مئات الرخص لأجهزتها أذكر من هذه الشركات شركة: Solar Winds
المتخصصة في برامج الشبكات ولا سيّما برامج إدارة الشبكات التي تثبت كفاءتها يومًا بعد يوم.
قليلةٌ هي الشركات التي لا تستخدم أحد أدوات سولار ويندز إن كان بشكل متقطع أو حتى بشكل مستمر،لأن الشركة استطاعت في سنين معدودة الاتساع بطريقة جعلتها متربعّة على عرش برامج إدارة الشبكات.
بعض الشركات العالمية أمثال سيسكو وجونيبر وفورتي نت يوجد بها فريق محترف من المبرمجين يقوم على عمل برامجهم ولكن لفائدتها الشخصية فقط بمعنى أنها برامج احتكارية لا تعمل إلا على الهاردوير الخاص بالشركة فقط ولا تصلح للعمل مع أي أجهزة أخرى.
شركة سيسكو توفر شبكة خاصة للمطورين تعطى لهم النصائح وتوجههم إلى ضرورة العمل على حلول برمجيات تخدم أجهزتها سواء كانت حلول حماية أو انتقال الصوت عن طريق الإنترنت.
ليس شرطًا عليك أن تكون مبرمج تطبيقات ضخمة تُستخدم من قبل الآلاف حول العالم، فيكفي فقط أنك قمت ببرمجة أداتك التي ترغب بها شاملة كل الخيارات التي كنت تبحث عنها في أي برنامج وتغنيك عن العمل الطويل كمثال: يمكنك التفكير في تطبيقٍ لسطح المكتب يساعدك في عمل إعدادات لأجهزة سيسكو عن طريق الواجهة الرسومية بدلاً من سطر الأوامر كل مرة.
فى الشكل الموضح قمت بعمل برنامج بسيط اسمه: Easy Cisco Configuration
عند فتحه يسألك عن اسم الجهاز الذي تود عمل إعدادات له ثم يسألك عن نوعه ،وبعدها يسألك عن الإنترفيسيز التي تريدها أن تكون متاحة في هذا الجهاز ثم بعد ذلك تضغط على زر Make Configuration الذي يولّد لك الإعدادات جاهزة تقوم بعمل نسخ لها ولصقها في الجهاز الحقيقي الذي تريد تطبيق هذه الإعدادات عليه.
هذا البرنامج يمكنك إتمامه بأي من لغات برمجة سطح المكتب طالما أن الفكرة موجودة وقمت بعمل تصميم لها وحدّدت الخيارات التي تريدها في برنامجك.
لعل الفائدة الأكبر للغات البرمجة عند مهندسي الشبكات تظهر عند برمجة برامج تعتمد على عناوين وبروتوكلات الانترنت مثل عمل برنامج شات داخلي في الشركة أو في الشبكة لبعض المستخدمين بعينهم مثل المديريين وبإمكانك أيضًا إضافة خاصية التحدث عن طريق الصوت والفيديو في هذا البرنامج لذلك ينبغي عليك فهم بعض مواضيع الشبكات فهمًا جيدًا أولا مثل مواضيع الـSubnetting, Ports and VOIP Protocols ومن ثم تبحث عن كيفية تنفيذها برمجيًا عن طريق إحدى لغات البرمجة.
مقال رائع للمبتدئين في عالم الشبكات ,, جزاكم الله خيراً
السلام عليكم
مقال اكثر من رائع كما عودتنا يا بشمهندس
لكن من وجهة نظرك ايه افضل لغة برمجة هتساعد مهندسى الشبكات وحضرتك بتستخدم لغة ايه؟
حضرتك كمان شايف مستقبل برمجة الشبكات فى الوطن العربى ممكن توصل لفين
بارك الله فيك
وبانتظار مقالاتك القادة والمزيد من القاء الضور على البرمجة اكثر
جزيت خيرا..
مع أن المجال هادا قليل ما ترى من يخوض فيه
لما الواحد حابب يدرس شبكات (سيسكو أو مايكروسوفت أو لينكس أو…)
لما الواحد حابب يدرس برمجة (Java أو #c أو ++C أو…)
أما أن تجد أناس يحبون كلا التخصصين فإنه قليل جدا ، لأن هذا المجال يحتاج الخبرة في كلا المجالين (الشبكات والبرمجة)
والواحد يادوب لما ياخد الخبرة في مجال واحد لأنه هياخد وقت كتييييييييييييييييييييييير..
هذا المقال وجدته في عرب هاردوير . من السارق؟
جزاك الله خير اخي المهندس احمد على هذا المقال الجيد .. ونامل ان يكون بداية لتطوير او خلق برامج جديدة ..
فمثلا برمجة او اعداد برنامج يقوم بعمل VPN او ربط البرنامج البسيط الذي ذكر بالمقال باجهزة برامج المحاكاة او برامج حقيقية
نعم في المستقبل ستزيد اهمية واستخدام البرمجة في كافة الجوانب .. فمثلا برمجة صفحات الوب بداخل اجهزة سيسكو مثلا وعمل كستمايزن للصفحات وغيره ..
http://www.facebook.com/alarabicomputer
مشكور على المقال
من وجهة نظري ، أرى انه لا يوجد لغة مناسبة للشبكات سوى ++C
هل في مجال تعطينا كود برمجي صغير لعمل خاصية معينة في الشبكة ؟ معرفة عدد الاجهزة الموجودة مثلا
او على الاقل ، النسخة التجريبية لبرنامجك من فضلك
أخوي أحمد أكيد سمعت عن محاكيات الشبكات … ماذا تقول عن NS2 ؟؟ Network Simulator 2
أحب أن أعرف ايضا ماهي قاعدة البيانات الملائمة أثناء برمجة تطبيقات الشبكات ؟؟
برنامج NS2 ؟؟ Network Simulator 2 ممتاز جدا وممكن الواحد يستفييد منه في امور كثييرة .. ولكن احب ان نلفت انتباه الاخوة ان برنامج OPNET فيه امكانيات كثيييرة اي يمكن وصول المهندس الى مراحل البروسس اي استخدام لغة C/C++ وللمزيد حول هذا الموضوع يمكن الاطلاع على ثلاث مقدمات قيمة ومثال عملي على الرابط http://alarabicomputer.wordpress.com/opnet-3
هذا ولكم جزيل الشكر على مجهودات الجمييع ..
مقال اكثر من رائع بش مهندس احمد واتمنى لك مزيداً من التقدم والتطور علمياً وعملياً .
بس انا عندي سؤال عن NS2 انا حملته عندي في الجهاز على نظام LINUX ubuntu 12.04 وكنت عاوز اسوي Simulation لنظام RFID مين فيكم بيقدر يساعدني وله جزيل الشكر . شكرا للجميع .
جذلك الله خيرا على هذا الموضع المفيد جدا بنسبة لية لانى دة هدفى فى علوم الحاسب ان اكون مبرمج شبكات
السلام عليكم لدي بحث بعنوان monitoring system based on ir sensor وانا ابحث عن محاكي يلبي احتياجات البحث حيث يجب ان يدعم 802.15.4 zigbee ويدعم متحسسات ir وكامرات الواير ليس حيث الفكرة البحث ان اعمل نظام مراقبة في منطقة out dour حيث اقسم المنطقة الى خلايا عند حافة هذه الخلايا متحسسات ال ir عندما يحاول متطفل العبور المتحسس سوف يرسل اشارة الى محطة المراقبة التي هي عبارة عن حاسوب ارسال الاشارة عن طريق ieee 802.15.4zigbee الحاسوب بدورة سوف يعطي اشارة لكي تعمل الكامرة في تلك الخلية التي بدورها سوف تنقل فديو الى الحاسوب
عندما يتحرك المتطفل الى خلية مجاورة قاطعا المتحسس سوف يرسل اشارة للحاسوب الذي سوف يطفىء الكامرة في الخلية رقم واحد ويشغل الكامرة في الخلية رقم 2 وبهذا نكون قللنا الطاقة بتقليل وقت تشغيل الكامرة
اخواني بحكم خبرتكم اي محاكي يلبي حاجتي ويتميز بالمرونة والسهولة علما ان هذه هي المرة الاولى لي باستخدام المحاكي شكرا جزيلا
السلام عليكم انا معنديش اى خبرة فى البرمجة وماعرفش يعنى ايه برمجة وانواعها ولكن كنت عايز احترف مجال البرمجة فهل من الممكن البدء من الاول الى الاحتراف ولا لابد من وجود الخبرة الجامعية او الدراسية حتى يتم العمل فى ذلك المجال وبعدين عايز اعرف الفرق بين البرمجة العادية وبرمجة قواعد البيانات وبرمجة الويب ومن اى لغة ابدا وهل من الممكن البدء بلغة اوركل ولا الفجوال بيسك دوت نت ولا اعمل ايه بالضيط ارجو المساعدة وما هو افضل مركز فى القاهرة متخصص فى تعليم البرمجة لمن هم تحت مستوى الصفر وبعتذر على الاطالة…….
اخ مصطفى ينبغي البدء ببرمجة الaccess ومن ثم الاوراكل
السؤال الذى يطرح نفسه ما هى اللغات المطلوبه لكى اصبح مبرمج شبكات ؟
جزيتم خيرا
بارك الله للك