
Arabic: 
ديفيد مالان: هذه هي دورة CS50،
مقدِّمة إلى المشروعات الفكرية
لعلوم الكمبيوتر
وفن البرمجة المعتمَدة من جامعة هارفارد.
اسمي ديفيد مالان،
وإذا كنتَ من بين هؤلاء

English: 
[Introduction]
DAVID MALAN: This is CS50,
Harvard University's introduction
to the intellectual
enterprises of computer science
and the art of programming.
My name is David Malan,
and if you are among those

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

English: 
in the room who are thinking, why
am I in a class of computer science,
realize that I too felt
that exact same way.
In fact, my freshman
year, I didn't quite
get up the nerve to take this class
or computer science more generally,
and that was largely because
I was intimidated by it.
I was a little nervous.
It felt well out of my comfort zone.
And I really didn't know at the end
of the day what it actually was.
But realize if you, too, are
feeling a little bit of that,
or even if you're among
those more comfortable who
have dabbled in computer
science or programming,
realize that there's so many blanks
that we can fill in along the way
so that ultimately, at the
end of the semester, everyone
will feel themselves on the same page.
And until then, rest assured that 68%
of the people sitting to your left
and to your right and
behind and in front
have never taken a CS course
before, which may very well be
the demographic into which you fit.
But realize, too, that with
such an amazing support
structure with so many office hours
and sections and materials and beyond,
realize that what's ultimately
important in this course
is not so much where you end
up relative to your classmates

English: 
in week 10, our final week, but
where you end up relative to yourself
in week zero.
And indeed, that is where we now are.
And as it turns out, computer
scientists start counting at zero.
And so over the next 11
weeks, we will take you
from being among those
less comfortable or perhaps
somewhere in between
less comfortable and more
to feeling much more comfortable
and confident and capable than that.
But to get there, we need to understand
what computer science really is.
And this was something I didn't
understand until I set foot in a room
like this.
And I dare say we can distill computer
science into just this picture.
Computer science is
about problem solving.
And I know that high school
courses typically do kind of paint
a misleading picture
that it's only about
and it's entirely about programming
and people with their heads
down in the computer lab working
fairly anti-socially on code,
but the reality is it's all about
solving problems, and very often,
solving problems collaboratively
either in person or by leveraging code,
programs that others
have written in the past.
And what does it mean
to solve a problem?
Well, you need inputs.
So there's a problem
you're trying to solve.
That is the input.
And you want output.

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

English: 
You want the solution to that problem.
And the sort of secret
sauce of computer science
is going to be everything
in this proverbial black box
in the middle over the
next several weeks,
where you begin to understand
exactly what you can do with that.
But in order to start solving
problems, we kind of just
need to decide as a group how we're
going to represent these problems
and what might a problem be.
Well, in this room, there's
a whole bunch of people.
If we wanted to take attendance or
count the number of people in this room,
I might need to start keeping
track of how many people I see.
But how do I represent the
number of people I see?
Well, I can do it sort of old school
and I can just take out a piece of chalk
or whatnot and say, all right.
I see 1, 2, 3, 4, 5.
I can do little stylistic
conventions like that
to save space and remind myself.
6, 7, 8, 9, 10, and so forth.
Or I can, of course, just
do that on my own hand.
So 1, 2, 3, 4, 5, and so forth.
But obviously, how high can
I count on just one hand?

Arabic: 
أنت تريد حلاً لهذه المشكلة.
وسر الخلطة
في علم الكمبيوتر
سيكون كل شيء
في هذا الصندوق الأسود الشهير
في المنتصف خلال
الأسابيع القليلة القادمة،
حينما تبدأ في فهم
ما يمكنك القيام به بالضبط مع ذلك.
لكن لبدء حل المشكلات،
نحن بحاجةٍ فقط
إلى أن نقرر كمجموعة كيف
سنمثل هذه المشكلات
وماذا يمكن أن تكون المشكلة.
حسنًا، في هذه القاعة، هناك
مجموعة كاملة من الأشخاص.
أذا أردنا أن نأخذ الحضور أو
نحصي عدد الأشخاص في هذه القاعة،
فقد أحتاج إلى البدء في حفظ
تتبع مسارات الأشخاص الذين أراهم.
ولكن كيف أقوم بتمثيل
عدد الأشخاص الذين أراهم؟
حسنًا، يمكنني فعل ذلك بالطريقة التقليدية
ويمكنني فقط إخراج قطعة من الطباشير
أو أي شيء وأقول، حسنًا.
أنا أرى 1، 2، 3، 4، 5.
يمكنني إجراء القليل من
المحادثات الأسلوبية مثل هذه
لتوفير مساحة وتذكير نفسي.
6، 7، 8، 9، 10، وما إلى ذلك.
أو يمكنني، بالطبع،
أن أحسب فقط على يدي.
1، 2، 3، 4، 5، وما إلى ذلك.
لكن بوضوح، كم يمكنني أن أصل
في العد على يد واحدة فقط؟

English: 
So 5 you would think, but that's
just because we haven't really
thought hard enough about this problem.
It turns out that with just these five
fingers, let alone these five more,
I can actually count rather higher
because after all, the system
I'm using of hashmarks
on the board or just
now with my fingers is just kind of
keeping my fingers down and putting
them up to represent ones, really.
But what if I actually took into
account the order of my fingers
and sort of permuted them, so to speak,
so that it's really patterns of fingers
that represent the number
of people in the room,
and not just the mere presence
of a finger going up or down.
In other words, this can remain zero.
This could still be one.
But what if two is not
just this, the obvious?
But what if it's just this?
So raising just one, my second finger.
What if, then, three is this?
So we have 0, 1, 2, 3.
That's going to lead us to
four somewhat offensively.
But if we begin to jump
ahead to five, I might now
permute this finger and this finger up.
And if I want to now represent
six, I could do this.
And now seven.
In other words, I've expressed so
many more patterns on my hand already

Arabic: 
يمكنك التفكير في 5، لكن هذا
فقط لأننا لم
نفكر مليًا في هذه المشكلة.
اتضح أنه فقط باستخدام الخمس
أصابع هذه، ناهيك عن هذه الخمسة،
يمكنني أن أحصي أكثر
لأنه وفي نهاية المطاف، نظام
علامات الإحصاء الذي أستخدمه
على اللوحة أو فقط
باستخدام أصابعي هو مجرد
إبقاء أصابعي منخفضة
أو رفعها لتمثيل الأشخاص، بالفعل.
ولكن ماذا لو أخذت في الاعتبار
ترتيب أصابعي
وبدلتهم نوعًا ما، إن جاز التعبير،
لتكون بالفعل أنماطًا من الأصابع
تمثل عدد الأشخاص
في هذه القاعة،
وليس مجرد وجود
إصبع يصعد ويهبط.
بعبارة أخرى، يمكن أن يظل هذا صفرًا.
ويمكن أن يكون هذا واحدًا.
ولكن ماذا لو كان اثنان
ليس هذا فقط، كما هو واضح؟
لكن ماذا لو كان هذا فقط؟
لذا رفع إصبع واحد فقط، إصبعي الثاني.
ماذا لو كان ثلاثة هو هذا، إذًا؟
لذا نحن لدينا 0، 1، 2، 3.
هذا سيقودنا إلى
أربعة إلى حدٍ ما.
لكن إذا بدأنا بالقفز
مباشرةً إلى خمسة، قد يمكنني الآن
تبديل هذا الأصبع وهذا الأصبع لأعلى.
وإذا أردت الآن أن أمثل
ستة، يمكنني القيام بذلك.
والآن سبعة.
وبعبارة أخرى، لقد عبّرت عن
العديد من الأنماط على يدي بالفعل

Arabic: 
وإذا استمررنا في القيام بذلك،
أعتقد أنه يمكنني بالفعل
أن أمثل ربما 32
نمطًا مختلفًا، وبالتالي
32 شخصًا مختلفًا، على يدي فقط.
أو 31 شخصًا إذا كنتُ
أبدأ العد من الصفر.
إذًا ما هذا--
ما هي العلاقة
وكيف وصلنا حتى إلى هنا؟
حسنًا، اتضح أن أجهزة الكمبيوتر
بسيطة نوعًا ما،
بالضبط كما تبدو أيدينا هنا.
في نهاية المطاف، يتم توصيل
جهاز الكمبيوتر الخاص بك في الجدار
أو يكون به بطارية، لذلك فإما
أن يكون به كهرباء أو لا.
وفي نهاية الأمر، فذلك
هو المورد المادي
الذي يحرك هذه الأشياء وهواتفنا
وجميع التقنيات اليوم.
لذا إذا كان الأمر إما هناك كهرباء
أو لا، فهذا يوضح بسهولة
فكرة وجود إصبع أو عدم وجوده.
وبالفعل، فأجهزة الكمبيوتر، كما
تعلمون تتكلم فقط أي لغة؟
أي أبجدية، إذا جاز التعبير؟
نعم.
النظام الثنائي.
Bi تعني اثنين.
وبالفعل، يشير هذا إلى حقيقة أنه
في النظام الثنائي في أجهزة الكمبيوتر،
لديك فقط رقمان--
صفر وواحد.
نحن البشر، بالطبع، لدينا
0، 1، 2، 3، 4، 5، 6، 7، 8، 9،
ومن ثم يمكننا دمج
هذه الأرقام للعد أكثر.
لكن أجهزة الكمبيوتر لديها فقط
0، و1، وانتهى الأمر.
لأنه في نهاية
المطاف، هناك في الواقع

English: 
and if we keep doing this,
I think I can actually
represent painfully perhaps like 32
different patterns, and therefore
32 different people, on my hands alone.
Or 31 people if I
start counting at zero.
So what is that--
what's the relationship
and how did we even get here?
Well, it turns out that
computers are kind of simplistic,
much like our hands here.
At the end of the day, your
computer is plugged into the wall
or it's got a battery, so it either
has or it does not have electricity.
At the end of the day, that
is the physical resource
that drives these things and our
phones and all of technology today.
So if there is either electricity
or not, that kind of maps nicely
to no finger or yes finger.
And indeed, computers, as you probably
know, only speak what language?
What alphabet, so to speak?
Yeah.
Binary.
Bi meaning two.
And indeed, that refers to the
fact that in binary in computers,
you only have two digits--
zero and one.
We humans, of course, have
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
and then we can combine
those to count even higher.
But computers only have
0, 1, and then that's it.
Because at the end of
the day, there's actually

Arabic: 
اقتران مباشر بين إيقاف الطاقة
وبين كونها صفرًا أو كونها قيد التشغيل
وكونها واحدًا، أو بعض الإلكترونات
أو أيًا كان ما يتدفق من البطارية
أو من الجدار.
ولهذا السبب تميل أجهزة الكمبيوتر
إلى التحدث بالنظام الثنائي فقط،
لأنها في نهاية المطاف،
تقترن بطريقة بسيطة حقًا
بما هي عليه، وبما يمدها
بالطاقة في المقام الأول.
ولكن كيف يكون هذا مفيدًا بالفعل؟
إذا كانت أجهزة الكمبيوتر تحتوي فقط على الأصفار
والأحاد، فكيف يمكنها فعل أي شيء مفيد؟
حسنًا، فكر في عالمنا البشري، حيث
قد يكون لديك هذا النمط من الرموز.
هذا رقم عشري، عشري يعني
10 لأن لديك من 0 إلى 9.
وهذا بالطبع، 123.
لكن لماذا؟
إذا لم تكن قد فكرت في
هذا بعض الوقت،
هذا حقًا مجرد نمط من ثلاثة رموز،
واحد واثنين وثلاثة أشكال،
أو الرموز، على الشاشة.
ولكن نحن البشر، منذ المدرسة
الابتدائية، بدأنا ننسب معنىً
لكل من هذه الأرقام، أليس كذلك؟
إذا فكرت مرة أخرى، فهذا عمود الأحاد،
وهذا عمود العشرات،
وهذا عمود المئات،
وهكذا، ويمكننا الاستمرار.
ولماذا هذا النمط--
واحد، اثنان، ثلاثة-- يعني 123؟
حسنًا، هذا لأن جميعنا
بنوع من البديهة

English: 
a direct mapping between power being off
and it being a zero or power being on
and it being one, or some electrons
or whatever flowing from your battery
or from the wall.
So this is why computers
tend to speak only binary,
because at the end of the day,
it just maps really cleanly
to what it is that's powering
them in the first place.
But how is this actually useful?
If computers only have zeros and
ones, how can they do anything useful?
Well, think about our human world, where
you might have this pattern of symbols.
This is decimal, dec meaning 10
because you have 0 through 9.
And this is, of course, 123.
But why?
If you haven't thought about
this in quite some time,
this is really just a pattern of three
symbols, one and two and three shapes,
or glyphs, on the screen.
But we humans, ever since grade
school, have started ascribing meaning
to each of these numbers, right?
If you think back, this is the ones
column, this is the tens column,
this is the hundreds column, and
so forth, and we could keep going.
And so why does this pattern--
one, two, three-- mean 123?
Well, it's because all
of us sort of intuitively

Arabic: 
هذه الأيام نقوم بسرعة بحساب
100 ضرب 1 زائد 10 ضرب
2 زائد 1 ضرب 3، والذي بالطبع
يعطينا 100 زائد 20 زائد ثلاثة،
لذا فنحن نعرف الرقم
رياضيًا على النحو 123.
لكننا جميعًا نفعل هذا بسرعة جدًا، فأنت
لم تعد تفكر حقًا في هذا الموضوع.
حسنًا، تعمل أجهزة الكمبيوتر
بشكل أساسي بالطريقة نفسها.
ليس لديهم الكثير من الأرقام--
من 0 إلى 9-- كما لدينا.
لديهم فقط أصفار وأحاد.
لذا إذا كانوا سيخزنون
قيمًا، فأنت
سترى فقط الأصفار
والأحاد على الشاشة،
ولكن تلك الأصفار والأحاد
فقط تعني أشياءً مختلفةً.
بدلاً من وجود مكان
للأحاد، والعشرات، والمئات،
فسيكو لديهم مكان للأحاد،
ومكان للأثناء، ومكان للأربعاوات،
ثم الثمانيات و 16 وما بعدها.
الآن، لماذا؟
حسنًا، واحد و 10 و 100، يتضح
أن هؤلاء من قوى الـ 10.
10 بالنسبة إلى 0 هي تقنيًا 1.
10 بالنسبة إلى 1 هي مجرد 10.
10 بالنسبة إلى 2 هي 100.
وهذا سبب أن لدينا أحاد، وعشرات
ومئات، وآلاف، وهكذا.
وعلى ما يبدو أن أجهزة الكمبيوتر
تستخدم قوى الرقم 2.
ليس من المستغرب.
فثنائي-- تعني اثنين.

English: 
nowadays are just quickly in our
head doing 100 times 1 plus 10 times
2 plus 1 times 3, which of course
gives us 100 plus 20 plus three,
and then the number we
know mathematically as 123.
But we're all doing this so quickly, you
don't really think about this anymore.
Well, computers work
fundamentally the same way.
They don't have as many digits--
0 through 9-- as we do.
They only have zeros and ones.
And so if they were to
store values, you're
only going to see zeros
and ones on the screen,
but those zeros and ones
just mean different things.
Instead of having a ones
place, tens, a hundreds,
they're going to have a ones
place, a twos place, a fours place,
and then eights and 16 and beyond.
Now, why?
Well, one and 10 and 100, turns
out those are powers of 10.
10 to the 0 is technically 1.
10 to the 1 is just 10.
10 to the 2 is 100.
And that's why you have ones, tens
hundreds, thousands, and so forth.
Computers are apparently
using powers of 2.
Not surprising.
Binary-- two.

English: 
So if you only have ones, twos,
and fours as your placeholders,
if a computer were
storing these digits--
0, 0, 0-- that computer is presumably
storing what number so far as we
humans understand it?
Well, that's how a
computer would store zero.
If a computer is storing
literally 0, 0, 0, just
like in our human world, that
also is 0, but that's technically
because it's 4 times 0 plus 2 times 0
plus 1 times zero, which is obviously
zero.
Meanwhile, if a computer is
actually storing not just,
say, 0, 0, 0, but instead is
storing this value in binary,
what does that map to in decimal?
So that's one.
And now, why, if we change this 0 and
1 to this value here, is this two?
Well, mathematically, for
the exact same reasons.
And so earlier, I had five fingers, but
if you consider just my first three,
when I did this holding up one
finger, I was representing two.
And if I want to represent three,
recall that I put up the second finger.

Arabic: 
لذا، إذا كان لديك فقط أحاد، وأثناء،
وأربعاوات كعناصر نائبة،
إذا كان الكمبيوتر
يخزن هذه الأرقام--
0، 0، 0-- فهذا الكمبيوتر من المفترض
أنه يخزن أي عدد حتى الآن حسب ما
نفهم نحن البشر؟
حسنًا، هذه هي الكيفية
التي يخزن بها الكمبيوتر الصفر.
إذا كان الكمبيوتر حرفيًا
يخزن 0، 0، 0، فقط
كما هو الحال في عالمنا البشري،
فهذا أيضًا 0، لكن هذا تقنيًا
لأنه 4 ضرب 0 زائد 2 ضرب 0
زائد 1 ضرب صفر، يساوي بوضوح
صفرًا.
بينما إذا كان الكمبيوتر في
الواقع لا يخزن فقط،
لنقل، 0، 0، 0، ولكن بدلاً من ذلك
يخزن هذه "القيمة" في نظام ثنائي،
فبماذا يرتبط هذا في الأرقام العشرية؟
إذًا هذا واحد.
والآن، لماذا، إذا قمنا بتغيير هذا الـ 0 والـ 1
إلى هذه "القيمة" هنا، يساوي اثنين؟
حسنًا، رياضيًا، للأسباب
نفسها بالضبط.
لذا في البداية، كان لدي خمسة أصابع، ولكن
إذا كنت تنظر فقط إلى الثلاثة الأولى،
عندما فعلت ذلك ورفعت إصبعًا
واحدًا، وكنت أمثل اثنين.
وإذا كنت أريد تمثيل ثلاثة،
أذكر أنني رفعت الإصبع الثاني.

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

English: 
And so the reason that
could nicely represent three
is because all I was doing with my
human hand was counting in binary.
And I could keep counting
more and more and more.
And so if I have five fingers or
five bits, bit meaning binary digits,
I could count up, it turns
out, if we do the math,
as high as 31 by starting to zero.
It's going to be hard to
physically do that, but we could.
So why is this useful?
At the end of the day,
a computer, therefore,
can represent any number of values from
0 to 1 to 2 to 3 to some number much,
much, much higher than that.
All it needs is enough
bits, enough zeros and ones.
Well, what are those bits?
Well, all of us have these days in our
phones sources of light, for instance.
So I could actually say that
this physical device right now--
might be a little hard to tell--
it does have a flashlight and it's
technically off at the moment.
But if I turn this flashlight on,
thereby using some of the electricity,
now, I'm storing a one.
And so the phone is on.
Now, it's off.
Now, it's on.
And if I see--
can I borrow someone's phone real quick?
May I?
OK.

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

English: 
And flashlight.
How do I turn on the flashlight?
Oh.
Shake it.
That's OK.
OK.
Thank you.
Oh.
Thank you.
OK.
So this is great.
Now, I can count higher.
Now, this represents the number what if
I have two light bulbs or two switches
on at the moment?
Yeah.
Three.
Because I have a one,
I have a one, and I
have two, which of course is
going to end up equaling three.
And if I pick up a third phone
somehow, I could count even higher.
Technically, if I had
three light bulbs on--
one, one, one-- what
would that value be?
Seven.
Because it's a four plus a
two plus a one, and so forth.
Thank you so much for the spontaneity.
So why does this not lead
to limitations for us?
I can count in decimal
as high as I want.
I can now count in binary as high as
I want, so long as I have enough bits.
But how do I actually
represent other information?
Well, if I want to represent something
like a letter, how do I get there?

Arabic: 
إذا كانت أجهزة الكمبيوتر لديها كهرباء فقط
وتستخدم النظام الثنائي للعد،
ومع ذلك وبطريقة ما فإنها أكثر
فائدة من مجرد إجراء الحسابات--
فيمكنهم الحصول على رسائل نصية ورسائل بريد إلكتروني
ومواقع ويب ومقاطع فيديو وغير ذلك الكثير--
كيف يمكننا الانتقال من الأصفار
والأحاد إلى الحروف؟
حسنًا، نحن-- أجل.
معذرة.
أعلى قليلاً.
أجل.
نحن بحاجة فقط إلى نوع من
الربط بين الأرقام والحروف.
وبعبارة أخرى، جميع الأشخاص في هذه
الغرفة يحتاجون فقط إلى أن يقرروا في مرحلةٍ ما
هذا، أتعلم ماذا؟
إذا أردنا أن نمثل شيئًا ما
مثل الحرف الكبير A،
نحتاج فقط أن نقرر
نمط وحدات البت،
نمط الأصابع،
الذي سيمثل A.
واتضح أن البشر
منذ سنوات ومن طرف واحد
قرروا جعل الرقم 65 الرقم العشري
الذي يمثل الحرف الكبير A.
وهل بإمكانك تخمين الرقم العشري
الذي يمثل الحرف الكبير B؟
66.
ومن ثم الحرف C يمثله 67 وهكذا دواليك.
وهناك تخطيط لما يشبه
128 وحتى 256 من القيم المحتملة
لجميع المفاتيح التي قد
تراها على لوحة المفاتيح النموذجية
لتمثيل الحروف.
الآن، كيف يميز الكمبيوتر،
بالرغم من ذلك، بين الأرقام والحروف؟
حسنًا، يعتمد فقط على السياق.

English: 
If computers only have electricity
in them and they use binary to count,
and yet somehow they're much more
useful than just doing math--
they can have text messages and e-mails
and websites and videos and more--
how do we get from zeros
and ones to letters?
Well, we-- yeah.
Sorry.
A little louder.
Yeah.
We just need to kind of
relate the numbers to letters.
In other words, all the people in this
room just need to decide at some point
that, you know what?
If we want to represent something
like the capital letter A,
we just need to decide
on a pattern of bits,
a pattern of fingers,
that's going to represent A.
And it turns out humans
years ago just unilaterally
decided 65 shall be the decimal number
that represents capital letter A.
And you might guess capital B is
represented by what decimal number?
66.
And then C is 67 and so forth.
And there's a mapping of like
128 or even 256 possible values
for all the keys you might
see on a typical keyboard
in order to represent letters.
Now, how does a computer distinguish,
though, numbers from letters?
Well, just depends on the context.

English: 
If you're using like a
calculator program on your Mac
or PC or iPhone or Android,
well, the computer, the device,
is just going to know contextually,
let me interpret this pattern of zeros
and ones as actual numbers to do math.
But if you're using the SMS app
or the messages app on your phone,
you're going to actually
be in the context of text,
and so your phone is going to interpret
that same pattern of zeros and ones,
or light bulbs being off, or, at
the end of the day, transistors,
tiny pieces of hardware and
computers that are either on or off--
it's going to interpret those patterns
as just representing a letter.
If you're in the context of a text
messaging application or Microsoft Word
or Google Docs or the like, it
completely depends on context.
The system we humans came up with just
called ASCII, American Standard Code
for Information Interchange.
The name isn't interesting, but the
fact that we all agreed years ago
that 65 is A and so forth
is what's important.
And so for instance, if we
look at this mapping here
of just the first few
letters, what does this mean?

Arabic: 
إذا كنت تستخدم برامج مثل
برنامج الآلة الحاسبة على Mac
أو الكمبيوتر الشخصي أو iPhone أو Android،
حسنًا، فإن الكمبيوتر، أو الجهاز،
سيتعرف على السياق فقط،
دعوني أفسر هذا النمط من الأصفار
والأحاد كأرقام فعلية لإجراء الحسابات.
ولكن إذا كنت تستخدم تطبيق الرسائل القصيرة SMS
أو تطبيق الرسائل على هاتفك،
ستكون في الواقع
في سياق النص،
ومن ثم سيقوم هاتفك بتفسير
النمط نفس من الأصفار والأحاد،
أو إيقاف تشغيل مصابيح الإضاءة، أو،
في نهاية الأمر، الترانزستورات،
القطع الصغير من الأجهزة
وأجهزة الكمبيوتر التي إما تعمل أو لا تعمل--
ستفسر هذه الأنماط
كما تمثل مجرد حرف.
إذا كنت في سياق النص الخاص
بتطبيق المراسلة أو برنامج Microsoft Word
أو محرر مستندات Google أو ما شابه ذلك،
يعتمد الأمر تمامًا على السياق.
توصل البشر إلى نظام يُدعى
أسكي ( ASCII)، الشفرة القياسية الأمريكية
لتبادل المعلومات.
الاسم ليس مثيرًا للاهتمام، لكن
حقيقة أننا اتفقنا منذ سنوات
أن الرقم 65 وما إلى ذلك
هو الأمر المهم.
وعلى سبيل المثال، إذا
نظرنا إلى هذا التوضيح هنا
الذي يمثل أول عدد قليل فقط
من الحروف، ماذا يعني هذا؟

Arabic: 
إذا كنت سأحصل على رسالة نصية الآن
ولدي القدرة بطريقةٍ ما
للنظر في أساسها،
إذا جاز التعبير، على نمط الأصفار والآحاد
التي كتبها شخصٌ
لي، وهذا النمط،
إذا قمت بتحويله إلى عشري، يقال من
الناحية الفنية، دعنا نقل، 72 و 73--
حتى أحصل على مجموعة
كاملة من الأصفار والأحاد.
وقمت ببعض الحسابات وأدركت،
حسنًا، لقد تلقيت للتو 72 و73،
ولكنها رسائل نصية، وهكذا فهي ليست
مجرد أرقام يرسلها لي صديقي.
إنها رسالة.
ما الذي سأفهمه من رسالة أرسلها صديقي
إذا قام هو أو هي بإرسال 72 ومن ثم 73؟
نعم.
مرحبًا.
H-I. لأنه إذا قفزت
إلى اليمين هنا،
يصادف هذا أن يكون في خريطة
أسكي (ASCII) بين 72 و73، H و I.
من الناحية الفنية، إذا احتوت الرسالة
على بايت ثالث، إذا صح التعبير.
بايت، إذا تسائلت من قبل،
فهو عبارة عن ثمانية أجزاء.
من السهل عدم التحدث
من حيث وحدات البت المفردة،
حيث لا يمكنك العد بأرقامٍ كبيرة،
لكن مع البايت، أو 8 وحدات بت،
يمكنك العد أكثر.
وهكذا يتضح أنه إذا تلقيت
بايت ثالث، تسلسل آخر من ثمانية
أصفار وأحاد معًا--
33.
كيف نعرف مضمون
هذه الرسالة الآن؟
نعم.

English: 
If I were to now get a text message
and I had the ability somehow
to look underneath the hood, so to
speak, at the pattern of zeros and ones
that someone had just
texted me, and that pattern,
if I convert it to decimal, technically
said, let's say, 72 and 73--
so I get a whole bunch
of zeros and ones.
I do some math and I realize,
OK, I just received 72 and 73,
but this is texting, and so it's not
just numbers my friend is sending me.
It's a message.
What message did my friend likely send
me if he or she sent 72 and then 73?
Yeah.
Hi.
H-I. Because if you skim
ahead at the right there,
that just happens to be in ASCII the
mapping between 72 and 73, H and I.
If technically, the message
had a third byte, if you will.
A byte, if you've ever
wondered, is just eight bits.
It's convenient to talk not
in terms of single bits,
where you can't count very high,
but with a byte, or eight bits,
you can count higher.
And so it turns out if I received a
third byte, another sequence of eight
zeros and ones together--
33.
How would we know what
this message now is?
Yeah.

Arabic: 
وهكذا يتضح لك
أنك لن تعرف هذا إلا
من خلال التخمين أو البحث من خلال Google
أو مجرد تعلم هذه المعرفة.
هذه الآن "مرحبًا!"
مع علامة تعجب لأن 33
ترمز إلى، إذا نظرت إلى التوضيح في الأعلى،
علامة التعجب، أيضًا.
الآن، إذا نظرنا بالفعل إلى
النظام الثنائي لهذا،
سنرى في الواقع هذا
النمط من الأصفار والأحاد.
هذه طريقة تمثيل 72 في النظام الثنائي.
وهذه طريقة تمثيل 73.
وهذه طريقة تمثيل 33.
ولاحظ أني استخدمت واحدة،
اثنتان، ثلاث، أربع، خمس، ست وحدات بت،
على الرغم من أنه من الناحية الفنية
نتلقى الأشياء في وحدات من 8،
وحدات من البايت.
لكن لماذا لم أزعج نفسي بكتابة
00 آخرين هنا و 0 آخر هنا؟
هل يختلف الوضع إذا
كتبت هذه الأشياء؟
لا.
ليس تمامًا.
كما في اللغة الإنجليزية، في عالمنا البشري،
إذا كنتَ تريد كتابة واحد، اثنان، ثلاثة،
فهذه 123.
إذا كنتَ تريد كتابة 0،
1، 2، 3، فلا تزال 123.
لذلك و على الرغم من أننا نميل إلى
وضعها في مجموعات من 8،
لا نحتاج بالضرورة إلى كتابة
الثمانية عندما نتحدث عنهم فقط.
إذًا ماذا فعلنا؟

English: 
So it turns out you
would not know this other
than by guessing or Googling or
just coming in with this knowledge.
This is now "HI!"
with an exclamation point because 33
just so happens, if you look it up,
to map to an exclamation point, as well.
Now, if we actually looked
at the binary of this,
you would actually see this
pattern of zeros and ones.
This is how you represent 72 in binary.
This is you represent 73.
And this is how you represent 33.
And notice I've only used one,
two, three, four, five, six bits,
even though I technically tend
to receive things in units of 8,
units of bytes.
But why did I not bother writing
another 00 here and another 0 here?
Does it matter when you
write these things out?
No.
Not really.
Like in English, in our human world,
if you were to write one, two, three,
that's 123.
If you were to write 0,
1, 2, 3, that's still 123.
So even though we tend to
get them in clusters of 8,
we don't necessarily need to write
those when just talking about them.
So what have we done?

Arabic: 
حسناً، دعوني أعرض كلمة
أفضل تُعرف الآن باسم التجريد.
التجريد هو مجرد مصطلح عام
يُستخدم في علوم الكمبيوتر وسنقوم قريبًا
برؤيته في البرمجة لأخذ بعض
المستويات المنخفضة-- حرفيًا مستوى منخفض--
من تفاصيل التنفيذ،
حتى التفاصيل الدقيقة، وفهمها
في مرحلةٍ ما، ولكن تحديد ذلك
ليس مفيدًا من الناحية النظرية
للتفكير في المشكلات.
أنا حقًا لا أريد حل المشاكل في
هذا العالم من ناحية التفكير في 0 و1.
أفضل التفكير في هذه الأشياء
من الناحية العشرية على الأقل، أو أفضل من ذلك حتى،
في سياق الحروف إذا
كنت أتلقى نصًا بالفعل، أو حتى
بعض طرق التمثيل الآخرى.
وبهذا يدور التجريد حول
التفاصيل منخفضة المستوى نوعًا ما
وتبسيطها فقط حتى
نتمكن من إجراء محادثة أكثر فائدة
وألا نقلق مجددًا
بشأن مصدر الكهرباء.
يمكننا الاشتراط فقط على الكمبيوتر الخاص بي
بتمثيل الأصفار والأحاد.
لذلك، يمكنه تمثيل الأرقام.
لذلك، يمكن أيضًا
أن يمثل أسكي (ASCII) أو الحروف.
ويمكننا المضي قدمًا وبدء
حل مشاكل أكثر إثارة للاهتمام.
ولكن يبدو أننا لا نستطيع حل
جميع المشاكل لأن في لوحة المفاتيح لدي

English: 
Well, let me introduce a fancier
word now known as abstraction.
Abstraction is just a term generally
used in computer science and we'll soon
see in programming for taking some
low level-- like literally low level--
implementation details, like
minutiae even, and understanding them
at some point, but then deciding this
is not a useful level conceptually
to think about problems.
I really don't want to solve problems in
this world of thinking in 0's and 1's.
I'd much rather think about things
minimally in decimal, or better yet,
in the context of letters if I'm
actually receiving text, or even
some other representation.
So abstraction is about taking
fairly low level details
and just simplifying them so that we
can have a more useful conversation
and never again worry about where
the electricity is coming from.
We can just stipulate my computer
can represent zeros and ones.
Therefore, it can represent numbers.
Therefore, it can also
represent ASCII or letters.
And we can kind of move on and start
solving more interesting problems.
But it would seem that we can't solve
all problems because on my keyboard

Arabic: 
هنا، لوحة المفاتيح الأمريكية هذه،
هناك مجموعة كاملة من الرموز،
تقريبًا 100 أو 200 ربما على وجه الإجمال
إذا ضغطنا فوق مفتاح shift وoption وجميع
ذلك.
لكن ما لاتراه هو
بعض الحروف الشائعة جدًا.
على وجه الخصوص بالنسبة
للجمهور الدولي،
ما الذي لا يمكننا إلى حدٍ ما
كتابته على لوحة المفاتيح هذه؟
أي أنواع الرموز؟
حسنًا.
أي شيء بشكلة.
إذا كانت لديك شكلات فوق
الحروف المتحركة أو حروف أخرى.
ماذا أيضًا؟
معذرةً.
علامات تغيير الصوت أو
علامات أخرى فوق الحروف.
أجل.
مثل رمز الشباك؟
أوه.
مثل رمز الجنيه البريطاني.
بالتأكيد.
وبلدان أخرى، أيضًا.
أي عدد من اللغات الآسيوية.
هناك الكثير من الرموز التي
لم يتم تصويرها على لوحة المفاتيح هذه،
ومع ذلك وبطريقةٍ ما، يمكننا جميعًا
بكل تأكيد التعبير عن أنفسنا باستخدام
لوحات المفاتيح أو الهواتف الدولية.
لكن هذا لأن الهواتف وأجهزة الكمبيوتر
هذه الأيام لا تستخدم فقط نظام أسكي (ASCII).
يستخدم نظام أسكي (ASCII)
فقط ثماني وحدات بت في المجمل.
من الناحية الفنية سبعة، ولكن بعد ذلك،
في نهاية المطاف، ثمانية حقًا.
ومع ثماني وحدات بت، إذا
كنت بالفعل تجري الحسابات--
إذا كان لديك ثماني وحدات بت
أو ثمانية أصابع، يمكنك
تبديلهم فقط 256 مرة
بطريقةٍ محتملة تمامًا، أي

English: 
here, this American keyboard here,
there's a whole bunch of symbols,
like a 100 or 200 maybe in total if we
actually hit shift and option and all
of that.
But what you don't see are
some pretty common characters.
Especially in a very
international audience,
what can I apparently not
even type on this keyboard?
What kinds of symbols?
Yeah.
Anything with an accent.
If you have accents over
vowels or other letters.
What else?
I'm sorry.
Umlauts or other
characters above letters.
Yeah.
Like pound symbol?
Oh.
Like the UK pound symbol.
Sure.
And other countries, too.
Any number of Asian languages.
There's so many symbols that are
not depicted on this keyboard,
and yet somehow, all of us with
international keyboards or phones
can surely express themselves.
But that's because phones and computers
these days don't just use ASCII.
ASCII literally used
just eight bits total.
Technically seven, but then,
ultimately, really eight.
And with eight bits, if
you actually do the math--
if you have eight bits
or eight fingers, you
can only permute them in 256
total possible ways, which

Arabic: 
أنه يمكنك فقط تمثيل 256 حرفًا
باستخدام نظام ASCII مع الأرقام
غير الظاهرة، وهذا
ليس كافيًا لتمثيل
العديد من الرموز المختلفة
مثل تلك المذكورة هنا.
لا يمكنك تمثيل أيٍ من الشكلات
التي يمكنك وبالرغم من ذلك
كتابتها على أجهزة Mac
وأجهزة الكمبيوتر لديك وبالتأكيد
لا يمكنك كتابة هذه الأشياء،
الرائجة إلى حدٍ كبير جدًا.
على الرغم من أنها صور،
فهي في الواقع مجرد حروف.
لأنه اتضح منذ بضع سنوات، أن
العالم قرر أن ثماني وحدات بت ليست كافية.
لنبدأ باستخدام شيء ما يسمى
اليونيكود (Unicode)، حيث تستخدم بالفعل
واحدة أو اثنتين أو ثلاث أو حتى أربع وحدات بايت.
لذلك ثماني وحدات بت، أو 16 بت، أو 24 بت، أو
حتى 32 بت لتمثيل الحروف.
والآن، لدينا القدرة
لتمثيل آلاف أو حتى
ملايين الحروف.
وبصراحة، أظن، النتيجة
من هذا الكم الهائل من التوافر
هو جزئيًا سبب وجود هذا
العدد الكبير من هذه الأشياء الآن.
وهم يواصلون صنع المزيد لأن
هناك الكثير جدًا من الأرقام المختلفة
المتاحة لنا.
لذلك يكون Unicode في الغالب
إصدارًا محددًا منه يسمى UTF-8،
والتي سنراها قريبًا.
لكن دعوني أطرح هذا السؤال هنا.

English: 
is to say that you can only represent
256 characters using ASCII with numbers
underneath the hood, and
that's not enough to represent
so many different symbols
like those enumerated here.
You can't represent any of the
accents that you can nonetheless
type on your Macs and
PCs and you certainly
can't type these things,
which are very much in vogue.
Which even though they're pictures,
they're actually just characters.
Because it turns out some years ago, the
world decided eight bits is not enough.
Let's start using something called
Unicode, where you actually use
one or two or three or even four bytes.
So eight bits or 16 bits, 24 bits, or
even 32 bits to represent characters.
And now, we have the ability
to represent thousands or even
millions of characters.
And frankly, daresay, the result
of that huge amount of availability
is partly why there are so many
of these things these days.
And they just keep making more because
there's just so many different numbers
available to us.
So Unicode is often a specific
version of it called UTF-8,
which we'll see before long.
But let me ask this question here.

Arabic: 
هذا وجه يبكي بفرح،
أعتقد أنه هكذا يسمى.
إذًا كما يتضح،
وفقا لـ Apple أو iOS،
فإن هذا هو الرمز التعبيري الأكثر شعبية
والذي يرسله على الأقل مستخدمو
هاتف iPhone، لبعضهم البعض.
إذن عندما تتلقى هذا، رغم ذلك،
إذا كان يمكن أن نشعر حقًا بالمرح
من هذا، فما هو نمط وحدات البت
الذي تتلقاه فعليًا من صديقك؟
إنه يحاول أو إنها تحاول بوضوح
التعبير عن بعض المشاعر،
ولكن في الحقيقة، ما يرسله صديقك
إليك-- هو الرقم العشري 128514.
أو حقيقةً، إذا نظرت إلى
الأصفار والآحاد القادمة
إليك عبر الإنترنت
أو موجات الأثير، فأنت
تحصل على هذا النمط من الأصفار
والآحاد، والذي يكون مرحًا بالكاد أو
وصفيًا بالكاد، ولكن كل ما يفعله
هاتفك أو جهاز الكمبيوتر لديك
هو رؤية
هذا النمط من وحدات البت،
والبحث عنه في ما يشبه
ورقة غش صغيرة، وقول، أوه.
وقتما رأيتُ هذا النمط من وحدات البت
في سياق نص مثل المراسلة النصية،
فينبغي عليّ في الواقع
عرضه على شكل تلك الصورة.
الآن، تلك الصورة تحتوي على
الكثير من الألوان الصفراء وغيرها
فيها، ولكن كيف وصلنا إلى هذه النتيجة؟
حسنًا، يتضح أن
هذا النمط نفسه من الأرقام--

English: 
This is a crying face with
joy, I think this is called.
So it turns out,
according to Apple or iOS,
this is the most popular emoji
that at least iPhone people
are sending to each other.
So when you're receiving this, though,
if we can really take the fun out
of this, what pattern of bits are you
actually receiving from your friend?
He or she is clearly trying
to express some emotion,
but really, what your friend is sending
you-- the decimal number 128,514.
Or really, if you looked at
the zeros and ones coming
to you over the internet
or airwaves, you're
getting this pattern of zeros and
ones, which is hardly joyful or hardly
descriptive, but all
your phone or computer
are doing is seeing
this pattern of bits,
looking it up in like a little
cheat sheet, and saying, oh.
Whenever I see this pattern of bits
in the context of text like texting,
I should actually display
it as that picture.
Now, that picture has a lot
of yellow and other colors
in it, but how do we even get there?
Well, it turns out that this
same pattern of numbers--

Arabic: 
72، 73، 33--والذي للتأكد
فقط، منذ لحظة واحدة، ماذا كان يعني؟
مرحبًا.
في سياق برنامج نصي مثل
Microsoft Word، ومستندات Google، والرسائل النصية،
هذا يعني مرحبًا.
لكن ماذا لو رأيت هذا
النمط من وحدات البت نفسه--
ومجددًا، قد يمكننا
رسم الأصفار والأحاد،
لكن هذا لم يعد مثيرًا
للاهتمام، لذا سنقوم
بتثبيته على المستوى العشري.
إذا حصلت على هذا
النمط من الأصفار والأحاد نفسه
أو أرقام في سياق مثل
برنامج الفوتوشوب أو المتصفح
أو نوعٍ ما من برامج الصور،
حسنًا، قد يكون هذا منطقيًا
إن تم تفسيره ليس كنص، ولكن
كصور، كنوع من الألوان.
حسنًا، يتضح أن هناك
نظامًا آخر في العالم--
ربما قد تكون رأيت
هذا الاختصار من قبل--
والذي يُدعى (RGB)-- أحمر، أخضر، أزرق.
وهذه مجرد طريقة
وحدها البشر منذ
سنواتٍ مضت أتعلم ماذا؟
إذا أردنا أن نمثل نقطة على
شاشة شخصٍ ما، بما يعرف باسم
وحدة البكسل، وهي
مربع صغير على شاشة
الهاتف، أو الكمبيوتر المحمول،
أو حتى التلفزيون الآن،
سنستخدم ثلاث وحدات بايت--
وحدة بايت لتحديد مقدار الأحمر الذي
يجب أن يكون في ذلك البكسل المحدد،
وبايت آخر لتحديد مقدار الأخضر الذي
يجب أن يتم دمجه مع الأحمر لتشكيل

English: 
72, 73, 33-- which just to be
sure, a moment ago, meant what?
Hi.
In the context of a textual program like
Microsoft Word, Google Docs, texting,
this means hi.
But what if you saw this
same pattern of bytes--
and again, we could
draw the zeros and ones,
but it's not interesting
anymore, so we're going
to abstract away at the decimal level.
If you got this same
pattern of zeros and ones
or numbers in the context of
like Photoshop or a browser
or some kind of photo program,
well, it might make more sense
to interpret it not as text, but
as imagery, some kind of colors.
Well, it turns out there's this
other system in the world--
you might have seen
this acronym before--
called RGB-- red, green, blue.
And this is just a way of
humans having standardized years
ago that you know what?
If we want to represent a dot on
someone's screen, otherwise known
as a pixel a tiny little
square on the screen
of your phone, your laptop,
or even TV these days,
we're going to use three bytes--
one byte to specify how much red
should be in that specific pixel,
one more byte to specify how much green
should be combined with red to form

English: 
that pixel, and then
one more byte, a third,
to represent how much blue to
combine with those other two colors
to make a new color all together.
So it's kind of like combining
paints, except in this case,
it's more really waves of light in
order to get a specific color using just
red, green, and blue as your palette.
And so if we were to see this
red, green, blue pattern and say,
you know what?
Give me 72 red, 73 of
green, and 33 of blue.
If the total possible range that I
alluded to earlier is like 0 to 256,
or technically 0 to 255 if you start
counting in computer science from zero,
this is like a medium amount
of red, medium amount of green,
and just a little bit of blue,
if the range goes from 0 to 255.
So if you combine these
three things together
and you want to know
what color you get--
yeah.
So it's kind of a light
yellow that looks like this.
So if a computer is storing a
single dot on the screen that
happens to be in yellow, what
the computer's actually storing

Arabic: 
هذا البكسل، ومن ثم
بايت آخر، بايت ثالث،
لتمثيل مقدار اللون الأزرق الذي
سيدمج مع هذين اللونين الآخرين
لصنع لون جديد معًا.
لذلك هو نوع من دمج
الدهانات، ما عدا في هذه الحالة،
فإنه في الواقع موجات ضوء
للحصول على لون معين باستخدام فقط
الأحمر، والأخضر، والأزرق كلوحة ألوان.
ولذا إذا رأينا هذا النمط
الأحمر، والأخضر، والأزرق وقلنا،
أتعلم ماذا؟
أعطني 72 من الأحمر، و73 من
الأخضر، و33 من الأزرق.
إذا كان إجمالي المدى الممكن كما
ألمحت سابقًا هو مثلاً 0 من إلى 256،
أو فنيًا من 0 إلى 255 إذا بدأت
العد في علوم الكمبيوتر من الصفر،
هذا تقريبًا كمية متوسطة
من الأحمر، وكمية متوسطة من الأخضر،
والقليل من اللون الأزرق،
إذا كان النطاق يتراوح من 0 إلى 255.
لذلك إذا قمت بدمج هؤلاء
الثلاثة معًا
وتريد أن تعرف
ما اللون الذي ستحصل عليه--
حسنًا.
فالنتيجة هي نوع من الأصفر
الفاتح الذي يشبه هذا.
لذلك إذا كان الكمبيوتر يخزّن
نقطة واحدة على الشاشة
والتي تصادف أن تكون باللون الأصفر،
فما يخزنه الكمبيوتر بالفعل

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

English: 
is not this dot physically,
but a pattern of three
bytes-- how much red, how much green,
how much blue should the computer
display at this particular point.
So if we look at this crying face of
joy and we kind of enhance or zoom in
on it here, you can actually see
it start to pixelate, so to speak,
where you start to see the dots.
If I punch in a little
more, now you can really
start to see the dots on the screen.
And if I go an even
further, you can actually
see the tiny little squares that
compose this image, most of which
at the zoom level are yellow,
but a bunch of which are black,
a bunch of which are light
black or dark yellow.
And that's what composes
this image ultimately.
So this is to say if you count up
all of the pixels on the screen
and then multiply it by one,
two, three bytes, that's
how many bytes or kilobytes or
megabytes, if you've heard those terms,
are going to be stored on your
computer just to represent an image.
So we've gone from electricity to down
here, so to speak, to zeros and ones,
to decimal, now to colors.

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

English: 
Well, with colors, you can get images.
What comes after images?
Well, we've all watched videos or
movies certainly digitally these days.
Well, what is a movie or a video file?
How might that be implemented?
Say it a little louder.
Yeah.
It's a collection of images.
If you've ever heard
of frames per second--
like movies tend to be 24 frames
per second or 30 frames per second--
that just means that a
typical movie, every second
is showing you 24 or
30 images per second
and they're just flying by
so quickly that you actually
don't notice you're just watching
a sequence of static images.
It's like as a kid, if you ever had one
of those paper flip books where there's
tons of drawings in them, and
as you flip through the pages,
you see things moving, but that's
just because your eyes are just
seeing little snapshots ever so quickly
of something moving on the paper.
That's all a video file actually is.
So if you have an iPhone and you've
ever played with these animojis,
so to speak, well, all those
are are little video files
composed of lots and
lots and lots of images

English: 
that you have saved on your
phone or texted to someone else.
And if we just think, now, we're at
the point of video, but that's OK.
Videos are just bunches of images.
Images are just bunches of colors.
Colors are just patterns of bits.
And bits, at the end
of the day, are just
the result of electricity coming
into my machine or transistors
turning switches on and off.
Like we've all of a sudden to hold
this entire story, but none of us
ever is going to need to really think
about binary in the context of videos
because a video is just an abstraction
on top of bunches of images,
and images are just an abstraction on
top bunches of pixels, and so forth.
So we can keep painting
this hierarchy that
just allows us to talk about
things at a more useful level,
and the reason we had
this conversation is
just because we needed
a way to represent
inputs and outputs to problems.
Let me pause there for just a second
to see if there's any questions.
Anything at all?
No?
All right.
So what's inside this black box?
Well, it turns out this is where
the really interesting work starts
to happen and the thought
starts to come in.

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

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

English: 
This is the proverbial algorithms,
step by step instructions
for solving some problem.
And some of you might have
solved this problem before,
either digitally or
textually, but of course,
if you have contacts in
your phone these days
and you've got bunches
of friends and family,
odds are they're alphabetized
by first name or last name.
And you have auto complete these
days, but it really is just
a long list of names and numbers.
That's not all that different
from yesteryear's implementation
of the same problem, which was
this device here, a phonebook.
Now, this phonebook might have a
friend of ours in it, say Mike Smith,
whose last name starts with
S. And I could, of course,
if trying to find Mike
Smith, start by looking
at the first page, the second page,
the third page, the fourth page,
and eventually, just
hopefully find Mike Smith.
Indeed, is this algorithm,
this step by step process,
correct for finding
someone like Mike Smith?
Yeah.
It's correct.
It's stupid and slow
perhaps because it's
going to take forever in
a phone book of this size,
but it is correct because if Mike's
in here, I will, in fact, find him.
But I could do this better.
I could do it sort of two at a time.

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

English: 
So two, four, six, eight,
10-- or imperfectly--
10, 12, 14.
Is that faster?
Obviously, it's going twice as fast.
Is it correct?
No.
Why is it not correct?
Yeah.
I might miss him, right?
Mike just accidentally might eventually
get sandwiched between two pages
and I have the unlucky
experience of just missing him.
Now, is it fixable?
Yeah.
I can probably, once I hit like SN
or the T section, for instance--
I can just say, obviously,
I've gone too far for Mike.
Let me just double back
one or just a few pages.
So it is fixable.
And so long as I've saved time by
flying through this twice as fast,
can I at least afford to spend a
few more steps at the very end just
to find Mike Smith?
But none of us are going to do that.
And our Apple devices and
Android devices certainly
don't do that for efficiency today.
Odds are most of us are going to do what
to find someone in any book like this?
Yeah.
Open to roughly the middle or
maybe bias ourselves toward the end
because S is after the middle.
But you know, I'm in the
middle of the phonebook here.
And now, if I know that Mike is in
the S's and therefore over here,

English: 
where do I know he's not?
He's not in the beginning
and I can literally
tear a problem like this in half,
throw figuratively and literally half
of the problem away, and be left
with fundamentally the same problem,
but it's half as big.
I went from like-- whatever--
1,000 pages to 500 pages and I
can now repeat this algorithm.
I look down.
I'm a little too far.
I'm in the T section now.
OK.
I can again tear the problem
in half, throw that half away,
taking a 500 page byte out, a 250
page byte out, now leaving myself
with just 250 pages more.
And notice just how quickly I got here.
The first two algorithms got me from
1,000 to 999 to 998, or 1,000 to 998
to 996.
But here, I went from
1,000 to 500 to 250.
Feels like we're making up time here.
And indeed, if I keep
repeating this process,
hopefully, I'll be left with
just one page of the book
that Mike is either on or not,
at which point, I will call him.
And so that's an algorithm that honestly
leverages probably all the intuition we

Arabic: 
فأين أعرف أنه ليس موجودًا؟
ليس موجودًا في البداية
ويمكنني حرفيًا
تمزيق مشكلة مثل هذه إلى نصفين،
وإلقاء بشكل مجازي وحرفي نصف
المشكلة بعيدًا، والبقاء
بشكل أساسي مع المشكلة نفسها،
لكن النصف كبير.
لقد انتقلت من--أيًا كان--
1000 صفحة إلى 500 صفحة،
ويمكنني الآن تكرار هذه الخوارزمية.
أنظر إلى الكتاب.
أنا بعيد نوعًا ما.
أنا في قسم ش الآن.
حسنًا.
يمكنني ثانيةً تمزيق المشكلة
إلى نصفين، وإلقاء هذا النصف بعيدًا،
التخلص من 500 صفحة بايت،
و250 صفحة بايت، والآن أنا سأبقى
مع فقط 250 صفحة أخرى.
ولاحظ مدى السرعة التي وصلت بها هنا.
أوصلتني أول خورازميتين من
1000 إلى 999 إلى 998 أو من 1000 إلى 998
إلى 996.
ولكن هنا، أنا انتقلت من
1000 إلى 500 إلى 250.
يبدو أننا نكسب وقتًا هنا.
وبالفعل، إذا استمررت
في تكرار هذه العملية،
فآمل، أن أبقى فقط مع
صفحة واحدة من الكتاب
حيث محمد موجود فيها أو لا،
عند هذه النقطة، سأتصل به.
وهكذا، بأمانة فربما تفيد هذه
الخوارزمية حدسنا

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

English: 
have and a lot of what
programming is going to be,
is thinking about a problem like this,
figuring out how to divide and conquer
it, and then expressing
yourself in a way
that the computer can then
solve that problem for you.
And just to paint a picture of how
much better this algorithm is, well,
if this is just a very abstract
chart where we have on the vertical,
or y-axis, how much time it
takes to solve a problem,
and on the horizontal axis
how big the problem is--
so the farther out you go this
way, the more pages in the problem,
the more pages in the phonebook.
And the higher you go up
here, the more seconds or page
turns it's going to take.
That first algorithm is
just like a linear slope,
so to speak, because for every
additional page in the book,
it might take me one more second.
Right, up.
It's just a one for one
relationship with pages.
The second algorithm,
if I plot it, where
I'm flying through
twice as fast, what is
that line going to look like instead?
Yeah.
It's going to look lower than this one.
It's still going to be a straight
line because now, there's a two to one
relationship, but if you've got a
phone book that's got this many pages,

English: 
and in the first algorithm,
it took this long, here,
well, in the second algorithm, it will
take half as many steps, plus or minus
or two if you need to actually
double back a little bit.
But that third algorithm is
what we'll call logarithmic.
If n is the number of
pages in the phone book,
the first algorithm,
in the very worst case,
might take all n pages
to find Mike Smith.
The second algorithm is going to
take half as many steps because I'm
flying through it two at a time.
But the third algorithm is going
to look and feel like this.
It's going to be curved and ever so
slowly rising and rising and rising,
the implication of which is if
Verizon or the phone company
doubles the number of
pages in the phonebook
next year because Cambridge and
Somerville merged together in the phone
book and we now have 2,000 pages.
Well, how many more steps
does my third algorithm take?
Just one.
Because I can take a 1,000
page bite out of the problem
with that clever algorithm, whereas
my first two algorithms would take it
one or just two pages at a time.
So that is to say we have to hugely
increase the size of this problem

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

English: 
just for the number of seconds or page
turns to appreciably actually increase.
And so as we start to
learn about programming,
it's, again, going to be leveraging
of this intuition in order
to actually solve problems and
code more effectively than we
might without that intuition alone.
So let's formalize this now.
So that was kind of a very intuitive way
of dividing and conquering a problem.
Just kind of made sense
to go in the middle,
tear it, then go to the
other half or the other half
and tear it again, and so forth.
But a computer, even as cool as Alexa
and Google Home and all of this are,
you can't really just talk
to them as another human
and have them execute things correctly.
I struggle just to get Siri
to set a timer on my phone.
So we're not quite there yet,
so we're still at the age
where we have to be ever
so precise with computers,
voice activated or otherwise, and
so thus enter pseudocode for now.
Pseudocode has no formal definition.
This is just a way of saying use English
like syntax or any spoken language

Arabic: 
فقط ليزداد عدد الثواني أو تقليب
الصفحة زيادة فعلية ملموسة.
وهكذا وبمجرد أن نبدأ
في تعلم البرمجة،
فإنها ستفيد، مجدّدًا،
حدسنا من أجل
حل المشاكل بشكل فعلي
والترميز بشكل أكثر فاعلية أكثر مما
قد نفعله دون هذا الحدس بمفرده.
لذا دعونا نصوغ هذا الآن.
كانت هذه نوعًا ما طريقة
بديهية جدًا لتقسيم المشكلة والتغلب عليها.
فالأمر منطقي نوعًا ما
عندما تنتقل إلى المنتصف،
وتقطعه، ثم تنتقل إلى النصف
الأول أو النصف الآخر
وتقطعه، وهكذا.
لكن جهاز الكمبيوتر، حتى لو كان لطيفًا مثل أليكسا
ومساعد جوجل المنزلي وكل ذلك،
لا يمكنك في الحقيقة الكلام
معه كأي إنسان آخر
وجعله يقوم بتنفيذ الأشياء بشكل صحيح.
أنا أعاني للحصول على سيري
لتعيين مؤقِّت على هاتفي.
نحن لم نصل إلى هذه الدرجة بعد،
نحن ما زلنا في العصر
حيث علينا أن نكون أكثر
دقة مع أجهزة الكمبيوتر،
أو الصوت الذي تم تفعيله أو غير ذلك
أو إدخال السودوكود حتى الآن.
ليس للسودوكود تعريف رسمي.
إنها مجرد طريقة للتحدث تستخدم
بناء الجملة الشبيه بالإنجليزية أو أي لغة منطوقة

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

English: 
and just express yourself
succinctly and correctly
so that a computer or a
robot or even another person
can understand what it
is you're trying to say.
So here, I propose, is
an algorithm written
in pseudocode, English like syntax,
that just gets my point across.
And I could write this
in any number of ways.
I've numbered the steps from zero on
up, just for the sake of discussion,
but this would seem to
capture what I did there.
Pick up the phone book.
Open to the middle of the phone.
Look at the names.
If Smith is among the names, call Mike.
Else, if Mike Smith is
earlier in the book,
go to the left, specifically the
middle of the left half of the book,
and then go back to step two.
Because indeed, I was just doing
the same thing again and again,
and the reason I wasn't doing it
forever was because every time I
repeated myself by opening and
tearing, I was shrinking the problem.
And I can only shrink a problem
of some fixed finite size
so many times until I
get just one page, and so
if I continue this logic looking to the
right or to the left or just quitting,
if I don't find Mike at
all on the last page,
this would seem to capture
more precisely that code.
Well, let's actually excerpt
from this now a few concepts

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

English: 
and then start to apply
them to actual code.
Highlighted in yellow here, I dare
say, are all of the verbs or actions.
These are the functions, as we're
going to start calling them,
in this algorithm.
A function is just a specific
step, a specific action
you take in order to do something.
And so in yellow here-- pick up,
open to, look at, call, open, quit
are all actions or verbs.
Are henceforth, we'll
call them functions.
Meanwhile, highlighted in yellow
here-- if, else if, else if, else.
These are kind of
starting to ask questions.
What might these be called
if you have some familiarity?
Yes.
Turns out many programming
languages, if you've seen any before,
would call these conditions.
They're branches, or
proverbial forks in the road.
If this is true, go this way.
Else, maybe go this other way, or
perhaps a third or fourth direction
altogether.
Meanwhile, if we actually look
at these highlighted phrases--
if Smith is among names or
if Smith is earlier in book
or Smith is later in book--
these are the specific questions we're
asking in order to make that decision.
These are known as Boolean
expressions, named after a gentleman

English: 
by the last name of
Boole some years ago.
And so a Boolean expression
is just a question
that has a yes or no answer, a
true false answer, a one zero
answer, if you will.
And that's a nice mapping to what
computers are really good at.
So within conditions, you
have Boolean expressions
to decide which fork in the
road you want to go down.
And then lastly,
highlighted in yellow here
is go back to step 2
in a couple of places.
This is inducing some
kind of cycle or loop
that's telling the computer to do
something again and again and again.
So in short, we have these building
blocks already conceptually.
And it turns out, we can
now start to translate these
to an actual programming language.
The first of the languages
we'll introduce in CS50
is something called Scratch.
Turns out this is not
a text based language,
like in my English pseudocode
there, but it's graphical
and things look like puzzle
pieces that you can drag and drop
and they interconnect if it
makes logical sense to do so.
And in fact, some of you might have
played this back in the day as kids
or even more recently because
it's actually targeted typically
at students in like
after school programs who

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

Arabic: 
الذين يريدون أن يتعلموا بشكل أكثر منهجية،
أو أكثر حسابية، أو التفكير الحسابي.
ونحن بصدد استخدامها لاستكشاف
ليست كتل البيانات البنائية هذه فحسب
ولكن بعض من الأخرى، كذلك.
ويبدو أن اللغات الأخرى التي
سنستكشفها في CS50 وما بعده،
لغات مثل C التي سنقوم في الواقع
الانتقال إلىها في أسرع وقت في الأسبوع المقبل،
ثم لترجمة ما نفعله هذا
الأسبوع في سكراتش الى الاسبوع المقبل في C.
وفي لغات مثل
Python وJavaScript
و SQL، التي سنستكشفها أيضًا،
هل لدينا قدرات أخرى--
القدرة على تخزين البيانات
في المتغيرات، إذا صح التعبير،
لاستخدام مؤشرات الترابط، مما يعني جعل الكمبيوتر
يقوم بعدة أشياء دفعة واحدة،
الأحداث، لقصد الاستماع لأشياء
تحدث، مثل نقرة
على الصفحة أو كتابة بشرية
أو حتى قول شيء ما.
وسنكون قادرين على القيام بكل
الأشياء التي تأخذها
كأمر مُسلم به في الهواتف الخاصة بك.
وسنفعل هذا لأول مرة
عن طريق هذا الرجل.
إذًا هذا هو الاسكراتش، القط الافتراضي
الذي يأتي مع هذه لغة البرمجة هذه
من مختبر الوسائط في معهد ماساتشوستس للتكنولوجيا.
وعبر لغة سكراتش يمكننا أن نبدأ في برمجته للتحريك للأعلى،
للأسفل، لليسار، لليمين، قوّل شيئًا ما، لفظ شيًا ما، وأوامر أخرى
معًا.
في الواقع، اسمحوا لي بالمتابعة
وتبديل السياقات هنا
لعرض لك أول شيء كتبته بلغة سكراتش.

English: 
just want to learn more methodical, more
algorithmic, or computational thinking.
And we're going to use it to
explore not only these building
blocks, but a few others, as well.
It turns out in the other languages
we'll explore in CS50 and beyond,
are languages like C that we'll actually
transition to as quickly as next week,
to then translate what we do this
week in Scratch to next week in C.
And in languages like
Python and JavaScript
and SQL, which we'll also explore,
do we have other capabilities--
the ability to store data
in variables, so to speak,
to use threads, which means get the
computer to do multiple things at once,
events, to mean listen for
things happening, like a click
on the page or a human typing
or even saying something.
We'll be able to do all of
the things that you take
for granted in your very own phones.
And we'll do this first
by way of this guy.
So this is Scratch, the default cat
that comes with this programming
language from MIT's media lab.
And via Scratch can we start
programming him to move up,
down, left, right, say something,
utter something, and other commands
all together.
In fact, let me go ahead
and switch contexts here
to show you the very first
thing I ever wrote in Scratch.

English: 
It was back in the day when
I was in graduate school
and Scratch had just
been invented by MIT.
Let me go ahead and open this.
And I called it Oscar Time.
And if we could perhaps have a
volunteer come on up for just a moment.
You have to be comfortable being
on stage and on the internet.
How about here in the white shirt?
I saw your hand first.
Come on down.
So this is Oscar Time.
It's implemented in a
language called Scratch.
And at the end of the day, all that
is underneath the hood of this program
is functions and loops and conditions
and a few other of these concepts.
Hi.
What's your name?
AVIVA: Aviva.
DAVID MALAN: Aviva.
David.
Nice to meet you.
Come on over here.
And in just a moment, I'm
going to go ahead and click
the green flag at the top
left hand corner, which
is going to play this game.
And we'll see on the
screen the instructions.
[MUSIC PLAYING]
OSCAR: (SINGING) Oh, I love trash.
Anything dirty or dingy or dusty.
Anything ragged or rotten or rusty.

Arabic: 
تعود إلى يوم حينما كنت في مرحلة الدراسات العليا
وكان قد تم اختراع لغة "سكراتش" للتو
من قِبل معهد ماساتشوستس للتكنولوجيا.
لذا دعوني أمضي قُدمًا وافتح هذا.
وأطلقت عليه اسم أوسكار تايم.
وإذا كان بإمكاننا أن يكون لدينا
متطوع فليأتِ للحظة.
يجب أن تكون مرتاحًا
على المسرح وعلى الإنترنت.
هل يمكن أن يأتي الشخص صاحب القميص الأبيض؟
رأيت يدك أولاً.
تعال.
إذًا هذا هو أوسكار تايم.
تم تنفيذه بلغة
تسمى سكراتش.
وفي نهاية الأمر، إن كل ما سيكون
في أساس هذا البرنامج
هو الوظائف والحلقات والشروط
وعدد قليل من هذه المفاهيم الأخرى.
مرحبًا.
ما اسمك؟
أفيفا: أفيفا.
ديفيد مالان: أفيفا.
ديفيد.
تشرفت بمقابلتك.
تعالي هنا.
وبعد لحظات، سأمضي
قُدمًا وسأنقر فوق
العلم الأخضر في أعلى
الزاوية اليسرى، والذي
سيُشغِّل هذه اللعبة.
وسنرى الإرشادات على الشاشة.
[MUSIC PLAYING]
أوسكار: (يغني) أوه، أنا أحب النفاية.
أي شيء وسخًا أو قذرًا أو مُتربًا.
أي شيء رثًا أو عفنًا أو صدئًا.

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

English: 
Yes, I love trash.
If you really want to see
something trashy, look at this.
I have here a sneaker
that's tattered and worn.
It's all full of holes
and the laces are torn.
A gift from my mother
the day I was born.
I love it because it's trash.
Oh, I love trash.
Anything dirty or dingy or dusty.
Anything ragged or rotten or rusty.
Yes, I love trash.
Here's some more rotten stuff.
I have here some
newspaper 13 months old.
DAVID MALAN: All right.
Everybody, give a round of applause
for Aviva for coming on up.
Thank you.
Here.
Aviva.
[APPLAUSE]
A little CS50 stress ball.
So suffice it to say, if
you're tired of this song,
consider how tired I was eight hours
later while debugging and building

Arabic: 
وكذلك بنائه.
لكن لننظر إلى ما رأيناه للتو.
إنها تلك اللعبة التفاعلية ذات الأشياء
المتحركة والموسيقى التي تعمل.
ولكن إذا كنت تركز على تفكيك،
إذا صح التعبير، هذا البرنامج إلى
كتل البناء الأساسية فقط، فهذا مجرد نوع
كبير من التجريد على بعض من قطع المستوى
السفلية للوظيفة.
مثل سلة المهملات هذه هنا.
في هذه اللحظة، إنها مجرد
صورة، وفي بعض الأحيان،
بمجرد أن أسقطت أفيفا شيئًا ما
في سلة المهملات، ظهر الغطاء
وظهر أوسكار، وقال
شيئًا ما، ثم عاد إلى أسفل.
لكن هذه الرسوم المتحركة فائقة التبسيط.
فهي مجرد تسلسل من 1، 2، 3،
أو حتى عرض الصور ثم
العودة إلى أسفل لخلق
وهم الرسوم المتحركة.
بينما، في كل مرة
قال أوسكار شيئًا ما،
كان هذا يتتبع درجتها
في ما يسمى "المتغير".
في الجبر، لديك x وy وz ، ولكن
في البرمجة، لديك الفكرة نفسها،
ولكن عادةً ما تزداد الفائدة
بتسميتهم بشكل أكثر وصفية،
مثل درجاتك.
ولذلك ربما يوجد متغير
في هذه اللعبة يسمى
"الدرجة" والذي كان فقط
يلاحظ عدد المرات
التي أسقطت فيها أفيفا
شيئًا في سلة المهملات.
بينما، سلة المهملات نفسها والحذاء
والصحيفة-- وحتى المزيد

English: 
this program.
But consider what it is we just saw.
It's this interactive game and stuff
is animated and music is playing.
But if you focus on decomposing,
so to speak, this program into just
basic building blocks, this is just kind
of a big abstraction over some lower
level pieces of functionality.
Like this trash can here.
At the moment, it's just a
picture, and on occasion,
as soon as Aviva dropped something
into the trash, the lid came up
and Oscar came out, he said
something, and then he went back down.
But that animation is super simplistic.
It was just a sequence of 1, 2, 3,
or so images displaying and then
going back down to create
the illusion of animation.
Meanwhile, every time
Oscar said something,
that was keeping track of her
score in what's called a variable.
In algebra, you have x and y and z, but
in programming, you have the same idea,
but it's generally more useful
to call them more descriptively,
like your score.
And so there's probably a
variable in this game called
score that was just keeping
track of how many times
Aviva had dropped
something into the trash.
Meanwhile, the trash itself and the
shoe and the newspaper-- and even more

English: 
things happen eventually--
were falling from the sky
at sort of random locations, and
that's because I programmed the game
to sort of start the trash
here or over here, just
to make it a little more
challenging as the game picked up.
And in fact, things start falling
faster and faster over time,
like a typical game, getting
more and more difficult.
So how do we get to something like that?
Well, let me go ahead and
open up Scratch itself
and introduce the environment.
So in Scratch, you essentially
have three general areas.
And it's web based, and so you
can do this on any computer.
And in the left hand side here,
you have those puzzle pieces
to which I referred earlier.
These puzzle pieces are all mapping
to functions or loops or conditions
or variables, things that
we saw before, and I'm
going to able to drag and drop
them into the middle in order
to interconnect them
and write my program,
which we'll do in just a moment.
Meanwhile, Scratch lives in this stage,
this world, where he can move up,
down, left, right.
You can change what Scratch looks like.
You can add other characters,
otherwise known as sprites,
in order to have multiple
things happening at once.
And of course, you can fullscreen it.

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

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

English: 
And so the Oscar Time game a moment ago
was actually a whole bunch of sprites.
Oscar's trash can was one.
Each piece of trash was another sprite.
The newspaper was a
sprite, and so forth.
So each of them were separate programs
running in parallel at the same time.
So let's actually make him do something.
It turns out that if I
jump down to, say, events,
I'm going to see one of
the most powerful blocks
from the get go, which is
this when green flag clicked.
That's indeed how I started
the game with Aviva,
by clicking just above
Scratch's world this green flag.
And if I wanted to
stop it, as I did, you
can click the red stop sign to say stop.
Meanwhile, the green
flag, I can constantly
listen for by dragging and
dropping this puzzle piece.
When the green flag is
clicked, what do I want to do?
Well, let me go up to looks.
And these are just different categories.
And we can scroll through all
the different colorful blocks,
but they pretty much
just do what they say.
I'm going to go under looks, where I
know there to be a block that's called
say, and I'm going to go ahead and type
the most canonical computer science
thing-- hello world--
in this box.
So notice that functions
themselves can actually

English: 
take inputs and the input
to this function, say,
is going to be hello world.
If I now go over to the
green flag and click it--
hello world.
All right.
So not all that difficult.
Not all that interesting.
But it actually got the job done, and
so my program is indeed just this.
Well, how might I make this
a little more interesting?
Just saying, hello world all the
time isn't all that compelling.
Well, you know what?
Let me think.
Let me undo this.
Let me scroll down to sensing.
And notice this.
Functions can also
take input from a human
and functions can hand you back a
value, a so-called return value.
So this block here, ask
something-- by default, it says,
what's your name and weight--
is another function built into
Scratch that allows me to do this.
So I'm going to go
ahead and drag this here
and I'm going to let it
say, what's your name?
Notice now that below this
block is a special block,
whatever it is the block returns.
So answer is whatever the
human is going to type in.
And if I want to now say what the human
typed in, let me go again to looks.
Go to say.
And notice that these
blocks are kind of magnetic.

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

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

English: 
They want to snap together.
So I'm going to go
ahead and let go there.
And if I go back to
sensing and grab answer,
notice that even though it's
not quite the same size,
it's going to grow to
fill, and now, I can
have my program ask the user
what his or her name is and then
say whatever that answer is.
So let me go ahead and
stop and click play again.
Notice it's asking me for my name,
so let me go ahead and type in David.
Enter.
OK.
It's a little weird
way to greet someone.
David.
So it'd be nice to clean that up a bit.
So you know what?
I know this only from
having poked around before.
Not all of this is
obvious at first glance.
But it turns out that under
operators, the category,
there's this thing here--
join apple and banana.
Which are just default values.
You can change them.
Because what do I want to do?
I want to say hello, David, or whoever,
so I kind of want to say hello, comma,
and then, David-- whatever
the human typed in.
And that's what join lets you do.
It lets you join or concatenate
two phrases that are somehow
provided by you or the user.
So let me pull this out, the answer.

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

English: 
Let me go ahead and grab the join block.
Notice it, too, is
going to grow to fill.
Let me go ahead and say, hello, comma,
space, and now, drag answer into there.
And notice this nesting.
Just like in math.
This nesting of functions.
I can first join hello and answer
by taking those two things as input
and then pass them to
say as another input
because these things are layered on top.
And so now, if I stop this and
play it again and say, David--
hello, David.
Now, we have the makings of a more
interesting interactive program
that isn't just hardcoded.
Of course, it's not nearly as audible as
something like Oscar Time a moment ago.
So let me go ahead and do this.
Let me start over altogether and
treat Scratch like the cat he is
and just start the sound called meow.
So it turns out there's a
category of blocks called sound,
and within sound, there is
play some default sounds.
So start sound meow.
And now, things will get a little cuter.
[MEOW]
Aw.
And now, again.
[MEOW]

English: 
And I can kind of simulate a cat
by [MEOW] standing here for a while
and keeping to click this button.
But you know what?
Let me make him meow few times
because that's more realistic.
So let me grab a second
one and a third one.
And you can get this
infinite supply of blocks.
Let me hit play.
[MEOW]
Seems like a bug.
Let's try again.
Play.
[MEOW]
This is my first bug, or mistake.
This looks correct.
It says when green flag clicked,
start sound meow, start sound meow,
start sound meow.
Why am I only hearing one meow?
Yeah.
They're kind of at the same time
or so close to the same time
that the sounds are kind of tripping
over each other and just overlapping,
right?
The block literally
says, start sound meow.
But computers are really fast.
If you've heard of the expression
gigahertz, that's a unit of measure.
And if your computer has a one gigahertz
CPU, central processing unit, or brain,
that means it can literally do
like a billion things per second.
It can certainly start
three sounds super fast.

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

English: 
And if they're effectively all
happening one after the other
before the sound even finishes,
you're just hearing one net effect.
So how can we fix this?
Well, I can actually go and
fix this with this block here--
play sound meow until done.
Play sound meow until done.
And now.
[MEOWING]
OK.
It's a little unhappy,
this particular cat,
but at least it's now more correct.
And, as it turns out,
if I go to control--
you know what?
There's this block here--
wait some number of seconds.
I can go ahead and insert this here.
Let me do another one here.
And now, hit play.
[MEOWING]
You know, it's not bad.
It now sounds a little more realistic.
But honestly, if I keep doing
this-- or you know what?
You can actually right click
or control click on blocks,
duplicate them, and just copy and
paste even more if you want them.
So if I were to do this, now,
it's just going to go six times.
And then I could copy it
again and go 12 times.
But there's got to be
a better way, right?

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

English: 
This is now bad programming.
This is bad design.
Because I'm literally copying
and pasting, albeit, graphically.
But we've already seen a
building block with which
we can design this program better.
It's correct, but it's
not well designed.
What would the building block be that
I need to make this a little cleaner?
OK.
A four loop.
Doesn't quite exist in Scratch.
But a loop fundamentally
does something cyclically.
And indeed, if I go under
control and start poking around,
you'll notice that there's a few
blocks that might apply here.
There's the repeat block
some number of times
or the forever block, both of
which sound like loops, or cycles.
So sure enough, let me go ahead
here and I can throw away blocks
by just dragging them to the left.
Let me pull this out for a second.
And then just say forever play this
sound, and then wait one second.
So now, my program looks like this.
[MEOWING]
You know, we'll never know if it's
technically correct because it's just

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

Arabic: 
سوف ينتقل، كما نعتقد، باستمرار،
لكن يبدو أن هذا صحيح.
ولقد كان تعليمة برمجية أقل
بدرجة كبيرة وصار أسهل كثيرًا
الاحتفاظ به لأنني إذا أردتُ منه
نوعًا من النعاس،
فيمكنني حينئذ أن أقول
ثانيتان بدلاً من ذلك.
[MEOW]
كما تعلم، ويمكننا ضبط
هذا بسرعة فائقة أثناء تنقلنا.
لكن دعونا نبدأ بدمج
بعض من هذه الأفكار
الآن وتغيير ماهية
التأثير النهائي.
دعوني أمضي قدمًا
وأفتح مثالاً قدمتُه مسبقًا.
ويسمى هذا المثال باسم
Count Zero "عدّ الصفر".
وسنضع هذا على موقع الويب لاحقًا
بحيث يمكنك اللعب به إذا أردت ذلك.
وهذا يعتبر نوعًا
عكس عدّ الخراف.
بدلاً مني أنا أو شخص
ينام أثناء عدّ الخراف،
ستقوم هذه الخراف بعدّ نفسها.
لذا دعوني أمضي قدمًا وألعب فقط.
وبشكل مثير للإعجاب،
يبدو أنه فقط يعد 1، 2، 3.
ولكن لماذا ذلك؟
إنه سيقوم فقط بالعدّ باستمرار.
ولكن دعونا ننظر إلى الكتل
التي يقوم بالعدّ باستخدامها باستمرار.
عند النقر على العلم الأخضر، اضبط العداد.
يتضح أن المربع البرتقالي
هو ما أطلقنا عليه اسم متغير.
لذا في الجبر، سيكون
مثل س أو ص أو ع.
تلك القيم ليست وصفية.
بدلاً من ذلك قمتُ بتسمية عداد واحد،
لكني سميتُه س أو ص أو ع.

English: 
going to go, we think, forever,
but it looks like this is correct.
And it was a lot less
code and it's a lot easier
to maintain because if I want
him to kind of get sleepy,
I can then maybe say
two seconds instead.
[MEOW]
You know, and we can adjust
this on the fly as we go.
But let's start to combine
some of these ideas
now and change what it is
the ultimate effect is.
Let me go ahead and open an
example I made in advance.
This one's called Count Zero.
And we'll put this on the website later
so that you can play with if you like.
And this is kind of the
opposite of counting sheep.
Rather than me or the person
sleeping counting sheep,
this sheep will count itself.
So let me go ahead and just play.
And adorably, he seems to
just be counting 1, 2, 3.
But why is that?
He's just going to count forever.
But let's look at the blocks with
which he is counting forever.
When green flag clicked, set counter.
Turns out this orange box is
what we called a variable.
So in algebra, it would
be like x or y or z.
Those are not descriptive.
I called this one counter instead, but
I could have called it x or y or z.

Arabic: 
من ثم أنطق العداد باستمرار لثانية
واحدة، ثم أنتظر لثانية أخرى،
ثم أقوم بتغيير
العداد بآخر، والذي
يعني من الناحية التقنية زيادته فقط.
أضف إليه 1.
وستقوم الخراف بالتالي
بالعدّ تصاعديًا أكثر فأكثر فأكثر.
الآن، إنه أمر
ممل قليلاً، لكن ذلك
هو نوع نقطة عدّ الخراف،
طبعًا، للخلود إلى النوم.
ولكن ماذا لو كانت الخراف نوعًا
ما أعجبها العدّ بشكل أسرع قليلاً بالفعل؟
حسنًا، دعني أنتقل أسفل عوامل التشغيل هنا.
تبدو عملية الضرب وكأنها قد
تجعلنا نصل للأماكن بشكل أسرع.
ودعوني أن أمضي قدمًا وأنتقل إلى المتغيرات.
وبدلاً من تغيير
العداد بآخر،
دعوني أمضي قدمًا وأن أستمر فقط
في ضبطه لعدد آخر.
لذا دعوني أقوم بسحب هذا وإفلاته.
اضبط العداد لعدد ما
في عدد ما، خاصةً
العداد في اثنين، بالتالي
الضعف، الضعف، الضعف، الضعف.
يبدو أنها تزداد،
إذا جاز التعبير، بسرعة أكبر.
لنرَ.
1، 2، 4.
إذن فهو يَعد أسرع،
لكن ما زال الأمر نوعًا ما مملاً.
ماذا لو قمنا بهذا بدلاً من ذلك؟

English: 
And then I forever say the counter
for one second, then wait one second,
and then change the
counter by one, which
technically means just increment it.
Add 1 to it.
And the sheep is just going to
therefore count up and up and up.
Now, this is a little
tedious, but that's
kind of the point of counting
sheep, of course, to fall asleep.
But what if the sheep actually kind
of liked counting a little faster?
Well, let me go under operators here.
Multiplication sounds like it
could get us places quicker.
And let me go ahead and go to variables.
And instead of changing
the counter by one,
let me go ahead and just keep
setting it to something else.
So let me drag and drop this.
Set the counter equal to something
times something, specifically
the counter times two, thereby
doubling, doubling, doubling, doubling.
That would seem to grow,
so to speak, a lot faster.
Let's see.
1, 2, 4.
So he's counting faster, but
it's still kind of tedious.
What if we instead do this?

English: 
Let's stop waiting and let's
go ahead and, with the looks,
not say counter for one second,
but let's just quickly say counter.
So I'm going to say the counter.
Whoops.
I'm going to say the counter and then
I'm going to set it to itself times 2.
So here's where we're at.
Initialize, or set the counter to 1
initially, say it, then double it,
then double it, then double
it, saying it along the way.
So here we go.
That's impressive.
So now the sheep has counted
up to 10 to the 60th so far.
10 to the 100th.
OK.
Now, it doesn't even fit in the
speech bubble, but he's still going.
How high can he go?
What's the biggest number you
can count to in a computer?
Anyone want to guess?
Could be here a while.
10 to the 270th now.
How high can you count, or rather--
OK.

Arabic: 
دعونا نتوقف عن الانتظار
ونمضي قدمًا و، بالنظر،
لا ننطق العداد لثانية واحد،
ولكن دعونا ننطق العداد بسرعة.
لذا سأنطق العداد.
عذرًا.
سأنطق العداد، ثم
سأقوم بضبطه بضربه في 2.
إذن إليك المكان الذي نقف عنده.
ابدأ، أو اضبط العداد على 1
بدايةً، وانطقه، ثم ضاعفه،
ثم ضاعفه، ثم ضاعفه،
مع نطقه أثناء ذلك.
ها نحن ذا ننطلق.
هذا مثير للإعجاب.
إذن تم حتى الآن عدّ الخراف
وصولاً إلى 10 وحتى رقم 60.
10 إلى رقم 100.
حسنًا.
الآن، هذا لا يتناسب حتى مع
فقاعة الكلام، لكنه ما يزال مستمرًا.
إلى أي مدى يمكنه الوصول؟
ما هو أكبر رقم يمكنك
العدّ إليه في جهاز كمبيوتر؟
هل يرغب أحد أن يخمّن؟
قد يكون هنا لبعض الوقت.
10 إلى رقم 270 الآن.
لأي مدى يمكنك العدّ، أو بالأحرى--
حسنًا.

English: 
So we gave up and just
called it infinity.
So it turns out infinity
does have a precise value--
10 to the 250th or so.
But what happens here?
Well, because computers,
at the end of the day,
are just storing information digitally--
but that information digitally has
to be physically stored using
electricity, using these lower level
switches called transistors.
At the end of the day, my phone, my
laptop, whatever device in question
only has a finite
amount of those things.
I only have a finite number of fingers.
Using unary, my old
school hashmark approach,
I can count to five on this hand.
Using binary, I claimed I
could count to 31 on this hand.
But it's still finite.
I cannot count to infinity on this
hand because I only have five fingers.
Similarly does a computer only
have so many transistors or so
many bytes or bits of
memory, and at some point,
the programmer has to
think about what is he
or she going to do when the user
wants to count so high that you
can't physically fit it anymore.
You have to give up like this
and say something semi accurately
or you have to handle that
issue in some other way.

Arabic: 
إذن لقد استسلمنا
وأطلقنا عليه ما لا نهاية.
لذا يتضح أن ما لا نهاية
لها قيمة دقيقة--
10 إلى رقم 250 أو نحو ذلك.
لكن ماذا يحدث هنا؟
حسنًا، نظرًا لأن أجهزة
الكمبيوتر، في نهاية المطاف،
تقوم فقط بتخزين المعلومات رقميًا--
ولكن تلك المعلومات المخزنة رقميًا
يجب أن يتم تخزينها ماديًا باستخدام
الكهرباء، باستخدام محولات خفض المستوى
هذه المسماة بأجهزة الترانزستور.
في نهاية الأمر، يكون لهاتفي، أو جهاز الكمبيوتر
المحمول الخاص بي، وأي جهاز معني
مقدار محدود
فقط من تلك الأشياء.
أنا لدي عدد محدود من الأصابع.
باستخدام النظام الأحادي، نهج
المدرسة القديمة لعلامة التجزئة لديّ،
يمكنني العدّ إلى خمسة على هذه اليد.
باستخدام النظام الثنائي،
زعمتُ أني أستطيع العد إلى 31 على هذه اليد.
لكنه ما يزال محدودًا.
لا يمكنني العدّ إلى ما لا نهاية
على هذه اليد لأن لدي فقط خمسة أصابع.
وبالمثل، فالكمبيوتر به فقط
أجهزة ترانزاستور كثيرة جدًا أو
وحدات بايت أو وحدات بت
كثيرة جدًا في الذاكرة، وعند نقطة معينة،
يتعين على المبرمج أن يفكر
فيما سيفعله
أو ستفعله عندما يريد
المستخدم العدّ لمدى مرتفع جدًا
لا يمكنك مواءمته ماديًا بعد ذلك.
عليك أن تستسلم مثل هذا
وأن تقول شيئًا بشكل شبه دقيق
أو عليك معالجة تلك
المسألة بطريقة أخرى معينة.

Arabic: 
وسنرى عندما نصل إلى C أن
كيفية معالجتك لهذه المشكلة ليست
بالضرورة مباشِرة،
والكثير من البرامج في الواقع
هناك لا تتعامل مع هذه المشكلة.
والاحتمالات هي، أننا
جميعًا لدينا برامج إذا
قمتَ بكتابة كلمات كبيرة بما يكفي
أو أرقام كبيرة بما يكفي فيها،
فإنها قد تنقطع أو تتعطل
أو تتوقف بشكل كبير جدًا
ذلك لأن البشر، على عكس MIT (معهد
ماساشوستس للتكنولوجيا)، لم يتوقعوا أن ذلك قد
يحدث بالفعل ويعالجوه.
حسنًا، دعوني أمضي قدمًا وأقوم بذلك.
دعوني أفتح هذا البرنامج وأرى ما إذا لم
نتمكن من قراءة التعليمة البرمجية الآن.
وهذا يسمى Pet Zero
وهذا برنامج يحاكي ملاطفة الحيوانات.
لذا إذا قمتُ بالنقر فوق تشغيل
ولم ألمس لوحة المفاتيح،
فيبدو ألا شيء سيحدث، ولكن إذا
قمتُ الآن بتحريك المؤشر نحو القط--
[MEOW]
ياللأسف.
إنه نوع لطيف.
[MEOW]
حتى الآن، إنه ليس أكثر من مواء عند
الطلب عندما تقوم بملاطفة القط.
لماذا؟
حسنًا، لاحظ أنني أضفتُ
بعض الكتل البنائية الأخرى.
لم نستخدم هذا من قبل،
لكنه بديهيًا
قد يخلق شعورًا واضحًا جدًا.
عندما يتم النقر على العلم الأخضر،
فقم بما يلي باستمرار.
إذا كان القط يلمس مؤشر
الماوس-- فإن هذا الشيء باللون الأزرق
هو ما أطلقنا عليه من قبل
اسم تعبير منطقي.

English: 
And we'll see when we get to C that
how you handle this problem is not
necessarily straightforward,
and indeed a lot of software
out there does not handle this problem.
And odds are, all of us
have programs that if you
type big enough words or big
enough numbers into them,
they might very well
break or crash or freeze
because the humans, unlike MIT, did
not anticipate that that might actually
happen and handle it.
Well, let me go ahead and do this.
Let me open up this program and
see if we can't read the code now.
This is called Pet Zero and this is
a program that simulates petting.
So if I click play and
don't touch the keyboard,
nothing seems to be happening, but if
I now move my cursor over to the cat--
[MEOW]
Aw.
It's kind of cute.
[MEOW]
Right now, it's more only meowing
on demand when you pet the cat.
Why?
Well, notice I've added
some other building blocks.
We haven't used this one
before, but it intuitively
probably makes pretty clear sense.
When the green flag is clicked,
forever do the following.
If the cat is touching the mouse
pointer-- this thing in blue
is what we called earlier
a Boolean expression.

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

English: 
It has a yes/no, a
true/false, a one/zero answer.
And touching mouse pointer is one
of the options in the little drop
down here if you tinker with it.
So if the cat is touching the
mouse pointer, then and only then,
play sound meow until done.
So we've combined now functions
with loops with a condition.
But why the loop?
The cat's only meowing
once when I pet him.
Why am I doing anything forever here?
Someone-- yeah.
Yeah.
I might want to pet it again, so I
want the program to anticipate that.
And honestly, if I omitted this
forever block and my program
instead looked just like this--
so let me get rid of that and this--
and then I clicked play,
and now, I hover over him,
why is it not working even once?
Say it again.
Yeah.

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

English: 
So I mean, at this point,
if I can summarize,
the computer is so damn
fast that this already
happened by the time I moved my cursor
over to the cat, and at the moment
I clicked play, I was
not touching the cat.
Those blocks executed, so
to speak, top to bottom.
That's it for the program.
So by the time I move the cursor
over to the cat, the program is over.
It's not listening.
And so forever, this way I can actually
listen in perpetuity for something
to actually happen.
What if I want to do something
not just if something is true,
but handle two cases?
If or else.
Well, let me go ahead
and open up Pet One.
And this is another example.
And could someone perhaps describe,
after reading this code, what
this program is going to do instead?
Yeah.
Exactly.
And let me summarize more verbally.
So if this time, you're touching
the cat, it's going to roar instead.

Arabic: 
وإلا، سيقوم بالمواء بشكل لطيف.
إذن هذه المرة، سيقوم بالمواء
بشكل مستمر مرة واحدة كل ثانية،
لكن إذا لمستَ هذا القط الاستثنائي،
فلن يعجبه ذلك.
إذن شغّل.
[MEOW]
مواء.
[MEOW]
مواء.
[MEOW]
والآن.
[ROAR]
لا تلمس القط.
الآن إذن، قد نتفاعل
بطريقتين مختلفتين
بسلوك طريقين مختلفين
يمكنك الانتقال خلالهما.
حسنًا، دعونا حقًا نفعل
شيئًا تفاعليًا بدرجة أكبر بقليل.
دعوني أمضي
قدمًا وأفتح مثالاً آخر.
وهذا يطلق عليه اسم Bounce
Zero "الارتداد للصفر" لأنه يمكننا الآن،
الآن أن نبدأ في مشاهدة بعض
عناصر التصميم مما كان عليه Oscar Time.
مثل هذا يصبح الآن
الأمر شيقًا قليلاً.
ما الذي يحدث هنا بالفعل؟
دعونا نقوم بالتكبير
على الكتل هنا.
تقوم هذه الكتلة فقط بنطق
تحرك باستمرار 10 خطوات، والتي
تعتبر كتلة أخرى لم نرَها من قبل.
لكن 10 خطوات مثل 10 وحدات بكسل.
إذن تحرك 10 وحدات بكسل على الشاشة.
لكن إذا كنت تلمس الحافة،
فمن ثم استدر بزاوية 180 درجة.
ويمكنك أن ترى ذلك يحدث بالضبط.
يتم تدوير سكراتش 180
درجة ولا يعني نمط الاستدارة هذا إلا
رجوعًا مزدوجًا.

English: 
Else, it's just going to meow sweetly.
So this time, it is meowing
perpetually once every second,
but if you touch this particular
cat, it doesn't like it.
So play.
[MEOW]
Meow.
[MEOW]
Meow.
[MEOW]
And now.
[ROAR]
Don't touch the cat.
So now, we might interact
in two different ways
by having two different
roads that you can go down.
Well, let's actually make something
a little more interactive.
Let me go ahead and
open another example.
This one's called Bounce
Zero because now, we
can start to see some design
elements from what Oscar Time was.
Like this now it's getting
a little interesting.
What is actually going on here?
So let me zoom in on the blocks here.
This block is just saying
forever move 10 steps, which
is another block we haven't seen.
But 10 steps is like 10 pixels.
So move 10 pixels on the screen.
But if you're touching the edge,
then turn around 180 degrees.
And you can see exactly that happening.
Scratch is turning around 180
degrees and this rotation style just
means double back.

English: 
Don't like loop around 180 degrees.
So that's kind of cool.
But this is not how humans or cats walk.
Like what is obviously
unnatural about this?
Yeah.
I mean, I mean, I can't
even simulate it, right?
Like his feet are in static
position, yet sliding back and forth
on the screen.
And yet, that is not what walking is.
Like walking presumably has
some kind of movement and what?
Well, we could just kind
of simulate it like--
OK, I could just walk--
walking and you can imagine taking like
really quick photographs of my legs
or the cat's leg moving and
then just deciding this photo
will be representative of one step.
This photo will be
representative another.
And you know, with just
two of those steps,
I'd wager we could actually do
a pretty good job of simulating
what walking looks like.
In fact, if I go back to where we
began, this picture of Scratch,
what if I just move his legs
ever so slightly, then go back,
then go forward?
And even just in my PDF, I can
simulate animation by hitting up arrow,
down arrow, up arrow, down
arrow because it kind of

Arabic: 
لا تعجب بالتكرار الحلقي بزاوية 180 درجة.
إذن ذلك أمر رائع.
لكن هذه ليست الطريقة التي يمشي بها البشر أو القطط.
كمثل ماذا يبدو أمرًا غير طبيعي
بوضوح فيما يخص هذا؟
أجل.
أعني، أعني، لا يمكنني
حتى محاكاته، أليس كذلك؟
مثل وجود قدميه في وضع ثابت،
لكنه يمررها ذهابًا وإيابًأ
على الشاشة.
ولكن، لا يكون المشي هكذا.
مثل المشي له نوع
من الحركة افتراضيًا وماذا؟
حسنًا، يمكننا نوعًا
ما محاكاة هذا مثل--
حسنًا، يمكنني فقط المشي--
المشي ويمكنك أن تتخيل
التقاط صور سريعة كأنها حقيقية لساقيّ
أو لساق قط تتحرك
ثم تقرر فقط أن هذه الصورة
ستكون ممثلة لخطوة واحدة.
وهذه الصورة ستمثل
خطوة أخرى.
وكما تعلمون، باستخدام
خطوتين فقط من تلك الخطوات،
كنتُ أراهن أننا يمكننا
بالفعل القيام بعمل جيد لمحاكاة
الكيفية التي يبدو عليها المشي.
في الواقع، إذا عدتُ من حيث
بدأنا، من صورة سكراتش هذه،
ماذا لو قمتُ فقط بتحريك
ساقيه قليلاً جدًا، ثم الرجوع للخلف،
ثم التقدم للأمام؟
وحتى لو في ملف PDF الخاص بي، يمكنني
محاكاة الرسوم المتحركة بنقر السهم لأعلى،
السهم لأسفل، السهم
لأعلى، السهم لأسفل لأنه نوعًا مما

English: 
looks like he's walking now, when
really, your human eyes are just seeing
two different pictures again and again.
So how can I do this?
Well, if I go back to
Scratch, he's still walking.
Let me go ahead and open up Bounce One,
the second version of this, and now,
do this.
OK.
So how did I add this?
There's a little purple block
that we haven't seen yet,
but if you poke around
the categories, you'll
see other blocks like this
next costume that just keeps
changing the costume that he's wearing.
It turns out Scratch exists as a
picture and his default picture
is him not moving, but if I go up
here to top left and click costumes,
you can actually see that
here's his one costume.
Here's his second costume.
And so that purple block that
says next costume, because it's
in the forever loop, it just keeps
doing next, next, next, next, next, just
showing one costume or the other.
They're clearly mimicking walking.
Now, this is not very unnatural.
Why don't we slow him down to, say, five
steps at a time and have him go again?

Arabic: 
يبدو أنه يمشي الآن، بينما في
الحقيقة، عيونكم البشرية فقط ترى
صورتين مختلفتين مرارًا وتكرارًا.
إذن كيف يمكنني القيام بذلك؟
حسنًا، إذا قمت بالرجوع
إلى سكراتش، فإنه ما يزال يمشي.
دعوني أمضي قدمًا وأفتح Bounce One،
الإصدار الثاني لهذا، والآن،
قم بذلك.
حسنًا.
كيف قمتُ بإضافة هذا؟
هناك كتلة أرجوانية
صغيرة لم نرها بعد،
ولكن إذا قمتَ
بالتدقيق في الفئات، فإنك
سترى كتلاً أخرى مثل هذا
الزي التالي الذي يستمر في
تغيير الزي الذي يرتديه.
يتضح وجود سكراتش
كصورة وصورته الافتراضية
وهو لا يتحرك، ولكن إذا انتقلتُ لأعلى هنا
إلى أعلى اليسار، ثم نقرتُ فوق الأزياء،
فسيمكنك بالفعل مشاهدة
أنه يوجد هنا زيه الواحد.
وها هو زيه الثاني.
ولذلك فتلك الكتلة الأرجوانية
التي تنطق الزي التالي، لأنه
داخل التكرار الحلقي المستمر، تواصل فقط
القيام بالتالي، التالي، التالي، التالي، التالي،
ليُظهر زيًا واحدًا أو الآخر.
من الواضح أنهم يقلدون المشي.
الآن، هذا أمر غير طبيعي تمامًا.
لماذا لا نقوم بإبطائه حتى، وليكن، خمس
خطوات في المرة ونجعله ينتقل ثانيةً؟

Arabic: 
الآن، هذا ما يزال ينتقل سريعًا جدًا.
دعوني أمضي قدمًا وأقول--
أننا يمكننا التحكم.
يمكننا أن نجعله ينتظر لثانية
بعد التحرك بشكل كبير جدًا.
ربما يمكننا تسريع هذا الأمر.
لذا دعونا ننتظر 1/10 من الثانية، 0.1.
أو ربما ننتظر 0.01،
أي 1/100 من الثانية.
الآن، أصبح الأمر
أكثر واقعية نوعًا ما.
لكن هذه هي ماهية الرسوم المتحركة.
إذا شاهدت فيلم كارتون من قبل
أو فيلمًا يستند على صور مثل هذه،
فأنت فقط تحاول إصلاح بعض من
هذه المعلمات، وهذه المدخلات،
من أجل إنتاج هذا
المُخرَج عن طريق فهم
ما هو التمثيل الأساسي
لهذه الأشياء، والذي يعتبر في هذه الحالة
الصور فقط، مرارًا
وتكرارًا من أجل
إنشاء هذه الرسوم المتحركة.
لكن ماذا عن التفاعل؟
دعوني أفعل هذا بنفسي.
دعوني أمضي قدمًا وأتخلص
من هذا، وأرجع إلى الأحداث، وأنطق،
عند النقر على العلم الأخضر.
ثم، دعوني أمضي قدمًا
وأمسك بكتلة مستمرة
ويستمر ذلك
مرارًا وتكرارًا.
ثم، دعوني أمضي
قدمًا إلى الحركة.
يتضح أن تحت رمز الحركة،
توجد هذه الكتلة التي لم نرَها--
تشير تجاه مؤشر الماوس.

English: 
Now, this is still going pretty fast.
Let me go ahead and say--
we could have control.
We could have him wait a second
after moving very dramatically.
We could probably speed this up.
So let's wait 1/10 of a second, 0.1.
Or maybe let's do 0.01,
1/100 of a second.
Now, it's getting a
little more realistic.
But this is what animation is.
If you've ever watched a cartoon or
a movie based on pictures like this,
you're just tinkering with some
of these parameters, these inputs,
in order to produce this
output by understanding
what the fundamental representation
of these things is, which in this case
are just pictures, again
and again and again in order
to create that animation.
But what about interactivity?
Let me do this one myself.
Let me go ahead and get rid of
this, go back to events, and say,
when green flag clicked.
Then, let me go ahead
and grab a forever block
so that this keeps
going again and again.
And then, let me go
ahead to go to motion.
It turns out that under motion,
there's this block we haven't seen--
point towards the mouse pointer.

English: 
And let me go ahead
and pull this in here.
And then, let me have it move just
like one step at a time, instead of 10.
What is this going to do?
What's this program do?
Yeah.
Say it again.
Follow the mouse.
Yeah.
This is kind of like a way of
taking your cat for a walk.
Perhaps not quite the animal we
intended, but he'll follow the cursor.
And I can actually speed
this up a little bit.
So let's have him move 10 steps.
OK.
Now, there we go.
So now, he's moving up and down,
and so now, it's interactive.
So you might recall that when we were
playing Oscar Time earlier and picking
up--
OK.
Don't do that.
See, that's a bug.
He's just confused.
He's constantly moving toward
it, but you're already--
OK.
So we're going to stop.
OK.
So now, he's following, but
that's how we might now create,
for instance, the ability to
move those pieces of trash
around and have them
follow the mouse cursor.
If you think back to Oscar Time, every
time you picked up a piece of trash,

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

Arabic: 
فإنه سيتبع المؤشر وذلك نظرًا لوجود
تكرار حلقي مستمر وكتلة مثل هذه
تشير تجاه مؤشر الماوس.
حسنًا، الآن، دعونا
ندمج الأفكار المتعددة
ونكوّن بالفعل نصوصًا متعددة.
لقد اقترحتُ سابقًا إمكانية أن
يكون للبرامج مؤشرات ترابط متعددة.
ومؤشر الترابط هو طريقة ممتازة للنطق،
في السياق الموجود لدينا، وهو النصوص المتعددة.
والنصوص المتعددة في البرنامج الواحد
هي التي تحدث بالضرورة بالتوازي.
بفضل الترابط يمكن للكمبيوتر القيام
بأشياء متعددة بشكل فعّال في المرة الواحدة،
وزيادةً على ذلك في الطريق.
لذا تعتبر هذه أكثر
انخراطًا، لكن دعونا نرى
ما إذا كان بإمكاننا-- دعونا نفهم
أولاً ما يفعله هذا البرنامج.
دعوني أمضي قدمًا وأنقر فوق تشغيل.
وهذا الصوت يميل لأن يكون صاخبًا قليلاً.
[SEA LION BARKING]
إذن أسد البحر يعوي
بلا توقف، بشكل مزعج.
إذن بقراءة التعليمة البرمجية،
كيف يمكنني الآن إيقافه عن العواء؟
اضغط على شريط المسافة.
حسنًا.
إذن اضغط على شريط المسافة.
حسنًا.
يمكنني تحديدًا إيقاف البرنامج،
بوضوح،
ولكن ما زال هذا البرنامج يعمل،
من الناحية الفنية.
ولكن لمَ يعمل هذا؟

English: 
he'd follow the cursor because there
was a forever loop and a block like this
pointing toward the mouse pointer.
Well, now, let's
integrate multiple ideas
and actually have multiple scripts.
I proposed earlier that programs
can actually have multiple threads.
A thread is just a fancy way of saying,
in our context, multiple scripts.
Multiple scripts in one program that
are happening essentially in parallel.
A computer can effectively do multiple
things at a time thanks to threading,
and more on that down the road.
So these are more
involved, but let's see
if we can-- let's understand
first what this program does.
Let me go ahead and hit play.
And this one tends to be a little loud.
[SEA LION BARKING]
So the sea lion is just
barking endlessly, annoyingly.
So by reading the code, how
can I stop him from barking?
Hit the spacebar.
All right.
So hit the spacebar.
OK.
I could just stop the
program, obviously,
but this program is still
running, technically.
But why did that work?

English: 
Well, notice this on the left
hand side is the first script.
When the green flag is clicked, set this
variable that I called muted to false.
Could have called it x or y or
z or counter, but none of those
really make sense, so I called it muted.
And I set it equal to false,
which is, again, a Boolean value.
True or false just mean yes or no.
Forever, if the keyspace
is pressed, then do this.
If muted is currently false,
then change muted to true.
Else, change muted to false.
So if muted is false, change it to true.
If muted is true, change it to false.
Any time the human hits the
spacebar, update that variable.
Now, if we look at the other script,
which is also driving the sea lion,
what is he doing?
Forever, if muted is false.
So if he's not muted.
If muted is false means not muted.
Start the sound sea lion and then
think hi, hi, hi for two seconds,
and then wait for one more second.
And then just repeat, repeat, repeat.
But if I change with the
spacebar muted to true,

Arabic: 
حسنًا، لاحظ أن هذا الموجود على
الجانب الأيسر هو النص الأول.
عند النقر على العلم الأخضر، اضبط هذا
المتغير الذي سميتُه muted "مكتوم الصوت" على خطأ.
إذا تمت تسميته x أو y أو
z أو عداد، وإن كان أي من تلك
المسميات لا يعني شيئًا، لذا سمّيتُه muted "مكتوم الصوت".
وقمتُ بضبطه ليساوي الخطأ،
والذي يعتبر، مجددًا، قيمة منطقية.
صح أو خطأ يعنيان فقط نعم أو لا.
باستمرار، إذا تم الضغط على شريط
المسافة، فافعل ذلك.
إذا كان muted "مكتوم الصوت" خطأ حاليًا،
فغيّر muted "مكتوم الصوت" إلى صح.
وإلا، غيّر muted "مكتوم الصوت" إلى خطأ.
لذا إذا كان muted "مكتوم الصوت" خطأ، فغيّره إلى صح.
إذا كان muted "مكتوم الصوت" صحيحًا، فغيّره إلى خطأ.
في أي وقت يقوم فيه الشخص بالضغط على
شريط المسافة، قم بتحديث ذلك المتغير.
الآن، إذا نظرنا في النص الآخر،
الذي يوجّه أسد البحر أيضًا،
ما الذي يقوم به؟
باستمرار، إذا كان المتغير muted "مكتوم الصوت" خطأ.
لذلك إذا لم يكن مكتوم الصوت.
إذا كان المتغير muted "مكتوم الصوت" خطأ
فهذا يعني عدم كتم صوته.
ابدأ تشغيل صوت أسد البحر ومن ثم
تخيل مرحبًا، مرحبًا، مرحبًا لمدة ثانيتين،
ثم انتظر لثانية أخرى.
ثم ما عليك إلا التكرار، التكرار، التكرار.
لكن إذا قمت بالتغيير وشريط
المسافة مكتوم الصوت إلى صح،

English: 
he's going to say if muted
equals false, that's not so.
I'm not going to play a sound this time.
And so now, we have the ability to
integrate multiple scripts together
in order to achieve a
more interactive result.
And what about this?
Back when I was a kid, might have
played in the summers Marco Polo.
Super simple game.
We played it in the pool,
for some reason, where
one person in the pool
very safely is blindfolded,
and then he or she yells Marco.
And then, everyone around him
or her is supposed to yell polo.
And then, the person
who's blindfolded is
supposed to go chase the other
kids in the pool and tag them,
and then they become it.
But in other words, it's this
like signaling mechanism.
Someone yells, Marco and
everyone else responds
to that broadcast of the word Marco.
Well, it turns out we can simulate
this with these two puppets.
This guy here-- notice that I've
highlighted the orange puppet
because there's a second
blue puppet there.
Separate sprites.
And these are just photographs
we uploaded to the game.
Forever, if the key space is pressed,
so if the spacebar is pressed,
say Marco for two seconds
and then broadcast an event.

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

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

English: 
Meanwhile, the blue puppet
here has a super simple block,
but it's fundamentally different
from the ones we've seen.
He's not starting when
the green flag is clicked.
He is starting only when
he receives an event.
So it turns out that sprites
and Scratch can't hear or see
what the other one is saying
in those speech bubbles.
You have to use a
fancier technique, which
is the special block
called broadcast, which
is like passing a note digitally
from one sprite to another
that the other one can read
or receive, so to speak.
So only when he receives
this event, so to speak,
does he say polo for two seconds.
And again, the orange puppet
sends that secret message
just using this other puzzle piece.
Broadcast an event, like passing a note
that the human doesn't actually see.
So if I now hit the green flag and
hit the spacebar, orange yells Marco.
Blue guy yells polo in response.
But those aren't timed together.
Rather, the blue guy is hearing
with the orange one has said,
thereby allowing multiple sprites
to actually intercommunicate.
So how did we get here?

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

English: 
Well, recall that we had all of
these building blocks a moment ago.
First, we started out with
just functions and conditions
and Boolean expressions and loops.
We've now added to that the
ability to store information
in variables and threads to do multiple
things at once, and then, if you do
have multiple things
happening, events, where
they can enter communicate somehow.
Yet another building block.
So if we now take a
step back and consider
how we can make functions of
our own, we have the final piece
of the puzzle, so to speak.
Let me go ahead and do this.
Let me go ahead and create a simple
program with, when green flag clipped,
that simply simulates
coughing for a cat.
So this cat is going to say not
hello, but cough for one second.
And then he's going to go
ahead and wait for one second.
And then I'm going to go ahead
and copy paste, as I did before--
this is one of those do as I say, not as
I do-- to implement this program here,
where he coughs three times.
We already know, though, from
earlier that this is not good design.
Why?

English: 
You're repeating yourself.
Don't repeat yourself.
DRY is an acronym, actually.
Don't repeat yourself
because you're doing
three times as many times something
that you only really need to do once.
The solution before, of course,
was just use a loop of some sort.
So let me actually take that out.
Let me use a repeat
block, change 10 to three,
and then just use two of these blocks.
And notice already, the program
is so much more compact.
And now, if I want to change the three
to a 30 or to a 10 or any number,
I just change one simple value.
I don't have to rewrite or
copy paste or delete things.
I can update the program
much more readily,
and now, the same thing is going to
happen with just cough, cough, cough.
But it turns out that it would be nice
to henceforth abstract away from this,
right?
I just want any program I
write to know how to cough.
And coughing is really just
saying something, perhaps
some number of times.
But it turns out we can
abstract this away in code.
Let me go down to my
blocks here and this allows
me to click this button-- make a block.
It allows me to make my own function.

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

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

English: 
I get this dialog window here.
And I'm just going to
call this block cough.
I'm going to go ahead and click OK.
And now, I have this new pink block that
itself can have blocks underneath it.
And you know what I'm going to do?
I'm going to go ahead and do this.
I'm going to go ahead and
say cough under there.
And now, notice on the left, I now
have access to this new pink piece.
I can now put this in here.
So now, notice even though, yes,
this is how coughing is implemented
on the left hand side here, next
time, when I write a program,
I just want to call cough.
And I don't care about those lower
level implementation details.
I don't care about the
party or any of that.
I just want this to be an abstraction.
But I could do better
than this wouldn't it
be nice if instead of just
repeating cough three times,
what if I made that a feature of cough?
So let me do this.
I can go ahead and right click on
this pink piece and I can edit it.
That brings up that
same window from before.
And notice this.
Add an input.
So when I make a custom block, I can
actually make pretty fancy blocks

English: 
just like the ones MIT
gives us with the software,
and now, I can type in something like n.
And if I add a label just to make it
more descriptive, I can just say times.
So now, I've made a
special custom puzzle
piece that says cough some number
of times, where n for number
is just the go to variable
that programmers tend to use.
So now, I can actually move this
repeat block into cough itself,
but rather than hard
code 3, notice this.
I can steal that variable and now say
cough this many times by repeating
saying this again and again and again.
And now, when I cough in my actual
program, I just type in three here.
So I have this beautiful
abstraction now, so to speak.
Cough this many times and I
and no one else in the world
never again needs to care about what
it means to cough because we've already
implemented that before.
And so just as MIT has given
us so much functionality
that we ourselves don't
have to think about, so can
I now make functionality that
I don't have to think about.

Arabic: 
تمامًا كتلك التي
يقدمها لنا MIT مع البرنامج،
والآن، يمكنني تدوين شيء ما مثل n.
وإذا قمتُ بإضافة ملصق فقط لجعلها
وصفية أكثر، فيمكنني فقط النطق لمرات.
إذن الآن، لقد أعددتُ
قطعة لغز مخصصة خاصة
تقول سعال لعدة مرات،
حيث n للعدد
هي فقط الانتقال للمتغير
الذي يميل المبرمجون لاستخدامه.
إذن الآن، يمكنني بالفعل تحريك
كتلة التكرار هذه في كتلة السعال نفسها،
ولكن بدلاً من الكود الثابت
رقم 3، لاحظ هذا.
يمكنني استعارة هذا المتغير، والآن أقول
سعال هذا العدد من المرات عن طريق
تكرار قول هذا مرارًا وتكرارًا.
والآن، عندما أسعل في برنامجي الفعلي،
أقوم فقط بكتابة ثلاثة هنا.
لذلك لدي هذا التجريد
الجميل الآن، إذا جاز التعبير.
قم بسعال هذا عدة مرات وأنا
وليس أي شخص آخر في العالم
لا يحتاج مرة أخرى إلى الاهتمام بما
يعني السعال لأننا بالفعل
نفذنا ذلك من قبل.
وهكذا فقط كما قدم معهد ماساتشوستس للتكنولوجيا
لنا الكثير من الوظائف
التي لم يتعين علينا أنفسنا
أنا نفكر فيها، بحيث يمكن
لي الآن جعل الوظائف التي
لا يتيعن أن أفكر بشأنها.

Arabic: 
وبينما نتقدم إلى لغات أعلى مستوى
مثل C وJavaScript
وPython، وسنتابع هذه
العملية، في بعض الأحيان
لحل المشكلات بأنفسنا عن طريق
صنع قطع اللغز المعينة الخاصة بنا،
ولكن في كثير من الأحيان باستخدام
أشياء تسمى المكتبات،
وهي رموز كتبها أشخاص آخرون
قبلنا وهذا مفيد فقط لإنجاز المهمة،
مثلما فعل سكراتش
هنا جزئياً لنا.
اسمحوا لي بالمضي قُدمًا،
حينئذ، وجلب كل هذا
معًا عن طريق فتح
هذا المثال الآخر هنا.
اسمحوا لي بالمُضي قُدمًا وفتح هذا،
وهو شيء لم نراه،
لكنه نوع من لعبة تفاعلية
مثل هذا عن طريق طالب سابق.
[MUSIC PLAYING]
هل من الممكن أن نحصل على تفاحة؟
نعم.
رسم متحرك صغير.
حسنًا.
لم تكن نهاية جيدة.
لنجرب مجددًا.
تشغيل مرة أخرى.
ولاحظ أن كتلة القول تعمل.
يوجد نوع من كتلة السؤال.
كان الطالب يتحقق ما إذا
كان الشخص قد كتب نعم أو لا.
دعونا نكتب لا هذا المرة.
لا أريد تفاحة.
أوه.
كاب كيك.

English: 
And as we progress to higher level
languages like C and JavaScript
and Python, we're going to
continue this process, sometimes
solving problems ourselves by
making our own custom puzzle pieces,
but very often using
things called libraries,
code that other humans wrote before us
that's just useful to get the job done,
just as Scratch has done
here in part for us.
Let me go ahead, then,
and bring all of this
together by opening
this other example here.
Let me go ahead and open up this one,
which isn't something we've seen,
but it's kind of an interactive game
like this made by a former student.
[MUSIC PLAYING]
Should we have an apple?
Yes.
A little animation.
OK.
That didn't end well.
Let's try again.
Play again.
And notice the say block is happening.
There's some kind of ask block.
The student was checking if
the human typed in yes or no.
Let's type no this time.
No apple.
Ooh.
Cupcake.

Arabic: 
حسنًا.
نعم.
إدخال.
حسنًا.
لا تفعل هذا.
حياة أخرى.
ها نحن ذا.
[MUSIC PLAYING]
حسنًا.
لا أريد تفاحة.
لا أريد كاب كيك.
متغير صغير.
[SCREAMING]
[LAUGHTER]
حسنًا.
إذًا فزت باللعبة.
في لحظاتنا الأخيرة هنا،
دعوني أتابع وأفتح مثالًا أخيرًا.
كما تعلمون، لا تُقدم CS50
في جامعة هارفارد فقط، ولكن في جامعة ييل، أيضًا،
لذلك يبدو مناسبًا
الإنهاء بملاحظة أن
تباري حرم جامعي ربما في مواجهة
الآخر عن طريق لعبة أخرى
والتي كتبها طالب سابق وتسمى
Ivy's Hardest Game.
ولكن لهذا، أعتقد أننا في حاجة
لمتطوع أخير ليصعد إلى هنا.
حسنًا.
اليد الأولى.
هناك بالضبط.
تعال.

English: 
OK.
Yes.
Enter.
OK.
Don't do that.
One more life.
Here we go.
[MUSIC PLAYING]
OK.
No apple.
No cupcake.
Little variable.
[SCREAMING]
[LAUGHTER]
OK.
So I won the game.
In our final moments here, let me
go ahead and open one final example.
As you know, CS50 is offered not only
at Harvard, but at Yale, as well,
so it seems fitting to
perhaps end on a note that
pits one campus perhaps against
the other by way of another game
that a former student wrote
called Ivy's Hardest Game.
But for this, I think we need one final
volunteer who's company coming up.
OK.
First hand.
Right there.
Come on down.

English: 
So in Ivy's Hardest Game, it's
a game played with the keyboard.
And even though it might look a
little overwhelming at first glance,
just like Oscar Time did and just
like the gingerbread animation might,
realize that if you decompose it in
just your mind's eye thinking about what
those individual building
blocks are, you can probably
guess what the puzzle pieces are.
Hi.
What's your name?
ANDREA: Hi.
I'm Andrea.
DAVID MALAN: Andrea.
David.
Nice to meet you.
Here is Ivy's Hardest Game.
Pits you against all of the Ivies here.
And then right after this will we
adjourn for cupcakes in the transept.
Ready?
[MUSIC PLAYING]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (SINGING)
You can't touch this.
You can't touch this.
DAVID MALAN: Nice.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (SINGING)
You can't touch this.
My, my, my, my.
Music hits you so hard.
Makes me say, oh my lord.
Thank you for blessing me with a
mind to rhyme and two hype feet.
It feels good when you know you're down.
A super dope homeboy from the Oaktown.

Arabic: 
إذًا في أصعب ألعاب رابطة جامعات Ivy،
إنها لعبة تُمارس بلوحة المفاتيح.
وعلى الرغم من أنها قد تبدو
ذات زخم بدرجة قليلة للوهلة الأولى،
تمامًا مثلما كان أوسكار تايم
وتمامًا مثل الرسم المتحركة،
نُدرك أنك إذا قمت بتفكيكه
في عقلك مفكّرًا بشأن
ما عليه تلك الكتل الفردية،
يمكنك من المحتمل
تخمين ما هي قطع اللغز.
مرحبًا.
ما اسمك؟
أندريا: مرحبًا.
أنا أندريا.
ديفيد مالان: أندريا.
ديفيد.
تشرفت بمقابلتك.
إليكِ لعبة Ivy's Hardest Game.
تضعك في مواجهة جميع كليات Ivy.
ثم بعد ذلك مباشرة
سننتقل إلى الكاب كيك في جناح الكنيسة.
مستعدون؟
[MUSIC PLAYING]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (غناء) لا يمكنك المساس بهذا.
لا يمكنك المساس بهذا.
ديفيد مالان: رائع.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (غناء) لا يمكنك المساس بهذا.
خاصتي، خاصتي، خاصتي، خاصتي.
الموسيقى خاصتي تؤثر فيك بقوة.
تجعلني أقول، يا إلهي.
أشكرك على نعمة العقل
لنظم قافية واثنين من أوزان الضجيج.
إنه شعور جيد عندما تعلم أنك سيئ.
أنا فتى من مدينة أوكتاون يبيع المخدرات.

Arabic: 
وأنا مشهور على هذا النحو.
ولا يمكنك المساس بهذا الإيقاع.
أخبرتك، يا فتى،
لا يمكنك المساس بهذا.
أجل.
إليك كيف نحيا وتعلم
أنه لا يمكنك المساس بهذا.
انظر إلى عيني.
يا رجل، لا يمكنك المساس بهذا.
[APPLAUSE]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
(يغني) أحذية وسراويل جديدة.
ستحصل عليها والآن
تعلم أنك تريد أن ترقص.
لذا انهض من على مقعدك
وتعرف على حسناء
وجارِ هذا الإيقاع وهو يتردد.
انتظر.
ارتفع وانخفض قليلاً وعرفني أن الأمر
يسير على هذا المنوال.
على هذا المنوال.
ضعيف في مهمة فاسحبه إذن للخلف.
دعهم يعرفون أنك مبالغ فيك
ولا يمكنك المساس بهذا الإيقاع.
أنت، لقد أخبرتك، لايمكنك المساس بهذا.
لماذا تقف هناك يا رجل؟
لا يمكنك المساس بهذا.
أنت، رنّ الأجراس.
هنا المدرسة يا مغفل.
لا يمكنك المساس بهذا.
أعطني أغنية أو إيقاعًا.
تجعلهم يتعرقون.
هذا ما أحاول تقديمه لهم.
الآن هم يعرفون أنك عندما
تتحدث عن هامر،
فأنت تتحدث عن عرض
مزدحم وضخم.
المغنيون يتصببون عرقًا
فأعطهم منديلاً أو شريطًا

English: 
And I'm known as such.
And this is the beat you can't touch.
I told you, homeboy,
you can't touch this.
Yeah.
That's how we're living and
you know you can't touch this.
Look in my eyes.
Man, you can't touch this.
[APPLAUSE]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
(SINGING) Fresh new kicks and pants.
You got it like that and now
you know you want to dance.
So move out of your
seat and get a fly girl
and catch this beat while it's rolling.
Hold on.
Pump a little bit and let me
know it's going on like that.
Like that.
Cold on a mission so pull on back.
Let them know that you're too much
and this is the beat you can't touch.
Yo, I told you, you can't touch this.
Why you standing there, man?
You can't touch this.
Yo, sound the bells.
School is in, sucker.
You can't touch this.
Give me a song or rhythm.
Making them sweat.
That's what I'm giving them.
Now they know when you
talk about the Hammer,
you talking about a show
that's hyped and tight.
Singers are sweating so
pass them a wipe or a tape

Arabic: 
لمعرفة ما سيحدث في
التسعينات لرفع المبيعات.
ديفيد مالان: من المستوى الثاني للمستوى الأخير.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (غناء) إما العمل
الجاد أو قد تطرد.
كانت هذه كلمة لك
لأنك تعرف أنك لا يمكنك المساس بهذا.
لا يمكنك المساس بهذا.
فسرها.
توقف.
إنه زمن هامر.
يقال، سر مع التيار.
إذا لم تتمكن من الاستمتاع
بهذا، فأنت بالطبع ميت.
لذا لوح بيدك في الهواء.
قم ببعض الحركات.
مرر أصابعك عبر شعرك.
تحية للفائز.
ارقص على هذا الإيقاع،
وستصبح أنحف.
تحرك.
حرك أردافك.
لدقيقة واحدة فقط، فلنقم
جميعًا بالتمايل، التمايل، التمايل.
أجل.
لا يمكنك المساس بهذا.
انظر يا رجل.
لا يمكنك المساس بهذا.
من الأفضل أن تشعر بالضجيج
يا فتى، لأنك تعرف--
[CROWD YELLING]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]

English: 
to learn what it's going to take
in the 90s to burn the charts.
DAVID MALAN: Second to last level.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (SINGING) Either work
hard or you might as well quit.
That's word because you
know you can't touch this.
You can't touch this.
Break it down.
Stop.
Hammer time.
Go with the flow, it is said.
If you can't groove to this,
then you probably are dead.
So wave your hands in the air.
Bust a few moves.
Run your fingers through your hair.
This is it for a winner.
Dance to this and you're
going to get thinner.
Move.
Slide your rump.
Just for a minute, let's
all do the bump, bump, bump.
Yeah.
You can't touch this.
Look, man.
You can't touch this.
You better get hype,
boy, because you know--
[CROWD YELLING]
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]

Arabic: 
(الغناء) فسرها.
ديفيد مالان: [INAUDIBLE]
أندريا: [INAUDIBLE]
ديفيد مالان: لا.
لا بأس.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
حياة أخرى.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (SINGING) قف.
إنه زمن هامر.
ديفيد مالان: حسنًا.
صفقوا بحرارة
لأندريا، إذا أمكن.
[APPLAUSE]
حسنًا.
هذا كل شيء عن CS50.
راجعوا موقع الويب للحصول على التفاصيل.
سنراكم في جناح الكنيسة لتناول الكعك.
مرحبًا بكم معنا.

English: 
(SINGING) Break it down.
DAVID MALAN: [INAUDIBLE]
ANDREA: [INAUDIBLE]
DAVID MALAN: No.
It's OK.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
One more life.
[MUSIC - MC HAMMER, "U CAN'T TOUCH
THIS"]
MC HAMMER: (SINGING) Stop.
Hammer time.
DAVID MALAN: All right.
A round of applause for
Andrea, if we could.
[APPLAUSE]
OK.
That's it for CS50.
See the website for details.
We'll see you for cake in the transept.
Welcome aboard.
