أخي العزيز عبدالله ...
يسرني و يشرفني التحاور معك في هذا الموضوع ، و اتمنى ان يعود هذا الحوار بالفائدة علي و عليك بالدرجة الأولى وعلى كل من يقرأ ويشارك في نقاشنا هذا
عن نفسي انا لست خبيرا في إدارة انظمة التشغيل ... لكني لي معرفة لا بأس بها في معمارية انظمة التشغيل وكيفية تركيب اجزاء انظمة التشغيل برمجيا و كيفية عملها من الناحية المنطقية ...
بالنسبة لحديثك عن ان مشاكل الهاردوير في بيئة اللينكس تعود اساسا الى قلة الشركات التي تكتب Drivers خاصة لأجهزتها لتعمل تحت نظام اللينكس .. أعتقد ان هذه مشكلة اخرى يعاني منها اللينكس ( ولو اني ارى ان هذه المشكلة بدأ تقل نوعا ما في الفترة الأخيرة ... )
الا ان المشاكل التي اتحدث عنها هي مشاكل تعامل اللينكس مع أجزاء الهاردوير التي تعرف عليها فعليا ... دعني اضرب لك مثلا بسيطا ... حينما نأخذ سواقات الأقراص ( الصلبة و المرنة ...) نجد ان اللينكس يقوم بتشغيلها بطريقة بدائية جدا وهي ما يمسى بالـ Mounting ... طريقة استغرب فعلا لماذا يصر اللينكس في كل اصدراته على استعمال هذه الخوارزمية في تشغيل الأقراص ؟؟؟
لهذه الطريقة سلبيات كثيرة منها ... مشاكل التزامن في تشغيل الأقراص و اكمال باقي عمليات النظام ( مثل ادارة الذاكرة ) .. اذ انه من المعروف ان ابطئ العمليات على نظام التشغيل هي تلك العمليات المتعلقة بالـ Storage Devices (وحدات التخزين مثل الأقراص الصلبة و المرنة ) ... مما ينتج عن ذلك وجود مشاكل كثيرة في عمليات الـ Synchronization و التي تعتبر اكثر المهام حساسية لنظام التشغيل .. لأن اي Conflict (تعارض عمليات) قد يحدث في نظام التشغيل قد يؤدي الى مشاكل كثيرة لا حصر لها .. وهذا هو الحاصل غالبا في اللينكس ( خصوصا في المشكلة المعروفة UnMounted Disk )
بإعتقادي ان قلة الدعم من الشركات للينكس هي مشكلة كبيرة لا ارى لها حل على المدى القريب ... وذلك لأنه كما تفضلت بعض الشركات لا ترغب في كشف بعض المعلومات عن برامجها او اجهزتها .... بينما بيئة اللينكس تتطلب في بعض النواحي ( بناء نواة النظام Kernel ) معرفة كاملة بالـ ISA الخاص بكل معالج او بكل جهاز ملحق مجهز بوحدات معالجة خاصة ( كما هو الحل مع كروت الشاشة الحديثة )
بالنسبة للتعامل مع اللينكس كبيئة تطوير ... انا تعاملت مع اللينكس خلال الثلاث سنوات الماضية بشكل اساسي في مجال البرمجة .. انا على عكس ما تصورت لست مطلعا بشكل كبير على بيئة الـ .NET ، كل ما اعرفه عنها معلومات عامه و بعض التفاصيل البسيطة في لغة #C ... في الأساس انا ابرمج بلغة الـ C و الـ PHP .. ولا اخفيك سرا .. اللينكس فعلا يعتبر افضل لمبرمجي الـ C من الويندوز ... الا في شئ واحد مهم جدا وحساس جدا .. الا وهو عدم وجود بيئة تطوير متكاملة في نظام اللينكس ... فبرنامج Emacs الذي يعتبر من افضل التطبيقات لكتابة البرامج بلغة C في اللينكس .. لا ارى انه فعلا يشبع رغبات اي مبرمج شغوف بالبرمجة ، بينما نجد في الويندوز العديد من ادوات التطوير لهذه اللغة و للعديد من اللغات ..
حسنا قد يقول البعض ان عدم وجود هذه البرامج راجع لقلة الدعم من الشركات لنظام لينكس ؟؟
لا يبدو لي ذلك خصوصا في هذا المجال ... ان لينكس اخذ على عاتقه في البداية وحتى اليوم ان يكون بيئة التطوير المتكاملة للمبرمجين .. وها هو يحاول جاهدا منذ سنين .. لكن في الحقيقة لم ارى شئيا من هذا يتحقق في جميع الجوانب .. هناك تطورات لا انكرها في بعض الجوانب ... و لكن هل هذه التطورات تجعله ( كما يزعم البعض ) بيئة التطوير الأمثل للمبرمجين ؟؟
من ناحية الـ Socket Programming ... فلا احد ينكر ان اللينكس غني جدا بالدوال الخاصة بالـ Socket Programming .. وذلك لأن دعمه للغة الـ C و اثرائه لمكتباتها بدوال خاصة بالـ Socket Programming جعله نظام تشغيل جيد للشبكات وهذا ما ذكرته سابقا
لكن تحدثت انا عن مشاكل اللينكس نفسه في التعامل مع الـ Sockets ... هناك مشكلة لا اتذكر ما هو سببها الفعلي ولكن رأيت انه تم حلها في اللينكس ريدهات 8 .. المشكلة تتمثل في اخفاق اللينكس من الإحتفاظ برقم الـ Port الصحيح اثناء تشارك الـ Processes بعض المعلومات فيما بينها !!!!!!!!!!!!!
بشكل عام الـ Socket Programming بشكل عام في اللينكس يحظى بدعم رائع وهذا لا نقاش فيه .
اخيرا .. تقبل خالص تحياتي و تقديري