اذهب إلى المحتوى

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

  1. Ail Ahmed

    Ail Ahmed

    الأعضاء


    • نقاط

      9

    • المساهمات

      1202


  2. Taha Khaled2

    Taha Khaled2

    الأعضاء


    • نقاط

      7

    • المساهمات

      214


  3. Najah Alsaker

    Najah Alsaker

    الأعضاء


    • نقاط

      6

    • المساهمات

      543


  4. Kareem Abdelhamed3

    Kareem Abdelhamed3

    الأعضاء


    • نقاط

      4

    • المساهمات

      6


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 02/25/24 في كل الموقع

  1. انا كت عايز اسال بس هو ليه في لغات تستخدم interpreter على الرغم من ان compiler اسرع بي كتير
    4 نقاط
  2. السلام عليكم. عندي خلط بسيط بين أن تمتلك موقع شخصي أو سابقة أعمال (portfolio) مثل (https://mahmoud.tn) وأن يكون لديك إيميل إحترافي مثل (contact@mahmoud.tn) أعتقد أن لكل مهما فوائد كثيرة لكن لم أعرف أين يكمن الإختلاف بينهما بالضبط. شكرا.
    3 نقاط
  3. السلام عليكم وماهي هي المواد النظريه في مجال علوم الحاسوب وهل ده بيفرق بين مبرمج جيد ومبرمج سي
    2 نقاط
  4. السلام عليكم هل ماده Discrete Mathematics مهمه فقط في فرع الغه الطبيعه من مجالات الذكاء الاصطناعي وكمان لو اتعلم الجبر الخطي والتفاضل والتكامل والاحتمالات والاحصاء ابتد في كورس تعلم الاله والا الا بفضل ماده Discrete Mathematics
    2 نقاط
  5. كيف اجلب بيانات لمتسخدم محدد من الفايربيس باستخدام فلاتر
    2 نقاط
  6. لماذا لا يوفر الموقع مقالات تعليمية عن اساليب التحرير والكتابة؟ هذه الأساليب مهمة لدرجة يمكن وضع وتأليف كتاب عنها
    1 نقطة
  7. السلام عليكم هو ممكن اقسم رقم int موجود في متغير في لغه الباثيون مثل انا مخزين رقم في متغير ولو يكن n n = 32 فا كانت عاوز اقسم الرقم ده واضافه في متغيرين زي كده n0 = 3 n1 = 2 هل ده ممكن
    1 نقطة
  8. 1 نقطة
  9. ى كيفية التحقق من OTP في Laravel: 1. تثبيت الحزم اللازمة يمكنك استخدام حزمة مثل laravel-otp لتبسيط إنشاء والتحقق من OTP. قم بتثبيتها باستخدام : composer require pragmarx/otp 2. إنشاء وإرسال OTP أنشئ وحدة تحكم أو استخدم وحدة تحكم قائمة لإنشاء وإرسال OTP إلى المستخدم يمكنك استخدام واجهة Mail المدمجة في Laravel لإرسال البريد الإلكتروني أو استخدام بوابات الرسائل القصيرة لإرسال رسائل نصية مثال على وحدة التحكم: use PragmaRX\Otp\Otp; class OTPController extends Controller { public function generateOTP() { $otp = app(Otp::class); $user = auth()->user(); // نفترض أن المستخدم قد قام بتسجيل الدخول $code = $otp->generate($user->email); // قم بإرسال الرمز عبر البريد الإلكتروني أو الرسائل القصيرة // مثال: Mail::to($user->email)->send(new OtpMail($code)); return response()->json(['message' => 'تم إنشاء وإرسال OTP بنجاح']); } } 3. التحقق من OTP أنشئ وحدة تحكم أخرى أو استخدم القائمة الحالية للتعامل مع التحقق من OTP مثال على وحدة التحكم use PragmaRX\Otp\Otp; class OTPController extends Controller { public function verifyOTP(Request $request) { $otp = app(Otp::class); $user = auth()->user(); // نفترض أن المستخدم قد قام بتسجيل الدخول $isValid = $otp->check($user->email, $request->input('otp')); if ($isValid) { // OTP صحيح، قم بتنفيذ الإجراءات الضرورية return response()->json(['message' => 'تم التحقق من OTP بنجاح']); } else { // OTP غير صحيح return response()->json(['error' => 'OTP غير صحيح'], 422); } } 4. تحديد المسارات قم بتحديد المسارات لإنشاء والتحقق من OTP في ملف web.ph أو api.php Route::post('/generate-otp', 'OTPController@generateOTP'); Route::post('/verify-otp', 'OTPController@verifyOTP')
    1 نقطة
  10. في حال التحقق من البريد الإلكتروني عليك بإنشاء نموذج لجدول OTP يحتوي على حقول مثل: id user_id otp_code expiry_time إنشاء متحكم لإنشاء OTP وإرسالها عبر البريد الإلكتروني وآخر للتحقق من رمز OTP. وبخصوص التحقق من الهاتف المحمول، فعليك استخدام خدمة SMS خارجية لإرسال OTP، وإنشاء متحكم للتحقق من رمز OTP. وبأي طريقة فعند عند تسجيل الدخول أو إعادة تعيين كلمة المرور ، قم بإنشاء رمز OTP وإرساله إلى المستخدم. وعندما يُدخل المستخدم رمز OTP ، فقم بالتحقق من صحة الرمز من خلال: البحث عن رمز OTP في قاعدة البيانات. التأكد من أن رمز OTP لم ينتهِ صلاحيته ومطابق للرمز الذي تم إرساله إلى المستخدم. وإن كان الـ OTP صحيحًا ، فسجل دخول المستخدم أو أعد تعيين كلمة المرور، ومن الأفضل استخدام OTP له مدة صلاحية قصيرة. وبالطبع هناك مكتبات تسهل العملية مثل مكتبة laravel-otp
    1 نقطة
  11. ما هي افضل طريقه لكي اتجنب اي مشكله تحدث للسيرفر او الموقع اذا زاد الضغط من قبل المستخدمين عليه وحصل اكثر من 10000 الاف ريكوست في وقت واحد
    1 نقطة
  12. يوجد طرق يمكنها حل هذه المشاكل عن تجربتي الشخصيه وتعرضي لمثل هذه المواقف أود ان اشاركك ببعض النصائح التي قد تساعدك في تجنب هذه المشكلة من البداية، سنتحدث هنا عن مفهوم مهم جدًا يُعرف بـ "scalability " وكيف يمكنك تحقيقه قدر الإمكان. التوسع الأفقي: في هذا النوع من التوسع، يتم زيادة عدد الخوادم أو الخوادم الفعّالة التي يعمل عليها التطبيق. على سبيل المثال، إذا كان لديك تطبيق ويب يواجه زيادة في عدد المستخدمين، يمكنك إضافة خوادم إضافية للتعامل مع هذا الضغط الإضافي دون الحاجة إلى تغيير الموارد الحالية بشكل كبير. مثلاً، إذا كان لديك موقع للتجارة الإلكترونية، يمكنك إضافة خوادم إضافية لمعالجة المزيد من الطلبات أثناء فترات الضغط التوسع الرأسي: يتم زيادة قدرات الخادم الفردي مثل الذاكرة العشوائية (RAM) أو المعالج. مثلا، يمكنك ترقية الخادم الحالي لديك بزيادة سعة الذاكرة العشوائية أو بترقية المعالج لمواجهة الضغط الزائد. ومع ذلك، يأتي التوسع الرأسي بحدود، وبمجرد أن تصل إلى هذه الحدود، ستحتاج إلى البدء في التفكير في التوسع الأفقي. تقسيم قاعدة البيانات: تقسيم قاعدة البيانات إلى أجزاء صغيرة تسمى يسمح بتوزيع الأعباء بينها، هذه يحسن من أداء عمليات القراءة والكتابة. مثلا، إذا كان لديك تطبيق يعمل على مستوى عالمي ويتعامل مع كميات كبيرة من البيانات، يمكنك تقسيم قاعدة البيانات إلى مجموعات حسب الموقع الجغرافي أو الفئة الفرعية للبيانات. التخزين المؤقت: يسمح التخزين المؤقت الاحتفاظ بالبيانات في ذاكرة سريعة الوصول لفترة مؤقتة، مما يقلل من الحاجة إلى الوصول المتكرر إلى قاعدة البيانات وبالتالي يحسن من أداء التطبيق. مثلا، يمكنك تخزين نتائج الاستعلامات الشائعة في ذاكرة مؤقتة لفترة محددة من الوقت لتقليل الضغط على قاعدة البيانات. توزيع الحمولة: توزيع الحمولة يسمح بتوجيه الطلبات بشكل متساوٍ إلى الخوادم المتاحة، هذه يسهل التعامل مع الحمولة المتزايدة ويحسن من أداء التطبيق. على سبيل المثال، يمكن استخدام خادم وسيط (Load Balancer) لتوجيه الطلبات إلى الخوادم بشكل متساوي استنادا إلى الحمولة الحالية. المعالجة الغير متزامنة: تستخدم المعالجة الغير متزامنة للمهام التي قد تستغرق وقتًا طويلاً للانتهاء، مما يسمح بتحسين استجابة التطبيق وسرعته. على سبيل المثال، يمكن استخدام طوابو (Queues) لمعالجة الطلبات بشكل تدريجي، مما يسمح بإرسال البريد الإلكتروني لعدد كبير من المستخدمين دون تعطيل التطبيق.
    1 نقطة
  13. نعم يمكنك عن طريق استخدام عملية باقي القسمه في Python باستخدام العملية الحسابية % لقد نقشنا هذه الموضوع من قريب هنا اذا كنت تريد الفهم اكثر علي سبيل المثال في الكود الخاص بك يمكنك استخدام عملية القسمة والقسمة الصحيحة لتحقيق ذلك n = 32 # القسمة الصحيحة للحصول على الأرقام الفردية n0 = n // 10 n1 = n % 10 print("الرقم الأول:", n0) # 3 print("الرقم الثاني:", n1) # 2
    1 نقطة
  14. ساعطيك اياها باختصار شديد على الرغم من أن compiler اسرع الا ان لل interpreter ميزات كثييرة والان سأوضح لك الفرق والمميزات بين الاثنين نبدأ أولا مع الـ Interpreter: يقوم بترجمة سطر سطر أو فقرة فقرة من الكود سورس يستمر في ترجمة وتنفيذ البرنامج وإذا كان هناك خطأ فهو يتوقف في السطر الذي يحتوي على الخطأ أثناء عملية التنفيذ يقوم بترجمة الكود سورس بسرعة لكن ينفذه ببطئ سهولة تتبع الأخطاء لأن البرنامج يتوقف في مكان الخطأ مباشرة اللغات التي تعتمد مبدأ الـ Interpreter : لغة php لغة Python لغة Ruby لغة JavaScript لغة Perl ثانيا الـ Compiler: يقوم بتحليل البرنامج بالكامل ثم يترجمه كاملا إلى لغة الآلة يأخذ وقت طويل في ترجمة الكود سورس لكن ينفذه بسرعة كبيرة جدا يقوم باكتشاف الأخطاء بعد عمل تحليل للبرنامج بالكامل لهذا تحديد مكان الخطأ صعب بالمقارنة مع الـ interpreter اللغات التي تعتمد مبدأ الـ Compiler: لغة c و c++ لغة c# لغة java تجمع بين المبدأين معا وهذا هو ما يجعل البرامج التي كتبت بالجافا تشتغل في جميع أنظمة التشغيل لذلك تستطيع استخدام الذي تريده حسب اللغة التي تستخدمها ومتطلبات مشروعك وبالتوفيق لك
    1 نقطة
  15. انا الان في الدوال البرمجية و لكن لا يمكنني تركيب مجموعات برمجية مثل ما يفعل المدرس عند طلب المدرس محاولة صنع شيفرة بسيطة اذهب الى vscode و احاول و لكن لا يمكنني ذلك مع العلم اني اعرف الدروس السابقة و نفذت فيها لكن عندما احاول الدمج في اكثر من درس لا يمكنني المواصلة ما هو الحل
    1 نقطة
  16. بما أن المترجمات ( interpreter ) تقوم بتنفيذ البرنامج بشكلٍ مباشر فإنها تساهم بتوفير الوقت المرتبط بإنجاز عملية compile، كما أنه وبسبب قيامها بإصدار رسائل الخطأ عند السطر الذي تم إيجاد الخطأ عنده، تعتبر عملية البحث عن الأخطاء أسهل في لغات البرمجة المترجمة مقياساً مع مثيلاتها المترجمة. بسبب عدم قيام المترجم بتحليل الشيفرة المصدرية بالكامل وعدم توليده لأي برامج تنفيذية، فإنه يتوّجب في كل مرة يتم فيها تشغيل البرنامج إجراء عملية التفسير بالكامل وقراءة البرنامج وتحليله وتنفيذه سطراً تلو الآخر، ما يجعل اللغات المفسرات أبطأ عادةً من اللغات المترجمة عندما يتعلق الموضوع بزمن التنفيذ إلا أنها لا تستوجب نفس متطلبات الذاكرة الخاصة باللغات التى تحتاج compile كونها لا تقوم بتوليد أي برامج تنفيذية بل يتم تنفيذ البرنامج بشكلٍ مباشر من المترجم
    1 نقطة
  17. هناك عدة أسباب رئيسية لوجود لغات البرمجة المفسرة على الرغم من كون اللغات المترجمة أسرع: تتيح اللغات المفسرة تطوير أسرع لأن الكود لا يحتاج إلى الترجمة في كل مرة يتم فيها إجراء تغيير. وهذا يجعل عملية تصحيح الأخطاء والتكرار في الكود أسرع بكثير. لا تتطلب اللغات المفسرة الترجمة إلى نظام أساسي أو هندسة معينة. يجعلها نموذج التفسير أكثر قابلية للنقل عبر أنظمة التشغيل. تطبيقات الويب: اللغات المفسرة مثل جافاسكربت و PHP وبايثون مناسبة جدًا لبناء تطبيقات الويب الديناميكية لأن طبيعتها المفسرة تحاكي كيفية تنفيذ الكود في المتصفح. لذلك ، فإن اللغات المفسرة تتخلى عن بعض الأداء من أجل التطوير السريع، والقابلية للنقل، والاستخدام التفاعلي، والملاءمة لتطبيقات معينة مثل الويب والبرمجة النصية. لكل من اللغات المترجمة والمفسرة حالات استخدام خاصة بها.
    1 نقطة
  18. الفرق بينهما متباين للغاية، فالمترجم مثلا (Compiler) هو برنامج يقوم بتحويل الشفرة المصدرية للبرنامج (مثل الشفرة المكتوبة بلغة C++ أو Java) إلى رمز ثنائي (ملف تنفيذي) يمكن تشغيله مباشرة من قبل الحاسوب. ويتم استخدامه لكونه يحمل: أداءً عاليا: حيث يتم تحويل الشفرة المصدرية إلى رمز ثنائي مباشرة، وبالتالي تكون البرامج التي تم إنشاؤها باستخدام المترجم عادةً أكثر كفاءة من حيث الأداء. تحسينات في الأمان: فبمجرد تحويل الشفرة المصدرية إلى رمز ثنائي، يصعب بشكل عام على المستخدمين الآخرين رؤية أو تعديل الشفرة المصدرية. هذا يجعل من الصعب استغلال الثغرات الأمنية في البرامج. الانتشار الواسع: بحيث يمكن تشغيل البرامج التي تم تحويلها باستخدام المترجم على أنظمة متعددة دون الحاجة إلى ترجمتها مرة أخرى، مما يجعلها ملائمة للتوزيع. أما ال (Interpreter) فهو برنامج يقوم بتنفيذ الشفرة المصدرية للبرنامج مباشرة دون الحاجة إلى تحويلها إلى رمز ثنائي. ويتم استخدامه عادة لوجود هذه الميزات: التطوير والاختبار السريع: بحيث يمكن تطوير واختبار البرامج باستخدام المترجم بشكل أسرع من المترجم، حيث يمكن للمطورين رؤية نتائج تنفيذ الشفرة المصدرية على الفور دون الحاجة إلى تحويلها أولاً. التفاعلية: هو مفيد في بناء الأنظمة التفاعلية مثل الواجهات الرسومية، حيث يمكن للمستخدمين التفاعل مباشرة مع البرنامج ورؤية النتائج على الفور. التوزيع السهل: بحيث يمكن توزيع البرامج التي تستخدم المترجم بسهولة أكبر، حيث لا يلزم إعادة تحويل الشفرة المصدرية إلى رمز ثنائي قبل تشغيلها على الأنظمة الأخرى. ومن هنا يمكنك أن تستفيد أكثر لفهمهما بشكل جيد:
    1 نقطة
  19. في البداية نعم انظمة التشغيل تعتبر من المواد النظرية وهناك العديد من المواد النظرية الاخرى ك علوم البيانات وتحليل الخوارزميات اما بالنسبة للقسم الثاني من السؤال ان فهم انظمة التشغيل ليس اساسيا جدا لتعلم البرمجة ولكنه يحدث فرق كبيرا عند تعلمك البرمجة من هذه النواحي فهم أعمق لعمل الحاسوب: تعلم أنظمة التشغيل يمكن أن يساعدك على فهم أعمق لكيفية عمل الحاسوب بشكل عام، وهذا يمكن أن يؤدي إلى تحسين برمجيتك بشكل عام. تحسين الأداء والكفاءة: فهم كيفية تشغيل البرامج وإدارة الموارد من قبل نظام التشغيل يمكن أن يساعدك في كتابة برامج أفضل تستخدم الموارد بكفاءة. تطوير برمجيات متقدمة: بعض أنظمة التشغيل توفر ميزات متقدمة مثل العمليات المتعددة والتواصل بين البرامج، وفهم هذه المفاهيم يمكن أن يساعدك في تطوير برمجيات متقدمة. فهم بنية البرامج: تعلم أنظمة التشغيل يمكن أن يساعدك في فهم كيفية بناء البرامج وتنظيمها، مما يمكن أن يحسن من تصميم برامجك. تطوير برامج متوافقة: فهم كيفية عمل أنظمة التشغيل يمكن أن يساعدك في تطوير برامج تعمل بشكل جيد على مختلف أنظمة التشغيل. لذلك بشكل عام، فهم أنظمة التشغيل يمكن أن يجعلك مبرمجًا أفضل وأكثر كفاءة، ويمكن أن يساعدك في تطوير برامج أفضل وأكثر توافقًا مع مختلف البيئات وانا لا اطلب منك التعمق التام في فهم هذه الانظمة فقط فهم بسيط ل كيفية سير الامور لجعل منك مبرمج احترافي بالتوفيق لك
    1 نقطة
  20. استخدام (interpreter) أو (compiler) يعتمد على مجموعة من الاعتبارات والاحتياجات في تصميم اللغة البرمجية والتطبيق الذي يتم تطويره 1.سهولة التطوير والاختبار: يمكن أن يكون استخدام المترجمات (interpreter)أكثر سهولة خلال مرحلة التطوير حيث يمكنك تشغيل الكود بشكل فوري دون الحاجة إلى خطوة تجميع (compile) مسبقة 2. التنقل والتشغيل الديناميكي: في بعض الحالات يحتاج التطبيق إلى التفاعل مع المستخدم أو بيئة متغيرة بشكل ديناميكي المترجم يمكنه تنفيذ الكود البرمجي مباشرةوبشكل ديناميكي بدون حاجة لخطوة تجميع(compile) 3. تحسين الإنتاجية: في بعض السيناريوهات يمكن أن يكون التطوير أسرع باستخدام لغةبرمجة تستخدم (interpreter) حيث يتيح ذلك للمطورين اختبار التغييرات بشكل فوري 4. التعامل مع متغيرات البيئة: بعض اللغات تحتاج إلى التفاعل مع متغيرات البيئة بشكل مباشر وهو أمر يمكن أن يكون أكثر تحقيقًا من خلال استخدام (interpreter)
    1 نقطة
  21. بالطبع، ففهم أنظمة التشغيل من المواد النظرية في مجال علوم الحاسوب ويعتبر ذلك أمراً مهماً. فأنظمة التشغيل تعتبر جزءاً أساسياً في هذا المجال، وهي تهتم بكيفية تنظيم وإدارة الموارد في الحاسوب مثل المعالج، الذاكرة، والتخزين، بالإضافة إلى توفير واجهة بين المستخدم والجهاز الحاسوبي. بالنسبة للشقّ الثاني من سؤالك، فالمواد النظرية تشمل مجموعة واسعة من المواضيع التي تركز على الأسس والمبادئ الرئيسية التي تقوم عليها تطبيقات الحاسوب والبرمجيات. من بين المواد النظرية الشائعة في علوم الحاسوب: هياكل البيانات والخوارزميات**: دراسة تنظيم وتخزين البيانات بشكل فعال وفعالية الخوارزميات في معالجتها. تشمل هذه المواد النظرية دراسة القوائم المتسلسلة، الأشجار، الجرافات، وأساليب البحث والفرز نظرية الحوسبة**: وتشمل المواد مثل نظرية الأتمتة، والحساب المعقد، والحوسبة التوزيعية، ونظرية اللغات والآلات. نظرية قواعد البيانات: وتشمل دراسة هياكل البيانات القاعدية، والاستعلامات، والمعالجة المتعددة المستوى. الشبكات وأمن المعلومات: ويغطي هذا المجال البروتوكولات الشبكية، وأمان المعلومات، وإدارة الشبكات. نظرية اللغات البرمجية: وتشمل دراسة النماذج اللغوية، وتحليل وتصميم اللغات، وتحويل اللغات. نظرية النظم: وتركز على تحليل وتصميم النظم الكبيرة والمعقدة، وتضمن تكامل مكونات النظام وتحديد متطلبات النظام وتصميم الهياكل المناسبة. بالنسبة للسؤال الآخر، فإن فهم أنظمة التشغيل والمواد النظرية في علوم الحاسوب يمكن أن يفرق بين مبرمج جيد ومبرمج ممتاز، لكنه ليس العامل الوحيد. البرمجة مثلا بلغات مثل C و C++ تتطلب فهماً عميقاً للمفاهيم البرمجية والقدرة على كتابة الشيفرة بشكل فعال ومنظم. ومع ذلك، فهم كيفية تفاعل البرامج مع النظام التشغيل وكيفية استخدام الموارد بشكل فعال يمكن أن يجعل فارقاً في أداء المبرمج وفي جودة البرمجيات التي يقوم بتطويرها. وهذه بعض المصادر التي يمكن أن تفيدك لفهم أنظمة التشغيل:
    1 نقطة
  22. انا كمان بتفق مع حضرتك جدا هو فعلان يعني ممتع اوي تمام , ان كانت عاوز افهم كده وهدرس الاثنين ان شاء الله وانا دلوقتي بتدرس الرياضيات التكاملية شكرر جداا لحضرتك
    1 نقطة
  23. نصيحه دراسة علوم الحاسب من اكثر الاشياء الممتعه والغير ممله وكلما ذاد علمك حتي اذا كانو الماداتان متشابهان فحاول دراستهم اما اذا كنت تريد الاجابه فالرياضيات المنطقية (Mathematical Logic) والرياضيات التكاملية (Discrete Mathematics) هما فعلاً مرتبطان من حيث المنطق والتفكير الرياضي، ولكنهما يغطيان مجالات مختلفة.
    1 نقطة
  24. مادة Mathematical Logic أساسية ومهمة جدا في علم الحاسوب بشكل عام، وفي مجالات الذكاء الاصطناعي وتعلم الآلة بشكل خاص. هذه المادة تدرس الأساليب الرياضية للتعبير عن الاستدلالات، وتشمل موضوعات مثل النظريات المنطقية، الاستدلال، نظرية البرهان، المنطق الرمزي، والمنطق الحسابي. في سياق الذكاء الاصطناعي، يمكن استخدام المنطق الرياضي في: 1. تمثيل المعرفة والاستدلال فالمنطق يسمح بتمثيل المعرفة بشكل دقيق ويوفر آليات للاستدلال بهذه المعرفة. هذا مهم في مجالات مثل الأنظمة الخبيرة والاستدلال الآلي، حيث يحتاج النظام إلى استنتاج معلومات جديدة من المعرفة المخزنة لديه. 2. تستخدم لغات البرمجة المنطقية مثل Prolog، المنطق كأساس لها، مما يجعلها مناسبة جدًا لكتابة برامج تحتاج إلى تمثيل المعرفة والاستدلال بها، وهو ما يستخدم في الذكاء الاصطناعي. 3. فهم المنطق الرياضي يساعد في تحليل الخوارزميات وإثبات صحتها، خاصة في الخوارزميات المعقدة المستخدمة في الذكاء الاصطناعي. بلاضافه فإن تعلمك للمنطق الرياضي يعتبر خطوة مهمة في التعمق في فهم وتطوير تقنيات الذكاء الاصطناعي وتعلم الآلة.
    1 نقطة
  25. بتاكيد مادة Discrete Mathematics مهمه في مجالات الذكاء الاصطناعي ولاكن ايضا مهمه في مجالات اخري كثيره و من خبرتي في دراستي لهذه الماده في اول سنه بجامعه مادة الرياضيات المتقطعة (Discrete Mathematics) تعتبر أساسية في عدة مجالات الذكاء الاصطناعي، وليس فقط في فرع معالجة اللغات الطبيعية. هذه المادة تشمل مواضيع مثل المنطق، نظرية الجرافات، الاستقرائيات، الجبر البولياني، ونظرية المجموعات، وهي توفر الأساس النظري الذي يمكن تطبيقه في تصميم الخوارزميات وتحليلها، والتي تعتبر مهارات مهمه في تعلم الآلة والذكاء الاصطناعي بشكل عام. بالنسبة لتعلم الجبر الخطي، التفاضل والتكامل، الاحتمالات والإحصاء، هذه المواد تعتبر أيضا مهمه جدًا في مجال تعلم الآلة. الجبر الخطي يستخدم في تعلم الآلة للتعامل مع البيانات ذات الأبعاد العالية، التفاضل والتكامل يستخدمان في تحسين الخوارزميات عبر تقنيات مثل الانحدار اللوجستي والشبكات العصبية، والاحتمالات والإحصاء ضروريان لفهم نماذج تعلم الآلة وتقييم أدائها. يجب أن يكون لديك فهم جيد للجبر الخطي والاحتمالات والإحصاء قبل البدء في دورة تعلم الآلة، على الرغم من أنها قد لا تكون مطلوبة مباشرة في كل جوانب تعلم الآلة، إلا أن فهمها يمكن أن يعزز من قدرتك على فهم المفاهيم النظرية وراء الخوارزميات المختلفة. كل هذه المواد تكمل بعضها البعض وتساعد في بناء فهم قوي للمفاهيم الأساسية المطلوبة في الذكاء الاصطناعي وتعلم الآلة. يفضل تعلم هذه المواد بشكل متوازي أو بترتيب الذي يتناسب مع المسار التعليمي الذي تريد اتباعه.
    1 نقطة
  26. مادة Discrete Mathematics (الرياضيات التفاضلية) ليست مقتصرة فقط في فرع الذكاء الاصطناعي الذي يتعامل مع اللغة الطبيعية، بل في مجالات عديدة من الذكاء الاصطناعي. تعتبر الرياضيات التفاضلية أساسية لفهم العديد من المفاهيم الرئيسية في الذكاء الاصطناعي مثل الخوارزميات، والمنطق الرياضي، والنظرية الحسابية، والرياضيات الكمية. دعني اشرح كل ما علاقة كل مادة من التي ذكرتها في مجال الذكاء الصناعي الجبر الخطي: يستخدم في تصميم الخوارزميات وحل المعادلات الرياضية التي تنشأ في الذكاء الاصطناعي. التفاضل والتكامل: يستخدم في تطوير النماذج الرياضية للظواهر الطبيعية وتحليل البيانات في الذكاء الاصطناعي. الاحتمالات والاحصاء: يستخدم في تحليل البيانات وتقدير الأخطاء واستنتاج النتائج في الذكاء الاصطناعي. لذلك بشكل عام ومن وجهة نظري من المهم دراسة هذه المواد لانهم من اساسيات فهم وتطوير الذكاء الصناعي وتعلمه قبل تعلم الذكاء الصناعي سيسهل عليك فهم الية عمله لانه لديك خبرة مسبقة في طريقة التفكير هذه وبالتوفيق لك
    1 نقطة
  27. كلا تقوم بشراء نطاق واحد فقط وتقوم بربط ايميلك مع ملفك الشخصي عبر معلومات الاتصال كما اخبرتك سابقا
    1 نقطة
  28. عندما تقوم بشراء عنوان نطاق (domain) فلن تحتاج لشراء 2، ستشتري واحدا فقط ويتم ربطه بموقعك وكذلك ببريدك الإلكتروني. بل يمكن ربطه بعدد غير محدود من عناوين البريد، فمثلا يمكن أن يكون هناك contact@mahmoud.tn و support@mahmoud.tn وغيرها، كلها تحت نفس عنوان النطاق mahmoud.tn الذي يمكن أن تربطه بموقعك على عنوان: www.mahmoud.tn. بالنسبة للمصداقية، فلا يوجد شيء يدل عليها بشكل قاطع إلا التعامل المباشر معك، فحتى النصابون يمكنهم أن يشتروا عناوين نطاق خاصّة بهم، فالمسألة متعلقة بالمال. لكن عادة ما يتم إقفال عناوين النطاق الخاصة بالنصابين بعد اكتشافهم، لذلك فكلّما أرادوا الظهور بهوية جديدة كلما احتاجوا لدفع مبلغ إضافي، لذلك فهذا مرهق لهم على المدى الطويل. لذلك يمكن اعتبار اسم النطاق دليلا خفيفا على المصداقية مادام الشخص أو المؤسسة قد صرف بعض المال عليه.
    1 نقطة
  29. نعم، بالطبع. يمكنك إضافة عنوان البريد الإلكتروني الاحترافي الخاص بك إلى موقعك الشخصي كجزء من معلومات الاتصال. اما بالنسبة للاهمية فكما ذكرنا سابقا انهما شيئين مختلفين تماما اي اذا كان الغرض هو عرض اعمالك ومشاركتها مع عملائك وجذبهم اكثر فان الموقع الشخصي هو الخيار المثالي اما ان كان الغرض التواصل مع العملاء وجعل مصداقية بين الطرفين ف من المهم جدا عمل بريد الكتروني احترافي
    1 نقطة
  30. وعليكم السلام، هذان ليسا شيئن متعارضين حتى تختار بينهما، فلكل واحد منهما وظيفته الخاصّة. بالنسبة للحصول على اسم نطاق (domain name) مدفوع (مثل هذا mahmoud.tn) فهذا يتم عن طريق شراءه من شركة توفر مثل هذه الخدمة (بالنسبة للنطاق .tn فهذا مخصص لدولة تونس فقط، لذلك أعتقد يجب طلبها من وزارة الإتصالات التونسية)، لكن هنا نحن نتحدّث عن عنوان النطاق فقط، والذي يتم الحصول عليه بالمال (ليس لهذا علاقة بالبرمجة إطلاقا). بعد ذلك، تأتي خطوة ربط اسم النطاق بموقع موجود أو خدمة بريد إلكتروني. حتى بالنسبة للموقع والبريد الإلكتروني، فهذه لا يجب أن تكون من برمجتك، فقد يقوم أحدهم بربط عنوان النطاق مع بريده على Gmail ومدونته على Wordpress. لذلك، فاسم النطاق لا يعبر عن كونك مبرمجا، بل يعبر عن أنه لديك مال وقمت بدفعه. الحصول على اسم نطاق مدفوع هو شيء مهم للشركات الحقيقية وكذلك للأشخاص المهمّين، فهؤلاء يجب عليهم أن يقوموا بصرف بعض المال على هويتهم على الأنترنت. لأن وجود شركة مثلا تستخدم نطاقا مجانيا هو شيء يضرب مصداقيتها ويضر بسمعتها كثيرا (يعني هذا يجعلها تشبه النصابين والمتسولين في الطرقات!). لكن ليس كل شخص عادي يريد التقدم لعمل يجب عليه أن يشتري اسم نطاق (أنا مثلا لا أملك واحدا). أما بالنسبة للأعمال السابقة (portfolio) فهذه هي المهمة في عالم البرمجة وغيرها عند التقدم للعمل أو محاولة الحصول على عملاء لتعمل على مشاريعهم. عادة ما يقوم كل شخص يريد العمل برفع أعماله السابقة (أو صور منها) على موقع وعرضها عليه، ثم لكي يقنع أصحاب العمل بتوظيفه فإنه يراسلهم ويرسل لهم موقعه الذي يعرض أعماله السابقة, بهذه الطريقة يمكن لأصحاب الأعمال أن يأخذوا فكرة عن خبرة الشخص وقدراته.
    1 نقطة
  31. يعني ممكن أن يكون portfolio بإيميل إحترافي أيهما أهم. الموقع الشخصي أم البريد الإلكتروني
    1 نقطة
  32. الفرق الرئيسي بينهما هو الغرض والاستخدام. الموقع الشخصي (Portfolio): يستخدم لعرض أعمالك ومهاراتك وتجاربك السابقة. يعتبر وسيلة لتسويق نفسك وجذب فرص عمل جديدة. يحتوي عادة على صفحات تعريفية عنك، وعن خدماتك، وأعمالك السابقة مع روابط أو صور لها، ومعلومات للتواصل معك. الإيميل الاحترافي: يستخدم للتواصل الرسمي والاحترافي، ويساعد في إبراز مصداقيتك واحترافيتك. عادة ما يكون مرتبطًا بموقعك الشخصي أو عملك، مما يوفر انطباعًا جيدًا على الأشخاص الذين يتواصلون معك. باختصار، الموقع الشخصي يعرض أعمالك ومهاراتك للعامة، بينما الإيميل الاحترافي يستخدم للتواصل الرسمي والمهني مع الآخرين.
    1 نقطة
  33. الاتنين مهمين عند التقديم الي عمل البروتوفليو او المحفظة الخاصة بك هتساعد الشركه في التعرف على مشاريعك او أعمالك و خبراتك و مهارتك التي لديك ايضا تصميم موقعك الشخصي مهم جدا لانه يظهر هويتك الشخصية و سيساعدك في التسويق لنفسك اما البريد الإلكتروني هو وسيلة تواصل موثقة بينك وبين العميل او الشركه كثير من الشركات تعطي الاهميه و الأولوية الي البريد الإلكتروني الاحترافي في الرد عليهم لانه بيعكس مصداقيتك و يحمل اسم النطاق الخاص بك او اسم الشركه التي تمثلها
    1 نقطة
  34. بالفعل يوجد طريقه افضل يمكنك استخدام العملية المنطقية XOR (Xclusive OR) لتحقيق ذلك. في لغة البرمجة Python او اي للغه عمتا، يمكنك استخدام العملية XOR بين القيمة التي تريد اختبارها والقيمة 1 بايت، وذلك باستخدام العملية "^"، وسيتم إرجاع نتيجة العملية بصورة مختصرة. value = 0xFF # القيمة التي تريد اختبارها result = value ^ 0xFF # استخدام العملية XOR بين القيمة و١ باي 1. مثال عندما تكون القيمة 1 بايت: value = 0xFF result = value ^ 0xFF print(result) Output:0 2. مثال عندما تكون القيمة غير 1 بايت: value = 0xAB result = value ^ 0xFF print(result) Output:244 3. مثال آخر عندما تكون القيمة غير 1 بايت: value = 0x80 result = value ^ 0xFF print(result) Output:175 عندما تكون القيمة هي 1 بايت، فإن النتيجة تكون صفر. وعندما تكون القيمة غير 1 بايت، فإن النتيجة ستكون قيمة غير صفرية. يوجد طريقه ثانيه ايضا يمكنك استخدمها لمعرفة قيمة 1 بايت دون استخدام دالة if بدون الحاجة إلى تكرار العملية 256 يمكنك استخدام العمليات البتية لتحويل القيمة العددية للبايت إلى تمثيلها المطلوب دون الحاجة إلى استخدام تكرارات متعددة. على سبيل المثال، إذا أردت تحديد إذا كانت قيمة البايت تمثل عددا زوجيا أو فرديا يمكنك استخدام العملية البتية AND لفحص البت الأدنى (LSB) مباشرةً دون الحاجة إلى أي دالة if أو حلقة تكرار: byte_value = 0b10101010 # مثال على قيمة بايت is_even = not(byte_value & 1) # يعود True إذا كان العدد زوجي، وFalse إذا كان فردي العملية byte_value & 1 تقوم بإرجاع 1 إذا كان البت الأدنى 1 (أي العدد فردي) و0 إذا كان البت الأدنى 0 (أي العدد زوجي). باستخدام not، نقوم بعكس النتيجة للحصول على True للأعداد الزوجية وFalse للأعداد الفردية.
    1 نقطة
  35. السلام عليكم , لإستعمال الواتساب و إرسال الرسائل يمكنك إما إستعمالة ك api كما قام المهندس محمد حسن بالوصف و من الممكن أيضا إستعمال bot يعمل حيث تكون فكرة عملة أنة يقوم بفتح متصفح جديد و يقوم بالدخول إلى حساب الواتاب الخاص بك و إستعمالة للإرسال و ذلك بالتأكيد بعد التوثيق . و من أشهر المكاتب المستهدمة في تطبيق ذلك مع node js هي مكتبة whatsapp-web.js وأنصحك بالبحث و إلقاء نظرة عليها . تحياتي .
    1 نقطة
  36. مرحبا الامر سهله بعد انشاء حساب فيس بوك والدخول علي developers.facebook.com والذهاب الي تطبيقاتي وانشاء تطبيق 1-اختيار غير ذاللك بعد ذاللك اختيار نشاط تجاري 3-بعد ذاللك هيطلب منك اسم وايميل 4-بعد ذاللك هتختار دمج واتساب 5- اذ كان ليس لديك نشاط نجاري هيطلب منك انشاء نشاط تجاري 6- هنا تستطيع استخدام api للرسال رسالة الي اي مستخدم وذاللك بعد تاكيد رقم هاتفك import fetch from 'node-fetch'; export default async function handler(req, res) { const url = 'https://graph.facebook.com/v18.0/119791417748534/messages'; const accessToken = 'YOUR_FACEBOOK_ACCESS_TOKEN'; try { const response = await fetch(url, { method: 'POST', headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ messaging_product: 'whatsapp', to: '', type: 'template', template: { name: 'hello_world', language: { code: 'en_US' }, }, }), }); const data = await response.json(); res.status(response.status).json(data); } catch (error) { res.status(500).json({ error: 'Internal Server Error' }); } } بمكن استخدام الكود هذه للرسال مع تغير url ,accessToken واضافة الرقم الذي تريد ارسال اليه
    1 نقطة
  37. نعرفك في مقال اليوم على نظام التشغيل لينكس Linux أحد أشهر أنواع أنظمة التشغيل، وتاريخ نشأته وتطوره، ثم نتطرق لتوضيح أبرز مميزاته وعيوبه والطريقة المثلى لاستخدامه والتعامل معه. ما هو نظام لينكس Linux؟ نظام لينكس Linux أو ما يعرف بنظام جنو لينكس GNU/Linux هو نظام تشغيل حرّ ومفتوح المصدر شبيه بنظام التشغيل يونكس Unix يصدر بموجب رخصة جنو العمومية GPLv2 أي أن أي شخص يمكنه الاطلاع على كوده البرمجي وتعديله وإعادة توزيعه بنفس شروط الرخصة أو بشروط مكافئة. يتميز نظام لينكس بكونه نظام تشغيل فعال ومستقر ويستخدم شخصية البطريق كعلامة رسمية له، هذا البطريق اللطيف الذي تراه في الصورة التالية يدعى توكس Tux وقد ابتكره المبرمج الأمريكي لاري إيوينج Larry Ewing وصورته لا ترتبط بأي شركة تجارية ولا تخضع لأي حقوق لتعكس طبيعة Linux المفتوحة المصدر. تاريخ نظام لينكس أول من طور نظام لينكس طالب فنلندي يدعى لينوس تورفالدس Linus Torvalds حيث أنشأ الإصدار الأول من نواة لينكس عام 1991 كمشروع شخصي والنواة هي المكون الرئيسي في نظام التشغيل لينكس وهي عبارة عن برمجيات منخفضة المستوى تمثل جسر بين عتاد وبرمجيات الحاسوب وتدير موارده بالشكل الأمثل. قبل ذلك كان العمل جاريًا على مشروع نظام جنو GUN منذ عام 1984 بقيادة عالم الحاسوب الأمريكي ريتشارد ستالمان Richard Stallman لإنشاء نظام تشغيل كامل من الصفر يشبه نظام يونكس لكنه يتألف بالكامل من برمجيات حرّة وبحلول عام 1991 لم يكن مشروع جنو قد أكمل بعد تطوير نواة نظامه، فقرر إضافة نواة لينكس إلى مشروعه عام 1992 لإنشاء نظام تشغيل متكامل ومجاني أطلق عليه اسم نظام جنو/لينكس يتألف من نواة لينكس، التي تدير الأجهزة والموارد، وبرامج جنو التي توفر أدوات وتطبيقات ومكتبات داعمة. ويواصل مجتمع المطورين تطوير مكونات وتطبيقات داعمة لنظام لينكس ودمجها مع نظام لينكس ما جعله واحدًا من أقوى أنظمة التشغيل اليوم وهو متوافق مع معظم المنصات والبيئات فبالرغم من أن نظام لينكس صمم بالأصل لتشغيل الحواسيب الشخصية التي تعتمد على بنية Intel x86 إلا أنه تطور بشكل كبير وأصبح اليوم قادرًا على تشغيل العديد من المنصات والأجهزة كالحواسيب المركزية العملاقة والخوادم والهواتف الذكية والأجهزة المدمجة أي الأجهزة التي تم تصميم نظام التشغيل الخاص بها عادةً في البرامج الثابتة ومخصصة للغاية للنظام مثل أنظمة Raspberry Pi. مكونات نظام التشغيل لينكس يتألف نظام التشغيل لينكس Linux بشكل أساسي من المكونات الأساسية التالية: النواة Kernal التطبيقات Applications الصدفة Shell لنتعرف في الفقرات التالية على كل مكون من هذه المكونات بمزيد من التفصيل. النواة Kernal نواة لينكس هي الجزء الأساسي من النظام، وهي أول برنامج يتم تحميله عند بدء تشغيل نظام الحاسوب وتعمل كصلة وصل بين العتاد والبرامج وتدير موارد الجهاز كالمعالج والذاكرة والطابعة وأجهزة التخزين وغيرها من الأجهزة وتتحكم بها. التطبيقات Applications يوفر نظام التشغيل جنو GUN مجموعة من التطبيقات والأدوات الخدمية التي تمكّن المستخدم من إدارة النظام وتتيح له التعامل معه بكفاءة مرونة. الصدفة Shell الصدفة هي مكون أساسي لنظام لينكس وهي تقع بين النواة والتطبيقات الخدمية، وتوفر للمستخدم طريقة للاستفادة من كامل ميزات ووظائف النظام وتكون عادة واجهة سطر أوامر أو طرفية تستقبل الأوامر والنصوص البرمجية scripts التي يكتبها المستخدم وتحولها إلى لغة مفهومة من قبل النواة. هناك أنواع مختلفة من الصدفات، حيث تملك كل صدفة خصائص تختلف عن غيرها في كيفية معالجة وتفسير الأوامر التي تصلها، وتسمى الصدفة الافتراضية في نظام لينكس صدفة باش Bash. وقد توفر بعض أنظمة لينكس واجهة مستخدم رسومية GUI جنبًا إلى جنب مع واجهة سطر الأوامر لتسهيل التعامل مع النظام. ما معنى توزيعات لينكس؟ يصدر نظام التشغيل Linux على شكل توزيعات Linux distributions أو ما يعرف اختصارًا Linux distro حيث تتكون التوزيعة من نواة لينكس بشكل أساسي إضافة لمجموعة من الأدوات والبرامج والتطبيقات المختلفة التي تختلف من توزيعة لأخرى لتقدم وظائف مساعدة مثل واجهة المستخدم الرسومية التي تعرف باسم بيئة سطح المكتب وبرنامج مدير الحزم وغيرها من الأدوات الأساسية المفيدة التي تشكل بدمجها مع بعضها البعض نظام تشغيل متكامل يمكّن المستخدم من القيام بكافة المهام المطلوبة منه. لهذا السبب تتوفر اليوم مئات توزيعات أو إصدارات لينكس تناسب كل واحدة منها منصات وأجهزة مختلفة وبالرغم من أن معظم البرامج المضمنة في توزيعات لينكس مجانية ومفتوحة المصدر إلا أن بعض توزيعات لينكس قد تحتوي على برامج احتكارية لا تخضع لرخصة GNU، تطورها جهات خارجية مثل برامج تشغيل الأجهزة التي توفرها الشركات المصنعة لدعم أجهزتها وتدمجها مع النظام ولهذا السبب قد تفرض بعض توزيعات لينكس رسومًا مقابل خدمات القيمة المضافة. كما تختلف توزيعات لينكس عن بعضها بتجربة المستخدم وخيارات استخدامها وأسلوب تثبيت البرامج الجديدة فيها أو تحديثها فبعض التوزيعات أسهل استخدامًا من غيرها وتوفر طرق واضحة ومريحة لتثبيت البرمجيات بينما تكون هذه العملية معقدة في بعض التوزيعات لهذا من الضروري أن تفهم أبرز مواصفات أي توزيعة قبل أن تقرر استخدامها. هناك العديد من توزيعات لينكس Linux التي تناسب مختلف المتطلبات والاستخدامات، بعض هذه التوزيعات طورها مجتمع لينكس وبعضها طورته شركات تجارية ومن أبرزها أوبونتو Ubuntu و ديبيان Debian، ولمعرفة المزيد حول توزيعات لينكس يمكنك مطالعة مقال ما هو نظام لينكس ولماذا توجد 100 توزيعة منه؟ ومقال عرض موجز لأشهر توزيعات لينكس مميزات نظام التشغيل لينكس يتمتع نظام التشغيل لينكس بالعديد من المميزات ومن أهم مزايا استخدام Linux ما يلي: مفتوح المصدر ويمكن لأي شخص الاطلاع على الكود المصدري وتحريره وتحسينه وإعادة توزيعه. مجاني ولا يتطلب دفع رسوم ترخيص لاستخدامه (يتطلب دعم النظام دفع رسوم). يوفر مئات التوزيعات المناسبة لمختلف الاستخدامات والمنصات. يملك مجتمع كبير ونشط من المطورين الذين يطورون تطبيقات وبرامج داعمة لإصدارات لينكس المختلفة. خفيف الحجم ويتطلب حجم ذاكرة ومساحة تخزين أقل بكثير مما تتطلبه أنظمة التشغيل. يوفر طرفية أو بيئة سطر أوامر قوية قادرة تشغيل العديد من التعليمات والأوامر والتفاعل مع نظام الملفات دون الحاجة لاستخدام واجهة المستخدم الرسومية وهي ميزة أساسية لإدارة الخوادم التي تعمل بنظام لينكس. آمن وموثوق وأقل عرضة للفيروسات والثغرات الأمنية ويحمي خصوصية مستخدميه. يوفر Linux أمان المستخدم من خلال ميزات المصادقة مثل حماية كلمة المرور والتحكم في الوصول إلى ملفات محددة وتشفير البيانات. مثالي للمبرمجين والمطورين فهو متوافق مع معظم لغات البرمجة وتتضمن معظم توزيعات لينكس الكثير من المترجمات ومحررات الأكواد وبيئات التطوير بشكل افتراضي أو توفر تنزيلها من خلال مدير الحزم. مستقر ويتعامل بشكل جيد مع أخطاء تشغيل البرامج ويوفر تحديثات وتصحيحات مستمرة. يعد نظام متعدد المستخدمين ومتعدد المهام أي أنه يمكن لعدة مستخدمين الوصول إلى النظام في نفس الوقت وتشغيل عدة تطبيقات بآن واحد. عيوب نظام لينكس Linux لا يخلو نظام لينكس من بعض العيوب أو الجوانب السلبية ومن أبرزها: استخدام نظام لينكس وتثبيت التطبيقات عليه صعب نسبيًا لا سيما من قبل المستخدمين المبتدئين وغير التقنيين. لكل توزيعة لينكس واجهة خاصة بها وطريقة استخدام مختلفة ما يجعل التبديل بين توزيعاته أمرًا صعبًا. لا يمكن استخدام معظم البرامج الاحتكارية مثل حزمة تطبيقات سطح المكتب مايكروسوفت أوفيس على نظام لينكس. يدعم نظام لينكس عدد ألعاب محدود نسبيًا فإذا كنت من محبي الألعاب فقد لا تجد إصدارًا متوافقًا مع لينكس من لعبتك المفضلة. بعض إصداراته ليست مجانية فبالرغم من أن بمقدور أي مؤسسة الحصول على نظام لينكس دون رسوم ترخيص إلا أن بإمكانها إعادة توزيعه مقابل دفع رسوم معينة مثل إصدار ريد هات الخاص بالمؤسسات. قد لا توفر بعض الشركات المصنعة للأجهزة برامج تشغيل خاصة بنظام لينكس أو توفرها بمقابل مادي. ما الفرق بين Linux و Windows يعد كل من ويندوز Windows ولينكس Linux نظامي تشغيل مشهورين جدًا، لكنهما يختلفان في العديد من الجوانب أهمها نموذج الترخيص فنظام ويندوز هو نظام تشغيل تجاري ومغلق المصدر طورته مايكروسوفت ويتطلب شراء ترخيص لاستخدامه، أما لينكس فهو نظام تشغيل مجاني ومفتوح المصدر حيث يمكن للمستخدمين تنزيله واستخدامه بدون دفع أي رسوم. كما يتميز نظام ويندوز بواجهة بسيطة وسهلة الاستخدام ما يجعله أكثر شيوعًا وملائمةً للمستخدمين الذين ليس لديهم خلفية تقنية، أما لينكس فهو أصعب في الاستخدام لكنه أكثر مرونة ويسهل تعديله حسب احتياجات المستخدم لذا يفضله المستخدمون المحترفون، كما أن استخدام لينكس قد يكون صعبًا على مستخدمي ويندوز حيث يحتاج المستخدم لتعلم مصطلحات ومفاهيم جديدة ومعرفة طريقة استخدام أنواع مختلفة من البرامج والأدوات للتعامل معه. كما يعدّ نظام لينكس آمنًا بطبيعته وهو أكثر أمانًا من نظام ويندوز، فنادرًا ما تصاب أنظمة Linux بالفيروسات وحتى في حالة الإصابة بفيروس ما فسيتضرر جزء فقط من النظام ولن يتمكن الفيروس من إصابة النظام بأكمله، كما تملك نواة لينكس جدار حماية مدمج، في حين يتعرض نظام ويندوز للهجمات الإلكترونية بشكل أكبر لكثرة مستخدميه ويتطلب اهتمامًا خاصًا بتثبيت برامج مكافحة الفيروسات لنظام التشغيل وتحديثها بشكل مستمر. استخدامات نظام لينكس يصلح نظام لينكس للاستخدام في العديد من المجالات وفي جميع الأجهزة الإلكترونية تقريبًا بفضل توزيعاته وإصداراته المختلفة التي تصلح لمختلف التطبيقات، وفيما يلي نستعرض أبرز استخدامات لينكس: خوادم الويب وخوادم قواعد البيانات وخوادم الملفات وخوادم أسماء النطاقات DNS وخوادم البريد الإلكتروني وأي نوع آخر من الخوادم. أجهزة الحاسوب الشخصية حيث توفر العديد من إصداراته بيئة سطح مكتب سهلة الاستخدام ورغم ذلك قد لا يكون نظام التشغيل المفضل لمستخدمي الحواسيب الشخصية. تشغيل تطبيقات الحوسبة السحابية بفضل قابلية التوسع وسهولة نشره عبر خوادم متعددة. تشغيل التطبيقات كبيرة الحجم وتنفيذ مهام الحوسبة العلمية التي تتطلب عمليات حسابية معقدة. تشغيل الهواتف المحمولة فنظام تشغيل الجوالات المشهور آندرويد Android مبني على نواة لينكس. نظام تشغيل مضمن embedded system لتشغيل الأجهزة التي تتطلب تنفيذ مهام ووظائف محددة مثل الأجهزة المنزلية الذكية أو أنظمة الإنذار وكاميرات المراقبة وغيرها. تشغيل أجهزة الشبكة مثل الموجهات routers والمحولات switches. تطوير البرامج مفتوحة المصدر مثل نظام التحكم بالإصدارات git ومحررات الأكواد vim و emacs ومترجمات ومفسرات معظم لغات البرمجة. كيفية التعامل مع نظام Linux إذا كنت مهتمًا بتعلم كيفية التعامل مع نظام التشغيل لينكس فهذه خطوة جيدة إذ تتطلب العديد من الوظائف التقنية طريقة التعامل مع نظام لينكس، وبالرغم مما يقال عن صعوبة استخدام لينكس إلا أنك تستطيع بقليل من الوقت والجهد التآلف مع استخدام نظام لينكس والتعامل مع أوامره الأساسية. اختر توزيعة لينكس الملائمة لاحتياجاتك ومتطلباتك وإذا لم تعرف أي توزيعة هي الأنسب فيفضل أن تبدأ باستخدام توزيعة سهلة الاستخدام مثل أبونتو Ubuntu أو فيدورا Fedora أو مينت Mint. إذا كنت تملك جهاز يعمل بنظام ويندوز أو ماك يمكنك أن تثبت نظام لينكس على جهازك وتتعلم كيفية عمله من خلال أدوات مساعدة مثل تطبيق VirtualBox الذي يمكّنك من إنشاء جهاز افتراضي وتشغيل نظام تشغيل مختلف وبهذا تشغيل أنظمة تشغيل وتطبيقات متعددة على جهاز واحد بسهولة. تعلم طريقة التعامل مع الجهاز الافتراضي وتثبيت توزيعة Linux داخله، لن تختلف الخطوات فيما إذا كنت تثبت لينكس على جهاز حقيقي. تعلم أساسيات التعامل مع نظام لينكس مثل استخدام الواجهة الرسومية وطريقة تخصيصها. تعلم هيكل الملفات والأدلة في لينكس وإدارة صلاحياتها فالملفات في لينكس تنظم في بنية شجرية تختلف عن هيكلية ملفات ويندوز والتنقل بينها من خلال الطرفية. تعلم استخدام صدفة باش Bash والتفاعل مع النظام باستخدامها وكيفية كتابة النصوص البرمجية والبرامج البسيطة في باش Bash. تعلم إدارة الحزم والتعامل مع مدير الحزم الخاص بتوزيعتك وتثبيت البرامج وتحديثها في Linux وطريقة التحقق من تحديثات النظام. اختر مصادر تعليمية منظمة ومنهجية، ستجد الكثير منها على الإنترنت كما ستجد في أكاديمية حسوب مجموعة منوعة دروس ومقالات تعلم لينكس تناسب المبتدئين والمحترفين كما توفر لك دورة علوم الحاسوب مسارًا كاملًا يعلمك طريقة التعامل مع نظام لينكس من الصفر للاحتراف دون الحاجة لوجود أي معلومات فنية مسبقة. طبق ما تتعلمه بشكل عملي وتعلم طريقة استخدم أوامر لينكس المختلفة لإدارة النظام والتفاعل معه. انضم للمنتديات ومجتمعات الدعم الخاصة بنظام لينكس وفي حال واجهت أي مشكلة في التعامل مع النظام ستجد الكثير من المهتمين المستدعين لمساعدتك وإرشادك، كما يمكنك طرح أي سؤال يراودك حول نظام لينكس أو أحد توزيعاته أو تطبيقاته في قسم الأسئلة والأجوبة في أكاديمية حسوب ليجيبك عليها نخبة من الخبراء والمختصين. بعد أن تتقن التعامل مع لينكس على جهاز افتراضي ستكون جاهزًا لتجربته بأمان على جهاز فعلي دون أي مشكلات، ولا تنسَ أن تطور مهاراتك وتحدث معلوماتك باستمرار وتتابع كل جديد في نظام لينكس. الخلاصة تعرفنا في مقال اليوم على نظام التشغيل لينكس وأبرز مميزاته وعيوبه، واستعرضنا الفرق بينه وبين نظام ويندوز، وأخيرًا شرحنا بإيجاز أهم الخطوات التي تساعدك على تعلم استخدامه بكفاءة وفعالية. وفي الختام تذكّر أن تعلّم استخدام نظام لينكس يعزز مهاراتك التقنية ويمكّنك من التعامل مع حاسوبك بكفاءة أعلى وينصح باستخدامه لاكتساب احترافية أعلى في التعامل مع الحاسوب وبرمجياته المختلفة. اقرأ أيضًا 10 طرق لتجربة نظام التشغيل لينكس Linux واستكشافه عرض موجز لأشهر توزيعات لينكس ما هو نظام لينكس ولماذا توجد 100 توزيعة منه؟ تثبيت لينكس مع نظام ويندوز
    1 نقطة
  38. يتعامل الإنسان مع الحاسب من خلال واجهة رسومية يتفاعل معها بمؤشر الفأرة أو باللمس، ليستخدم برامج وتطبيقات مثبتة عليه لإنجاز مهامه اليومية، وتصل طلباته عن طريق تلك التطبيقات إلى المكونات المادية للحاسب من خلال طبقة وسيطة أخرى هي المسؤولة عن التحكم في هذه المكونات المادية، وتلك الطبقة الوسيطة تسمى بنظام التشغيل. تعريف نظام التشغيل ببساطة، يكون لدينا نحن المستخدمين مجموعة من الطلبات التي نريدها من الحاسب، مثل التقاط صورة أو كتابة رسالة أو إجراء عملية حسابية مثلًا، فنستخدم تطبيقًا مخصصًا لتلك المهمة نستطيع التفاعل معه، مثل الكاميرا أو معالج النصوص أو الآلة الحاسبة، ويرسل التطبيق تلك البيانات التي نُدخلها إليه، سواء ضغطنا على زر التقاط الصورة أو كتابتنا لنص الرسالة أو لأطراف العملية الحسابية، يرسلها التطبيق إلى مجموعة من البرمجيات تسمى في مجملها بنظام التشغيل. يعالج نظام التشغيل تلك البيانات التي التقطها من التطبيقات ثم يترجمها في صورة إشارات كهربية يرسلها إلى المكونات المادية للحاسب لتنفيذ ما يلزم لتحقيق المهمة التي نريدها، فيرسل إشارات إلى الكاميرا لتلتقط الضوء المحيط بحساس الصورة ثم يعالج تلك البيانات فيكون الصورة التي التقطناها. وبالمثل في حالة الرسالة والعملية الحسابية، حيث يرسل إشارات إلى المعالج والذاكرة ليخزن الرسالة في القرص الصلب إن كنا نريد حفظها، وإلى المعالج ليحسب ناتج العملية الحسابية التي أدخلناها إليه، ثم يعيد إلينا هذا الناتج. وهكذا فإن نظام التشغيل عبارة عن مجموعة من البرمجيات التي تدير مكونات الحاسب المادية على الوجه الأمثل الذي يضمن سلامة عمل تلك المكونات مع تنفيذ المهام التي نريدها من الحاسب في نفس الوقت. لكن هذه الصورة المبسطة لدور نظام التشغيل يدخل تحتها كثير من المفاهيم الأكثر تعقيدًا، والتي قد نتعرض لبعضها بعد قليل. أمثلة لأنظمة التشغيل المشهورة قبل أن ننظر في أنواع أنظمة التشغيل نريد أولًا أن نقدم بعض الأمثلة على أنظمة التشغيل المشهورة التي بين أيدينا، كي نضع تصورًا لما سيأتي في العناوين التالية أدناه عند تفصيل أنواعها. نظام التشغيل مايكروسوفت ويندوز نظام التشغيل ويندوز Windows من شركة مايكروسوفت هو أشهر أنظمة التشغيل على الإطلاق والمتصدر في نسب الاستخدام على مستوى العالم، وهو نظام تشغيل للحواسيب المكتبية والمحمولة، متعدد المهام وعام الأغراض، وهو غني عن التعريف، ولا يقتصر استخدامه على حواسيب شركة معينة، وإنما يمكن تثبيته على أي حاسب مكتبي أو محمول. نظام ويندوز هو نظام مغلق واحتكاري لشركة مايكروسوفت المالكة له، وآخر نسخة منه وقت كتابة هذه الكلمات هي ويندوز 11. لا يمكن التعديل في النظام والبناء عليه ليوافق احتياجات متخصصة، بل يُستخدم كما تقدمه الشركة دون تعديل، وهذا يقودنا إلى المثال التالي لأنظمة التشغيل. أنظمة تشغيل لينكس تُسمى أحيانًا توزيعات لينكس، وهي أنظمة تشغيل مفتوحة المصدر، أي يستطيع أي أحد أن يطلع على شيفراتها المصدري ويعدّل فيها ويبني عليها أنظمة تشغيل جديدة لتناسب احتياجاته أو احتياجات فئة معينة من المستخدمين، وهي أنظمة كذلك موجهة للحواسيب عامة الأغراض والحواسيب المحمولة مثل ويندوز، لكن تختلف هنا في أنها تزيد على ذلك قليلًا. وذلك أن جميع الحواسيب الخارقة في العالم تقريبًا تعمل بأنظمة لينكس، وهي حواسيب عملاقة تستخدمها الشركات الكبرى والدول لإجراء تجارب المحاكاة العلمية واختبار النظريات الفيزيائية وحساب مسارات الأجرام السماوية وغيرها. كذلك فإن نظام تشغيل أندرويد الشهير الخاص بالهواتف هو نسخة من نسخ لينكس معدّلة لتناسب موارد الهاتف المحدودة. وبسبب تلك الإمكانية الكبيرة في تعديل أنظمة تشغيل لينكس فإنه يدخل في أنواع كثيرة من الحواسيب غير التي يعمل عليها ويندوز، وقد كانت تجربة أحد أنظمة لينكس قبل أعوام تجربة صعبة على من اعتاد نظامي ويندوز أو ماك، لكن الآن صارت أسهل كثيرًا لما تطورت معه التوزيعات (الإصدارات) لتناسب المستخدمين الجدد. دورة علوم الحاسوب دورة تدريبية متكاملة تضعك على بوابة الاحتراف في تعلم أساسيات البرمجة وعلوم الحاسوب اشترك الآن نظام تشغيل ماك MacOS على عكس الأمثلة السابقة فإن نظام تشغيل ماك أو إس MacOS، الخاص بشركة أبل، لا يعمل إلا على حواسيبها فقط، وهو نظام مغلق كما في حالة ويندوز. وتوجه شركة أبل نظام ماك ليتوافق مع بقية الأجهزة التي تنتجها مثل هواتف ايفون وساعاتها الذكية وأنظمة البيت الذكية مثل السماعات وغيرها، من حيث تجانس تجربة الاستخدام على تلك الأجهزة جميعًا. أنظمة التشغيل الأخرى لا شك أن العالم فيه مئات أنظمة التشغيل الأخرى التي تناسب شتى الاحتياجات والأغراض، لكننا ذكرنا الأمثلة الأشهر لتقريب الصورة، وبدلًا من ذكر أسماء أخرى لمنتجات قد تكون غير معروفة للمستخدم، فإننا سنذكر الأنواع التي بُنيت عليها تلك الأنظمة والاستخدامات التي تخصص لها. أنواع أنظمة التشغيل تتنوع أقسام أنظمة التشغيل وفقًا لنوع العتاد الذي ستعمل عليه، ووفقًا للغرض من استخدام ذلك العتاد، وفيما يلي أهم أنواعها: أنظمة التشغيل متعددة المهام لا تستطيع أنظمة التشغيل وحيدة المهام تشغيل أكثر من برنامج واحد في نفس الوقت، كما يوحي اسمها، على عكس نظام التشغيل متعدد المهام الذي ينفذ أكثر من برنامج في نفس الوقت من خلال توزيع وقت التنفيذ على المهام والبرامج التي ينفذها، لكن هذا التوزيع يكون على فترات زمنية متقاربة للغاية بحيث يبدو للمستخدم أن جميع البرامج تعمل معًا في نفس الوقت. أنظمة التشغيل متعددة المستخدمين بناء على نفس مفهوم تعدد المهام في الفقرة أعلاه، فإن أنظمة التشغيل متعددة المستخدمين تسمح لعدة مستخدمين بالتفاعل مع موارد الحاسب -مثل مساحة التخزين ومعالجة العمليات والذاكرة- في نفس الوقت. أنظمة التشغيل المدمجة يمثل نظام التشغيل المدمج embedded system حاسوبًا يوضع في آلة أكبر مثل تلفاز ذكي أو ذراع روبوت، وتكون مهام نظام التشغيل هنا محددة للغاية، مثل تحريك ذراع الروبوت في سلسلة حركات معينة، أو التحكم في التلفاز ووصوله إلى الإنترنت، وهكذا. وتُستخدم أنظمة التشغيل المدمجة في أجهزة إنترنت الأشياء Internet of Things مثل المصابيح الذكية وحساسات الحرارة وغيرها، وفي صيانة السيارات والتحكم في حرارتها، وأنظمة الملاحة في الطائرات، ومتعقبات الموقع GPS trackers والأساور الرياضية fitness trackers. وقد يكون نظام التشغيل المدمج أحد الأنظمة المشهورة مثل لينكس، لكن توجد حالات تُستخدم فيها أنظمة تشغيل في الوقت الحقيقي تكون أكثر دقة وأقل سماحية بالخطأ، في استخدامات مثل أنظمة المكابح في السيارات مثلًا. أنظمة التشغيل في الوقت الحقيقي يختلف نظام التشغيل في الوقت الحقيقي عن أنظمة تشغيل الحاسب أو أنظمة تشغيل الهواتف التي يعتادها المستخدم، فبينما يكون حجم نظام التشغيل المعتاد 4-20 جيجابايت أحيانًا، وفيه الكثير من التطبيقات ويقبل تثبيت التطبيقات التي يحتاج إليها المستخدم، فإن نظام التشغيل في الوقت الحقيقي Realtime Operating System يكون حجمه صغيرًا -20 ميجابايت مثلًا-. ويُستخدم نظام التشغيل في الوقت الحقيقي في البيئات الحرجة مثل التي يؤدي الفشل فيها إلى كوارث، مثل متحكمات الطيران flight controlers والروبوتات وأجهزة تنظيم ضربات القلب، وكذلك في الآلات التي تتكرر مهامها، أي إذا كلما وقع نفس حدث الإدخال فإننا نحصل على نفس الخرج، إضافة إلى الأداء العالي والأمان، وجدولة المهام وفقًا لأهميتها وليس ترتيبها. لماذا توجد أنظمة تشغيل كثيرة للحواسيب؟ قد يتبادر سؤال إلى الذهن بعد هذا الشرح أعلاه لأمثلة أنظمة التشغيل وأنواعها، وهو أليس من الأفضل لو كان هناك نظام تشغيل واحد فقط لكل تلك الأجهزة؟ الواقع أن ذلك سيكون أمرًا رائعًا ومريحًا لكل من المستخدمين والشركات على حد سواء، لكن لأن أي أحد يستطيع تطوير نظام تشغيل خاص به إذا كان لديه المعرفة الكافية بالبرمجة وعلوم الحاسب، ولأن احتياجات الناس تختلف عن بعضها، فإن كل شركة أو مجموعة قد تحتاج إلى نظام تشغيل يناسب طبيعة عملها. وبالمثل فإن بعض البرمجيات التي تعمل على الحاسبات المكتبية قد لا تناسب العمل على الهواتف الذكية مثلًا، كبرامج التصميم الهندسي والإخراج الفني مثلًا، فنحتاج إلى أجهزة مختلفة أيضًا لتناسب هذه، وكما رأينا فإن بعض أنظمة التشغيل قد يتجاوز حجمها 20 جيجا بايت، وهي مساحة كبيرة للغاية على الهاتف أن يتحملها، إضافة إلى أن واجهة الاستخدام الخاصة بنظام ويندوز مثلًا قد لا تناسب شاشات الهاتف الصغيرة، فينبغي تطوير واجهات مختلفة للعمل معها. وهذا يظهر في مثال نظام التشغيل أندرويد المبني على نظام لينكس، حيث عُدِّل فيه كثيرًا ليوافق شاشات الهواتف ومعالجاتها الصغيرة وبطاريتها المحدودة السعة كذلك، وليستطيع استخدام الرقائق الموجودة في الهاتف والخاصة بالاتصال اللاسلكي والاتصالات الخليوية. تعريفات العتاد في أنظمة التشغيل بما أن بعض أنظمة التشغيل تكون عامة الأغراض -مثل نظام ويندوز- فلماذا لا تعمل بعض قطع العتاد عليها بالصورة المثلى؟ قد يلاحظ المستخدم بعد تثبيت نظام التشغيل على الحاسب مباشرة أن العناصر والأيقونات على الشاشة تبدو كبيرة الحجم، أو أن لوحة اللمس في الحاسب المحمول laptop لا تعمل كل وظائف التمرير فيها، رغم أن الشاشة سليمة وأن لوحة اللمس متصلة وتعمل بكفاءة، وهذا يكون بسبب برمجيات تسمى تعريفات العتاد، وهي تعرِّف نظام التشغيل على هذه القطعة الموصولة بالحاسب ليستطيع تفعيل كل وظائفها. ورغم أن أنظمة التشغيل المشهورة الآن تكاد تتعرف على جميع القطع المشهورة مثل لوحات المفاتيح والفأرة والشاشات وغيرها، إلا أن بعض القطع التي لا يستخدمها إلا فئات محدودة من المستخدمين قد تحتاج إلى تعريفات خاصة قبل استخدامها، مثل بطاقات المداخل الإضافية Express Cards -وهي بطاقات خاصة فيها مداخل USB مثلًا أو قارئات بطاقات بنكية أو غيرها، تُوصل بالحاسب- والطابعات والكاميرات الرقمية وغيرها، وتأتي مع تلك الأجهزة والقطع في الغالب برمجيات تعريف خاصة بها. هل تعمل البرامج على جميع أنظمة التشغيل؟ تظهر هذه المشكلة للذين ينتقلون من نظام تشغيل إلى آخر إما لأسباب تقنية كما في حالة الذين ينتقلون من نظام ويندوز إلى أحد أنظمة لينكس بسبب طبيعة عمله أو بسبب مزايا في أنظمة لينكس غير موجودة في ويندوز، خاصة للعاملين في البرمجة وإدارة الخوادم مثلًا، أو بسبب شرائه لحاسب من شركة مختلفة، كما في حالة من يشتري أحد حواسيب شركة أبل. وتتلخص في أنه قد يكون من المستخدمين لحزمة برامج مثل طقم المكتب في مايكروسوفت مثلًا Office، ثم ينتقل إلى لينكس فلا يستطيع استخدامه أو تشغيل نفس البرنامج على نظام التشغيل الجديد، فلماذا لا يعمل البرنامج رغم أنه نفس الحاسب، وما تغير إلا نظام التشغيل فقط؟ الواقع أن نظام التشغيل كُتب بواسطة لغات برمجية، وينبغي كتابة البرامج بلغات برمجية تتوافق مع هذه اللغات التي يقبلها نظام التشغيل ويستطيع تفسيرها، فإذا أردنا تشغيل برنامج مثل معالج النصوص Word مثلًا على نظام تشغيل ماك، فيجب كتابة نفس البرنامج بلغة يستطيع نظام ماك أن يفسرها ويتعامل معها، وبنفس المنطق فإن التطبيقات المخصصة للهواتف مثلًا لا تعمل على الحواسيب المكتبية. على أنه توجد طرق أخرى لتشغيل البرامج على أنظمة تشغيل غير التي كُتبت من أجلها، من خلال آلات التشغيل الوهمية Virtual Machines، وهي برامج تحاكي إنشاء حواسيب افتراضية داخل الحاسب تُخصص لها مساحة من القرص الصلب والذاكرة ليعمل عليها نظام تشغيل مختلف بالكلية داخل النظام الأساسي، لكنها تحتاج إلى أن يكون الحاسب نفسه قويًا بما يكفي لتشغيل نظامين معًا. أو في صورة أقل من هذا، بيئات التشغيل البرمجية، وهي برمجيات توفر قاعدة برمجية تعمل عليها البرامج التي لا يمكن تشغيلها على نظام التشغيل مباشرة، مثل بيئات تشغيل جافا التي يجب تثبيتها قبل تثبيت أي برنامج مكتوب بلغة جافا. خاتمة رأينا في هذه المقالة لمحة مختصرة عن أنظمة التشغيل الخاصة بالحواسيب، وتعرفنا على أنواعها ومهامها ونظرنا في أمثلة عليها، وهي أساس أي عمل أو وظيفة أو مهمة نريد تنفيذها هذه الأيام سواء للبيت أو العمل، فينبغي أن تكون لدينا معرفة أساسية بها وبكيفية عملها، فهي مما لا يسع المرء جهله. فإذا أردت الاطلاع على مدخل شامل لعلوم الحاسب وأنظمة التشغيل فإننا ننصحك بدورة علوم الحاسوب، أو إذا كانت لديك معرفة أساسية وتريد التعمق قليلًا في أنظمة التشغيل فربما تود النظر في كتاب أنظمة التشغيل للمبرمجين. كذلك من المهم أن يتعلم المستخدم كيفية حماية بياناته الشخصية وحاسبه وتأمين تصفحه على الإنترنت، وهنا لا نجد أفضل من كتاب دليل الأمان الرقمي الذي يأخذك خطوة بخطوة إلى تأمين نفسك وتوعيتها بالمخاطر المحيطة ببياناتك على الويب وعلى أجهزتك الشخصية. اقرأ أيضًا العمليات وعناصرها في نظام تشغيل الحاسوب ما هو نظام لينكس ولماذا توجد 100 توزيعة منه؟
    1 نقطة
  39. الإصدار 1.0.0

    10310 تنزيل

    تُعد أنظمة التشغيل موضوعًا متقدمًا في العديد من برامج علوم الحاسوب، حيث يتعرف المتعلم على كيفية البرمجة بلغة C بحلول الوقت الذي يتعرف فيه على أنظمة التشغيل، وربما يأخذ المتعلم فصلًا دراسيًا في معمارية الحاسوب Computer Architecture قبل ذلك، فيصبح الهدف من تقديم هذا الموضوع عادةً هو عرض تصميم وتنفيذ أنظمة التشغيل للطلاب مع افتراض ضمني أن بعضهم سيجري بحثًا في هذا المجال، أو يكتب جزءًا من نظام تشغيل. هذا الكتاب مترجم عن الكتاب Think OS لكاتبه آلن داوني Allen B. Downey والذي يعد مسودة أولية لم تكتمل بصورة نهائية بعد إذ طُوّر لفصلٍ دراسي في كلية أولين Olin College يدعى أنظمة البرمجيات Software Systems. لا يفترض هذا الكتاب أنك قد درست معمارية الحاسوب، فيجب أن يمنحك فهمًا أفضل أثناء قراءته عن الحاسوب ومعماريته وكيف يعمل المعالج والذاكرة فيه وكيف تُدار العمليات وتُخزَّن الملفات وما يحدث عند تشغيل البرامج، وما يمكنك القيام به لجعل البرامج تعمل بصورة أفضل وأسرع بوصفك مبرمجًا. يشرح الفصل الأول بعض الاختلافات بين اللغات المُصرَّفة compiled واللغات المُفسَّرة interpreted، مع بعض الأفكار حول كيفية عمل المصرِّفات compilers، ويشرح الفصل الثاني كيف يستخدم نظام التشغيل العمليات لحماية البرامج قيد التشغيل من التداخل مع بعضها البعض. ويشرح الفصل الثالث الذاكرة الوهمية virtual memory وترجمة العناوين، ويتحدث الفصل الرابع عن أنظمة الملفات ومجرى البيانات، ويصف الفصل الخامس كيفية تشفير الأرقام والأحرف والقيم الأخرى، ويشرح أيضًا العامِلات الثنائية bitwise operators. أما الفصل السادس، فيشرح كيفية استخدام إدارة الذاكرة الديناميكية وكيفية عملها، ويدور الفصل السابع حول التخبئة caching وهرمية الذاكرة. ويشرح الفصل الثامن تعدد المهام multitasking والجدولة scheduling. ويدور الفصل التاسع حول خيوط POSIX وكائنات المزامنة mutexes، ويشرح الفصل العاشر المتغيرات الشرطية POSIX ومشكلة المنتج / المستهلك، ويدور الفصل الحادي عشر حول استخدام متغيرات تقييد الوصول POSIX وتطبيقها في لغة C. هذا الكتاب مرخص بموجب رخصة المشاع الإبداعي Creative Commons «نسب المُصنَّف - غير تجاري - الترخيص بالمثل 4.0». يمكنك قراءة فصول الكتاب على شكل مقالات من هذه الصفحة، «مدخل إلى أنظمة التشغيل»، أو تجدها مسردة بالترتيب التالي: الفصل الأول: مفهوم التصريف Compilation في لغات البرمجة الفصل الثاني: العمليات Processes في أنظمة التشغيل الفصل الثالث: الذاكرة الوهمية Virtual memory في نظام التشغيل الفصل الرابع: فهم الملفات Files وأنظمة الملفات file systems الفصل الخامس: تمثيل الأعداد والنصوص بالبتات وإجراء العمليات على مستوى البت الفصل السادس: إدارة الذاكرة Memory management في لغة C الفصل السابع: فهم عملية التخبئة Caching في معمارية الحاسوب الفصل الثامن: تعدد المهام Multitasking في الحواسيب الفصل التاسع: مفهوم الخيوط Threads في عملية المعالجة الفصل العاشر: المتغيرات الشرطية وحلها مشاكل التزامن بين العمليات في لغة C الفصل الحادي عشر: متغيرات تقييد الوصول Semaphores في لغة البرمجة سي C
    1 نقطة
×
×
  • أضف...