الثلاثاء، 25 ديسمبر 2012

عن فائدة كتاب الدليل و أسلوبه المُنفِّر

علَّق أحد الفضلاء علي مقالي "(وَيْلَكُم) و (دليل كارهي اليُنِكْس)" المنشور علي موقع (وادي التقنية) بقوله:
كيف يكون مثل هذا الكتاب مفيدا لنا ؟
لا سيما مع قلة مستخدمي الأنظمة المفتوحة وندرتهم في عالمانا العربي ؟!

حتى وإن كان فيها بعض من المعلومات المفيدة، فلا أظن كتابا ساخرا على هذا النحو يكون مصدرا أساسيا من المعلومات، فالمراجع المتقدمة المفصلة كثيرة ومتوفرة، ومن أراد بابا من العلم فأفضل طريق له أن يـلِجه من أبوابه.
صدقني إن كنت تعمل في المجال أو تحمل شهادة في إحدى أنظمة لينوكس أو حتى شهادة لإحدى الشركات الاحتكارية الأخرى فلن ترضى أن يسخر أحد مما تعده جزءا من عملك وحياتك ولقمة عيشك.
والسخرية من أي علم ليس من سمات طالبيه.

فكتبتُ رداً:


الكتاب مفيدٌ لمن يرغب في معرفة نقاط قصور  نظام اليُنِكْس التي عُرِفَت عملياً، و لكنه بالَغ في السخرية أثناء عرض تلك النقاط، لو أردتَ كتاباً رصيناً فربما تجد الكثير، و لو أردتَ كتباً تمزج النقد العلمي بالسخرية فستجد هذا الكتاب و أمثاله، و الأمر يعود في النهاية لتفضيلك الشخصي.
و فائدة الكتاب موجودةٌ لمن يهتم بنظام اليُنِكْس من العرب سواءٌ أكانوا قِلةً أم كثرة، فالمعلومات التي فيه ثابتةٌ و لا تتغير بتغير القراء.

بالطبع سيشعر من يتعلق قلبياً أو مهنياً بنظام اليُنِكْس بالكثير أو القليل من الغيظ حينما يقرأ السخرية الصارخة التي في الكتاب، و لكن يبقي القول الفصل أن الكتاب لا يفتري علي اليُنِكْس كذباً، بل ينقل حوادثاً فعليةً حدثت من قبل و تحليل الـunix-haters لها. قد تختلفُ معهم في وجهة نظرهم و في طريقة نقدهم، و لكن يبقي الأصل أنهم يتحدثون من مُنطلَقٍ عملي.
و علينا أن نفصل بين لقمة العيش و الحب القلبي و الحقائق العلمية، أنا علي سبيل المثال أعشق تجميعة "GNU + linux + KDE" الخاصة بتوزيعة kubuntu مع إضافة "java + netbeans" إليها، لكني في نفس الوقت أُقِر أن هناك عيوباً و نقائصاً كثيرةً توجد في كل مكوِّنٍ من تلك المكوِِّنات، و لو قابلتُ أحدهم ينتقد الـkde التي أعتبرها أفضل الواجهات التي تعاملتُ معها علي الإطلاق بسخريةٍ فسأعترف بالحقائق التي يُورِدها، و ربما أضحك علي النكات التي سيستعملها لتوضيح مساويء الـkde، و من يدري: فربما أغضب، و لكن يظل الأمر المهم أنني سأعترف بالحقائق أياً كان قائلها ما دامت لا تنال مني شخصياً بشكلٍ يُفقدني تعقلي. و قد قمتُ أنا نفسي بانتقاد كثيرٍ من الأمور في لغة الـjava في كتاب الرسالة (و إن كان هذا بشكلٍ أقل حدة من كتاب الدليل)، رغم ميلي و استخدامي الدائم لها.

كما أنهم لا يسخرون من "علم" أنظمة التشغيل و إنما من مُنتَجٍ يُسمَّي (يُنِكْس) الذي لا يمثل كل أنظمة التشغيل التي تم بناؤها.

السبت، 22 ديسمبر 2012

عن تعصب unix haters و لهجة كتابهم الساخرة

عقَّب أحد الفضلاء علي مقالي "(وَيْلَكُم) و (دليل كارهي اليُنِكْس)" الذي نشرتُه علي موقع (وادي التقنية) بقوله (بتصرُّفٍ يسير):

مجموعة unix haters مُتحيزون و مُتعصبون جداً ضد يُنِكْس، و عندهم كرهٌ أعمى لكل ما يتعلق به مثل لِينُكْس. و لا يُمكِن أن يكونوا مبرراً لأي أحدٍ ليتعصب في كتابه أو مقالاته أو يقتدي بهم في أسلوب سخريتهم و تهجمهم، إلا إذا أعلن ذلك صراحةً مثلهم و كان هدفه السخرية و التواصي بتنفير الناس.

و كان ردي عليه:

أما أسلوب سخريتهم الزائد عن الحد فقد قلتُ عنه:
"و كذلك بسبب اللهجة الساخرة التي يستخدمها الكتاب لنقد سلبيات نظام اليُنِكْس و التي لا يجد معها المُنصِف إلا أن يضحك (رغم عدم قدرته علي إنكار أنها ربما تكون مُبالَغٌ فيها كثيراً).
كما أنني أحب الكتاب لأن لهجته شديدة السخرية هذه تجعل كتاب الرسالة الذي ألَّفتُه يبدو ملائكياً للغاية في نقده و أسلوبه، و يمكنني أن أضع كتاب (دليل كارهي اليُنِكْس) في عين من يقول أن كتاب الرسالة حاد الأسلوب بشكلٍ زائدٍ عن المطلوب، و كما ترون ففي هذا إفادةٌ كبيرةٌ لي  :)
" و هذا من أوضح ما يكون في إدانتي له  و إقراري بأن كتاب الرسالة لا يجاري كتاب الدليل في سخريته الفجة.
بل لقد قلتُ:
"و لو لاحظتم: فحتي لهجة العناوين في قمة السخرية و التهكم، و هو ما لم أجرؤ علي فعله في كتاب الرسالة، و قد قرأتُ في الكتاب كثيراً (لكني لم أُنْهِ الجزء الأكبر منه حتي الآن)، و كلما قرأتُ فيه ازدادت قناعتي بأن نظام اليُنِكْس أذاق هؤلاء الشاكين الويل ألواناً و أشكالاً ففاضت به ألسنتهم بذلك التهكم الصارخ."
و أقررتُ فيه ثانيةً بالسخرية الصارخة حتي في العناوين، ثم برَّأتُ كتاب الرسالة مِن فِعل المثل.

أما كونهم متحيزين و متعصبين فأمرٌ فيه نظر؛ فما قرأتُه في الكتاب يؤكد لي أنهم يتحدثون من منطلقاتٍ عمليةٍ واضحة، فكيف يكون في هذا تعصب ؟!
لو كنتَ تدري عنهم ما لا نعلمه فأرجو التوضيح.

الخميس، 20 ديسمبر 2012

(ويْلَكُم) و (دليل كارهي اليُنِكْس) !

واحدٌ من أجمل الكتب العلمية التي قرأتُها هو كتاب (unix haters handbook)، و ترجمة عنوانه الحرفية هي (كتاب يد كارهي اليُنِكْس) و لكني أُفضِّل ترجمته كـ(دليل كارهي اليُنِكْس).

هذا الكتاب عبارة عن شروحاتٍ لعيوبِ و نقائصِ نظام التشغيل المُسمَّي (يُنِكْس unix) اعتماداً علي ما حكاه مَن واجهوا مشاكل أثناء استخدامهم له، و كان الإعتماد التام في معرفة تلك المشاكل علي مجموعةٍ ضخمةٍ من الرسائل البريدية التي أُرسِلَتْ إلي المجموعة البريدية (unix haters) أو (كارهي يُنِكْس)، 

الحكاية و ما فيها أن هناك نظام تشغيلٍ غاية في الشهرة يُسمَّي بالـ(يُنِكْس unix) انتشر منذ فترة السبعينات من القرن العشرين بشكلٍ كبيرٍ جداً، بالطبع كان للنظام محبوه و كارهوه، أما محبوه فقد التحقوا بالدورات التي تُعلِّم كيفية التعامل معه و/أو البرمجة له، أما كارهوه فقد أنشأ بعضهم المجموعة البريدية سالفة الذِكر لشرح المشاكل التي قابلوها في تعاملهم معه و جعلتهم يكرهونه كالطاعون.
و بعد سنواتٍ من السباب العلمي الأنيق و غير الأنيق أصبح بالإمكان جمع أهم رسائل تلك المجموعة البريدية في كتابٍ واحدٍ بحيث تتسق مع بعضها البعض و تُكوِّن كتاباً شاملاً جامعاً، و قد فعلها (Simson Garfinkel) و (Daniel Weise) و (Steven Strassmann) مع آخرين و أصبح بين أيدينا كتاب (دليل كارهي اليُنِكْس).

منذ أن قرأتُ الكتاب و أنا أحبه جداً؛ ليس فقط لقيمته العلمية الكبيرة و الخبرة التي يسكبها في قلب من يقرؤه، و إنما كذلك بسبب التحدي الذي ينهمر علي رأس محبي اليُنِكْس انهماراً مؤيَّداً بأدلةٍ علميةٍ عمليةٍ ساطعة، و كذلك بسبب اللهجة الساخرة التي يستخدمها الكتاب لنقد سلبيات نظام اليُنِكْس و التي لا يجد معها المُنصِف إلا أن يضحك (رغم عدم قدرته علي إنكار أنها ربما تكون مُبالَغٌ فيها كثيراً).
كما أنني أحب الكتاب لأن لهجته شديدة السخرية هذه تجعل كتاب الرسالة الذي ألَّفتُه يبدو ملائكياً للغاية في نقده و أسلوبه، و يمكنني أن أضع كتاب (دليل كارهي اليُنِكْس) في عين من يقول أن كتاب الرسالة حاد الأسلوب بشكلٍ زائدٍ عن المطلوب، و كما ترون ففي هذا إفادةٌ كبيرةٌ لي  :)

يقع كتاب (دليل كارهي اليُنِكْس) في  أربعة أجزاء يتكون كلٌ منها من عددٍ من الفصول، و تلخيص الفهرست كما يلي:


* Foreword
    By Donald A. Norman
* Preface
    Things Are Going to Get a Lot Worse Before Things Get Worse
* Who We Are
* The UNIX-HATERS History
* Contributors and Acknowledgments
* Typographical Conventions
* The UNIX-HATERS Disclaimer
* Anti-Foreword
    By Dennis Ritchie
* Part 1: User Friendly ?
    - 1: Unix
    The World’s First Computer Virus

    - 2: Welcome, New User!
    Like Russian Roulette with Six Bullets Loaded

    - 3: Documentation?
    What Documentation?

    - 4: Mail
    Don’t Talk to Me, I’m Not a Typewriter!

    - 5: Snoozenet
    I Post, Therefore I Am

    - 6: Terminal Insanity
    Curses! Foiled Again!

    - 7: The X-Windows Disaster
    How to Make a 50-MIPS Workstation Run Like a 4.77MHz IBM PC
   
* Part 2: Programmer’s System?
    - 8: csh, pipes, and find
    Power Tools for Power Fools

    - 9: Programming
    Hold Still, This Won’t Hurt a Bit
   
    - 10: C++
    The COBOL of the 90s

* Part 3: Sysadmin’s Nightmare
    - 11: System Administration
    Unix’s Hidden Cost
   
    - 12: Security
    Oh, I’m Sorry, Sir, Go Ahead, I Didn’t Realize You Were Root
   
    - 13: The File System
    Sure It Corrupts Your Files, But Look How Fast It Is!
   
    - 14: NFS
    Nightmare File System

* Part 4: Et Cetera
    -A: Epilogue
    Enlightenment Through Unix
   
    - B: Creators Admit C, Unix Were Hoax
    FOR IMMEDIATE RELEASE
   
    - C: The Rise of Worse Is Better
    By Richard P. Gabriel
   
    - D: Bibliography
    Just When You Thought You Were Out of the Woods
   
    - Index


و لو لاحظتم: فحتي لهجة العناوين في قمة السخرية و التهكم، و هو ما لم أجرؤ علي فعله في كتاب الرسالة، و قد قرأتُ في الكتاب كثيراً (لكني لم أُنْهِ الجزء الأكبر منه حتي الآن)، و كلما قرأتُ فيه ازدادت قناعتي بأن نظام اليُنِكْس أذاق هؤلاء الشاكين الويل ألواناً و أشكالاً ففاضت به ألسنتهم بذلك التهكم الصارخ.
عامَّةً لو أردتم فائدةً علميةً فستجدونها في ذلك الكتاب، و لو أردتم سخريةً علميةً صارخةً فستجدونها فيه أيضاً.
و كنتُ أفكر في ترجمة الجزء الخاص بنقد لغة الـ++C (أو إن شئتم الدقة: نَقْضِها !) لكني لا أجد الوقت الكافي لهذا، و ربما أفعله متي وجدتُ فراغاً زمنياً و ذهنياً يكفيان لإتمام هذا الأمر كما أحب بإذن الله عز و جل. 

و قد أوحي هذا الكتاب لي بفكرةٍ أجدها جميلةً و تستحق العمل عليها عند من يجد وقتاً كافياً لها، الفكرة هي: جمع كل المشاكل التي تقابلنا أثناء العمل علي مختلف أنظمة التشغيل و تنظيمها و وضعها في كتابٍ خاصٍ بها، و أقترح تسمية الكتاب (ويْلَكم) و هو تحريفٌ لنطق كلمة (وِيلْكَم welcome) التي تكون عادةً الشاشةَ الافتتاحية لأنظمة التشغيل المختلفة (أو علي الأقل لنظام الـwindows الذي أظن أنه سيكون له نصيب الأسد من الكتاب المُقترَح)، و هو التحريف ذو المعني الواضح :)
أُكرِّر أن ذلك الكتاب لن يكون خاصاً بنظام تشغيلٍ واحد، بل سيكون مشتملاً علي كل المشاكل التي نواجهها علي مختلف أنظمة التشغيل، و هكذا يحكي مستخدموا اليُنِكْس و مستخدموا القنو/لينُكْس GNU/linux و مستخدموا الـwindows و غيرهن من الأنظمة عمَّا أَقََضَّ مضاجعهم في تلك الأنظمة. و يتم ترتيب الشكاوي علي أبوابٍ يختص كل واحدٍ منها بجانبٍ مُعيَّنٍ من تلك المشاكل كما في (دليل كارهي اليُنِكْس).

أجدها فكرةً حلوة: و لكن هل من مُتفرِّغٍ لها ؟

الجمعة، 7 ديسمبر 2012

نبذةٌ عن مكتبتَيْ الـawt و الـswing

هذه نبذةٌ مُختصَرةٌ عن مكتبتَيْ الـawt و الـswing البرمجيَّتَيْن، كتبتُها كَرَدٍ علي سؤالٍ في المنتدي العلمي الوحيد الذي أُتابِعه، و رأيتُ أن  أُنقِّحها بعض الشيء ثم أضعها في المدونة للاستفادة العامة.
 ***
الـawt و الـswing باختصارٍ هما مكتبتان برمجيتان تُتيحان إنشاء واجهاتٍ رسوميةٍ GUI للبرامج، مثل النوافذ windows و الأزرار buttons و صناديق النصوص text boxes و غيرهن من المُكوِّنات الرسومية الأخري، و تُعتبَران جزءاً مما يُسمَّي بإطار الـJava Foundation Classes أو الـJFC اختصاراً، و هو إطارٌ برمجيٌ يُوفِّر واجهاتٍ برمجيةٍ قياسيةٍ لإنشاء الواجهات الرسومية للغة الـjava بغض النظر عن نظام التشغيل الذي يعمل عليه البرنامج.



الـawt :
هي مواصفاتٌ يتم بناؤها بشكلٍ مختلفٍ لكل نظام تشغيل يتم دعمه فيها، يعني: حينما يتم تنفيذ  البرنامج الذي يستخدم مكتبة الـawt علي نظام تشغيل الـwindows فإن نسخة مكتبة الـawt التي ستعمل ستكون في هذه الحالة مبنيةً علي مكتبات الـwindows نفسه، و لو تم تنفيذ ذات البرنامج علي نظام القنو/لينوكس GNU/linux فستكون نسخة الـawt التي ستعمل في هذه الحالة مبنيةً علي إحدي المكتبات المتوافرة له.

و لأنها تستخدم مكتبات أنظمة التشغيل فإن شكل الأزرار و بقية المُكوِّنات في القنو/لينوكس يشبه شكلها في بقية البرامج، و شكل الأزرار و المكونات الأخري في
الـwindows مشابهٌ لشكل بقية البرامج، أي أن البرنامج يختلف مظهره باختلاف نظام التشغيل الذي يعمل عليه، 

مثالٌ لشكل برامج الـawt علي الـwindows (من صفحة الـawt علي الويكيبيديا)

بعض الناس يرون هذا ميزةً و بعضهم يراه عيباً، أنا عن نفسي أري أنه ميزة.
و لكن نتيجةً لكونها تعتمد علي مكتبات أنظمة التشغيل فقد ورثَتْ منها مشاكلها التي توجد بها، و بالتالي اشتُهِرت بأنها غير مستقرةٍ بما فيه الكفاية و ينتج عنها أغلاط زمن تشغيلٍ runtime errors كثيرة (و قد جرَّبتُ هذا بنفسي)، و أظن أن هذه المشاكل زادت بشكلٍ كبيرٍ بعد أن تم استبدالها بمكتبة الـswing و تم إهمال الـawt ربما حتي علي مستوي إصلاح العِلل !
 

الـswing:
هي مكتبةٌ مُشابِهةٌ جداً للـawt لأنها صُنِعت كبديلٍ مُتطوِّرٍ لها، و لكنها تتلافي العيوب الموجودة في الـawt عن طريق البعد عن الإعتماد التام علي مكتبات أنظمة التشغيل، و بالتالي تكون البرامج المصنوعة  بالـswing منفصلةً عن مكتبات أنظمة التشغيل و تصبح مستقرةً جداً و لها نفس البناء علي كل تلك الأنظمة.
و لأنها منفصلةٌ عن مكتبات الأنظمة المختلفة فإن مظهر البرامج التي تُكتَب بها يكون واحداً عليها كلها، 


مثالٌ لشكل برامج الـswing علي مُختَلف أنظمة التشغيل (من صفحة الـswing علي الويكيبيديا)

و من جديد: فبعض الناس يري هذا عيباً و بعضهم يراه ميزة، و أنا عن نفسي أعتبره عيباً لأنه يجعل برامجها في الـwindows مختلفة المظهر عن بقية البرامج بشكلٍ واضح، و كذلك نفس الأمر علي القنو/لينوكس، مما يسبب بعض النفور من اختلاف المظهر (علي الأقل عندي)، و لكني أُقِرُّ أن هذا الشعور يتلاشي مع مرور الزمن و يعتاد المستخدِم علي الشكل المختلف للبرنامج، و قد جَرَّبْتُ هذا مع برنامج الـnetbeans الذي له نفس الشكل المختلف و أصبحتُ لا أحسُّ بأي نفورٍ من هذه الناحية.
 
بالنسبة للأفضلية: 
فالـawt أفضل من حيث السرعة في التنفيذ،
و من حيث قلة المشاكل و التطور و الإصلاح الدوري للعِلل فالـswing أفضل،
أما من حيث السهولة فمن خلال استخدامي البسيط لهما فكلاهما له نفس الدرجة من السهولة.


التكوين العام للمكتبتَيْن (من صفحة مكتبة الـswing علي ويكيبيديا)

للمزيد من التفاصيل التقنية و الأمثلة العملية يمكن زيارة صفحتَيْ الويكيبيديا الخاصتين بالمكتبتين:
http://en.wikipedia.org/wiki/Abstract_Window_Toolkit
http://en.wikipedia.org/wiki/Swing_%28Java%29

بالمناسبة: هناك مكتبةٌ ثالثةٌ تُحاوِل دمج ميزات المكتبتَيْن السابقتين و تلافي عيوبهما، و هي مكتبة الـswt التي يمكن قراءة المزيد عنها علي صفحة الويكيبيديا الخاصة بها:
http://en.wikipedia.org/wiki/Standard_Widget_Toolkit

و قد كانت لي تجربةٌ مع الـawt و الـswing و انتقلتُ من استخدام الأولي إلي استخدام الثانية، و يمكن قراءة المزيد عن هذا علي الرابط التالي:
http://afkar-abo-eyas.blogspot.com/2012/08/awt-swing.html