HomeVideos

He Realized his Mistake

Now Playing

He Realized his Mistake

Transcript

551 segments

0:00

من بين كل علماء

0:01

الحاسوب الأسطوريين،

0:02

يبرز توني هور كشخصية

0:03

فريدة بينهم جميعاً.

0:04

لنقلها ببساطة، 70%من

0:06

جميع أخطاء "جافا"

0:07

المؤسسية المسجلة

0:09

يمكن أن تُعزى إلى

0:11

قرار واحد اتخذه في

0:12

عام 1965. في الواقع، أحد

0:14

أكبر أعطال جوجل في

0:15

الذاكرة القريبة كان

0:17

بسبب استثناء المؤشر

0:18

الفارغ (null pointer exception).

0:20

نحن نتحدث عن جملة

0:21

شرطية بسيطة تم تخطيها

0:22

، مما أدى إلى 7 ساعات

0:23

من التوقف، منها 3

0:25

ساعات أثرت عالمياً

0:26

على العديد والعديد من

0:27

الخدمات بما فيها

0:28

سبوتيفاي. مما كلف

0:30

ملايين في الخسائر،

0:31

وكل هذا يمكن إرجاعه

0:33

إلى ذلك القرار الواحد

0:35

في عام 1965. لكن، ليست

0:36

كل قرارات السير توني

0:38

هور سيئة بشكل ملحمي.

0:39

لقد ابتكر أيضاً بعضاً

0:41

من أسرع خوارزميات

0:42

الفرز والإحصاء

0:42

وأكثرها كفاءة في

0:43

استهلاك الذاكرة. كما

0:45

وضعت أعماله المهنية

0:46

والأكاديمية الأسس

0:47

للغات برمجة مثل

0:48

باسكال وجو. أعلم أن

0:50

البعض منكم يظن أن لغة

0:51

"جو" خطأ فادح، لكنه هو

0:52

من صنع الأجزاء الجيدة

0:53

فيها. وطوال مسيرته

0:55

المهنية، تم تكريمه

0:56

ومنحه أكثر من 21 جائزة

0:58

، بما في ذلك جائزة

0:59

تورينج، التي يعتبرها

1:01

البعض أرفع جائزة في

1:02

علم الحاسوب. وقد حصل

1:03

على لقب فارس

1:04

لمساهماته في التعليم

1:06

وعلوم الحاسوب. لكن

1:07

اليوم، يحصل على أرقى

1:08

تكريم بينهم جميعاً،

1:10

مبرمج الشهر في الشركة

1:11

الناشئة. بين أن تصبح

1:12

فارساً، أو مبرمج

1:14

الشهر. ولكن قبل أن

1:15

نستذكر أعظم كوارث

1:16

وإنجازات توني، كلمة

1:17

شكر سريعة للرعاة. الـ

1:19

100 مليار التزام (commit)

1:20

القادمة قادمة بشكل

1:21

أسرع مما كان مخططاً

1:22

له. هل نظام التكامل

1:23

المستمر (CI) لديك مستعد

1:25

للتحدي؟ تتطلب أنظمة

1:26

الـ CI اليوم بنية

1:27

تحتية جديدة مبنية

1:28

لهدف واحد، الموثوقية

1:29

والأداء الفائق

1:30

السرعة. تعمل "نيم سبيس

1:32

" على تحسين بيئات

1:33

البرمجة والاختبار

1:34

والبناء السريعة. إنه

1:35

تركيزهم الوحيد. هذا

1:37

التركيز يصل إلى مستوى

1:38

العتاد، من خزائن

1:39

الخوادم التي

1:40

يصممونها وينشرونها

1:41

عالمياً إلى المنتجات

1:42

المبنية على أساسات

1:43

مثل صناديق التطوير

1:44

ومشغلات "جيت هاب"

1:45

المتاحة على ويندوز

1:47

وماك ولينكس. لديهم

1:48

بالفعل أجهزة ماك. أمر

1:50

جنوني. إنهم مستخدمون

1:52

من قبل Ramp و Vanta و Warp و

1:54

Framer و Zed و Val و Sierra و

1:56

Whisper Flow و DuckDB، وحتى

1:58

Ghostly تستخدمهم. يمكنكم

2:00

الانضمام إليهم

2:01

وتجربتها اليوم على

2:02

موقع namespace.so. ولد

2:04

السير تشارلز أنتوني

2:06

ريتشارد هور في 11

2:08

يناير 1934 فيما يعرف

2:09

الآن بسريلانكا. تلقى

2:12

تعليمه في إنجلترا في

2:13

أرقى المدارس. نحن

2:15

نتحدث بالطبع عن مدرسة

2:16

دراغون في أكسفورد

2:18

ومدرسة الملك في

2:19

كانتربري. إنهم يقدمون

2:22

الشاي والبسكويت

2:23

الفاخر على الطاولات.

2:24

أنا لا أعرف حتى ماذا

2:26

يفعلون في مثل هذه

2:26

الأماكن. تبدو فاخرة

2:28

جداً، حسناً؟ أنا ذهبت

2:29

إلى جامعة ولاية

2:30

مونتانا، حسناً؟ غير

2:31

مسموح لي بخوض هذه

2:32

النوعية من التجارب.

2:33

لاحقاً، التحق بكلية

2:35

ميرتون في أكسفورد عام

2:36

1952، وبعد تخرجه، قضى 18

2:38

شهراً في دراسة اللغة

2:39

الروسية. بالطبع، كان

2:41

عليه فعل ذلك كجزء من

2:42

واجبه الإلزامي تجاه

2:43

البحرية الملكية. الآن

2:44

، هنا يصبح الأمر

2:45

مثيراً للاهتمام حقاً

2:46

، لأنه خلال وقته في

2:47

روسيا بجامعة موسكو

2:48

الحكومية، يبدو أيضاً

2:49

أنه التحق بها مثلي

2:49

تماماً. هيا يا "

2:50

بوبكاتس"! ووه! أجل! قبل

2:53

أن أريكم خوارزمية

2:54

الترتيب السريع، أردت

2:55

فقط أن أقول إن توني

2:56

هور ابتكرها بالكامل

2:57

باستخدام القلم

2:58

والورق في قلب روسيا.

2:59

حسناً، لم يكن هناك

3:00

حاسوب. لم تكن هناك حتى

3:02

لغة برمجة تدعم

3:03

العودية في ذلك الوقت

3:04

الذي اخترعها فيه.

3:05

يبدو الأمر وكأن لديه "

3:07

شات جي بي تي" في عقله.

3:08

يمكنه فقط إغماض عينيه

3:10

وتخيل المشكلات

3:11

والحصول على إجابات

3:12

لها. خوارزمية الترتيب

3:13

السريع سهلة الفهم في

3:14

الواقع. أنت تختار

3:15

عنصراً، أي عنصر

3:17

عشوائي. لقد اخترت

3:18

العنصر الأوسط، ثم تضع

3:20

كل ما هو أصغر في جانب،

3:21

وكل ما هو أكبر في

3:22

الجانب الآخر. بعد ذلك

3:24

، أصبح الرقم 14 مرتباً

3:26

الآن. كل شيء على

3:28

الجانب الأيسر أصغر،

3:29

وكل شيء على الجانب

3:30

الأيمن أكبر. لذا، إذا

3:31

كررنا الأمر، فإننا

3:32

ننظر فقط إلى الجانب

3:33

الأصغر. مرة أخرى،

3:34

نختار العنصر الأوسط

3:36

فقط. نقوم بالترتيب،

3:37

وها قد انتهينا.

3:38

السبعة والثلاثة

3:39

مرتبان الآن. نكرر

3:40

الأمر، نختار العنصر

3:41

الأوسط، نضع كل الأصغر

3:42

على اليمين، وكل

3:43

الأكبر على اليسار.

3:44

الرقم 11 مرتب الآن،

3:45

وبما أنه لا يوجد سوى

3:46

واحد على اليسار،

3:47

فالرقم 13 مرتب أيضاً.

3:48

افعل الشيء نفسه مرة

3:49

أخرى، كلاهما مرتبان.

3:51

انتقل إلى الجانب

3:51

الآخر. اذهب إلى

3:52

المنتصف. كل الأصغر

3:54

يذهب لجانب، وكل

3:54

الأكبر يذهب للجانب

3:55

الآخر. بكل بساطة،

3:56

الأمر تم. هذه هي

3:57

خوارزمية الترتيب

3:58

السريع. حسناً، ربما

3:59

تتساءل ما الأمر المهم

4:00

في ذلك؟ إنه مجرد

4:01

ترتيب. ليس بالأمر

4:02

الرائع حقاً. حسناً،

4:03

في الواقع أولاً وقبل

4:04

كل شيء، كان الأمر

4:05

رائعاً جداً جداً.

4:06

أريد أن أضع بعض

4:07

الأشياء في منظورها

4:08

الصحيح. أولاً، وقت

4:09

التشغيل. لديها تعقيد

4:10

زمني من الدرجة (n log n)،

4:11

مما يعني أن نموها مع

4:13

زيادة حجم المصفوفة

4:14

يتناسب مع (n log n). إذاً،

4:15

هذا جيد جداً في

4:16

الواقع. ثانياً، لا

4:18

تتطلب الكثير من

4:19

الذاكرة. هذا مهم

4:20

للغاية لأنه في الماضي

4:22

، في الأيام الخوالي

4:23

عام 1961، كان

4:24

الكيلوبايت الواحد من

4:25

ذاكرة الوصول

4:26

العشوائي المغناطيسية

4:27

يكلف 5000 دولار بالعملة

4:29

القديمة، مما يعني أن

4:30

قيمته اليوم تعادل

4:31

حوالي 50 ألف دولار

4:32

للكيلوبايت الواحد.

4:34

ماذا؟ كيلوبايت مقابل

4:35

50 ألف دولار؟ كما ترون

4:37

، هذا أمر في غاية

4:38

الأهمية. في الواقع،

4:39

لم تتح له الفرصة

4:40

لتنفيذ ذلك أبدًا. كان

4:42

مجرد تمرين ذهني بحت

4:43

لفترة طويلة جدًا، حتى

4:45

انضم إلى الأخوين

4:46

إليوت في عام 1960 وكانت

4:48

مهمته الأولى تنفيذ

4:50

خوارزمية "شيل". وبما

4:51

أنه شخص واثق من نفسه،

4:53

ذهب إلى مديره الذي

4:54

كان يُدعى بات وقال له:

4:55

"مرحبًا يا مدير". "

4:57

خوارزمية شيل سيئة". "

4:58

أستطيع جعلها أفضل

4:59

بكثير". فرد عليه مديره

5:01

: "لا توجد طريقة يمكنك

5:02

بها تحسينها". وفي

5:03

النهاية تراهنا على

5:04

ستة بنسات. لا أعرف ما

5:06

هي الستة بنسات هذه.

5:07

تبدو كشيء من قصص

5:08

الأطفال. حسنًا، لا

5:10

أعرف ما الذي يحدث في

5:11

المملكة المتحدة أو ما

5:12

يفعلونه هناك، لكنهم

5:13

راهنوا ببضعة دولارات

5:14

أو ربما الكثير، لا

5:15

أعرف كم تساوي. كم

5:16

تساوي بوحدات القياس

5:18

الأمريكية؟ لا أعلم.

5:19

على أي حال، تراهنا،

5:21

ثم بدأ هور برسم

5:23

مربعات وأسهم على

5:24

السبورة لشرح

5:25

خوارزميته. نفذ مديره

5:27

بات الخوارزمية

5:29

واعترف بخطئه،

5:30

ولاحقًا ذكر توني هور

5:32

أنه حصل على الستة

5:33

بنسات لفوزه بالرهان.

5:35

خلال عمله في شركة

5:36

إليوت براذرز، أقنعهم

5:38

أيضًا بتنفيذ لغة "

5:40

ألغول 60" بدلًا من

5:41

لغتهم الخاصة. حققت

5:43

هذه الخطوة نجاحًا

5:44

تجاريًا كبيرًا وغمرت

5:46

توني بالأوسمة

5:47

والتقدير. بسبب حماسه

5:49

الشديد لتنفيذ "ألغول

5:51

60"، بدأ بعد سنوات

5:52

قليلة العمل مع

5:53

نيكلاوس ويرث على لغة "

5:55

ألغول دبليو"، وهي

5:57

خليفة "ألغول 60". عمله

5:59

على "ألغول دبليو" هو

6:01

ما أصبح جوهريًا في

6:03

حياتنا جميعًا. الأذى

6:05

النفسي الذي عانيت منه

6:06

يمكن إرجاعه إلى هذه

6:08

القرارات تحديدًا.

6:09

دعوني أقرأ لكم ملخص

6:11

حديثه في مؤتمر QCon عام

6:13

2009. أسميه خطئي الذي

6:15

كلف مليار دولار. كان

6:17

اختراع المرجع الفارغ

6:19

(null reference) في عام 1965. في

6:20

ذلك الوقت، كنت أصمم

6:22

أول نظام أنواع شامل

6:23

للمراجع في لغة كائنية

6:25

التوجه، "ألغول دبليو".

6:26

كان هدفي التأكد من أن

6:28

جميع المراجع ستكون

6:29

آمنة تمامًا. أمر مضحك

6:31

، أليس كذلك؟ أعني

6:33

أننا نتحدث عن المراجع

6:34

الفارغة يا جماعة.

6:35

أشعر بدفء في قلبي

6:37

عندما أسمع "سنجعلها

6:38

آمنة تمامًا". المراجع

6:40

الفارغة. مع تحقق يقوم

6:41

به المترجم تلقائيًا،

6:43

لكنني لم أستطع مقاومة

6:44

إغراء إضافة المرجع

6:46

الفارغ. أعني، هذا

6:47

الرجل يواجه إغراءً

6:48

على مستوى "سيد

6:49

الخواتم". ببساطة، كان

6:51

الخاتم قوياً جداً.

6:52

المراجع الفارغة (Null

6:54

references) هي في الواقع

6:55

قوة "ساورون". ببساطة

6:56

لأن تنفيذها كان سهلاً

6:58

للغاية. وقد أدى هذا

6:59

إلى أخطاء وثغرات

7:00

وانهيارات في الأنظمة

7:01

لا حصر لها، والتي

7:02

تسببت على الأرجح في

7:03

خسائر وأضرار

7:04

بمليارات الدولارات

7:05

على مدار الأربعين

7:06

عاماً الماضية. السؤال

7:07

الحقيقي هو، ما مدى

7:08

تكلفة قرار المؤشر

7:10

الفارغ؟ حسناً، أولاً

7:11

، كطالب في إذاعة "إم

7:12

إس يو بوبكاتس"،

7:13

سأخبرك أنني قضيت

7:14

أياماً عديدة أحاول

7:15

تصحيح أخطاء المراجع

7:17

الفارغة اللعينة،

7:18

حسناً؟ لذا، عاطفياً،

7:19

كانت التكلفة بمليار

7:20

دولار بالنسبة لي وحدي

7:22

. لكن، أعتقد أن

7:23

بإمكانكم تذكر وقت قبل

7:24

عامين فقط حيث كان من

7:26

الممكن إرجاع أكبر

7:27

انقطاع في العالم إلى

7:29

مرجع فارغ. إحدى أشهر

7:30

تلك الحوادث وقعت في 12

7:32

يونيو 2025 من قبل "جوجل

7:34

كلاود". في الواقع، كل

7:35

ما في الأمر أنهم لم

7:36

يتحققوا من وجود مؤشر

7:38

فارغ، وبالطبع حدث خطأ

7:39

المؤشر الفارغ. توقفت

7:40

واجهة برمجة

7:41

التطبيقات (API)

7:42

والمصادقة، ثم توقف كل

7:43

شيء عالمياً عن العمل.

7:44

وبالطبع، استمر هذا

7:45

الأمر لمدة 7 ساعات

7:47

ونصف تقريباً حتى تم

7:48

طرح الإصلاح بالكامل.

7:49

هناك شيء يثير سخريتي

7:51

في هذا الموقف برمته،

7:53

حيث أراد "توني هور"

7:55

هنا فقط إنشاء لغة

7:56

آمنة من حيث النوع،

7:58

تكون آمنة تماماً مع

8:00

جميع المراجع، لينتهي

8:02

به الأمر بخلق أكبر

8:04

كارثة لا نزال نتعافى

8:06

منها حتى يومنا هذا.

8:08

الواقع على الأرجح هو

8:09

أنه لو لم يخترعها،

8:10

لكان شخص آخر قد فعل

8:11

ذلك، تماماً مثل سباق

8:12

الذكاء الاصطناعي. في

8:14

الحقيقة، الأمر مطابق

8:15

تماماً لذلك. لكن في

8:17

نهاية المطاف، يُنسب

8:18

الأمر إليه وإلى عمله

8:19

في لغة "أغول"(AlgoW). الآن

8:21

، واحدة من أكبر

8:21

مساهماته في مجال علوم

8:23

الكمبيوتر هي "

8:23

العمليات المتسلسلة

8:24

المترابطة"(Communicating

8:25

sequential processes). سأقوم

8:26

الآن بتوضيح مثال سريع

8:28

لما يعنيه هذا عملياً

8:29

من خلال عرض القليل من

8:30

الكود بلغة "جو". أعلم

8:32

أن الكثير منكم من

8:33

محبي لغة "راست"، وربما

8:34

تشعرون ببعض الاستياء

8:35

لأنني أستخدم لغة "جو".

8:36

فقط، فقط، فقط اصبروا

8:37

معي لأنها الأبسط.

8:39

حسناً. لدينا عمليتان

8:40

هنا. لدينا هذه

8:41

العملية الخارجية

8:42

التي تنشئ قناة،

8:43

وتنتظر عبر القناة، ثم

8:44

تطبع الرسالة التي

8:45

تحصل عليها من القناة.

8:47

ولدينا عملية ثانية

8:48

ستقوم ببعض العمل ثم

8:49

تسلم ذلك العمل في

8:50

النهاية، والذي أسميه

8:52

"مرحباً بالعالم". إذاً

8:53

، هذا يعني أننا ننشئ

8:54

القناة في العملية

8:55

الأولى. سيبدأ تنفيذ

8:57

العملية الثانية للتو.

8:58

العملية الأولى

8:59

ستنتظر الآن ببساطة.

9:01

ستنتظر بشكل متزامن

9:02

حتى تتواصل العملية

9:04

الثانية. هذا جزء مهم

9:05

جداً من العمليات

9:06

التسلسلية المتواصلة.

9:08

وأخيراً، عندما ينتهي

9:09

العمل في العملية

9:11

الثانية ونستطيع

9:12

التواصل، تستقبل

9:13

العملية الأولى

9:14

الرسالة وتتمكن من

9:15

المضي قدماً. إذاً،

9:17

إحدى الأفكار

9:18

الأساسية لـ CSP هي أن

9:19

التواصل عبارة عن

9:21

مصافحة متزامنة. وكما

9:22

رأيت للتو، اضطرت

9:23

العملية الأولى

9:24

للانتظار حتى تتواصل

9:26

العملية الثانية. لذا،

9:27

يجب على كل من العملية

9:29

الثانية والأولى

9:30

انتظار بعضهما البعض

9:31

لأن التواصل متزامن.

9:32

بالطبع، يمكنك تجاوز

9:34

هذا عن طريق إنشاء

9:34

مخازن مؤقتة، وبهذه

9:35

الطريقة يمكن للعملية

9:36

الثانية نظرياً إرسال

9:37

المزيد من الرسائل.

9:38

لكن الفكرة البسيطة هي

9:40

أن جميع العمليات يجب

9:41

أن تتواصل عبر مصافحة

9:42

متزامنة. وأن العمليات

9:44

هي وحدات سلوكية ولا

9:45

تتشارك في المتغيرات.

9:47

أعلم أنني قمت ببعض

9:48

المشاركة في مثال Go

9:50

ذاك، ولكن يمكننا

9:51

تجاهل ذلك الآن. مرة

9:53

أخرى، أنا أشرح هذا

9:54

بأبسط المصطلحات

9:55

العملية وأكثرها

9:56

وضوحاً، وليس من جانب

9:57

الحسابات الرياضية.

9:59

يمكنك البحث عن

10:00

الحسابات وكيف يُفترض

10:01

أن تكون الأحداث لحظية

10:03

، وكيف يُفترض أن يكون

10:04

للمستقبلين أبجدية

10:05

تمثل نوع الأحداث التي

10:07

يستقبلونها. إذا سبق

10:08

لك استخدام Elixir، فربما

10:10

يبدو هذا مألوفاً جداً

10:12

لنمط الممثل، لأنه

10:14

كذلك بالفعل. في نهاية

10:15

المطاف، كانت مساهمات

10:17

توني هور في علوم

10:19

الحاسوب أكبر بكثير

10:20

مما ذكرته. لم أتطرق

10:22

حتى إلى خوارزمية

10:23

الاختيار السريع وبعض

10:25

الخوارزميات

10:25

الإحصائية التي ساعد

10:27

في إنجازها، وعمله

10:28

العملي على مترجم ALGOL.

10:30

ومثل سلفه إدجار

10:31

ديكسترا، الذي كان

10:32

أيضاً حاصلاً على

10:33

جائزة مبرمج الشهر،

10:35

لديه بعض الاقتباسات

10:36

الرائعة التي أود

10:38

قراءتها لك. عندما فكر

10:39

وتحدث عن ALGOL 60، قال ما

10:41

يلي: "هذه لغة سابقة

10:43

لعصرها لدرجة أنها لم

10:45

تكن مجرد تحسين

10:46

لسابقتها، بل ولجميع

10:48

خلفائها تقريباً." كان

10:49

الرجل يمتلك بلاغة في

10:51

الكلمات. "هناك

10:52

طريقتان لبناء تصميم

10:53

البرمجيات. إحدى الطرق

10:55

هي جعلها بسيطة جداً

10:56

لدرجة أنه من الواضح

10:57

عدم وجود عيوب،

10:57

والطريقة الأخرى هي

10:58

جعلها معقدة جداً

10:59

لدرجة أنه لا توجد

11:00

عيوب واضحة. الطريقة

11:02

الأولى أصعب بكثير." يا

11:04

إلهي. كان الرجل يرى ما

11:06

وراء الأفق. لقد توفي

11:07

تقنياً هذا العام في

11:09

مارس، لكنني متأكد من

11:10

أنه رأى بعضاً مما كان

11:12

يفعله الذكاء

11:13

الاصطناعي. وأتساءل

11:14

عما كان يدور في ذهنه

11:15

حول هذا الأمر هنا. وعن

11:17

الكميات الهائلة من

11:18

التعليمات البرمجية

11:19

التي أنتجناها. لاحقاً

11:21

في مسيرة توني هور

11:22

المهنية، حصل على ثاني

11:23

أكثر الألقاب تشريفاً

11:25

، حيث منحته الملكة

11:26

إليزابيث الثانية لقب

11:27

فارس، ولهذا السبب

11:28

ندعوه السير توني هور،

11:30

بالطبع، إذا لم تكن

11:31

تعلم. حيث أن لقب مبرمج

11:33

الشهر هو أهم تكريم

11:34

يمكن للمرء الحصول

11:35

عليه على الإطلاق.

11:36

حسناً، لم أستعرض كل

11:38

إنجازات توني هور

11:39

المذهلة والأعمال

11:40

التي قام بها. حتى أنني

11:41

لم أتطرق إلى خوارزمية

11:42

الاختيار السريع (

11:43

Quickselect). لم أتحدث عن كل

11:45

أعماله الرائعة في AlgoW

11:47

أو نظريته الموحدة

11:48

للبرمجة، أو معضلة

11:50

العشاء للفلاسفة،

11:51

والتي بالمناسبة،

11:52

فكرة مشاركتهم لأدوات

11:54

الطعام مقرفة حقاً،

11:56

أليس كذلك؟ لا أريد

11:57

حتى الحديث عن الأمر

11:58

لأنه يفتقر للنظافة.

12:00

لكن في نهاية المطاف،

12:01

سيظل تأثير توني هور

12:03

ملموساً لوقت طويل

12:04

جداً، ومن الواضح

12:05

تماماً أنه يستحق لقب

12:07

مبرمج الشهر. لذا،

12:08

تحية لك يا سير توني

12:10

هور، مبرمج الشهر.

12:11

الاسم هو بريماجين (The

12:13

Primagen).

Interactive Summary

Loading summary...