He Realized his Mistake
551 segments
من بين كل علماء
الحاسوب الأسطوريين،
يبرز توني هور كشخصية
فريدة بينهم جميعاً.
لنقلها ببساطة، 70%من
جميع أخطاء "جافا"
المؤسسية المسجلة
يمكن أن تُعزى إلى
قرار واحد اتخذه في
عام 1965. في الواقع، أحد
أكبر أعطال جوجل في
الذاكرة القريبة كان
بسبب استثناء المؤشر
الفارغ (null pointer exception).
نحن نتحدث عن جملة
شرطية بسيطة تم تخطيها
، مما أدى إلى 7 ساعات
من التوقف، منها 3
ساعات أثرت عالمياً
على العديد والعديد من
الخدمات بما فيها
سبوتيفاي. مما كلف
ملايين في الخسائر،
وكل هذا يمكن إرجاعه
إلى ذلك القرار الواحد
في عام 1965. لكن، ليست
كل قرارات السير توني
هور سيئة بشكل ملحمي.
لقد ابتكر أيضاً بعضاً
من أسرع خوارزميات
الفرز والإحصاء
وأكثرها كفاءة في
استهلاك الذاكرة. كما
وضعت أعماله المهنية
والأكاديمية الأسس
للغات برمجة مثل
باسكال وجو. أعلم أن
البعض منكم يظن أن لغة
"جو" خطأ فادح، لكنه هو
من صنع الأجزاء الجيدة
فيها. وطوال مسيرته
المهنية، تم تكريمه
ومنحه أكثر من 21 جائزة
، بما في ذلك جائزة
تورينج، التي يعتبرها
البعض أرفع جائزة في
علم الحاسوب. وقد حصل
على لقب فارس
لمساهماته في التعليم
وعلوم الحاسوب. لكن
اليوم، يحصل على أرقى
تكريم بينهم جميعاً،
مبرمج الشهر في الشركة
الناشئة. بين أن تصبح
فارساً، أو مبرمج
الشهر. ولكن قبل أن
نستذكر أعظم كوارث
وإنجازات توني، كلمة
شكر سريعة للرعاة. الـ
100 مليار التزام (commit)
القادمة قادمة بشكل
أسرع مما كان مخططاً
له. هل نظام التكامل
المستمر (CI) لديك مستعد
للتحدي؟ تتطلب أنظمة
الـ CI اليوم بنية
تحتية جديدة مبنية
لهدف واحد، الموثوقية
والأداء الفائق
السرعة. تعمل "نيم سبيس
" على تحسين بيئات
البرمجة والاختبار
والبناء السريعة. إنه
تركيزهم الوحيد. هذا
التركيز يصل إلى مستوى
العتاد، من خزائن
الخوادم التي
يصممونها وينشرونها
عالمياً إلى المنتجات
المبنية على أساسات
مثل صناديق التطوير
ومشغلات "جيت هاب"
المتاحة على ويندوز
وماك ولينكس. لديهم
بالفعل أجهزة ماك. أمر
جنوني. إنهم مستخدمون
من قبل Ramp و Vanta و Warp و
Framer و Zed و Val و Sierra و
Whisper Flow و DuckDB، وحتى
Ghostly تستخدمهم. يمكنكم
الانضمام إليهم
وتجربتها اليوم على
موقع namespace.so. ولد
السير تشارلز أنتوني
ريتشارد هور في 11
يناير 1934 فيما يعرف
الآن بسريلانكا. تلقى
تعليمه في إنجلترا في
أرقى المدارس. نحن
نتحدث بالطبع عن مدرسة
دراغون في أكسفورد
ومدرسة الملك في
كانتربري. إنهم يقدمون
الشاي والبسكويت
الفاخر على الطاولات.
أنا لا أعرف حتى ماذا
يفعلون في مثل هذه
الأماكن. تبدو فاخرة
جداً، حسناً؟ أنا ذهبت
إلى جامعة ولاية
مونتانا، حسناً؟ غير
مسموح لي بخوض هذه
النوعية من التجارب.
لاحقاً، التحق بكلية
ميرتون في أكسفورد عام
1952، وبعد تخرجه، قضى 18
شهراً في دراسة اللغة
الروسية. بالطبع، كان
عليه فعل ذلك كجزء من
واجبه الإلزامي تجاه
البحرية الملكية. الآن
، هنا يصبح الأمر
مثيراً للاهتمام حقاً
، لأنه خلال وقته في
روسيا بجامعة موسكو
الحكومية، يبدو أيضاً
أنه التحق بها مثلي
تماماً. هيا يا "
بوبكاتس"! ووه! أجل! قبل
أن أريكم خوارزمية
الترتيب السريع، أردت
فقط أن أقول إن توني
هور ابتكرها بالكامل
باستخدام القلم
والورق في قلب روسيا.
حسناً، لم يكن هناك
حاسوب. لم تكن هناك حتى
لغة برمجة تدعم
العودية في ذلك الوقت
الذي اخترعها فيه.
يبدو الأمر وكأن لديه "
شات جي بي تي" في عقله.
يمكنه فقط إغماض عينيه
وتخيل المشكلات
والحصول على إجابات
لها. خوارزمية الترتيب
السريع سهلة الفهم في
الواقع. أنت تختار
عنصراً، أي عنصر
عشوائي. لقد اخترت
العنصر الأوسط، ثم تضع
كل ما هو أصغر في جانب،
وكل ما هو أكبر في
الجانب الآخر. بعد ذلك
، أصبح الرقم 14 مرتباً
الآن. كل شيء على
الجانب الأيسر أصغر،
وكل شيء على الجانب
الأيمن أكبر. لذا، إذا
كررنا الأمر، فإننا
ننظر فقط إلى الجانب
الأصغر. مرة أخرى،
نختار العنصر الأوسط
فقط. نقوم بالترتيب،
وها قد انتهينا.
السبعة والثلاثة
مرتبان الآن. نكرر
الأمر، نختار العنصر
الأوسط، نضع كل الأصغر
على اليمين، وكل
الأكبر على اليسار.
الرقم 11 مرتب الآن،
وبما أنه لا يوجد سوى
واحد على اليسار،
فالرقم 13 مرتب أيضاً.
افعل الشيء نفسه مرة
أخرى، كلاهما مرتبان.
انتقل إلى الجانب
الآخر. اذهب إلى
المنتصف. كل الأصغر
يذهب لجانب، وكل
الأكبر يذهب للجانب
الآخر. بكل بساطة،
الأمر تم. هذه هي
خوارزمية الترتيب
السريع. حسناً، ربما
تتساءل ما الأمر المهم
في ذلك؟ إنه مجرد
ترتيب. ليس بالأمر
الرائع حقاً. حسناً،
في الواقع أولاً وقبل
كل شيء، كان الأمر
رائعاً جداً جداً.
أريد أن أضع بعض
الأشياء في منظورها
الصحيح. أولاً، وقت
التشغيل. لديها تعقيد
زمني من الدرجة (n log n)،
مما يعني أن نموها مع
زيادة حجم المصفوفة
يتناسب مع (n log n). إذاً،
هذا جيد جداً في
الواقع. ثانياً، لا
تتطلب الكثير من
الذاكرة. هذا مهم
للغاية لأنه في الماضي
، في الأيام الخوالي
عام 1961، كان
الكيلوبايت الواحد من
ذاكرة الوصول
العشوائي المغناطيسية
يكلف 5000 دولار بالعملة
القديمة، مما يعني أن
قيمته اليوم تعادل
حوالي 50 ألف دولار
للكيلوبايت الواحد.
ماذا؟ كيلوبايت مقابل
50 ألف دولار؟ كما ترون
، هذا أمر في غاية
الأهمية. في الواقع،
لم تتح له الفرصة
لتنفيذ ذلك أبدًا. كان
مجرد تمرين ذهني بحت
لفترة طويلة جدًا، حتى
انضم إلى الأخوين
إليوت في عام 1960 وكانت
مهمته الأولى تنفيذ
خوارزمية "شيل". وبما
أنه شخص واثق من نفسه،
ذهب إلى مديره الذي
كان يُدعى بات وقال له:
"مرحبًا يا مدير". "
خوارزمية شيل سيئة". "
أستطيع جعلها أفضل
بكثير". فرد عليه مديره
: "لا توجد طريقة يمكنك
بها تحسينها". وفي
النهاية تراهنا على
ستة بنسات. لا أعرف ما
هي الستة بنسات هذه.
تبدو كشيء من قصص
الأطفال. حسنًا، لا
أعرف ما الذي يحدث في
المملكة المتحدة أو ما
يفعلونه هناك، لكنهم
راهنوا ببضعة دولارات
أو ربما الكثير، لا
أعرف كم تساوي. كم
تساوي بوحدات القياس
الأمريكية؟ لا أعلم.
على أي حال، تراهنا،
ثم بدأ هور برسم
مربعات وأسهم على
السبورة لشرح
خوارزميته. نفذ مديره
بات الخوارزمية
واعترف بخطئه،
ولاحقًا ذكر توني هور
أنه حصل على الستة
بنسات لفوزه بالرهان.
خلال عمله في شركة
إليوت براذرز، أقنعهم
أيضًا بتنفيذ لغة "
ألغول 60" بدلًا من
لغتهم الخاصة. حققت
هذه الخطوة نجاحًا
تجاريًا كبيرًا وغمرت
توني بالأوسمة
والتقدير. بسبب حماسه
الشديد لتنفيذ "ألغول
60"، بدأ بعد سنوات
قليلة العمل مع
نيكلاوس ويرث على لغة "
ألغول دبليو"، وهي
خليفة "ألغول 60". عمله
على "ألغول دبليو" هو
ما أصبح جوهريًا في
حياتنا جميعًا. الأذى
النفسي الذي عانيت منه
يمكن إرجاعه إلى هذه
القرارات تحديدًا.
دعوني أقرأ لكم ملخص
حديثه في مؤتمر QCon عام
2009. أسميه خطئي الذي
كلف مليار دولار. كان
اختراع المرجع الفارغ
(null reference) في عام 1965. في
ذلك الوقت، كنت أصمم
أول نظام أنواع شامل
للمراجع في لغة كائنية
التوجه، "ألغول دبليو".
كان هدفي التأكد من أن
جميع المراجع ستكون
آمنة تمامًا. أمر مضحك
، أليس كذلك؟ أعني
أننا نتحدث عن المراجع
الفارغة يا جماعة.
أشعر بدفء في قلبي
عندما أسمع "سنجعلها
آمنة تمامًا". المراجع
الفارغة. مع تحقق يقوم
به المترجم تلقائيًا،
لكنني لم أستطع مقاومة
إغراء إضافة المرجع
الفارغ. أعني، هذا
الرجل يواجه إغراءً
على مستوى "سيد
الخواتم". ببساطة، كان
الخاتم قوياً جداً.
المراجع الفارغة (Null
references) هي في الواقع
قوة "ساورون". ببساطة
لأن تنفيذها كان سهلاً
للغاية. وقد أدى هذا
إلى أخطاء وثغرات
وانهيارات في الأنظمة
لا حصر لها، والتي
تسببت على الأرجح في
خسائر وأضرار
بمليارات الدولارات
على مدار الأربعين
عاماً الماضية. السؤال
الحقيقي هو، ما مدى
تكلفة قرار المؤشر
الفارغ؟ حسناً، أولاً
، كطالب في إذاعة "إم
إس يو بوبكاتس"،
سأخبرك أنني قضيت
أياماً عديدة أحاول
تصحيح أخطاء المراجع
الفارغة اللعينة،
حسناً؟ لذا، عاطفياً،
كانت التكلفة بمليار
دولار بالنسبة لي وحدي
. لكن، أعتقد أن
بإمكانكم تذكر وقت قبل
عامين فقط حيث كان من
الممكن إرجاع أكبر
انقطاع في العالم إلى
مرجع فارغ. إحدى أشهر
تلك الحوادث وقعت في 12
يونيو 2025 من قبل "جوجل
كلاود". في الواقع، كل
ما في الأمر أنهم لم
يتحققوا من وجود مؤشر
فارغ، وبالطبع حدث خطأ
المؤشر الفارغ. توقفت
واجهة برمجة
التطبيقات (API)
والمصادقة، ثم توقف كل
شيء عالمياً عن العمل.
وبالطبع، استمر هذا
الأمر لمدة 7 ساعات
ونصف تقريباً حتى تم
طرح الإصلاح بالكامل.
هناك شيء يثير سخريتي
في هذا الموقف برمته،
حيث أراد "توني هور"
هنا فقط إنشاء لغة
آمنة من حيث النوع،
تكون آمنة تماماً مع
جميع المراجع، لينتهي
به الأمر بخلق أكبر
كارثة لا نزال نتعافى
منها حتى يومنا هذا.
الواقع على الأرجح هو
أنه لو لم يخترعها،
لكان شخص آخر قد فعل
ذلك، تماماً مثل سباق
الذكاء الاصطناعي. في
الحقيقة، الأمر مطابق
تماماً لذلك. لكن في
نهاية المطاف، يُنسب
الأمر إليه وإلى عمله
في لغة "أغول"(AlgoW). الآن
، واحدة من أكبر
مساهماته في مجال علوم
الكمبيوتر هي "
العمليات المتسلسلة
المترابطة"(Communicating
sequential processes). سأقوم
الآن بتوضيح مثال سريع
لما يعنيه هذا عملياً
من خلال عرض القليل من
الكود بلغة "جو". أعلم
أن الكثير منكم من
محبي لغة "راست"، وربما
تشعرون ببعض الاستياء
لأنني أستخدم لغة "جو".
فقط، فقط، فقط اصبروا
معي لأنها الأبسط.
حسناً. لدينا عمليتان
هنا. لدينا هذه
العملية الخارجية
التي تنشئ قناة،
وتنتظر عبر القناة، ثم
تطبع الرسالة التي
تحصل عليها من القناة.
ولدينا عملية ثانية
ستقوم ببعض العمل ثم
تسلم ذلك العمل في
النهاية، والذي أسميه
"مرحباً بالعالم". إذاً
، هذا يعني أننا ننشئ
القناة في العملية
الأولى. سيبدأ تنفيذ
العملية الثانية للتو.
العملية الأولى
ستنتظر الآن ببساطة.
ستنتظر بشكل متزامن
حتى تتواصل العملية
الثانية. هذا جزء مهم
جداً من العمليات
التسلسلية المتواصلة.
وأخيراً، عندما ينتهي
العمل في العملية
الثانية ونستطيع
التواصل، تستقبل
العملية الأولى
الرسالة وتتمكن من
المضي قدماً. إذاً،
إحدى الأفكار
الأساسية لـ CSP هي أن
التواصل عبارة عن
مصافحة متزامنة. وكما
رأيت للتو، اضطرت
العملية الأولى
للانتظار حتى تتواصل
العملية الثانية. لذا،
يجب على كل من العملية
الثانية والأولى
انتظار بعضهما البعض
لأن التواصل متزامن.
بالطبع، يمكنك تجاوز
هذا عن طريق إنشاء
مخازن مؤقتة، وبهذه
الطريقة يمكن للعملية
الثانية نظرياً إرسال
المزيد من الرسائل.
لكن الفكرة البسيطة هي
أن جميع العمليات يجب
أن تتواصل عبر مصافحة
متزامنة. وأن العمليات
هي وحدات سلوكية ولا
تتشارك في المتغيرات.
أعلم أنني قمت ببعض
المشاركة في مثال Go
ذاك، ولكن يمكننا
تجاهل ذلك الآن. مرة
أخرى، أنا أشرح هذا
بأبسط المصطلحات
العملية وأكثرها
وضوحاً، وليس من جانب
الحسابات الرياضية.
يمكنك البحث عن
الحسابات وكيف يُفترض
أن تكون الأحداث لحظية
، وكيف يُفترض أن يكون
للمستقبلين أبجدية
تمثل نوع الأحداث التي
يستقبلونها. إذا سبق
لك استخدام Elixir، فربما
يبدو هذا مألوفاً جداً
لنمط الممثل، لأنه
كذلك بالفعل. في نهاية
المطاف، كانت مساهمات
توني هور في علوم
الحاسوب أكبر بكثير
مما ذكرته. لم أتطرق
حتى إلى خوارزمية
الاختيار السريع وبعض
الخوارزميات
الإحصائية التي ساعد
في إنجازها، وعمله
العملي على مترجم ALGOL.
ومثل سلفه إدجار
ديكسترا، الذي كان
أيضاً حاصلاً على
جائزة مبرمج الشهر،
لديه بعض الاقتباسات
الرائعة التي أود
قراءتها لك. عندما فكر
وتحدث عن ALGOL 60، قال ما
يلي: "هذه لغة سابقة
لعصرها لدرجة أنها لم
تكن مجرد تحسين
لسابقتها، بل ولجميع
خلفائها تقريباً." كان
الرجل يمتلك بلاغة في
الكلمات. "هناك
طريقتان لبناء تصميم
البرمجيات. إحدى الطرق
هي جعلها بسيطة جداً
لدرجة أنه من الواضح
عدم وجود عيوب،
والطريقة الأخرى هي
جعلها معقدة جداً
لدرجة أنه لا توجد
عيوب واضحة. الطريقة
الأولى أصعب بكثير." يا
إلهي. كان الرجل يرى ما
وراء الأفق. لقد توفي
تقنياً هذا العام في
مارس، لكنني متأكد من
أنه رأى بعضاً مما كان
يفعله الذكاء
الاصطناعي. وأتساءل
عما كان يدور في ذهنه
حول هذا الأمر هنا. وعن
الكميات الهائلة من
التعليمات البرمجية
التي أنتجناها. لاحقاً
في مسيرة توني هور
المهنية، حصل على ثاني
أكثر الألقاب تشريفاً
، حيث منحته الملكة
إليزابيث الثانية لقب
فارس، ولهذا السبب
ندعوه السير توني هور،
بالطبع، إذا لم تكن
تعلم. حيث أن لقب مبرمج
الشهر هو أهم تكريم
يمكن للمرء الحصول
عليه على الإطلاق.
حسناً، لم أستعرض كل
إنجازات توني هور
المذهلة والأعمال
التي قام بها. حتى أنني
لم أتطرق إلى خوارزمية
الاختيار السريع (
Quickselect). لم أتحدث عن كل
أعماله الرائعة في AlgoW
أو نظريته الموحدة
للبرمجة، أو معضلة
العشاء للفلاسفة،
والتي بالمناسبة،
فكرة مشاركتهم لأدوات
الطعام مقرفة حقاً،
أليس كذلك؟ لا أريد
حتى الحديث عن الأمر
لأنه يفتقر للنظافة.
لكن في نهاية المطاف،
سيظل تأثير توني هور
ملموساً لوقت طويل
جداً، ومن الواضح
تماماً أنه يستحق لقب
مبرمج الشهر. لذا،
تحية لك يا سير توني
هور، مبرمج الشهر.
الاسم هو بريماجين (The
Primagen).
Ask follow-up questions or revisit key timestamps.
Loading summary...
Videos recently processed by our community