ريتشارد جابرييل هو مهندس متميز في سان ميكروسيستيم حيث يبحث في الهندسة المعمارية والتصميم والتنفيذ للأنظمة الكبيرة جدًا ، بالإضافة إلى تقنيات التطوير لبناء هذه الأنظمة. وهو مؤلف لثلاثة كتب هي : "ورش عمل الكتاب والعمل على صنع الأشياء"و"أنماط البرمجيات" و"أداء أنظمة ليبس وتقييمها" . حاصل على درجة الدكتوراه في علوم الكمبيوتر من جامعة ستانفورد عام 1981 وعاد إلى المدرسة للحصول على درجة الماجستير في الفنون الجميلة في الشعر عام 1998 في كلية وارن ويلسون. بالإضافة إلى ذلك لديه في الأعمال برنامج من شأنه أن يقدم MFA في تصميم البرمجيات. التقينا به مؤخرًا لنستكشف معه الروابط بين الإبداع والبرمجيات والشعر.
س: لقد دافعت عن برنامج قدم درجة الماجستير في الفنون الجميلة في البرمجيات
على غرار البرامج التي تقدم MFA في الكتابة
الإبداعية. تقول "حاولت تقاليد علوم الكمبيوتر وهندسة البرمجيات تحويل جميع
جوانب إنشاء البرامج إلى تخصص هندسي خالص ، بينما من الواضح أنها ليست كذلك. سيبدأ
MFA في
البرنامج في إصلاح هذا الخطأ." أخبرنا عن الفلسفة الكامنة وراء هذا الاقتراح.
ج: يجب التعامل مع برامج الكتابة كنشاط إبداعي. فقط فكر في الأمر -
البرنامج المثير للاهتمام هو صنعه برمجيات لم يتم صنعها من قبل. معظم التخصصات
الهندسية الأخرى تدور حول بناء الأشياء التي لديها تم بناؤه من قبل. يقول الناس "حسنًا
، كيف لا نستطيع بناء البرمجيات بالطريقة التي نبني بها الجسور؟" الإجابة هي
أننا نبني الجسور منذ آلاف السنين ، وبينما يمكننا إجراء تحسينات تدريجية على
الجسور ، فإن الحقيقة هي أن كل جسر يشبه جسرًا آخر تم بناؤه. قد يقول أحدهم "حسنًا
، لنبني جسرًا عبر هذا النهر. والنهر بهذا العرض بهذا العمق ، يجب أن يحمل هذا
الحمل. إنه للسيارات أو المشاة أو القطارات ، لذلك سيكون نوعًا ما مثل هذا أو ذاك."
يمكنهم معرفة فئة الجسر الذي يقومون ببنائه ، حتى يتمكنوا من التركيز على التصميم
بسرعة كبيرة. ليس عليهم إعادة اختراع العجلة.
"الفكرة وراء MFA في البرمجيات
هي أنه إذا أردنا أن نكون جيدًين في كتابة البرامج ، فعلينا أن نمارسها ، ويجب أن تكون
لدينا مؤلفات نقدية ، ويجب أن يكون لدينا سياق نقدي."
ولكن في البرامج ، حتى مع شيء مثل Java 2 أو
Enterprise Edition أو تطبيق Java أو تقريبًا أي
من واجهات برمجة التطبيقات التي نحددها فإننا نطرح - إن لم يكن الأول - الإصدار
السابع أو الثامن على الأكثر. نحن نبني البرامج منذ 50 عامًا فقط وفي كل مرة
تقريبًا نبتكر شيئًا جديدًا. إذا نظرت إلى مطوري البرمجيات وما ينتجون ، وإذا نظرت
إلى كود المصدر الخاص بهم ، والبرامج التي يصنعونها ، والتصاميم التي ينتهي بهم
الأمر بإنشائها فهناك تنوع حقيقي. وبعض الناس جيدون حقًا والبعض الآخر ليس جيدًا.
لذلك نظرًا لأنه يمكنك البرمجة جيدًا أو بشكل سيئ ، ولأن معظمها إبداعي
(حيث أننا لا نعرف حقًا ما نفعله عندما نبدأ) فإن وجهة نظري هي أنه يجب علينا
تدريب المطورين على الطريقة التي ندرب بها الإبداع الناس يحبون الشعراء والفنانين.
قد يقول البعض "حسنًا ، هذا يبدو حقًا مجنونًا." ولكن ماذا يفعل الناس
عندما يتم تدريبهم على سبيل المثال ، للحصول على درجة الماجستير في الفنون الجميلة
في الشعر؟ يدرسون الأعمال الشعرية العظيمة. هل نفعل ذلك في تخصصات هندسة البرمجيات
لدينا؟ لا ، فأنت لا تنظر إلى شفرة المصدر للحصول على أجزاء رائعة من البرامج. أو
انظر إلى بنية أجزاء رائعة من البرامج. أنت لا تنظر إلى تصميمهم. أنت لا تدرس حياة
مصممي البرمجيات العظماء. لذا أنت لا تدرس أدب الشيء الذي تحاول بناءه.
"عندما أكتب الشعر ، أشعر أن مركز تفكيري في مكان معين ،
وعندما أكتب رمزًا ، يشعر مركز تفكيري في نفس المكان."
ثانيًا ، تنشئ البرامج المتعددة MFA سياقًا تقوم
فيه بإنشاء سياق أثناء التفكير فيه. على سبيل المثال ، أنت تكتب الشعر أثناء قراءة
الشعر الآخر وانتقاده ، وأثناء العمل مع المرشدين الذين ينظرون إلى ما تفعله ،
ويساعدونك على التفكير فيما تفعله والعمل معك على مراجعاتك. ثم تذهب إلى ورشة عمل
الكتاب وتواصل العملية برمتها ، وتكتب العديد والعديد من القصائد في سياق نقدي.
نحن لا نفعل ذلك مع البرامج.
كنت أتحدث إلى مارك ستراند وهو من أوائل الشعراء الذين أرشدوني وقال بشكل
أو بآخر إن مدى روعتك يعتمد على عدد القصائد التي كتبتها في حياتك. منذ حوالي
عامين ونصف بدأت في كتابة قصيدة يوميًا ، وتحسنت كثيرًا منذ أن بدأت في ذلك. ولذا ربما
كتبت حوالي 1000 قصيدة في حياتي حتى الآن ، كلها تقريبًا في العامين الماضيين.
قارن ذلك بعدد البرامج التي كتبها شخص ما قبل اعتباره مطور برامج أو
مهندسًا. هل كتبوا ألف ؟ لا ، ربما كتبوا خمسين . لذا فإن الفكرة وراء
MFA في البرنامج هي أنه إذا أردنا أن نجيد كتابة البرامج ،
فعلينا أن نمارسها ، ويجب أن يكون لدينا مؤلفات نقدية ، وعلينا أن يكون لدينا
السياق الحرج. يبدو أننا قد نكون قادرين على بدء برنامج كهذا في العام المقبل أو
نحو ذلك في إحدى الجامعات الكبرى التي لست حراً في تسميتها. من المحتمل أن يطلق
عليه ماجستير في فنون البرمجيات.
س: هل أثرت كتابة الشعر على طريقة كتابة الكود؟
ج: من المؤكد أن كتابة الكود تشبه إلى حد كبير كتابة الشعر. عندما أكتب
الشعر ، أشعر أن مركز تفكيري في مكان معين ، وعندما أكتب رمزًا ، يشعر مركز تفكيري
في نفس المكان. إنه نفس النوع من التركيز. لذا ، أفكر في الاحتمالات ، أفكر في ذلك
، حسنًا ، كيف يمكنني إعادة اختراع الكود ، جي ، كما تعلمون ، ما هي أبسط طريقة
للقيام بذلك.
أفكر في أشياء مثل البساطة - ما مدى سهولة أن ينظر إليها شخص ما لاحقًا؟
إلى أي مدى يفي بالتصميم العام الذي يدور في ذهني؟ ما مدى ملاءمتها للهندسة
المعمارية؟ إذا كنت أكتب قصيدة طويلة جدًا تحتوي على أجزاء كثيرة فسأفكر "حسنًا
، كيف تتناسب هذه القطعة مع القطع الأخرى؟ كيف تكون جزءًا من الصورة الأكبر؟"
عند البرمجة أقوم بأشياء مماثلة وإذا نظرت إلى الكود المصدري للمبرمجين الموهوبين
للغاية ، فهناك جمال فيه. هناك الكثير من الاهتمام للضغط باستخدام لغة البرمجة
الأساسية بطريقة يسهل اختراقها. نعم كتابة الكود وكتابة الشعر متشابهان.
لقد قدمت كلمة رئيسية بعنوان " المشغلات والممارسة ". في الكتابة
المحفز هو شيء يقتحم عقلك ويجعلك تبدأ قصيدة أو قصة أو أي شيء تريد كتابته. يمكن
أن يكون المشغل مشهدًا أو خطًا أو صورة تأتي إليك أو مجرد شيء يتم تذكره. يعتقد
الشاعر ريتشارد هوغو أن كل الكتابة هي كتابة إبداعية من حيث أنك لا تعرف ما الذي
سيظهر على الصفحة حتى تكتب. تعتمد كل الكتابة على المحفزات حيث تكتب شيئًا ما
وتستجيب له.
س: ما أكثر شيء تريد أن يكون المطورون على علم به؟
ج: أعتقد أن المطورين المبرمجين يعرفونه بالفعل ولكنهم يخشون بعض الشيء
الاعتراف بأن كتابة البرامج هي نشاط إبداعي يتطلب الكثير من التفاعل مع الأشخاص
الذين سيستخدمونها. برامج الكتابة هي عملية تكرارية وديناميكية للغاية تتطلب
ملاحظات المستخدم. مرة أخرى يشبه الأمر كتابة الشعر حيث تكتب جزءًا منه ، ثم ترد
عليه ، مما يؤدي إلى مزيد من الإبداع ، وتستمر بعد ذلك تظهره لشخص تحترم رأيه ،
وتراه بشكل مختلف.
تستخدم بعض المنهجيات الأكثر مرونة مثل البرمجة المتطرفة هذه العملية.
يناقش المبرمجون المتطرفون مع المستخدمين النهائيين ما يجب إنشاؤه أولاً. ثم يقضون
أسبوعين في البناء وعرضه على المستخدم النهائي. يستخدمه المستخدم النهائي لفترة من
الوقت ثم قد يقول "حسنًا ، فهمت الآن." قد لا يكون لدى العملاء فهم جيد
لما يجب القيام به لأنهم ليسوا مبرمجين. شيء ربما لم يتخيلوه قد يكون ممكنًا.
"أعتقد أن المطورين يعرفون بالفعل ولكنهم يخشون بعض الشيء
الاعتراف بأن كتابة البرامج هي نشاط إبداعي يتطلب الكثير من التفاعل مع الأشخاص
الذين سيستخدمونها."
لكن لا يمكنك التخطيط لكل ذلك مسبقًا ثم تنفيذه. إذا استطعت فلن تكون هناك
حاجة لإصدارات متعددة من المنتجات.
الحوسبة موجودة منذ خمسين عامًا فقط. لا نعرف حقًا ما هي المبادئ. صحيح نحن
نعرف مبادئ البرمجة الخوارزمية جيدًا بشكل معقول ، لكننا لا نعرف المبادئ التي
تحكم البرنامج الذي نحاول بنائه ، ونحتاج إلى أن نكون منفتحين بشأن كيفية القيام
بذلك.
ذهبت إلى أمازون وبحثت عن جميع الكتب التي تحتوي على "تعلم" أو "علم
نفسك" ثم "ساعات" أو "أيام" في العنوان مثل "علم
نفسك في 21 يومًا".
هناك المئات منهم وكلهم تقريبًا كتب كمبيوتر. "علم نفسك البرمجة الشيئية " وما إلى ذلك. تعد كتابة البرامج فنًا ويستغرق
الأمر حوالي عشر سنوات حتى تصبح جيدًا حقًا. ولكن هناك موقف أساسي يتمثل في أن
البرمجة وتطوير البرامج أمر سهل. لدينا هذا الموقف القائل بأن البرمجة هي مساعدة عندما
تكون نشاطًا اجتماعيًا مركزيًا وصعبًا للغاية.
س: لقد بدأت شيئًا يسمى مشروع فايرباند يُنطق
"FIRE-ah-bend" على اسم الفيلسوف المنشق بول فييرابند الذي قال
بأنه من أجل تقدم المعرفة ، يجب على الناس انتهاك بعض مبادئهم المنهجية. تكتب ،
"الحوسبة تقوم على المنفعة والأداء والكفاءة والذكاء. أين الجمال والرحمة
والإنسانية والأخلاق وروح الإنسان والإبداع؟ " إذن ما الذي تأمل في تحقيقه من
خلال مشروع فييرابند؟
ج: إنه دائمًا ما يعود إلى الإبداع بالنسبة لي. يزدهر الإبداع من خلال
التنوع. لذا إذا نظرت إلى الإبداع بشكل عام ، فإن الكثير من الشعراء ، والرسامين ،
وكتاب المسرح ، وكتاب الخيال الأدبي ، وما إلى ذلك يتغذون على إبداع بعضهم البعض ،
ولكن بشكل انتقائي. إنه مثل علم الأحياء بتنوعه الكبير ، حيث يتم اختيار ما يعمل
جيدًا في بيئات معينة للبقاء على قيد الحياة.
ابتداءً من أوائل التسعينيات اختفى الكثير من التنوع في لغات البرمجة
ومنهجيات البرمجة ونماذج الحوسبة المختلفة وما إلى ذلك. لماذا ا؟ ربما لأن اللغات
والمنهجيات والتصميمات والبنى الموجهة للكائنات أصبحت ناجحة تجاريًا.
في التسعينيات غير الإنترنت حجم الأشياء بشكل كبير. بحلول منتصف التسعينيات
، كانت سمالتالك Smalltalk قد حققت الكثير من النجاحات في عالم الأعمال ،
واتبعت تقنية Java على الرغم من
عدم تفكير أحد في سان بهذه الطريقة)
مسار سمالتلك ثم حلت مكانه.
أعني كانت سمالتالك عبارة عن
تقنية من جانب الخادم - على الرغم من أن شركات سمالتالك لم تعجبها -
وكانت سان تعتقد في البداية أن
تقنية جافا هي جانب العميل. الآن
برنامج جافا لديه أفضل نجاحات على
جانب الخادم. والعملاء هم نفس الشيء. لقد ركزت لغة جافا على أشكال
C ++ أيضًا ولم تحل محل C ++ حقًا ولكنها
بالتأكيد استحوذت على جزء كبير من ممتلكاتها العقلية.
والآن نظرًا لأننا نصنع الأشياء لمدة عشر سنوات تقريبًا بنجاح كبير ، فإننا
لا ننظر إلى اللغات الوظيفية ، أو اللغات القائمة على المنطق ، أو اللغات
التعريفية - لا ننظر إلى الكثير من الأشياء المختلفة التي نحن تعودنا. عملت مع
مشروع تكنولوجيا شبكة جيني في وقت مبكر.
يحتوي العالم اليوم على العديد من الأجهزة والكثير من البرامج تأتي وتذهب ،
والعديد من الأجهزة تأتي وتذهب ، ويقوم الأشخاص بترقية البرامج. وفي بعض الأحيان يتم
الرجوع إلى إصدار أقدم عندما لا تعمل التطبيقات الجديدة على الأنظمة بشكل جيد.
وستصبح الفوضى أكثر وضوحًا وتنوعًا. سيبدأ في الظهور وكأنه نظام بيولوجي
أكثر من كونه نظامًا رياضيًا. سيكون هناك عدد أقل من البرامج المتجانسة. سيكون
معظم "التطبيق" في الغالب على جهاز واحدا متشابكا بإحكام ، ولكن ستكون
هناك أجزاء فضفاضة نوعًا ما. ستكون ديناميكية للغاية مع الكثير من الإخفاقات سوف
تهيمن مغالطات دويتش السبع نحن بحاجة للاستعداد لهذا.
إذا نظرت إلى سرد أبحاث علوم الكمبيوتر فإنها لا تزال تركز على توجيه
الكائن. لقد حاولت لغة جافا أن تجمع أفضل
ما في نموذج الكائن الخالص واللغات الثابتة لذا فهي تشبه إلى حد ما سمالتاك وقليلًا مثل باسكال وقليلًا مثل ليبس حتى أعتقد أننا بحاجة إلى عمل المزيد ؛ نحن بحاجة إلى
السماح لأفكار اللغة الأخرى بالازدهار والنظر إلى التفاعلات الأكثر ثراءً وليس
التفاعلات البسيطة فقط نحن بحاجة إلى المزيد من الروايات في العمل لمعالجة الجنون
الذي سنواجهه.
س : ألم يكن من المفترض أن تأخذ البرامج الموجهة للكائنات العمالة من
البرمجة؟
ج: نعم كان هذا هو الوعد ، لكنه لم ينجح تمامًا. ما لم يكن مصممًا لإعادة
الاستخدام فستواجه صعوبة في إخراج البرامج من الرف. تُظهر الأبحاث أنه من أجل
تصميم البرنامج لإعادة الاستخدام يجب عادةً نشره في ثلاثة سياقات مختلفة.
لقد جعل الوراثة الأمور أكثر إرباكًا أيضًا مع الميراث ، تكتب فئة ، وتكتب
طرقها باستخدام المصطلحات التقليدية ؛ وبعد ذلك ، إذا قمت بإنشاء فئة فرعية ، فإنك
ترث الطرق وربما تزيدها بطرق مختلفة. لكن أشجار الوراثة العميقة قد تسبب ارتباكًا
بسبب مقدار الميراث الذي يجب عليك تتبعه وفهمه. لذلك في الواقع لم تحصل على فائدة
كبيرة. في الأساس نظرًا لوجود الكثير من العمل المتضمن في جعل الأشياء قابلة
لإعادة الاستخدام ، لا يتم ذلك عادةً. لكن لغة جافا ناجحة جدًا ،
والناس يكتبون الكثير من التطبيقات فيها.
من خلال مشروع فايراباندالسالف الذكر نهدف إلى كفاءة
التطوير والتفكير فيما يتعلق بأجهزة الكمبيوتر التي تساعدنا على تطوير الكود بدلاً
من قيام الأشخاص بكتابته أو إزالته من الرف. علينا أن نفتح أذهاننا على ما يحدث
بالفعل ، وليس ما نأمل أن يحدث.
0 التعليقات:
إرسال تعليق