برمجة نظم التشغيل ب c / c++ [تساءلات]
- ayoub baàli
- 2015-06-02T15:22:13+00:00
السلام عليكم و رحمة الله تعالى و بركاته
لدي سؤالين أـمنآ الجابة عليهم بتفصيل إن أمكن
هل الفرق بين c و ++c هو البرمجة الكائنية فقط ؟
هل c أفضل من ++c في برمجة نظم التشغيل ؟
ما الذي أحتاجه لبرمجة نظام تشغيل من الصفر بهدف التعلم ؟
وشكرا جزيلا لكم إخوتي الأعزاء
و عليكم السلام و رحمة الله تعالى و بركاته ،
هل الفرق بين c و ++c هو البرمجة الكائنية فقط ؟
الفرق بين الC و ال++C ليست البرمجة الكائنية فقط، هذا فقط في بداية ظهور لغة ال++C لكن مع مرور الوقت تضاعفت خصائص لغة ال++C
هل c أفضل من ++c في برمجة نظم التشغيل ؟
كل ما كبر النظام كانت هنالك الحاجة لعدة لغات ، اما بالنسبة لنظام التشغيل فهو اعقد من ان يتم برمجته بلغة واحدة
مثلا اغلب انظمة التشغيل تبرمج ب : Assembly , c , c++, shell .python ....etc قد تزيد او تنقص حسب تعقيد النظام الذي تود تطويره
بالنسبة للسؤال فاقول كما اقول دائما لا يوجد افضل بين لغات البرمجة ، هنا كلا اللغتين توفر وصول بصورة مباشرة للعتاد ( ال++C في النهاية تضم الC لذا معظم ما تؤديه الC يمكن عمله بال++C ) و لكن الامر يختلف في المكتبات التي ستستخدمها في اي لغة تمت كتابتها ؟
ما الذي أحتاجه لبرمجة نظام تشغيل من الصفر بهدف التعلم ؟
لاجابة هذا السؤال نحتاج لاجابة بعض الاسئلة
اولا : ما لذي تود تعلمه ؟؟ و الى أي مدى تود تعلمه ؟؟
برمجة نظام تشغيل فعليا ليست بالشي الفريد من نوعه ، اعني بذلك ان المعرفة التي تكتسبها من برمجة نظام تشغيل يمكن ان تكتسب من خلال مشاريع اصغر (مقارنة بنظام التشغيل ) ، الفرق الوحيد في نظام التشغيل هو انه يجب عليك ان تجمع كل هذه المعارف و تصمم المعمارية لكل هذه المكونات .
مما سبق يتضح لك انك اذا قمت بتحديد ما تريد تعلمه بالضبط يمكنك حينها ان تجد المشروع الذي تتعلم منه ما تريد دون الاضطرار للخوض في بحر انظمة التشغيل .
ثانيا : ماذا تعني لك كلمة "من الصفر" ؟
هل تقصد بهذه الكلمة برمجية نظام التشغيل من لا شيء ، مهلا ! هذا يعني انك ستحتاج لتتعلم الكثير عن العتاد ( الهاردوير) و انواعه و الاختلافات فيها بينها و التعليمات التي يعمل بها كل نوع ، و ... الخ و طبعا بلا شك ستكتب الكثير من اكواد الاسمبلي .
مهلا ! ليس هذا فقط ، لنفرض انك تود البرمجة بلغة السي مثلا ، عندها لن تستطيع استخدام دالة الprintf مثلا و بقية الAPI الخاصة بالسي ، اتعلم لماذا ؟
تلك المكتبات مكتوبة لنظام تشغيل معين ، و لن تعمل على نظامك ، لذا ستضطر لكتابة النسخة الخاصة بنظامك .
لكن اذا كنت تعني بكلمة "من الصفر" ان تقوم بالتعديل على نواة نظام تشغيل مبني فعلا ، فهنا يختلف الامر كليا.
البرمجة من مرحلة النواة (مثلا لنقل نواة لينكس) ستختصر الكثيير من المجهود عليك ، مثل كتابة اكواد الاسمبلي التي تتعامل مع مختلف انوع العتاد (هذا لا يعني انك لن تحتاج للاسمبلي ) و كذلك كتابة الAPI للغة الC و غيرها لان غيرك قد كتبها مسبقا .
لكن هذا يعني انك ستحتاج لتفهم معظم (ان لم يكن كل ) هذه الشفرات المصدرية التي تتعدى الملايين من السطور بين كود C او ++C او assembly و غيرها من اللغات.
اذن القرار قرارك و انت من تعلم ماذا تريد ان تقوم به بالضبط ولاي مرحلة تود الوصول .
لم ينته الموضوع بعد !
كل ما تم ذكره سابقا يتعلق بالمعرفة اللازمة بلغات البرمجة ، لكن هنا ساذكر لك امثلة على الاشياء التي يجب الالمام بها قبل البدء :
مفهوم نظام التشغيل (concept) و معمارياته و مكوناته الاساسية .
معرفة ببعض الانظمة الاخرى بالتفصيل خصوصا الUNIX للاستعانة بمكوناته .
انواع ملفات الانظمة (File System like ext, ntfs,fat ..etc) بالتفصيل .
كما ذكرت سابقا انواع معماريات العتاد (مثل arm, arm7,x86) سواء كنت ستبدا من الصفر او ستستخدم نواة نظام اخر .
معرفة دقيقة بالمحاكيات و المرئيات (emulators and visualizer ) - ان صحت الترجمة .
معرفة بلغة الاسمبلي ، على الاقل الاساسيات.
المزيد ..
نسبة لعدم اتساع المساحة يمكنك الاطلاع على المزيد عن انظمة التشغيل و كيف تبني نظامك من هنا :
ارجوا قراءة المحتوى بتمعن حتى تجيب على كل تسائلاتك.
يساعد في بناء نظام مبني على نواة اللينكس .
اخيرا !
ارجوا ان تتقبل نصيحتي ، ان كنت تريد فقط التعلم و عدم الاستمرار في مجال انظمة التشغيل ، فهناك الالاف من البرامج التي تستطيع ان تتعلم منها ما تريد و لن تاخد الكثير من وقتك ، كما ان هنالك الكثير من المجالات المتطورة و المعقدة في مجال الحاسوب التي تستحق من الاهتمام بها ، و تعلمها ، فكل يوم تتعقد اكثر .
ام ان كنت تود الاستمرار في مجال انظمة التشغيل ، فنصيحتي ان تبحث عن فريق ، و حتى مع وجود فريق لا تبدا من لاشيء ، ابدأ من نواه نظام اخر مثل اللينكس . لن اقول لك تريد اعادة اختراع العجلة ، فمن يدري ما تود القيام به
ارجوا لك التوفيق.
تقبل تحياتي .
رد كافي ووافي
كما ان هنالك الكثير من المجالات المتطورة و المعقدة في مجال الحاسوب التي تستحق من الاهتمام بها ، و تعلمها ، فكل يوم تتعقد اكثر .
مثل ماذا ؟
- وشكرا لك على هذا الرد الرائع جعله الله في ميزان حسناتك
بارك الله فيك اخي،
كسبيل المثال لا الحصر مجال الذكاء الاصطناعي مثلا و بحوره الواسعة من معالجة اللغات الطبيعة و التعرف على الحركات و الادراك و ... الخ كل يوم يظهر فرع جديد و كل فرع علم قائم بذاته ، هنالك ايضا البرمجة السحابية و تعقيداتها .
هنالك الكثير ايضا من المجالات ، لكي تتعرف اليها و تعرف اهميتها تفكر في المنتجات التي تستعملها اليوم ، مثلا منتج Google Now انظر كيف يتجاوب معك بكلمة "ok google" و كيف يقوم بتفسير كلامك ، قد يظهر للمستخدم العادي انها تقنية بسيطة لكن وراء هذه العبارات خوارزميات معقدة و متشابكة .
شاهد حلقة : من الهام الطبيقة من برنامج استيفن هوكنز على الرابط التالي ، و انظر كيف يفكر الغرب و يستنتج الخوازميات المعقدة من الطبيعة و المخلوقات .
رحم الله من قال : " من قال انه عالم فقد جهل".
الذكاء الإصطناعي كنت مهتما به قبل فترة لكن ليس إهتماما واسعا
هل لك أن تدلني على أشهر اللغات البرمجية التي تستعمل فيه
و أعذرني أخي الكريم على كثرة أسئلتي
و شكرا لك على كل شيئ
كما اسلف اخ شادي جزاه الله كل خير ، يجب عليك فهم الخوارزميات و المفاهيم قبل اختيار لغات البرمجة ، فاللغات في نهاية الامر ادوات مساعدة فقط .
كما اعتقد ان الامر اصبح الان يعتمد على مكتبات اكثر من كونه يعتمد على امكانيات لغة معينة، فستجد مكتبات تساعدك في بعض مجالات الذكاء الاصطناعي مثل معالجة اللغات الطبيعية في اغلب اللغات مثل ، جافا ، سي بلس ، بايثون ( مثل
) ، و الغرض منها هو مساعدة المبرمج الذي يستخدم هذه اللغات ، متى ما احتاج اليها حتى لا يضطر على استعمال لغات اخرى مثل برولوغ و ليسب .
مرة اخرى ، لغات البرمجة ادوات مساعدة فقط .
و شكرا.
يبدو أنك لا أنت و لا معظم الناس لم تفهموا أن لغات البرمجة غير مهمة كل شيئ يعتمد الخوارزميات و فهم معمارية الحواسيب و الملاحظة و الإستنتاج إذا كنت تتعامل مع الذكاء الإصطناعي و محاولة دراسة الفروع الجديدة في علوم الحاسوب التي لا تعتمد في الأساس على لغات البرمجة ،تقريبا كل شيئ نظري فهم يبنون النظام على الورق قبل إختيار اللغة المناسبة لبرمجته.
أنا أردت أن أعرف اللغات البرمجية التي تستعمل بكثرة في الذكاء الإصطناعي
لغرض معرفتها ففقط فضول يعني
أشهر اللغات المستعملة في الذكاء الإصطناعي هي لغة Prolog برولوغ
و لغة Lisp ليسب
و لكن يمكن استعمال أي لغة أخرى مثل الجافا و c++ و c# و حتى php يمكن استعمالها
شكرا لك :)
- حذف بواسطة المستخدم
مجتمع للمبرمجين من جميع المستويات لتبادل المعرفة والخبرات. ناقش لغات البرمجة المختلفة، الحلول البرمجية، والمشاريع.
التعليقات