2006 المادة.Björn Straustrup ، مخترع لغة برمجة C ++ ، يحمي إرثه ويخبر عن الخطأ في معظم كود البرنامج.
في الثمانينيات والتسعينيات ، طور Björn Straustrup لغة برمجة C ++ ونفذها ، والتي شاعت البرمجة الموجهة للكائنات وأثرت على العديد من لغات البرمجة الأخرى ، بما في ذلك Java.
لا تزال لغة C ++ لغة نموذجية "عالية المستوى" للكمبيوتر (أي لغة تحافظ على ميزات لغة بشرية طبيعية) ، ولا يزال يستخدمها ملايين المبرمجين. تم كتابة العديد من أنظمة وتطبيقات الكمبيوتر والإنترنت في لغة C ++. على الرغم من ذلك ، لا تزال اللغة مثيرة للجدل ، ويرجع ذلك إلى حد كبير إلى أنه من الصعب تعلمها واستخدامها ، وكذلك لأن تصميم Straustrup يسمح للمطورين بارتكاب أخطاء برمجة خطيرة لصالح الحفاظ على حريتهم.
يعمل ستراستروب ، الذي يعمل في مختبرات AT&T Bell لسنوات عديدة ، حاليًا أستاذًا لعلوم الكمبيوتر في قسم الهندسة بجامعة تكساس إيه آند إم بالقرب من هيوستن.
مراجعة التكنولوجيا: لماذا الكثير من البرامج سيئة للغاية؟Björn Straustrup: بعض البرامج جيدة جدًا بأي معايير. فكر في Mars Rovers و Google ومشروع الجينوم البشري. هذا هو برنامج عالي الجودة! قبل خمسة عشر عامًا ، كان معظم الناس ، ولا سيما معظم الخبراء ، سيقولون إن كل واحد من هذه الأمثلة مستحيل. تعتمد حضارتنا التكنولوجية على البرمجيات ، لذلك إذا كان البرنامج سيئًا حقًا مثل أسوأ سمعته ، فسيكون معظمنا ميتًا بالفعل.
من ناحية أخرى ، فإن النظر إلى مقتطفات الشفرة "النموذجية" يمكن أن يجعلني أبكي. البنية مرعبة ، ومن الواضح أن المبرمجين لم يفكروا في الصواب أو الخوارزميات أو هياكل البيانات أو قابلية الصيانة. معظم الناس لا يقرأون الرمز في الواقع ؛ يرون فقط أن Internet Explorer يتباطأ.
أعتقد أن المشكلة الحقيقية هي أن "نحن" (أي مطورو البرامج) في حالة طوارئ مستمرة ، يمسكون بالقشة للقيام بعملنا. نقوم بالعديد من المعجزات الصغيرة من خلال التجربة والخطأ ، والاستخدام المفرط للقوة الغاشمة والعديد من المحاكمات ، ولكن هذا لا يكفي في كثير من الأحيان.
أصبح مطورو البرامج سادة في الفن المعقد المتمثل في إنشاء أنظمة موثوقة بما فيه الكفاية من أجزاء غير موثوقة. تكمن المشكلة في أننا غالبًا لا نعرف بالضبط كيف فعلنا ذلك: النظام ببساطة "تحول" إلى شيء مقبول الحد الأدنى. أنا شخصياً أفضل أن أعرف متى سيعمل النظام ولماذا سيفعل ذلك.
مراجعة التكنولوجيا: كيف يمكننا إصلاح الفوضى التي نحن فيها؟Björn Straustrup: من الناحية النظرية ، الإجابة بسيطة: تعليم مطوري البرامج بشكل أفضل ، واستخدام أساليب تصميم أكثر ملاءمة ، واستخدام تصميم مرن ، والتفكير على المدى الطويل. مكافأة أنظمة صحيحة وموثوقة وآمنة. عاقب على الغباء.
هذا مستحيل في الواقع. يكافئ الناس المطورين الذين يكون برنامجهم رخيصًا ، والأخطاء ، ويتم إصداره أولاً. ذلك لأن الناس بحاجة إلى أدوات جديدة. لا يحتاجون إلى أي إزعاج ، ولا يريدون تعلم طرق جديدة للتفاعل مع أجهزة الكمبيوتر الخاصة بهم ، ولا يريدون تأخيرات في التسليم ولا يريدون الدفع مقابل الجودة (ما لم يكن ذلك واضحًا ، ولكن في كثير من الأحيان حتى ذلك الحين). وبدون تغييرات حقيقية في سلوك المستخدم ، من غير المحتمل أن يتغير مزودو البرامج.
لا يمكننا فقط إيقاف العالم لمدة عشر سنوات بينما نقوم بإعادة برمجة كل شيء من ماكينات القهوة إلى أنظمتنا المالية. من ناحية أخرى ، فإن الاستمرار في العمل بشكل عشوائي أمر مكلف وخطير ومحبط. هناك حاجة إلى تحسينات كبيرة ، ولا يمكن أن تظهر إلا بشكل تدريجي. يجب أن يأتوا إلى جبهة واسعة ؛ تغيير واحد فقط لا يكفي.
إحدى المشاكل هي أن "المداخن الأكاديمية" تتدخل: الكثير من الناس يروجون لمنطقة مثل الدواء الشافي. يمكن أن تساعد طرق التصميم الأكثر كفاءة ، ويمكن أن تساعد طرق المواصفات الأفضل ، ويمكن أن تساعد لغات البرمجة الأفضل ، ويمكن أن تساعد تقنيات الاختبار الأفضل ، والبنية التحتية الأفضل من المستوى المتوسط ، والفهم الأفضل لمجالات التطبيق ، والفهم الأفضل لهياكل البيانات والخوارزميات يمكن مساعدة - وهكذا. على سبيل المثال ، يمكن لنظرية النوع وتطوير النموذج والأساليب الرسمية أن تقدم بلا شك مساعدة كبيرة في بعض المجالات ، ولكن يتم الترويج لها فقط كحل لاستبعاد مناهج أخرى ، كل منها يضمن رفض المشاريع واسعة النطاق. يروج الناس لما يعرفونه وما يرونه ؛ وإلا كيف؟ ولكن قلة قليلة من الناس لديهم النضج التقني لتحقيق التوازن بين المتطلبات والموارد.
نظرة عامة على التكنولوجيا: كانت الفكرة الكامنة وراء C ++ هي أن المبرمجين سيعملون بنشاط أكبر في مقابل كود أكثر كفاءة. أرادت Bell Labs استخدام لغة يستخدمها بعض الأشخاص الأذكياء حقًا لكتابة التعليمات البرمجية التي تعمل على أجهزة الكمبيوتر مثل أنظمة التبديل الإلكترونية (ESS) التي لم تكن سريعة جدًا. يوجد اليوم الكثير من أجهزة الكمبيوتر السريعة والعديد من مطوري البرامج. هل هذا يعني أنه ينفي جوهر C ++ بأكمله؟Björn Straustrup: لم يتم تصميم C ++ خصيصًا لأجهزة التحويل الكبيرة ، فقد تم تطويره لمجموعة كبيرة من التطبيقات. كانت Bell Labs موطنًا لمجموعة لا تصدق من المشاريع المثيرة للاهتمام التي تغطي جميع المستويات وتستخدم تقريبًا جميع أنواع أجهزة الكمبيوتر وأنظمة التشغيل. ولكن نعم ، كان مبرمج Bell Labs العادي أكثر قدرة بشكل كبير مما يعتقده معظم الناس عن "مبرمج عادي" ، واعتبرت الموثوقية والأداء (بهذا الترتيب) أكثر أهمية بكثير من معظم الأماكن الأخرى.
لا يزال الأداء يمثل مشكلة في العديد من التطبيقات التي تهمني: استجابة الواجهات ، وأوقات بدء التشغيل وإيقاف تشغيل التطبيقات. يقوم مطورو البرامج بتحييد الأداء المذهل لأجهزة الكمبيوتر الحديثة عن طريق إضافة تجريدات (طبقة) زائدة عن الحاجة (طبقة). يبدو أننا نواجه قيود التسارع الخطي للأجهزة ، ولكن في كثير من الحالات يمكن أن نفوز ببعض الطلبات من حيث الحجم في البرمجيات.
ومع ذلك ، أصبح C ++ "صديقًا للخبراء" حقًا جدًا ، بينما انخفض مستوى التعليم الرسمي الفعال لمطور البرامج العادي. ومع ذلك ، فإن الحل ليس في تبسيط لغات البرمجة إلى حد السخف ، ولكن استخدام لغات برمجة مختلفة وتدريب المزيد من الخبراء. يحتاج هؤلاء الخبراء إلى استخدام بعض اللغات ، و C ++ هي إحدى هذه اللغات.
المراجعة التكنولوجية: في وقت لاحق ، عند تصميم C ++ ، كان قرارك باستبدال كفاءة البرامج ، وأمانها وموثوقيتها لأداء رمز وقت التشغيل ، خطأ أساسي؟
بيورن ستراستروب: حسنًا ، لا أعتقد أنني أجريت مثل هذا التبادل. أريد كود أنيق وفعال. أحيانا أحصل عليه. هذه التقسيمات الثنائية (بين الكفاءة والصحة ، والكفاءة ووقت المبرمج ، والكفاءة مقارنة بمستوى عال ، وما إلى ذلك) هي وهمية.
ما فعلته حقًا هو تطوير لغة C ++ ، باعتبارها لغة برمجة نظام في المقام الأول: أردت أن أكون قادرًا على كتابة برامج تشغيل الأجهزة والأنظمة المضمنة ورموز أخرى كان علي استخدامها مباشرة. ثم أردت أن تكون لغة C ++ لغة جيدة لتطوير الأدوات. وهذا يتطلب المرونة والأداء ، بالإضافة إلى القدرة على التعبير عن واجهات أنيقة. كان رأيي أنه لإنشاء مستوى أعلى ، لإنشاء تطبيقات كاملة ، كان عليك أولاً شراء أو إنشاء أو استعارة مكتبات توفر الملخصات المناسبة. في كثير من الأحيان ، عندما يواجه الأشخاص مشاكل في لغة C ++ ، فإن المشكلة الحقيقية هي أنهم لا يملكون المكتبات المناسبة أو لا يمكنهم العثور على المكتبات المتاحة.
حاولت لغات أخرى دعم التطبيقات عالية المستوى بشكل مباشر.
هذا يعمل ، ولكن غالبًا ما يأتي هذا الدعم على حساب التخصص. أنا شخصياً لن أقوم بتطوير أداة يمكنها أن تفعل ما أريد فقط - أنا أسعى جاهداً من أجل المجتمع.
مراجعة التكنولوجيا: كيف تفسر حقيقة أن C ++ ينتقد على نطاق واسع من قبل العديد من المبرمجين ، ولكن في نفس الوقت يستخدم على نطاق واسع؟ لماذا هذه اللغة ناجحة للغاية؟بيورن ستراستروب: الجواب بسيط: هناك نوعان فقط من اللغات: اللغات التي يشكو منها الجميع وتلك التي لا يستخدمها أحد.
هناك أنظمة أكثر فائدة مصممة بلغات تعتبر رهيبة من اللغات التي يتم الإشادة بها لكونها جميلة - وأكثر من ذلك بكثير. الهدف من لغة البرمجة هو المساعدة في إنشاء أنظمة جيدة حيث يمكن تعريف "جيد" بعدة طرق. تعريفي القصير هو: شيء ما صحيح ومدعوم وسريع بما فيه الكفاية. الجماليات مهمة ، ولكن قبل كل شيء ، يجب أن تكون اللغة مفيدة ؛ يجب أن تسمح للمبرمجين في هذا العالم بالتعبير عن أفكار واقعية بشكل موجز وغير مكلف.
السبب الرئيسي لنجاح C ++ هو أنه يلبي أهداف التصميم المحدودة: يمكنه التعبير بكفاءة عن مجموعة كبيرة من الأفكار مباشرة.
لم يكن الهدف من C ++ أن يفعل شيئًا واحدًا جيدًا حقًا أو يمنع الناس من القيام بأشياء تعتبر "سيئة". بدلاً من ذلك ، ركزت على العمومية والأداء.
أنا متأكد من أنه لكل مبرمج لا يحب لغة C ++ ، هناك شخص يحب هذه اللغة. ومع ذلك ، ذهب صديقي إلى المؤتمر ، حيث طلب المتحدث الرئيسي من الجمهور التظاهر من خلال رفع أيديهم: الأول ، كم عدد الأشخاص الذين لم يعجبهم C ++ ، والثاني ، كم عدد الأشخاص الذين كتبوا البرنامج في C ++. تضم المجموعة الأولى ضعف عدد الأشخاص في المجموعة الثانية. عادة ما يسمى التعبير عن العداء تجاه شيء لا تعرفه التحيز. بالإضافة إلى ذلك ، أولئك الذين يشتكون هم دائمًا أعلى وأكثر ثقة من المؤيدين - الأشخاص المعقولون يدركون العيوب. أعتقد أنني أعرف المزيد عن مشاكل C ++ أكثر من أي شخص على الإطلاق ، لكنني أعرف أيضًا كيفية تجنبها وكيفية استخدام نقاط القوة في هذه اللغة.
وبالطبع ، لا تتوقع أن مؤيدي اللغات التي خسرت المنافسة مع C ++ سيكونون مهذبين تجاه هذه الحقيقة. لا يمتلك تطوير البرمجيات مثل هذه الدرجة من الاحتراف ، على الرغم من أنني آمل أن يحدث هذا في نهاية المطاف. في هذا الصدد ، يختلف العلم: عندما تفوز أداة أو تقنية أو نظرية جديدة ، يرى الناس أنها تقدم. في البرمجيات ، لم تحظ مساهمات المنافسين والسابقين باعتراف أو تقدير أو حتى فهم على نطاق واسع.
مراجعة التكنولوجيا: في "تصميم وتطور لغة C ++" ، تجادل بأن كيركجارد أثر على مفهومك للغة. هل هذه مزحة؟بيورن ستراستروب: ربما عبارة طائشة بعض الشيء ، لكنها ليست مزحة. تركز العديد من الأفكار حول تطوير البرمجيات على مجموعة أو فريق أو شركة. غالبًا ما يتم ذلك إلى حد أن الشخص منغمس تمامًا في "ثقافة" الشركة دون الخروج لمواهب ومهارات فريدة. يمكن أن تكون ممارسة الشركات معادية للأشخاص ذوي المهارات الاستثنائية والمبادرة التقنية. أجد هذه الإدارة الفنية قاسية ومهدرة. كان Kierkegaard مؤيدًا قويًا للفرد ضد "الحشد" وأثار بجدية قضية أهمية الجماليات والسلوك الأخلاقي. لم أستطع الإشارة إلى ميزة معينة للغة والقول: "كما ترى ، هناك تأثير لفيلسوف من القرن التاسع عشر" ، ولكنه أحد جذور ترددي في القضاء على "مستوى الخبراء" ، وإلغاء "إساءة الاستخدام" ، والحد من القدرة على دعم تلك التطبيقات فقط التي كما أعرف أنها ستكون مفيدة. ومع ذلك ، لا أحب على وجه الخصوص فلسفة Kierkegaard الدينية.
مراجعة التكنولوجيا: ما أكثر شيء تندم عليه؟بيورن ستراستروب: لا أشعر بأي ندم! حسنًا ، بالطبع ، أحلم بما يمكنني القيام به بشكل مختلف وأفضل ، ولكن بجدية ، من أنا لإعادة اكتشاف ، على سبيل المثال ، خمر Björn 1984؟ ربما كان أقل خبرة مني ، لكنه لم يكن أقل ذكاءً ، وربما أكثر ذكاءً ، وقد فهم كلمات عام 1984 أفضل مما فعلت. يستخدم C ++ لإنشاء العديد من الأنظمة التي تحسن حياتنا ، وقد كان لذلك تأثير إيجابي كبير على اللغات والأنظمة اللاحقة. هذا شيء نفخر به.