الوحدة 1: مقدمة في البرمجة والحاسب

الأساسيات النظرية والعملية للانطلاق في عالم البرمجة

المدة: أسبوعان 6 ساعات نظرية 6 ساعات عملية

أهداف الوحدة

بنهاية هذه الوحدة، سيكون الطالب قادرًا على:

  • فهم المفاهيم الأساسية للبرمجة وأهميتها في علوم الحاسب والأمن السيبراني.
  • التمييز بين أنواع لغات البرمجة (الآلة، التجميع، عالية المستوى) وفكرة المترجمات والمفسرات.
  • معرفة ميزات لغة الجافا وتاريخها ودورها في التطبيقات الأمنية.
  • استخدام بيئة التطوير Eclipse لإنشاء وتنفيذ أول برنامج جافا.
---

1. مفاهيم أساسية في البرمجة

أ. ما هي البرمجة؟

التعريف: البرمجة هي عملية كتابة تعليمات أو أوامر (تُعرف باسم الأكواد) بلغة يفهمها الحاسب، بهدف توجيهه لتنفيذ مهام محددة أو حل مشكلة معينة. إنها الطريقة التي "نتحدث" بها إلى الحاسوب لنجعله يقوم بما نريده.

العلاقة بالأمن السيبراني:
  • بناء أدوات الحماية: تُستخدم البرمجة بشكل أساسي في بناء أدوات وأنظمة الحماية المختلفة، مثل جدران الحماية (Firewalls)، أنظمة كشف التسلل (Intrusion Detection Systems)، وأنظمة التشفير.
  • اكتشاف الثغرات: فهم كيفية عمل البرامج من خلال أكوادها يساعد خبراء الأمن السيبراني في تحليل وتحديد الثغرات الأمنية المحتملة، مثل ثغرات Buffer Overflow (تجاوز سعة المخزن المؤقت) و SQL Injection (حقن تعليمات SQL الخبيثة).

ب. البيانات وأنواعها

البيانات هي المادة الخام التي يتعامل معها البرنامج، ولكل نوع من البيانات طريقة معالجة وتخزين خاصة به. فهم أنواع البيانات ضروري لكتابة أكواد فعالة وآمنة.

نوع البيانات الوصف مثال في الجافا
عدد صحيح (Integer) قيم رقمية بدون كسور أو فواصل عشرية (أعداد كاملة). int age = 25;
عدد عشري (Floating-Point) قيم رقمية تحتوي على فاصلة عشرية (أعداد حقيقية). double salary = 1500.50;
نص (String) سلسلة من الأحرف أو الكلمات أو الجمل. تُكتب بين علامتي اقتباس مزدوجة " ". String name = "Ali";
منطقي (Boolean) قيمتان محتملتان فقط: true (صحيح) أو false (خطأ). boolean isSecure = true;
تطبيق أمني:
  • استخدام نوع البيانات boolean (منطقي) للتحقق من صحة كلمة المرور: هل هي قوية؟ هل تطابق الشروط؟
  • استخدام نوع البيانات String (نص) لمعالجة نصوص التشفير وفك التشفير، حيث يتم التعامل مع البيانات المشفرة كسلاسل نصية.
---

2. لغات البرمجة والمترجمات

لكي يتفاعل الحاسب مع البشر، تم تطوير لغات برمجة مختلفة تتدرج في مستواها من الأقرب إلى الحاسوب إلى الأقرب إلى لغة الإنسان.

أ. أنواع لغات البرمجة

النوع الميزات الاستخدام في الأمن السيبراني
لغة الآلة (Machine Language)
  • تتكون من أكواد ثنائية (0 و 1) يفهمها المعالج مباشرة.
  • صعبة القراءة والكتابة والبرمجة من قبل البشر.
  • تُستخدم في الهجمات منخفضة المستوى (مثل هجمات الـ Exploit التي تستهدف نقاط ضعف مباشرة في نظام التشغيل أو الأجهزة).
  • فهمها ضروري لتحليل كيفية عمل البرمجيات الخبيثة على مستوى قريب من العتاد.
لغة التجميع (Assembly Language)
  • أقرب إلى لغة الآلة، لكنها تستخدم رموزًا مختصرة (Mnemonics) مثل MOV (للنقل)، ADD (للجمع) بدلاً من 0 و 1.
  • كل أمر في لغة التجميع يقابله أمر واحد في لغة الآلة.
  • تُستخدم بشكل مكثف في تحليل البرمجيات الخبيثة (Malware Analysis) لفهم سلوك الفيروسات وبرامج التجسس.
  • ضرورية للهندسة العكسية (Reverse Engineering) للبرامج.
لغات عالية المستوى (High-Level Languages)
  • سهلة القراءة والكتابة والفهم من قبل البشر (تشبه اللغة الطبيعية).
  • تحتاج إلى مترجم (Compiler) أو مفسر (Interpreter) لتحويلها إلى لغة الآلة.
  • أمثلة: جافا (Java)، بايثون (Python)، سي (C)، سي شارب (#C).
  • تُستخدم في تطوير أنظمة أمنية معقدة (مثل أنظمة إدارة الهوية والوصول، تطبيقات الويب الآمنة، أدوات الفحص الأمني).
  • تتيح تطويرًا أسرع وأكثر أمانًا مع وجود مكتبات جاهزة للأمان.

ب. المترجم (Compiler) مقابل المفسر (Interpreter)

لتحويل الكود الذي تكتبه بلغة عالية المستوى إلى شيء يفهمه الحاسوب (لغة الآلة)، نحتاج إلى أدوات خاصة: المترجمات والمفسرات.

الميزة المترجم (Compiler) المفسر (Interpreter)
آلية العمل يترجم الكود المصدري كاملاً إلى لغة الآلة (ملف تنفيذي) قبل التنفيذ. يترجم الكود المصدري سطرًا بسطر وينفذه مباشرة أثناء الترجمة.
السرعة أسرع في التنفيذ بمجرد الترجمة (لأن الترجمة تتم مرة واحدة). أبطأ في التنفيذ (لأن الترجمة تتم مع كل تشغيل للبرنامج).
الأمان واكتشاف الأخطاء يُكتشف الخطأ في الكود قبل التنفيذ. إذا كان هناك خطأ، لن يتم إنشاء الملف التنفيذي. قد يتوقف البرنامج عند السطر الذي يحتوي على خطأ أثناء التنفيذ.
مثال javac (مترجم الجافا) الذي يحول كود الجافا إلى بايت كود (Bytecode). مفسر بايثون (Python Interpreter)، مفسرات JavaScript في المتصفحات.
لماذا جافا تستخدم المترجم (جزئيًا)؟

جافا هي لغة "مُترجمة ومُفسرة" في نفس الوقت. الكود المصدري للجافا (.java) يُترجم بواسطة javac إلى Bytecode (.class). هذا الـ Bytecode هو الذي يتم تفسيره أو ترجمته لاحقًا بواسطة Java Virtual Machine (JVM) على أي نظام تشغيل. هذه العملية تساعد في:

  • الأمان: اكتشاف العديد من الأخطاء المنطقية والنحوية قبل التشغيل الفعلي على الجهاز النهائي.
  • المنصة المستقلة: الكود المترجم (Bytecode) يعمل على أي نظام تشغيل يحتوي على JVM.
---

3. مقدمة في لغة الجافا

تُعد جافا واحدة من أكثر لغات البرمجة شيوعًا وقوة في العالم، وتتميز بتاريخ طويل ودور محوري في العديد من التطبيقات.

أ. تاريخ الجافا

  • 1991: بدأت جافا مشروعًا داخليًا في شركة Sun Microsystems بقيادة جيمس جوسلينغ (James Gosling)، بهدف تطوير لغة للأجهزة الإلكترونية الاستهلاكية.
  • 1995: تم إصدار أول نسخة رسمية من جافا للجمهور، وسرعان ما اشتهرت بشعارها "Write Once, Run Anywhere" (اكتب مرة واحدة، شغل في أي مكان)، بفضل قدرتها على العمل على أنظمة تشغيل مختلفة.
  • 2010: استحوذت شركة Oracle Corporation على Sun Microsystems، ومنذ ذلك الحين أصبحت أوراكل هي المطوّر والمالك الرئيسي للجافا.
أهميتها في الأمن السيبراني:
  • تُستخدم جافا بشكل واسع في بناء تطبيقات الويب الآمنة واسعة النطاق، مثل الأنظمة المصرفية عبر الإنترنت، وتطبيقات التجارة الإلكترونية التي تتطلب مستويات عالية من الأمان.
  • تدعم جافا تشفير البيانات القوي والتوقيع الرقمي عبر مكتبات متخصصة مثل JCA (Java Cryptography Architecture)، مما يجعلها خيارًا ممتازًا لتطوير حلول أمنية.
  • العديد من خوادم التطبيقات (Application Servers) والمنصات الخلفية (Backend Platforms) المستخدمة في البنية التحتية لتطبيقات الويب والشركات مبنية على الجافا، مما يجعل فهمها ضروريًا لتأمين هذه الأنظمة.

ب. ميزات الجافا

ما الذي جعل الجافا قوية ومُعتمدة على نطاق واسع؟

الميزة التوضيح الفائدة الأمنية
كائنية التوجه (OOP - Object-Oriented Programming) منهجية برمجية تقوم على تنظيم الكود في كائنات (Objects) و كلاسات (Classes)، مما يسهل إعادة الاستخدام ويجعل الكود أكثر تنظيمًا ومرونة.
  • تسهيل بناء أنظمة معقدة ومنفصلة الوظائف، مثل أنظمة التحكم في الوصول (Access Control Systems) أو وحدات المصادقة (Authentication Modules).
  • تطبيق مبادئ التغليف (Encapsulation) لحماية البيانات الحساسة داخل الكائنات.
المنصة المستقلة (Platform Independent) برامج الجافا المترجمة (Bytecode) يمكن تشغيلها على أي نظام تشغيل يحتوي على بيئة تشغيل الجافا (JRE) أو الآلة الافتراضية للجافا (JVM)، سواء كان Windows، Linux، أو macOS. مثالية لتطوير أدوات أمنية أو تطبيقات حماية تعمل على منصات متعددة دون الحاجة لإعادة كتابة الكود لكل نظام تشغيل، مما يوفر الوقت والجهد في عمليات النشر والتحديث.
إدارة الذاكرة التلقائية (Automatic Memory Management) لا يحتاج المبرمج إلى إدارة الذاكرة يدويًا (مثل تحرير الذاكرة بعد الاستخدام)، حيث تتولى جامع القمامة (Garbage Collector) في JVM هذه المهمة.
  • تقليل فرصة حدوث ثغرات Memory Leaks (تسرب الذاكرة) أو Buffer Overflows التي تنشأ عادةً من سوء إدارة الذاكرة اليدوية في لغات أخرى مثل C/C++.
  • تحسين استقرار وأمان التطبيقات.
المكتبات الأمنية الغنية (Rich Security Libraries) تأتي جافا مع مجموعة واسعة من المكتبات المدمجة لدعم وظائف الأمن، مثل java.security و javax.crypto. توفير دعم جاهز وسهل الاستخدام لـ التشفير (Encryption)، التوقيع الرقمي (Digital Signatures)، المصادقة (Authentication)، وغيرها من الميزات الأمنية الأساسية، مما يقلل من حاجة المطورين لكتابة هذه الوظائف من الصفر.
---

4. الجانب العملي: إنشاء أول برنامج جافا

الآن، حان الوقت لتطبيق ما تعلمته نظريًا. سنقوم بإعداد بيئة العمل وكتابة أول برنامج لك بلغة الجافا.

أ. تحميل وتثبيت الأدوات

  • تنزيل JDK (Java Development Kit):

    يحتوي JDK على بيئة تشغيل الجافا (JRE) والمترجم (javac) والأدوات اللازمة لتطوير برامج الجافا. قم بتنزيله من موقع Oracle الرسمي:

    رابط تنزيل JDK
  • تثبيت Eclipse (بيئة تطوير متكاملة IDE):

    Eclipse هي بيئة تطوير شائعة ومجانية تدعم لغة الجافا، وتوفر أدوات قوية لكتابة الكود وتصحيحه وتنظيمه.

    رابط تنزيل Eclipse IDE
  • خطوات التثبيت: اتبع التعليمات على مواقع التنزيل لكل من JDK و Eclipse. تأكد من إعداد متغيرات البيئة (Environment Variables) لـ JDK بشكل صحيح لتتمكن من تشغيل الجافا من أي مكان.

ب. كتابة أول برنامج (Hello World)

برنامج "Hello World" هو التقليد المتبع لتعلم أي لغة برمجة جديدة. سيعرض هذا البرنامج ببساطة رسالة على الشاشة.

public class HelloWorld {
    public static void main(String[] args) {
        // طباعة رسالة ترحيب لطلاب الأمن السيبراني
        System.out.println("Hello, Cybersecurity Students!"); 
    }
}
شرح الكود:
  • public class HelloWorld: يُعرف "كلاس" (Class) باسم HelloWorld. الكلاسات هي اللبنات الأساسية للبرمجة كائنية التوجه في الجافا.
  • public static void main(String[] args): هذه هي "نقطة الدخول" أو نقطة البداية لتنفيذ أي برنامج جافا. عندما تشغل البرنامج، سيبدأ التنفيذ من هذا السطر.
  • System.out.println("Hello, Cybersecurity Students!");: هذا الأمر يقوم بطباعة النص الموجود بين علامتي الاقتباس المزدوجة على الشاشة، ثم ينتقل إلى سطر جديد.

خطوات العملية في Eclipse:

  1. افتح بيئة Eclipse IDE.
  2. من قائمة File، اختر New ثم Java Project.
  3. أدخل اسم المشروع (مثلاً: MyFirstJavaProject) ثم اضغط Finish.
  4. داخل مجلد المشروع، انقر بزر الماوس الأيمن على مجلد src، واختر New ثم Class.
  5. أدخل اسم الكلاس HelloWorld وتأكد من تحديد خيار public static void main(String[] args)، ثم اضغط Finish.
  6. ستقوم Eclipse بإنشاء ملف HelloWorld.java مع الهيكل الأساسي. اكتب السطر System.out.println("Hello, Cybersecurity Students!"); داخل دالة main.
  7. لتشغيل البرنامج، انقر بزر الماوس الأيمن على الملف في نافذة Project Explorer واختر Run As ثم Java Application، أو انقر على أيقونة التشغيل الخضراء في شريط الأدوات.
  8. ستظهر الرسالة "Hello, Cybersecurity Students!" في نافذة Console (المخرجات) في Eclipse.

ج. تطبيق أمني بسيط (التحقق من طول كلمة المرور)

كمثال أولي على الربط بالأمن السيبراني، سننشئ برنامجًا بسيطًا يتحقق من أن طول كلمة المرور المدخلة لا يقل عن 8 أحرف.

import javax.swing.JOptionPane; // لاستخدام نوافذ الحوار

public class PasswordChecker {
    public static void main(String[] args) {
        // طلب كلمة المرور من المستخدم عبر نافذة حوار
        String password = JOptionPane.showInputDialog("أدخل كلمة المرور:");

        // التحقق من طول كلمة المرور
        if (password.length() >= 8) {
            JOptionPane.showMessageDialog(null, "كلمة المرور آمنة!");
        } else {
            JOptionPane.showMessageDialog(null, "كلمة المرور قصيرة جدًا! يجب أن تكون 8 أحرف على الأقل.");
        }
    }
}
شرح الكود:
  • import javax.swing.JOptionPane;: هذا السطر يستورد مكتبة JOptionPane التي تسمح لنا بإنشاء نوافذ حوار بسيطة لإدخال وإخراج البيانات للمستخدم.
  • JOptionPane.showInputDialog(...): يعرض نافذة حوار تطلب من المستخدم إدخال نص.
  • password.length(): هي دالة مدمجة في كائنات String ترجع طول السلسلة النصية (عدد الأحرف).
  • if (condition) { ... } else { ... }: هذه جملة شرطية. إذا كان الشرط (طول كلمة المرور أكبر من أو يساوي 8) صحيحًا، يتم تنفيذ الكود داخل if. وإلا، يتم تنفيذ الكود داخل else.
  • JOptionPane.showMessageDialog(...): يعرض نافذة حوار تحتوي على رسالة للمستخدم.

هذا مثال بسيط يوضح كيف يمكن استخدام أساسيات البرمجة لتطبيق قواعد أمنية. في الوحدات القادمة، سنتعمق أكثر في هذه المفاهيم.

---

تمارين وتقييم الوحدة

تمرين نظري:

  • ما الفرق الرئيسي بين لغة الآلة ولغة التجميع من حيث سهولة القراءة والكتابة؟
  • كيف يساعد وجود المترجم (Compiler) في لغات مثل الجافا في تحسين أمان البرامج من منظور اكتشاف الأخطاء؟
  • اذكر ميزتين رئيسيتين للغة الجافا وكيف تساهم كل ميزة في تطبيقات الأمن السيبراني.

تمرين عملي:

  • البرنامج 1:

    اكتب برنامج جافا يطلب من المستخدم إدخال اسمه وعمره (باستخدام JOptionPane.showInputDialog)، ثم يطبع رسالة ترحيب تحتوي على اسمه وعمره في نافذة حوار (باستخدام JOptionPane.showMessageDialog).

    تلميح: تذكر أن showInputDialog ترجع نصًا (String)، وقد تحتاج إلى تحويل العمر إلى رقم إذا أردت إجراء عمليات حسابية عليه لاحقًا.
  • البرنامج 2:

    طور البرنامج السابق ليتحقق من أن العمر المدخل أكبر من 18. إذا كان كذلك، اطبع رسالة "أهلاً بك، يمكنك الوصول!"، وإلا اطبع "عفوًا، يجب أن يكون عمرك 18 عامًا فما فوق." (تطبيق على الجمل الشرطية البسيطة if-else).

---

المراجع

---

ملخص الوحدة

تهدف هذه الوحدة إلى تأسيس الطالب في:

  • المفاهيم الأساسية للبرمجة وأنواع البيانات المختلفة.
  • أنواع لغات البرمجة (لغة الآلة، التجميع، عالية المستوى) وأدوات الترجمة (المترجم والمفسر).
  • ميزات لغة الجافا وتاريخها ودورها المحوري في تطوير تطبيقات الأمن السيبراني.
  • التنفيذ العملي الأساسي عبر بيئة Eclipse وكتابة وتشغيل أول برنامج جافا.
  • تطبيق أساسيات الأمان البرمجي في التعامل مع المدخلات والبيانات الحساسة.