‏إظهار الرسائل ذات التسميات democracy. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات democracy. إظهار كافة الرسائل

الجمعة، 29 يونيو 2012

البرمجة، وقوالب الطوب، والحلم المختفي

لماذا أحب الكمبيوتر؟ في الثمانينات وانا في المدرسة رأيت برنامجاً للرسم يعمل على الكمبيوتر المنزلي. لا اعرف نوع الجهاز تحديداً لكن اعتقد أنه BBC Micro. كانت الأجهزة في تلك الفترة متقاربة على أي حال.

كان البرنامج فيه الأدوات المعروفة: خطوط ودوائر وتلوين، لكن كان يمكن التلوين بأشكال وليس فقط ألوان، كان يمكنني أن أختار "قوالب طوب"، واضغط في المساحة الفارغة، لتمتليء بقوالب الطوب مرصوصة بجوار بعضها. وهنا قد ذهلت: هذا يعني انه يمكنني أن ارسم الجدران ثم بدلاً من رسم كل قالب طوب على حدىً سيفعل الكمبيوتر هذا بدلاً مني!

لقد كانت لحظة فارقة في حياتي. انا اعتبر نفسي إنساناً مبدعاً لكني كسول؛ والآن هناك آلة تقوم بالعمل الممل وتترك لي العمل الإبداعي! هذا يغير أشياء كثيرة. ولهذا أحببت الكمبيوتر.

هل تعرف ما هي إمكانات جهاز BBC Micro؟ إن سرعته هي 2 ميجاهرتز (وليس جيجا). الذاكرة من 32 كيلوبايت، والمعالج 8 بت.

ثم ننظر لهذا النظام (Sketchpad) وهو موضوع رسالة الدكتوراة للباحث Ivan Sutherland في الستينات.



النظام ليس فقط مبهر بالنسبة للفترة التي ظهر فيها، إنه مبهر حتى الآن! الشيء الذي يهمني في هذا المثال هو انه يستغل إمكانات الكمبيوتر الحسابية ليقوم بكثير من العمل بدلاً من الإنسان: هل تريد هذه الخطوط متوازية؟ هل تريدها متعامدة؟ هل تريد هذه النقاط على استقامة واحدة؟ فقط اطلب هذا من الحاسوب!

ثم ننظر إلى برامجنا الحديثة: برنامج Word مثلاً، فنجده انه يشبه في أساسه آلة كاتبة الكترونية. إنه يسمح لك بتنسيق كلامك، نعم، وبتعديله بعد كتابته، وبإدراج جداول ورسومات بيانية بل وأفلام فيديو، لكنه الهدف الأساسي..الكتابة؛ هذا متروك لك!
  • لو كنت تؤلف قصة فعليك أن تتابع أنت حالة كل شخصية وموقفها.
  • لو كنت تكتب مقالاً فمسؤوليتك تنظيم أفكارك.
  • لو كنت تكتب كتاباً فعليك مسؤوليات كثيرة؛ غالباً ما ستسجل في ورقة جانبية الفكرة العامة لكل فصل، والمصادر الخاصة بكل فصل، والأفكار التي أنت متأكد منها مقابل ما ينبغي مراجعته...الخ...الخ...
  • لو كنت تكتب documentation فعليك مسؤوليات أكثر.
  • لو كنت تكتب شعراً فعليك مراعاة الأوزان بنفسك.
طب إيه لزمة الكمبيوتر بقى؟؟؟؟

ننظر أيضاً لبرامج الرسم؛ سأركز على البرامج 2D حالياً: برنامج مثل Inkscape يسمح بعمل تدرجات للألوان، ويسمح باستخدام منحنيات بيزييه، ويسمح بأن تكون الخطوط مثل قلم حبر أو رصاص أو فرشاة. ويسمح بعمل أشكال ثلاثية الأبعاد. لكنه لا يساعدني أن أرسم!

مشاكلي في الرسم تشبه الآتي:
- لقد رسمت يداً تمسك بسيف، أي الخطوط أمسحها لكي اجعل الأصابع التي أمام السيف تظهر، والتي وراء السيف لا تظهر؟
- أريد أن اصمم الشكل (شخص، حصان، سيارة) من مكونات هندسية أساسية (متوازي مستطيلات، شكل كروي) ثم احولها تدريجياً للشيء المطلوب رسمه.
- أريد أن أضبط تعبيرات الوجه.
- أريد أن اسجل نسب الجسم الخاصة بشخص (نسبة الرأس للبدن للسيقان..) لكي يكون الشخص بنفس النسب كلما رسمته.
- أريد ان ارسم قصص مصورة بدون تكرار للعمل.

لماذا لا تساعدني أيها الحاسوب؟؟

ثم ننظر للبرمجة. لماذا لا يساعدني الكمبيوتر؟ إنه يعطيني محرراً أكتب فيه، ثم يسكت! على الأقل أدوات مثل Eclipse هي خطوة في الاتجاه الصحيح. هب أنني غيرت عدد الـparameters في دالة. يقوم Eclipse وقتها بتنبيهي إلى كل أماكن استدعاء الدالة لكي اضيف فيها الـparameter الإضافي. ولو كانت الدالة معرفة في class، فهو يقوم بتنبيهي لكل فصيلة فرعية تعيد تعريف الدالة لكي أغيرها أيضاً..

هكذا يكون الكمبيوتر الشاطر: يقوم بكل عمليات البحث والمطابقة - تلك العمليات المملة - لكي لا احتاج أنا الإنسان أن اقوم بها.

(الظريف ان بعض المبرمجين يتباهون بعدم احتياجهم لمثل هذه الأدوات.)

ولكنه لا يقوم بالعمل الكافي، هناك آلاف السبل التي يمكن بها لأداة البرمجة الذكية أن تساعد الإنسان. مثلاً: لماذا كلما أردت اختبار برنامج احتاج لتوقيف البرنامج، وتشغيله، وتكرار نفس خطوات اختباره؟ لماذا لا يتم تسجيل تلك الخطوات؟

إن أجهزة الكمبيوتر الموجودة في الثمانينات كانت إمكاناتها لا تذكر مقارنةً بالأجهزة الحديثة، لكن البرامج القديمة، كثيراً ما أشعر انها كانت "ألذ" بكثير. لقد تغيرت نظرة المبرمجين للعلاقة بين الكمبيوتر وصاحبه؛ قديماً كان هناك تركيز كبير على فكرة "الكمبيوتر يقوم بالأشياء المملة لكي يقوم الإنسان بالأجزاء المهمة"، الآن يبدو وكأن الشخص هو خادم الكمبيوتر وليس العكس: تحديث الويندوز، الكشف عن الفيروسات، تركيب SVN/IDE/JVM/Maven....الخ قبل أن تبدأ البرمجة.

لا اقول أن المطورين أو الشركات قد تعمدت هذا؛ لقد زادت الأمور تعقيداً في الأجهزة والبرامج، زادت بكثير عن أيام الثمانينات، ولكننا في رحلة التعامل مع التعقيد ربما نكون قد نسينا شيئاً من الأهداف الرئيسية لهذا الاختراع.

وعموماً مازال هناك البعض يحمل الفكرة: مثلاً برنامج Scrivener هو منسق للكلمات يساعدك فعلاً على تنظيم أفكارك وليس مجرد تغيير شكل الخطوط وأحجامها. برنامج Sketchup يساعد بالفعل على التعبير عن افكارك بطريقة رسومية بسرعة. هناك جيل جديد من الأدوات البرمجية يحاول ان يقوم بالأشياء "المملة" بدلاً من المبرمج.

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

أعتقد أن جزءاً من سبب المشكلة قد يكون التفريق بين "المطور" و"المستخدم". لقد تعلمنا في الجامعة أن هندسة البرمجيات تبدأ بجمع متطلبات البرنامج requirement analysis وتنتهي بصيانة البرنامج. لكن في الستينات، السبعينات، الثمانينات، كان كثيراً ما يكون المطور والمستخدم هما نفس الشيء. كان الإنسان يبرمج لنفسه أولاً.

الاثنين، 31 أكتوبر 2011

للديموقراطية صور كثيرة

رئيس الولايات المتحدة يأتي بالانتخاب، وكذلك أعضاء الكونجرس. دستورهم شهير في هذا الجانب حتى صارت كلمة "دستور جفرسوني" Jeffersonian Constitution تطلق على الدساتير المصنوعة على النمط الأمريكي. لكن الصورة الآن ليست كما نتخيل...

سيطرة رجال الأعمال على الدولة حتى أن القوانين تُفصّل لهم خصيصاً، تفتيش الناس في المطارات، معتقلات جوانتانامو، ضرب المتظاهرين بالرصاص المطاطي في مظاهرات Occupy wall street. طبعاً مازال لديهم نقاط إيجابية كثيرة (ليس هدف مقالي الهجوم عليهم) لكني أريد أن أتساءل: كيف تتآكل الديموقراطية في الأمم؟ وكيف يمكن تحصينها لجعل تآكلها أصعب؟ هذه بالطبع اسئلة لها معنى في الجو السياسي الحالي، جو رسم الصورة المستقبلية للدول العربية، ومن هنا هذا المقال.

تعال نضرب أمثلة على استخدام كلمة "ديموقراطية" في نسق غير سياسي، سنعرف لماذا بعد قليل:
  • الفيسبوك ويوتيوب - ومن قبلهم المدونات - صنعوا ديموقراطية في الإعلام، وصار يمكن لأي شخص أن يصنع بذرة قناة إخبارية (مثل شبكة رصد وغيرهم). وهناك أشخاص مثلي لم يكن ليُسمع لهم صوت بدون هذه الأدوات.
  • المدونات بالذات جعلت إنشاء موقع على الإنترنت بسهولة ملء صندوق نصي. قبل ذلك كان يمكن لمتخصص أن يصنع موقعاً للإنترنت بلغة HTML ويبحث لها عن host، لكن الآن خالتي تستطيع عمل مدونة إن أرادت.
  • لغة Visual basic وبرنامج Microsoft Access صنعوا في عصرهم ديموقراطية برمجية، بحيث يمكن لصيدلي مثلاً أو صاحب سوبر ماركت أن يصنع برنامجاً لمحله دون الحاجة لمبرمج متخصص.
ما الذي يجعلني اطلق كلمة "ديموقراطية" على كل من هذه المواقف؟ الشيء المشترك بين كل من هؤلاء هو فكرة نزع القوة من القلة وإعطاؤها للأكثرية. وللقوة صور عديدة...اقتصادية وفكرية وعلمية وتكنولوجية وسياسية وإعلامية...كل قوة منهم لو تركزت في يد قلة فإن هذه القلة قد تسعى لاستثمار قواها الحالية في اكتساب قوى جديدة. وبهذا تبدأ الديموقراطية في التآكل.

وهذا ما حدث في أمريكا: جزء كبير من مشاكلهم سببها تركز الإعلام في يد فئات محددة توجه الشعب كيفما تشاء، إن أهملت تلك الفئات أي تجاوز لم يغضب من الشعب أحد، وإن ركزت على أشياء أخرى لم يتحدث أحد إلا عنها: لقد صاروا يحددون للناس ما هو المهم وما هو غير المهم. [فكر في ما حدث في مصر أيام مباراة الجزائر أيضاً]

فكيف نحافظ على الديموقراطية إذاً؟ أشياء كثيرة، لكن من ضمنها فكرة "توزيع القوة على الأكثرية":
  • المعلومات قوة، لذلك لابد أن يكون هناك شفافية ويستطيع المواطن أن يعرف كل صغيرة وكبيرة تحدث في إداريات وحكم الدولة. لو تركزت هذه المعلومات في يد قلة فسيكون من الصعب محسابتهم أو وقف الفساد.
  • التكنولوجيا قوة، لذلك لابد أن يكون استخدام الإنترنت مثلاً متاحاً للجميع بلا قيود، وبسعر رخيص وفي كل مكان، وإلا فسيكون السبيل الوحيد للحصول على المعلومات هو الوسائل التقليدية وهي سهل السيطرة عليها. كل تكنولوجيا يملكها قلة ولا يملكها كثرة هي نقطة يمكن إساءة استغلالها.
  • الفكر قوة، ولو لم يكن الشعب كله على مستوى فكري عالٍ فسيمكن في أية لحظة أن يأتي من يسمون أنفسهم النخبة ويدّعوا - ولو زيفاً - أن الجميع لابد أن يستمع لهم لأن التفكير حكراً عليهم.
  • المال قوة، وفي غياب العدالة الاجتماعية وتكافؤ الفرص والحراك الاجتماعي - أي وجود فرصة للفقير لكي يعمل ويرفع مستواه - ستجد دولة رجال الأعمال.
  • الوظائف قوة، وأرى أنه لابد من تسهيل عملية أن يفتح من يريد شركته أو عمله الخاص ونشر تلك الثقافة، لكي يزيد استقلال كل شخص اقتصادياً ولا يجد نفسه معتمداً على الحكومة أو المؤسسات الكبيرة يعينونه متى شاووا ويتخلصوا منه متى شاؤوا.
  • اللغة قوة، ولو تعلم الأكثرية فن الخطابة والتفاوض والإقناع لكان ذلك ايسر للحوار القومي بدلاً من أن يحتكر ذوو الكلام المزخرف التأثير على الآخرين.
وهكذا وهكذا..إن كنت تريد ترسيخ الديموقراطية في المجتمع عليك أن تسأل نفسك: ما هي صور القوة؟ وكيف يمكن كسر احتكارها؟

بالمناسبة، هل تذكر خطة النهضة التي ذكرتها من قبل على تلك المدونة؟ اسلوبها هو "رفع المستوى الفكري، تغيير القيم الاجتماعية" ومحاورها "العمل بالاسلام، طبقة وسطى قوية، علم مستشري".

الخطة في اساسها اجتماعية، لكن مثل كل شيء لها جوانب سياسية أيضاً!