أريد أن أبرمج لنظام التشغيل لينكس ، هل أستطيع أخذ أي كتاب في السوق والتعلم منه ومن ثم كتابة برامج تعمل على لينكس بدون مشاكل ؟
ما هو الاختلاف بين برمجة السي لوندوز و للينكس ؟
السلام عليكم
نعم تستطيع أن تبرمج في ِكلا النظامين بإستخدام السي
ولكن برمجة الواجهة الرسومية في لينكس لها لغات أخرى مثل gtk أو qt
وأيضا يمكنك البرمجة بإستخدام دوال WIN32API تحت الينكس ولكن يجب أن تثبت برنامج WINE ( حسب معرفتي إن لم يكن هناك أشياء أخرى لا أعرفها)
*************************************************
مجموعة مواضيع - إحتراف البرمجة -
ّ~~~~~~~~~~~~~~~~~~~~~~
البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة
آخر المواضيع :
أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات
ثغرة SMS لأجهزة الجوال Siemens 3568i !
أخطاء وثغرات البرامج العربية !!!
سلسلة مواضيع - أمن وحماية مواقع الويب -
E البرمجة المتقدمة X للملفات التنفيذية E
سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة
**************************************************
<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>
**************************************************
شكراً لك أخي المشرف ولكن بعد قراءة الموضوع المشار إليه عندي سؤال مهم وهو :
هل معنى الكلام في الموضوع السابق أنه اذا وجدت كود لغة سي في أي مكان في الإنترنت وكان هذا الكود لا يستعمل api فهو كود قابل للعمل على لينكس ؟
في الواقع أنا أود صنع برنامج على لينكس وأود استعارة بعض الكود من مواقع الانترنت التي تعرض كودات مجانية
لينكس يملك أقوى C++ Compiler (على الأقل من وجهة نظري :lol: ) ويسمى gcc للسي و ++g للسي++ ويحتوي أيضا على Compilers للغات أخرى.
اقتباسفي الواقع أنا أود صنع برنامج على لينكس وأود استعارة بعض الكود من مواقع الانترنت التي تعرض كودات مجانية
في الواقع لغة سي++ تعمل على مختلف أنظمة التشغيل (ولكن السي ++ القياسية أو التي توجد المكتبات المناسبة لها) ولا تنسى أن لغة سي أصلا صممت لنظام يونكس ولم يكن الدوس قد ظهر أصلاً
الـ gcc هو كومبايلر لكل شيء ;) GNU Compiler Collection حسب ما أعتقد
لغة السي المفروض انها قابلة للنقل بين الأجهزة, السبب الوحيد اللذي قد يعوق ذلك هو انك تستخدم مثلا function معرف عندك في ملف .h لكن تتحول إلى كومبيوتر آخر لا يحتوي على هذا الملف, فلا يستطيع الكومبايلر التعرف على هذا الـ function و بالتالي لن يعمل الكود.
المشكلة هنا ان لكل نظام تشغيل مكتبة خاصة للتطوير به, كما ذكر هنا سابقا. الطريقة اللتي يعمل بها نظام النوافذ في كل من وندوز و لينكس مختلف, لذلك الكود المكتوب للعمل على نظام النوافذ في ويندوز لن يعمل على لينكس.
هناك مكتبة اعتقد اسمهة wxWidgets و موقعها http://www.wxwidgets.org/ تحاول تسهيل المهمة .. بحيث انك تستخدم هذه المكتبة, و بإمكانك عندئذ نقل الكود بين ويندوز و لينكس.
طبعا الـ protability تعتبر احد الشماكل اللتي تواجه المطورين ...
و ربما هناك أمور قد لا تطر على البال ..
مثلا لو عندك function اسمه isDigit ياخذ حرف و يتأكد من كونه رقما أو لا ..
عادة ربما يكون شكل الكود هكذا:
bool isDigit(char chr)
{
return ( chr >= '0' && chr <= '9' );
}و لكن ما أدراك, ربما هناك نظام تشغيل لا يستخدم الـ ascii!!!!! ربما يستخدم جدولا آخر تكون الأرقام فيه مبعثرة بحيث ان الكود قد لا تعمل ..!
خرجنا خارج الموضوع!!
تم تعديل هذه المشاركة بواسطة hasan_aljudy في 1 أبريل 2005 في 09:03
اقتباسو لكن ما أدراك, ربما هناك نظام تشغيل لا يستخدم الـ ascii!!!!! ربما يستخدم جدولا آخر تكون الأرقام فيه مبعثرة بحيث ان الكود قد لا تعمل
لو عندك مصدر يؤكد كلامك يا ريت توريهولنا
أنا لا أريد لغة تشتغل في وندوز ولينكس
أنا أريد اللغة التي تتوفر فيها شرطين :
1- تعمل على لينكس
2- يمكن استعارة أكواد من الإنترنت مثل الأكواد التي في الموقع www.planetsourcecode.com
وسوف تعمل على لينكس بدون مشاكل
ولا يهمني شيئ آخر
حسب الكود, إذا كان الكود يستخدم win32 api فلن يعمل على لينكس إلا إذا تخلصت من اي شي متعلق بالوندوز (خصوصا اذا كان الجزء اللذي تريده من الكود لا يتعلق بنظام تشغيل معين) لكن اذا كان الكود هدفه القيام بعميلة معينة بغض النزظر عن نظام التشغيل فسيعمل إن شاء الله على اي نظام تشغيل.
مثلا اذا كان الكود يعالج ملفات معينة بطريقة معينة فعلى الأغلب سيكون الكود منفصلا عن نظام التشغيل (بحيث لا يهم ما هو نظام التشغيل المستخدم) و هكذا.
أما اذا كان الكود خاص بالجرافكس فاعتقد ان اغلبه سيكون مرتبط بنظام تشغيل معين, ربما باستثناء الحالات التي يكون فيها الكود مكتوبا باستخدام مكتبة أخرى مثل wxWidgets بحيث يعمل على اي نظام تشغيل.
و الله أعلم.
يا سلاااااااااااااااااااااااام
بارك الله فيك .... الآن فهمت
ما قصرت
طيب الآن نأتي لاشكالية أخرى وهي هل أتعلم السي أم السي بلص بلص ؟
ما االفرق بينهما ، ولا أقصد الفرق من ناحية التركيب اللغوي .... إلخ إلخ
أقصد أيهما سوف يكون أنفع لي بحيث يقبل الأكواد من المواقع إياها ؟
والبرنامج الذي أريد أن أعمله يقوم بعمل عمليات معينة على ملفات فهل هناك لغة أفضل من غيرها ؟
السي بلص بلص تحتوي السي, يعني أغلب أكواد السي لو وضعتها في السي بلص بلص فستعمل (على حد علمي, و الله أعلم), لكن العكس غير صحيح.
نصيحتي ان تتعلم السي بلص بلص, تستطيع طبعا البدء بالسي, لكن هناك أشياء سيكون عليك نسيانها عند الانتقال الى السي بلص بلص (و هي أشياء أنا اصلا لم أتعلمها). و عموما السي بلص بلص تحتوي السي, لذلك عندما تتعلم السي بلص بلص فأنت تقريبا تتعلم السي, حتى تدخل في الـ classes عنئد تنقطع علاقتك بالسي.
اقتباسوالبرنامج الذي أريد أن أعمله يقوم بعمل عمليات معينة على ملفات فهل هناك لغة أفضل من غيرها ؟
هههههه سبحان الله, انا لما جبت سيرة الملفات ضربتها كمثال فقط!! لكن تبين ان هذا هدفك :D
بالنسبة للمفات, انا لم أجرب فتح الملفات باستخدام السي, لكني متأكد ان السي بلص بلص أفضل من السي في هذه الناحية. و الله أعلم طبعا.
بقيت شغلة واحدة من ناحية الملفات: عندما تفتح ملفا معينا فعادة تحدد اسم الملف.
مثلا
ifstream some_file( "file.txt" );
هنا لا توجد مشكلة, لكن المشكلة تأتي عندما يكون العنوان المعطى للملف هو الـ absolute path مثلا
C:\directory\sub\file1.txt
هنا طبعا لن يعمل على لينكس لأن اللينكس لا يسمي الدرايفات بحروف معينة, لكن هذه المشكلة ليست كبيرة, كل ما عليك فعله هو وضع الملف الذي تريد فتحه في مكان معين ثم تعديل السطر اللذي يحتوي امر فتح الملف ليفتح الملف من المكان الجديد اللذي وضعته فيه.
تم تعديل هذه المشاركة بواسطة hasan_aljudy في 3 أبريل 2005 في 09:53
شكراً لك حقيقة ما قصرت
هذا الموضوع مغلق.