Your CS Degree Is Teaching You the Wrong Things | TheStandup
1683 segments
أهلاً بكم في فقرة
الكوميديا الارتجالية
. لدينا اليوم برنامج
مميز. أولاً، لدينا
تحدٍّ رائع من مبرمج
مذهل. ثانياً، لدينا
كيسي الذي يندم بشدة
على قراراته في الحياة
. ثالثاً، لدينا
الموضوع الرئيسي:
بايثون، هل هي غير
مفيدة للتعليم؟ هل
بايثون غير مفيدة لأي
شيء؟ هل لغة C هي حقاً
الطريقة التي نفهم بها
أجهزة الكمبيوتر؟ أم
أن كل هذا مجرد خدعة؟
على أي حال، أنا آسف.
لقد رأيت نقاشاً حاداً
على الإنترنت، كما
يقولون، حول باحثة في
جوجل، لوري وايرد (لمن
لا يعرفها). إنها
يوتيوبر رائعة. تقول
لوري إن شهادات علوم
الحاسوب تُضيّع
الفرصة لأنها تبدأ
بتعليم الطلاب بايثون
بدلاً من C أو C ++.
وبالتالي، فإن هذا
يدفع المزيد والمزيد
من الناس الذين يدرسون
علوم الحاسوب إلى
الابتعاد أكثر فأكثر
عن الكمبيوتر نفسه.
وهذا في الحقيقة يضرّ
بهم، إن جاز التعبير.
فهو لا يسمح للطلاب
بالتفوق أو التخرج من
الجامعة وهم يعرفون
حقاً كيف تعمل أجهزة
الكمبيوتر. بدلاً من
ذلك، يعرفون كيف تعمل
لغة بايثون مثلاً، وهي
مستوى تجريد أعلى في
شجرة البرمجة. ثم أشعل
هذا سلسلة من الجدالات
، حيث قال البعض إن
معظم مبرمجي لغتي C و C
++ لا يعرفون حتى حساب
لامدا أو أن اللغات
الرسمية هي أساس علوم
الحاسوب. نقطة جيدة. ثم
بدأ الناس يتجادلون
حول ماهية علوم
الحاسوب. هل يعرف أحدٌ
أصلاً ما هو عالم
الحاسوب الحقيقي؟ لا
يوجد علماء حاسوب
حقيقيون على هذه الأرض
. بالطبع، كان رايان
فلوري يسخر من بعض
الأمور. قال أحدهم
شيئاً يسخر من علم
الحاسوب ككل، ومن كون
لغة C تجريداً أفضل،
قائلاً إن C لا تمثل
فعلياً ما يحدث على
الحاسوب. ثم، بالطبع،
يا كيسي، لقد نشرتَ
تغريدة رائعة أيضاً.
كان فاكسري يقول: "لا
أعرف حتى". يبدو أنه
يقول: "لست متأكدًا حتى
مما هو علم الحاسوب،
لكنني أعتقد أنه يعتمد
بشكل كبير على
البراهين الرياضية
والمنطق الصوري. لذا،
لا شيء من هذا منطقي.
لذلك، علم الحاسوب لا
يفيد على الإطلاق".
وهكذا، تحول الأمر إلى
جدال بين الجميع. لذلك
، فكرتُ أنه يمكننا
تقسيم هذا الأمر برمته
إلى ثلاث خطوات.
الخطوة الأولى هي: ما
هو الهدف الرئيسي من
شهادة علم الحاسوب؟
حسنًا.
>> ما هو الهدف الذي
سيحصل عليه الخريج؟ هل
هو أن يصبح مبرمجًا
جيدًا؟ هل هو أن يكون
قادرًا على تطبيق
نظرية الحمام في أي
لحظة على السبورة؟ أم
هو أن يفهم عمليًا
كيفية عمل الحاسوب؟
أعتقد أن هذه ثلاث
وجهات نظر مختلفة
تمامًا. لذا، أشعر أنك
يا كيسي كنت الأكثر
حماسًا، وحصلت أيضًا
على تغريدة انتشرت
بشكل واسع في مجال
التقنية. لذلك، أنت
مطالب بالإجابة على
هذا السؤال أولًا.
>> حسنًا، أود أن أشير
إلى أن تغريدتي،
محتواها الرائع،
تغريدتي الأسطورية،
بكل صراحة، تغريدتي
الأسطورية المليئة
بالحكمة، كانت،
وأقتبس، نعم بنسبة 100%.
شكرًا لوري وايرد. واو
كيسي، هذا كل ما في
الأمر. هذا كل ما قلته.
>> سيحصل على تويتر يا
جماعة. كيسي سيحصل على
تويتر. كنت
>> أعرف تقريبًا كل ما
ستقوله لأنني استمعت
بالفعل إلى بودكاستك
على براغماتيك
إنجينير. أعتقد أن هذا
هو اسمه.
>> حسنًا.
>> ثم شاهدت هذا المقطع
وقلت: أوه، هذا بالضبط
ما كنت تتحدث عنه طوال
تلك الحلقة.
>> حسنًا، نعم. أعني نعم،
إذا كان ذلك فعالًا.
لذلك كنت أحاول فقط أن
أقول إن هذا فاجأني
كثيرًا، ردة الفعل على
هذا. أعني، أعتقد أنه
لا ينبغي أن أكون كذلك
في هذه المرحلة، لكنني
كنت كذلك نوعًا ما،
على الأقل عندما رأيت
ذلك-لأن السبب الذي
جعلني أراه هو أنني
متأكد من أن M-شيء ما.
المنشور الأصلي، أنا
لست على دراية بـ
>> MTS. نعم.
>> نعم، أراقب الوضع.
>> أنا لستُ على دراية
بهذا المصدر. لم أكن
لأراه، بل لم أكن
لأعلم بحدوثه لولا أنه
كان ضمن المواضيع
الرائجة، كما هو الحال
في تويتر. وذكر المصدر
اسم "لوري وايرد"، وليس
"باحثة في جوجل" كما
تعلمون، وتقول "بايثون
". فقلتُ في نفسي: "هذا
مثير للاهتمام". نقرتُ
عليه، ورأيتُ موقع MTS،
لا أعرف ما هذا، فقلتُ:
"أوه، إنها لوري وايرد"
. حسناً، أعرفها الآن.
استمعتُ إلى المقطع.
>> لا يُفترض بك فعل ذلك
يا كيسي. مجرد تنبيه
سريع. لا تفعل ذلك في
المرة القادمة.
>> لا، لا، لا. هذا تعليق.
عليك فقط التعليق
بأسرع ما يمكن.
>> بالمناسبة يا كيسي،
إذا نظرتَ هنا، ما
زلتُ أراه ضمن
المواضيع الرائجة. "
باحثة في جوجل تشكك في
استخدام بايثون في
برامج علوم الحاسوب".
>> مهلاً، هل هذا HTTP؟
احذفه من هنا. هذه ليست
طريقة طلب القهوة.
نطلب القهوة عبر SSH.
terminal.shop. أجل، هل تريد
تجربة حقيقية؟ هل تريد
قهوة حقيقية؟ هل تريد
اشتراكًا رائعًا
يغنيك عن التذكر؟ أوه،
هل تريد خلطات حصرية
مع قهوة حصرية ومحتوى
حصري؟ إذًا، جرّب Kron.
لا تعرف ما هو SSH؟
حسنًا، ربما القهوة
ليست مناسبة لك.
>> استمعتُ، ورأيتُ أن
لوري كانت دبلوماسية
للغاية في كلامها. لم
تُصغه بطريقة تحريضية.
وصفت ببساطة المشاكل،
وسبب قلقها، ولو
استمعتَ إليها بتركيز
، لفهمتَ أنها لم تقل
أبدًا أن بايثون سيئة.
بل قالت إن بايثون
وجافا رائعتان، أعتقد
أنها وصفتهما بأنهما
رائعتان، فهي لا
تُعارضهما. هي فقط
تُشير إلى ضرورة معرفة
بعض الأمور الأخرى،
مثل ضرورة تعليم الناس
إدارة الذاكرة. وتقول،
كما لو أن الأمر أسهل
إذا كنت تعرف لغة
برمجة مثل C أو C ++،
لأنه من الأسهل التوسع
فيها. لقد جعلت الأمر
برمته...أجل، بالضبط.
نعم، هذا ما تصفه بدقة.
إنها تغريدة كلاسيكية
وخالدة، حقًا تغريدة
خالدة. أحسنتِ يا لوري.
أجل.
>> شكرًا لكِ يا لوري. أجل
.
>> لذا اعتقدتُ أنها
عُرضت بأسلوب
دبلوماسي للغاية، ولم
أكن أعلم أن هناك من
يشتكي منها بعد. لذلك
عندما قلتُ "أجل،
شكرًا لوري"، كنتُ
أقول ذلك لأني كنتُ
أشكركِ على طرح هذا
الأمر بأسلوب
دبلوماسي، وأعتقد أنه
صحيح ورائع. أجل،
شكرًا لكِ، صحيح؟ لذا
لم أعتقد أنني بحاجة
إلى تغريدة تشرح أي
شيء عنه لأنه مُوضح
جيدًا بالفعل في
المصدر الأصلي. حسنًا،
لكن بطريقة ما، صحيح،
بدا الأمر أشبه، كما
لو أنه عندما تقع
كارثة وطنية، فإن أول
ما يفعله أي شخص هو
محاولة ربط ما يهمه
بالحدث المهم الذي وقع
بسبب هذه الكارثة، حتى
لو كان هذا الربط
ضعيفًا للغاية. يبدو
الأمر كذلك نوعًا ما.
كأن تصريحًا منطقيًا
صدر عن شخص ما في سياق
بارز، فأصبح كل شخص،
مهما كان، يحاول
تحويله ليصبح هو ذلك
الشيء لسبب ما. هذا هو
موضوع برمجيات
>> SaaS الموجهة للشركات
على لينكدإن. يحدث هذا
في كل مرة يحدث فيها
شيء ما.
>> نعم. الأمر أشبه بقول: "
في الواقع، العلم يدور
حول هذا. وهذا كل ما
أريد التحدث عنه طوال
الوقت." حسنًا، كما
تعلمون. هذا ما أود
قوله أولًا. أعني،
هناك الكثير من
الأشياء التي يمكننا
التحدث عنها. أردت فقط
أن أشير إلى أن هذا ما
شعرت به. شعرت أن هذا
كان صعبًا نوعًا ما،
فلو استمعت إليه جيدًا
، أعتقد أنه من الصعب
الخروج بانطباع دون
تقدير ما قيل على
الأقل، والإقرار
بوجود مشكلة. لم تذكر
المشكلة الكاملة في
علوم الحاسوب، أو أن
علوم الحاسوب هي كل
شيء، ولم يُذكر أي شيء
من هذا القبيل. هي فقط
تقول إننا نواجه مشكلة
، وأعتقد أنها محقة.
لذا، أعتقد أنه من
الصعب الجدال حول صحة
كلامها، لأن لدينا
بالتأكيد فجوة في
الفهم، خاصة في عصر
الذكاء الاصطناعي حيث
يمكنك الآن...برنامج
باللغة الإنجليزية،
لا أفهم كيف يكون
التركيز المفرط على
لغات البرمجة
المتقدمة منطقيًا،
فإذا كنت ترغب حقًا في
التخصص المتقدم،
استخدم الإنجليزية
الآن. لا يبدو الأمر
منطقيًا. لا أعرف. على
أي حال، تابع بحثك على
الإنترنت، هذا مجرد
رأيي بما أنك سألت.
أتمنى لو كانت
>> هناك جامعات تتبع هذا
النهج، لكن أتمنى لو
كان لدينا تخصصان
منفصلان: علوم الحاسوب
التطبيقية وعلوم
الحاسوب
>> النظرية.
>> وهذا يشبه تخصص
الرياضيات، أليس كذلك
؟ إذا التحقت بكلية
الرياضيات،
>> يمكنك التخصص في
الرياضيات ثم التركيز
على ما إذا كانت
تطبيقية أم
>> نظرية. أعتقد أن "نظرية
" هي الكلمة الأنسب.
>> الرياضيات النظرية أو
الرياضيات التطبيقية.
>> لا يفضلون تسميتها
نظرية، فهم يقولون: "
إنها حقيقية بالنسبة
لي، حسنًا؟""حسنًا،
إلا إذا كانت أعدادًا
مركبة،
>> كما قال كين.
>> حينها تصبح أعدادًا
تخيلية، تمام؟ لذا،
أشعر أن هناك حجة قوية
تدعو إلى استخدام
الكثير من الأشخاص
للحواسيب لحل مشاكل
الناس، أليس كذلك؟
الأمر أشبه بقول:"
علينا كتابة بعض
البرامج، وإيجاد
طريقة أفضل لاستخدام
برنامج إكسل. "أو شيء
من هذا القبيل في إحدى
الشركات. مثل هذا، يجب
أن تكون برمجة إكسل
دورة كاملة في الجامعة
. ها هي ذي. بوم. رأي
اليوم. إذا كنت لا
توافق، فأنت لم تعمل
في شركة حقيقية قط. ها
هي ذي.
>> يجب أن تكون درجة
علمية لمدة سبع سنوات
لأنها حساسة للغاية
وهناك الكثير من
الأخطاء. هناك الكثير
من جداول بيانات إكسل
المعيبة.
>> نعم. مشروع التخرج،
لعبة RollerCoaster Tycoon داخل
إكسل. حتى تتمكن من فعل
شيء كهذا، فأنت لست
خبيرًا في إكسل حقًا.
>> نعم. أجل. حسنًا، عليك
أن تذهب للمنافسة في
أولمبياد إكسل تلك
الأشياء التي لديهم.
>> نعم. لديهم
>> دي جي بجدية وكأنه
مادة.
>> كدت أن أتقدم لاختبار
الأداء لذلك يا كيسي.
>> لأي شيء؟
>> مثل أولمبياد إكسل.
فكرت
>> عندما كنت في...حسنًا،
كنت في تلك الجملة،
كنت...كنت أتجول، كنت
مثل...كدت...اعتقدت أنك
ستقول واحدًا وكان مثل
اختبار أداء. كدت أفكر
في الذهاب إلى ذلك
الشيء. إنه مثل...حسنًا.
كان هناك وقت في حياتي
كنت أستخدم فيه برنامج
إكسل بكثرة لدرجة أنني
شاهدت بعض الفيديوهات
وظننت أنني أتقنت هذا
البرنامج. يمكنني
استخدامه في العمل.
أجل، أجل، أجل. مجرد
وظيفة عشوائية عملت
بها في الجامعة. كنا
نستخدم إكسل بكثرة، ثم
أحببته.
>> لكنه لم يكن تخصصي
الرئيسي. كان إكسل
محفزًا كبيرًا لي في
الجامعة. إكسل فعال. هل
يمكننا أن نشيد بـ Krazam
هنا على فيديو الماكرو
الرائع الذي يقدمه عن
إكسل؟ سنضع رابط
الفيديو في وصف هذا
الفيديو لأنه فيديو
مميز جدًا، وأعتقد أنه
ثاني فيديو رفعه Krazam
على يوتيوب، إن لم
تخني الذاكرة. إنه
فيديو رائع حقًا. لكن
النقطة الأساسية التي
كنت أحاول توضيحها قبل
أن أنشغل بإكسل،
بطريقة حماسية،
>> هل يمكننا تكرارها مرة
أخرى؟ أجل.
>> أنت ابن عمي ريكو.
>> كما تعلم، أنا في
الحقيقة، كان بإمكاني
وضع تلك الجداول في
الحقيبة. حسناً؟ كنا
سنفوز بالبطولة في ذلك
العام. تمام؟
>> آه، برايم، لمجرد أنك
شاهدت فيلم نابليون
ديناميت هذا الأسبوع،
آه، بعضنا لم يشاهده
منذ فترة وما زال
بإمكانه استحضار ذلك.
حسناً؟
>> لا أستطيع استحضار تلك
المراجع. أوه، هذا
ريكو. حسناً، فهمت.
>> أجل.
>> بصراحة، لو وضعه رئيسه
في الربع الأخير،
لكانوا فازوا
بالبطولة. هذا صحيح.
>> أعطني جداولك. هل تفهم
ما أعنيه؟ حسناً.
>> آسف. استمر. استمر.
>> علوم الحاسوب
التطبيقية، أعتقد أنه
يجب أن يكون مثل هذا،
هذا منطقي بالفعل.
والهدف هو أننا سنعلمك
فقط ما نعتقد أنه
الأشياء الأكثر
احتمالاً لتوظيفك في
مكان ما يعمل في مجال
الهندسة مباشرة بعد
المدرسة، صحيح؟ الأمر
أشبه بتركيزنا على
التدريب الداخلي.
نحاول فقط، رائع، تريد
العمل في الواجهة
الأمامية؟ رائع،
اكتشف كيف يمكنك
التعلم مثل Next.js. نحن
نعمل عليه بسرعة كبيرة
أو شيء من هذا القبيل.
لا أعرف. أو ربما
>> مجرد دورة تدريبية
مكثفة في هذه المرحلة؟
>> أجل، كنت سأطرح هذه
الحجة.
>> أربع سنوات. لم
>> لا؟ حسنًا،
>> هل سنطرح الحجة
القائلة بأن الدورات
التدريبية المكثفة
لمدة ستة أسابيع تُعدّ
الناس حقًا لوظائفهم؟
هذا ليس صحيحًا، لكنني
لا
>> أعرف ما إذا كانت أربع
سنوات ستُعدّك بشكل
صحيح أيضًا. على أي حال
، حسنًا، آسف. أكمل.
أنا آسف على المقاطعة.
الأمر
>> أشبه بدراسة
الرياضيات التطبيقية،
حيث لا تزال تأخذ بعض
دورات الرياضيات
النظرية. ليس الأمر
كما لو أنك تدرس
الرياضيات النظرية
فقط. أنا فقط أقول إن
قسم المواد
الاختيارية الخاص بك
أعتقد أنه سيكون أكثر
تركيزًا على الأشياء
التي يبحث عنها الناس
حاليًا. رائع. هذا ما
نفعله، فنحن نتعاون مع
مجموعة من الشركات.
هناك شهادات هندسية
حيث يجب عليك القيام
بتدريب داخلي إما طوال
الوقت أو في السنتين
الأخيرتين أو أيًا كان
المطلوب. إنهم
يتعاونون مع شركات
هندسية محلية للقيام
بذلك، أليس كذلك؟ في
رأيي هذا منطقي كمسار،
وهو اعتراض وجيه على
ما تراه أو ما هو
المكان المناسب
لدراسة علوم الحاسوب.
لكن كما تعلم، أعتقد
أنه من الجيد أيضًا أن
يكون لدينا أشخاص
يدرسون نظرية علوم
الحاسوب ويكتشفون
أشياء جديدة ويحاولون
فهم هياكل البيانات
بشكل أفضل، وربما
يكونون هم من يكتشفون
كيفية جعل MapReduce أكثر
كفاءة بنسبة 5%
ويتمكنون من حذف 10
مراكز بيانات من على
وجه الأرض. لا أعرف،
يبدو هذا رائعًا، كما
تعلم. هناك من يكتشفون
نظريات جديدة في علوم
الحاسوب وما شابه، لكن
لا يبدو لي أن هناك
تداخلًا كبيرًا
بينهما في برنامج
دراسي مدته أربع سنوات
. قد ينتهي بك الأمر في
أماكن مختلفة، لكن يجب
أن يبدأ كلاهما. حسنًا
، في الواقع أنا مهتم
بهذا الرأي يا كيسي.
أعتقد أنه من الجيد أن
تكون أول دورة لك في
علوم الحاسوب لغة
برمجة عالية المستوى،
حتى تتمكن من رؤية
الأشياء تظهر على
الكمبيوتر وتثير حماس
الناس. ثم أعتقد أنه
بعد ذلك مباشرة يجب أن
تدرس لغة C. سواءً كان
بايثون أو جافا أو أي
لغة أخرى. على سبيل
المثال، كانت أول دورة
لي هي بايثون، وقد
جعلتني أعشق البرمجة.
لذا، أود أن أعرف آراء
الآخرين حول هذا
الموضوع. هذا ما
>> يفعله برنامج علوم
الحاسوب في جامعة
ميريلاند. يدرسون جافا
كمقرر تمهيدي، ثم
ينتقلون إلى لغات أخرى
مثل OCaml أو Rust أو C
لاحقًا. لكن ما ذكرته
عن معسكرات التدريب
المكثفة، وأعتقد أن
هذا هو نفس النقاش
تمامًا، ولكن بالنسبة
لطلاب الجامعات، لأن
معسكرات التدريب
المكثفة غالبًا ما
تكون أشبه بـ" أنت
تتعلم React لكنك لا تعرف
حتى JavaScript "، أليس كذلك
؟ لأن React...
>> أكرهها بشدة.
>> نعم.
>> لكن لا يجب عليك أبدًا
أن تتفوه بهذه العبارة
. إذا وجدت نفسك تقولها
، فعليك أن تقول:"
حسنًا، سأصمت الآن "."
بس لا تقلها. هذا كل
شيء.
>> هذا ما ذكّرني به هذا
الأمر برمته، تلك
الفضيحة التي حدثت.
لكن كما أشار كيسي،
لماذا نتعلم لغات
برمجة عالية المستوى
إذا كان بإمكاننا
البرمجة باللغة
الإنجليزية الآن
باستخدام وكلاء؟
أعتقد أن هذا الأمر
يؤثر بي بشدة. أكاد
أقول لطلاب الجامعات
أن يركزوا على الأمور
الأساسية جدًا، لأنها
ما سيجعلهم متميزين
حقًا في رأيي. فمثلاً،
إذا تعلمت بايثون،
يمكنني كتابة بعض
أوامر بايثون، وإنشاء
موجه أوامر، وكتابة
برنامج بايثون أو ما
شابه. لكن عندما تسوء
الأمور، حينها لا يفهم
الناس كيفية التحسين
على المستوى الأدنى،
أليس كذلك؟ الأداء، كل
هذا مجال متخصص جدًا،
وإذا ذهبت إلى أي شركة
، فلن تجد سوى عدد قليل
من الأشخاص الذين
يعملون في مجال تحسين
الأداء. مثل شركة
برايم، أليس كذلك؟ في
RDP، فريقك، وفريقك
السابق، وجميع الفرق
المجاورة لك. كنتم من
فريق الأداء، لكنكم
كنتم مجرد مجموعة
صغيرة من شركة هندسية
ضخمة، أليس كذلك؟ أشعر
أنه لو ركزتم على هذا
الجانب، لكان الأمر
أسهل بكثير. ليس أسهل
بكثير، لكنني أشعر أن
لديكم فرصة أفضل
للتميز بين المرشحين.
لا أعرف، ما رأيك يا
برايان؟ حسنًا،
>> المشكلة هي أنني ما
زلت أشعر أن هذا
النقاش حول...ما زلنا
نكافح لفهم الغرض من
علوم الحاسوب حتى مع
هذه النقاشات، وهو أنه
حتى مع التطبيق، هل من
المهم حقًا تعلم لغة
برمجة منخفضة المستوى
؟ وهل تجعلك لغة
البرمجة منخفضة
المستوى تفهم ما
تتفاعل معه فعليًا،
وليس مجرد فهم تخطيط
الذاكرة مثلًا؟ أفترض
أنك عند استخدام لغة C،
ترى "أوه، إنها مجرد
مجموعة من الأصفار
والآحاد"، وأن البنية
هي "أوه، حسنًا، إنها 24
بايت". "أستطيع أن أرى
الذكريات، أتعرف؟
أشعر بتحسن، لكن هل
هذا يُعلّمك حقًا كيف
يعمل الحاسوب؟ أعلم أن
الإنترنت كان
مُستعدًا لسوء فهم
لوري في هذا الأمر،
لكن فيه شيء من
الحقيقة، بمعنى أن
طريقة عمل الحاسوب-لا
تسألني أنا، اسأل كيسي
-أمرٌ مُعقد. أعلم أن
هناك الكثير من
التعقيدات في الذاكرة
، وهناك أشياء
افتراضية تُخزّن في
الذاكرة، وما أكتبه
فعليًا مُقارنةً بما
يحدث فعليًا، هو أمرٌ
أشبه بالسحر بالنسبة
لي على الأقل. لذا يبدو
الأمر وكأن لغة C، رغم
أنها أقرب إلى ما يحدث
فعليًا، ليست هي
الحقيقة. وهذا يُعطيني
شعورًا زائفًا بأنني
أفهم. لكن أعتقد أن
الجانب الإيجابي هو
أنك تفهم، لكن هل هذا
يجعلك أكثر عملية في
النهاية؟ في 99.9%من
حالات البرمجة في
عالمنا اليوم، لا أعرف
إن كان هذا صحيحًا، أو
لنقل 80%من الحالات."
هذا لا يجعلك بالضرورة
أكثر عملية أو فائدة
في العمل، لأن المشكلة
غالبًا لا تكمن في
بنية النظام. بل في
وجود 19 خدمة لأننا
حضرنا مؤتمرًا، وما
زالت الخدمات المصغرة
تُعتبر الأفضل، والآن
علينا تصحيح مشكلة
تشعب الطلبات، فنُرسل
400 طلب داخلي لطلب
مستخدم واحد. كفى
إرهاقًا لأجهزة
الكمبيوتر! وهذا لا
علاقة له بالأداء، بل
هو نتيجة سوء اتخاذ
القرارات، ولا أعرف إن
كان المستوى المنخفض
أو العالي يُفيد في
هذه الحالات. لذا، لست
متأكدًا من وجاهة هذا
الرأي. أما بالنسبة
للجامعات، فقد كانت في
الماضي مكانًا يتعلم
فيه الأثرياء كيفية
قضاء أوقات فراغهم. لم
يكن الخريجون يتوقعون
أن يصبحوا عمليين
للغاية في وظائفهم.
>> نعم،
>> وعلوم الحاسوب تُدرك
ذلك دائمًا. لهذا
السبب، إذا حصلت على
شهادة في الهندسة
الميكانيكية أو
المدنية، اليوم، تخرج
وتستطيع القيام
بتحليل العناصر
المحدودة وديناميكا
الموائع. ثم تذهب إلى
وظيفة ولا تمارس هذه
الأشياء مرة أخرى. لن
تكون أبدًا على أرض
الواقع وتقول: "يا أخي،
انتظر لحظة. دعني
أستخدم هذا التكامل
المزدوج للحظة. أرى
نظرية غرين هنا في
جهازي الإلكتروني.""
كأن لا أحد يفعل ذلك.
لذا يبدو أن الكثير من
الأمور تتم نيابةً عنك
عبر الحاسوب. على
الأقل هذا ما يفعله
جميع أصدقائي في
الهندسة المدنية
والميكانيكية
والكهربائية، حيث يتم
كل شيء تلقائيًا. لذا،
فإن تخصصات علوم
الحاسوب، وهندسة
الحاسوب، والهندسة
المدنية، والهندسة
الميكانيكية، جميعها
موجودة لتعليمك
النظريات، ثم يعود
الأمر إليك لتصبح
شخصًا جاهزًا للعمل.
لذلك، لست متأكدًا مما
إذا كانت الجامعة
تُحدث فرقًا حقيقيًا
أم لا. أعتقد أن
المشكلة تكمن في أن
علوم الحاسوب هي
التخصص الوحيد الذي
يشهد جدلًا كبيرًا حول
ما هو مهم فيه.
>> هل هي النظرية أم
التطبيق؟ لا أتحدث من
منظور الجامعة، لأن كل
قسم رياضيات في
الجامعة يُناقش هذا
الأمر باستمرار. كل
قسم رياضيات يُناقش
هذا الأمر منذ فترة
أطول بكثير من ظهور
علوم الحاسوب نفسها.
لقد كانوا يتجادلون
حول هذا الموضوع.
>> نعم، لكن المشكلة تكمن
في أن علوم الحاسوب
تعتمد كليًا على المنح
." بالنسبة للنظريات،
لكن من المفترض أن
يكونوا مستعدين
تمامًا للجانب العملي.
إنه أمر غريب حقًا،
لأنهم يتوقعون أن يكون
جميع خريجي برامج علوم
الحاسوب بارعين
عمليًا. وهذا هو
التوقع السائد،
وأعتقد أنه أشبه
بمشكلة توقعات خاطئة،
وليس أي شيء آخر.
>> لا أعتقد أن الجانب
العملي صحيح. أعتقد أن
>> الناس يتوقعون منهم أن
يكونوا قادرين على
الاستيعاب وتعلم
كيفية أن يصبحوا
مفيدين في العمل بعد
التخرج، وهذا ليس هو
الحال دائمًا.
>> عندما نوظف خريجين جدد
، ندرك مسبقًا أنهم
سيكونون عديمي
الفائدة تقريبًا في
السنة الأولى.
>> حقًا؟ لكن ما هي
مقابلتهم؟
>> أعني، من الواضح أنها
>> مقابلات خريجي علوم
الحاسوب الجدد حول
هياكل البيانات،
وتعرف ماذا سألته؟ كيف
يصنع قائمة انتظار
طلبات غير متزامنة في
TypeScript، حسنًا؟ هذا لا
يبدو كعلوم حاسوب
نظرية على الإطلاق.
كنت أتوقع...التطبيق
العملي منذ اليوم
الأول، حسناً؟ أجريتُ
حوالي مئة مقابلة يا
صديقي. أجل،
>> هذا كان قبل ذلك بكثير.
كان ذلك في حوالي عام
2000 أو ما شابه، عندما
كنا نطرح أسئلة نظرية
بحتة حول علوم الحاسوب
، وهياكل البيانات،
والخوارزميات. لم يكن
هناك أي شيء عملي
بالمعنى الحرفي،
لأننا كنا نعلم أنهم
يفتقرون بالضرورة إلى
الخبرة. يمكنك أن تنظر
إلى تدريبهم الداخلي،
فمثلاً لديهم تدريب
واحد فقط. بصراحة،
معظم التدريبات
الداخلية سيئة نوعاً
ما، لأكون صريحاً.
لذلك، لم أكن أوليها
اهتماماً كبيراً.
لكننا كنا نعلم أن
لديهم المعرفة
النظرية والمهارات
الأساسية. لكن في
سنواتهم الأولى،
يتعلمون كل الأمور
العملية. مثل: كيف
تتواصل مع الناس؟ كيف
تُدرّس؟ كيف تنقل
مهاراتك إلى بيئة
العمل الحقيقية؟ كنا
نساعدهم على الانتقال
إلى هناك. وبعد ذلك، في
مرحلة ما، يمكنهم
البدء في الاعتماد على
نظرياتهم الأساسية
التي تعلموها في
الجامعة. هكذا كنا
نتعامل مع الأمر. لكن
هذا كان قبل حوالي عشر
سنوات. بصراحة، لا
أعرف كيف هو الوضع
الآن، لكن
>> إحدى المشكلات هنا هي
كثرة المواضيع
المتداخلة في هذا
النقاش، لدرجة أنني
لست متأكدًا من
إمكانية الحديث عن أي
منها لفترة طويلة. لذا
، أعتقد أن أهم ما أود
الإشارة إليه هو أنه
عندما نتحدث عما يجب
تعلمه في بيئة جامعية،
أو بشكل أدق عما يجب
تعلمه في أي بيئة
تعليمية، فمن المفترض
أن يكون الأمر أكثر
جدية وأقل استعجالًا.
على سبيل المثال، إذا
أردتُ تعلم لغة بايثون
، لا أعرف رأيكم، ربما
يكون هذا غير مألوف،
لكنني لا أعتقد ذلك. لم
أبرمج بلغة بايثون من
قبل، وأردتُ تجربة
القليل منها لبعض
الأمور التي كنتُ أقوم
بها على منصة Substack.
استغرق الأمر حوالي 5
دقائق. لم يستغرق تعلم
برمجة بايثون أي وقت
بالنسبة لي، صحيح؟
صحيح. لذا، فكرة أننا
بحاجة إلى التفكير
مليًا في اللغة التي
نتعلمها...يبدو لي هذا
الأمر سخيفًا بعض
الشيء، لأنه إذا كنت
مبرمجًا جيدًا،
وعندما يطلب منك أحدهم
البرمجة بلغة جديدة،
فهذا سؤال غير منطقي.
لم أجد هذا السؤال
مناسبًا أبدًا. ببساطة
، ليس كذلك. وربما هناك
بعض المصطلحات
الشائعة التي سأضطر
إلى البحث عنها لأنها
لم تخطر ببالي لأني لم
أبرمج بهذه اللغة منذ
ثلاثين عامًا أو نحو
ذلك. لذا، ربما سأرغب
في الرجوع إلى مرجع
جيد لأشخاص أحترمهم
وأسألهم: "حسنًا، ما هي
بعض المصطلحات
الشائعة التي
تستخدمونها في بايثون
؟" حسنًا، فهمت. شكرًا
لك. وهذا كل ما في
الأمر. لذا، بالنسبة
لي، عندما نتحدث عما
يجب أن يكون موجودًا
حتى في التعليم العملي
، وليس حتى الجزء
النظري، فإننا نتحدث
عن الأشياء التي تبقى
صحيحة. بمعنى آخر، إذا
تعلمتها قبل 30 عامًا،
فلن أحتاج إلى إعادة
تعلمها اليوم. هناك
سوء فهم كبير، في رأيي
، يروج له هذا الادعاء
بأن لغة C ليست لغة
برمجة منخفضة المستوى
، وهو اعتقاد خاطئ
وغير مثير للاهتمام،
لكنه غير ذي صلة
بالموضوع. مفاده أن
الأشياء التي تتعلمها
في دورة برمجة منخفضة
المستوى لم تعد صحيحة
لمجرد تغير الأجهزة.
وهذا غير صحيح تمامًا.
حرفيًا، إنه غير صحيح
تمامًا. نفس الأشياء
التي كان عليك
مراعاتها في أعوام 1968
و 1972 و 1977 و 1987 و 2012 و 2026
هي نفسها تمامًا.
الفرق الوحيد هو أن
الرسم البياني الذي
تقرأه حول كيفية ترابط
هذه الأشياء على جهازك
المحدد سيكون مختلفًا
بعض الشيء. هذا هو
الفرق واضح، أليس كذلك
؟ لكن سمِّ أي شيء
تريده. ذاكرة التخزين
المؤقت SIMD، ذاكرة
التخزين المؤقت
الحلقية، الذاكرة
الافتراضية، أيًا كان
، كان موجودًا. كان
موجودًا منذ عام 1970
على الأقل، ولكن عادةً
قبل ذلك بقليل. لذا،
إذا تعمقت في دراسة
كيفية عمل أجهزة
الكمبيوتر، أي أنك
اطلعت على نظرة عامة
لكيفية عملها، بشكل
عام، هذه هي بنيتها.
هذه هي أنواع المكونات
المختلفة التي لدينا.
لم يتغير هذا تقريبًا
على الإطلاق، كما تعلم
، خلال 50 أو 60 عامًا.
الشيء الذي تغير أكثر
هو أن كل شخص لديه الآن
أفضل ما في كل شيء في
شريحة سطح المكتب
الخاصة به. مثل كل
الأشياء التي كنت
ستقول عنها، أوه، كان
عليّ أن أمتلك CDC 6000 أو
نظامًا، كما تعلم، 36091
للحصول على تلك
الأشياء مثل ذاكرة
التخزين المؤقت
الحلقية، والآن هي
موجودة بشكل افتراضي
في جهاز الكمبيوتر
الخاص بي في المنزل أو
هاتفي الذكي أو أيًا
كان، أليس كذلك؟ هذا
هو الفرق الكبير، ولكن
هذا هو كل شيء حقًا.
إنها جميعًا نفس
المفاهيم. لذا، السبب
الذي يجعلني أعتقد،
بالعودة إلى لوري، هو
أن ما قالته لوري كان
أصليًا، وهو أن ما
قالته هو الأهم. إذا
كنت تُدرّس دورةً بلغة
مثل C، فأقول إن Rust
تُعادلها تقريبًا، مع
أنني لستُ مُبرمجًا
مُحترفًا في Rust، لكن
كما تعلم، الأمر بسيط،
تختار لغةً مثل إحدى
هذه اللغات. المهم هو
سهولة شرح كيفية
الوصول إلى هذا الجزء
من وحدة المعالجة
المركزية، وكيفية
تنفيذ عملية مُراعية
لذاكرة التخزين
المؤقت، وكيفية
استخدام تعدد الخيوط،
وكيفية تنفيذ عملية
ذرية. "صحيح؟ لأنك لست
مُجبرًا على استخدام
أسلوب تنفيذ روتيني
مُعقد، فهذه هي
الطريقة الوحيدة
للقيام بذلك في لغة
برمجة، أليس كذلك؟ في
بعض اللغات عالية
المستوى، هذا صحيح. في
لغة C، نعم، لغة C
الأساسية لا تحتوي على
هذه الأشياء، لكن هذه
ليست النقطة. النقطة
هي أنه إذا كنت تعرف
بالفعل كيفية تعلم لغة
مثل C أو Rust، فيمكنك
حينها، دون تعليم
الطالب أي شيء جديد،
البدء." الآن، سنستخدم
هذه التعليمات
المعقدة على وحدة
المعالجة المركزية
الخاصة بك باستخدام
دالة مضمنة للقيام
بهذا الشيء الذي ينظر
إلى متجه SIMD ويأخذ سجل
القناع ويُجمّع
الأصفار في مكان واحد،
ويمكنك فهم ذلك بمعرفة
لغة C التي تعلمتها
بالفعل والقليل الذي
يحاولون تعليمه لك
الآن. وهذا على الأقل
ما فهمته من كلامها،
وأعتقد أنها قالته
بوضوح تام، حتى أنها
استخدمت كلمة "مثل"
للتوسع إلى إدارة
الذاكرة أو ما شابه. ما
يميز لغة C هو سهولة
تطبيقها على أي شيء
أريد تعليمه لك. ليس
الأمر أن اللغة نفسها
تتضمن مفهوم معالجة
المتجهات، لكنني لا
أريد ذلك، لأنه لو كان
الأمر كذلك، لما
استطعت تعليمك إياه
بهذه السهولة، أليس
كذلك؟ لأنك لست مضطرًا
لتعلم كيفية عملها
فعليًا إذا كانت اللغة
تُطبّق التوجيه
المتجهي تلقائيًا. إذا
علمتك كيفية كتابة
الشيدرز، فلن تعرف
أبدًا كيف تعمل أشياء
مثل التوجيه المتجهي
لأنها مُدمجة بالفعل
في نموذج الخيوط، أو
نموذج SIMT للبرمجة،
أليس كذلك؟ لذا، أعتقد
أنها كانت مُحقة
تمامًا. أعتقد أن
المنظور الذي طرحت فيه
الموضوع كان صحيحًا
تمامًا. وأعتقد أن هذا
هو الجزء الأساسي الذي
يجب فهمه، أليس كذلك؟
وإذا تعلمت هذه
الأشياء، فأعتقد أنها
ستكون مفيدة لعقود.
بينما إذا تعلمت فقط
كيفية برمجة بايثون
والمكتبات المُرفقة
بها الآن، فأنا بصراحة
لا أعتقد أن أحدًا
سيهتم بما كانت عليه
هذه الأشياء بعد 30
عامًا. كان هذا أحد
>> الأشياء التي أعجبتني
حقًا. لذا، من الناحية
الفنية، لديّ شهادة في
هندسة الحاسوب. إنها
شهادة في الهندسة
الكهربائية وهندسة
الحاسوب. لم أدرس
تخصصًا فرعيًا في علوم
الحاسوب، وكان الأمر
ممتعًا، لأننا تعلمنا
الكثير عن أجهزة
الحاسوب وكيفية عملها.
وكان ذلك مفيدًا جدًا
لي، لأنني كنت أقول
لنفسي: "يمكنك النظر
إلى الكود وتقول:
حسنًا، سيكون بطيئًا".
نعم،
>> لأنه لا توجد طريقة
لجعل الحاسوب يقوم
بذلك دون أن يكون
بطيئًا. يمكنك ببساطة
النظر إليه وتقول: هذا
لن يكون جيدًا، وهذا
ما أفادني كثيرًا
لفترة طويلة، وهو ما
أحبه. ولم يكن مهمًا ما
هي لغة البرمجة التي
استخدمناها. همم.
>> بصراحة، كان وصفك
دقيقًا جدًا. حقًا،
>> كان وصفًا جيدًا.
>> في رأيي، كان جيدًا.
>> نعم، وهذا يعني أيضًا
أنه يمكنك فعل ذلك
بلغات أخرى، أليس كذلك
؟ ليس بالضرورة أن
تكون لغة C. يكفي أن
تكون لغة ذات امتداد
سهل للأسفل، وهو أمر
بالغ الصعوبة في
بايثون. حتى في جافا،
الأمر معقد. هذا لا
يعني أنه مستحيل، أليس
كذلك؟ لا يتعلق الأمر
بما إذا كان بإمكانك
فعل هذا الشيء بلغة
معينة أم لا. المسألة
ببساطة هي مدى سهولة
الامتداد إلى ما أحاول
تعليمه لك، أليس كذلك؟
يمكننا تعليم كل شيء
بلغة التجميع. لكنني
أعتقد أن القدرة على
قراءة لغة التجميع
كافية في هذه المرحلة.
لا أعتقد أننا بحاجة
إلى قضاء وقت في تعليم
الناس كتابة برامج
كبيرة الحجم بلغة
التجميع. لذا، فإن
تعلم لغة C وكيفية
قراءة لغة التجميع وما
ينتج عنها يبدو خيارًا
جيدًا، أو كما قلت،
لغة Rust أو ما شابهها
التي تتمتع بهذه
الإمكانية، أعتقد
أنها فكرة جيدة،
وأعتقد أن لوري كانت
محقة.
>> حسنًا، كان موضوعي
التالي هو: ما الذي
يجعل لغة C أفضل؟ وكيسي
، أعتقد أنك أجبتَ على
هذا السؤال ببراعة.
إذن، انتهينا من هذا.
والسؤال الحقيقي هو:
هل بايثون خطأ؟ أم هل
بايثون نفسها خطأ؟ أم
أن المشكلة تكمن في
عدم التركيز الكبير
على لغة C؟ وأعتقد أنك
أجبتَ على هذا السؤال
أيضًا، وهو أنه يشبه
إلى حد ما دورة
تدريبية مكثفة. تذهب
لتعلم React. إنها ليست
مهارة قابلة للتطوير
إلا إذا مارستها
كثيرًا. لذا، أنت لا
تتعلم كيفية تصميم
واجهة مستخدم رائعة،
بل تتعلم كيفية
استخدام React لتصميم
واجهة مستخدم.
>> أو COBOL، ربما تكون COBOL
هي التشبيه التاريخي.
ليس من السيئ تعلمها
في ذلك الوقت.
>> نعم. لكنها ربما لن
تكون ذات
>> صلة كبيرة بعد 30 عامًا
، أليس كذلك؟ لكن هذا
لا يعني أنه لا يجب
عليك البدء، كما أعتقد
، وفقًا لنقطة تي جيه،
لأنها ستكون بمثابة: "
مهلاً، هذه هي اللغة
التي يستخدمها الناس
اليوم. سترى الكثير
منها. من السهل عليك
عرض بعض الأشياء على
الشاشة التي ستثير
حماسك، أليس كذلك؟" كل
هذا منطقي بالنسبة لي.
لذا، لا أعتقد أن
بايثون خطأ. الخطأ
يكمن في غياب شيء آخر،
إن كان يحدث. وهو أمر
لا أعرفه، بالمناسبة،
لأني لا أعرف. كما ذكرت
لوري عن هذا التوجه
نحو التخلي عنها. لا
أعرف شيئًا عن ذلك،
لذا لا أقول إن هذا
يحدث. أنا فقط أقول،
بافتراض حدوثه، أتفق
معها على أن هذه مشكلة.
>> أما بخصوص كوبول،
فاستخدامها يُعيق
التفكير. لذا يجب
اعتبار تدريسها جريمة.
>> حسنًا.
>> إدغار ديكسترا، هذا ما
أثبته.
>> حسنًا.
>> إذا كنت تتساءل، فلا
يمكنك فعل ذلك.
>> أجل، أعتقد أنك تستطيع
إيجاد ذلك في كتابات
ديكسترا حول أي شيء
تريده تقريبًا.
>> كل شيء يُعيق العقل
حقًا. نعم، قال أيضًا
إن لغة APL مخصصة
للأشخاص الذين يريدون
اللهو والتجربة. APL خطأ
تم تحويله إلى إتقان.
أجل.
>> أجل، أعتقد ذلك. حسنًا
، كما
>> قلت، أول فصل دراسي في
علوم الحاسوب أخذته
كان عن لغة بايثون.
وقبل ذلك، كنت أعتقد
أن تعلم لغات البرمجة
يشبه تعلم الإسبانية
أو أي لغة أجنبية أخرى.
كما كان يتحدث عنها
الجميع في حياتي، صحيح
؟ لأن لا أحد في حياتي
مهتم بالتكنولوجيا.
والدي محاسب، وكنت
دائمًا أقول له: "أبي،
أنا أحب الرياضيات،
لكنني لن أحل مسائلك
عندما أكبر. إنها مملة.
" صحيح؟ وهكذا اعتقدت
أن لغات البرمجة رائعة
. كان عليّ أن أحفظ
مجموعة من قواعد اللغة
العشوائية، وهناك
ملايين الكلمات
الجديدة، وحوالي 35 ألف
استثناء لكل قاعدة،
ولا يمكنك النجاح في
الاختبار إلا إذا درست
المفردات بكثافة، ولم
أكن أرغب في ذلك. كرهت
الأمر. حسنًا، كان
عليّ أن آخذ دورة في
علوم الحاسوب كجزء من
دراستي للعلوم
الإنسانية لأنني كنت
أدرس الهندسة
الميكانيكية. لذا،
كانت إحدى دورات
التعليم العام التي
كان علينا أخذها هي
علوم الحاسوب 1. ودرست
لغة بايثون، وقلت
لنفسي: "يا إلهي،
البرمجة هي مجرد منطق
وتمييز أنماط ومحاولة
للتواصل مع الحاسوب.
هذا ممتع للغاية!". بعد
تلك الدورة، كانت
الدورة التالية هي
هياكل البيانات،
وكانت بلغة C أو C ++.
أعتقد أنها كانت بلغة C
++، لكننا استخدمنا
ميزات C بشكل أساسي. هل
تفهم ما أقصده؟ من هذا
القبيل. وبالنسبة لي،
اعتقدتُ أن هذه طريقة
فعّالة حقًا لجذب
الناس إلى مسار علوم
الحاسوب، حيث يمكنك
رؤية أشياء كهذه على
الشاشة بسرعة. يمكنك
التفاعل مع الأشياء.
يمكنك مثلًا رسم
سلحفاة تتحرك على
الشاشة وتوصل النقاط.
تقول لنفسك: "لقد
أمرتها بالانعطاف
يسارًا فانعطفت
يسارًا. هذا رائع جدًا!
". أعتقد أن جافا
سكريبت مناسبة لبعض
هذه الأشياء أيضًا.
>> مهلًا، يا ت. هـ. ،
الكثير من الناس يظنون
أنك تتحدث عن سلحفاة
حقيقية الآن. عليك أن
تشرح لهم الأمر.
>> إنها مجرد نقطة. إنها
مكتبة السلحفاة في
بايثون. لذا فهي ليست
مثيرة كما قد تظن. إنها
مجرد نقاط. مكتبة
السلحفاة. أجل،
>> آسف. لم أكن لأتخيل ذلك
أبدًا.
>> حسنًا،
>> يا تراش، هذا لأنك لست
مهندسًا حقيقيًا. أنت
لا تعرف مكتبة
السلحفاة في بايثون.
>> أتعرف ماذا؟ درستُ لغة
C ++ في الجامعة، وكادت
أن تجعلني أتخلى عن
البرمجة. كرهتها بشدة.
هل تقصد
>> في البداية أم في
المنتصف؟
>> أعتقد أنها كانت دورةً
بمستوى 300. درستُ VB
قبلها. درستُ VB ثم
انتقلنا إلى
>> C ++. وقلتُ لنفسي: "ما
فائدة علامات التلدة
هذه؟" كان الأمر
>> غريبًا. أعتقد أن
>> الجزء الذي ربما لا
يُمثل مشكلة في سياق
النقاش الأصلي هو
علامة الجمع (+) في C ++.
لذا، أعتقد أنه لو
كنتَ تُعلّم الناس C ++،
أي C ++ الحقيقية،
بالطريقة التي يُفترض
برمجتها بها الآن،
فسيكون تعليمها أمرًا
عابرًا، تمامًا مثل
بايثون. لن يهتم بها
أحد بعد 30 عامًا. كما
تعلمون، سيكرهني
الجميع لقولي هذا،
لكنني لست متأكدًا من
هذا الجزء، وربما كانت
لوري وايرد تلمح إلى
أهمية تعليم لغة C ++
استخدام علامة التلدة
(~). لا أعرف. كنت سأختلف
معها في هذا، لكن كما
تعلمون، لا
>> يبدو لي اقتراحها
سيئًا.
>> لا أعتقد أن هذا جزء من
وجهة نظرها. على أي حال
، أتفق معك يا
>> كيسي، خاصةً قبل السنة
الأخيرة، مثلاً في
سنتي الأخيرة، قمنا
بالكثير من الأمور
العملية حيث بنينا
مشاريع معًا واضطررنا
إلى تعلم كيفية
التعاون. انتهى بنا
الأمر باستخدام Git
وتعلمنا الكثير من
الأمور المفيدة جدًا
قبل دخول سوق العمل.
لنقل من السنة الأولى
إلى الثالثة مثلاً،
فإن قضاء وقت طويل في
تعليمكم كل شيء عن
علامات التلدة، ومكان
استخدامها في لغة C ++،
سيجعل البرمجة غير
ممتعة. لن يكون الأمر
ممتعًا للناس، وأعتقد
أنه غير مفيد على
الإطلاق. لن تكتسب
مهارة قابلة لإعادة
الاستخدام في النهاية
، وستكرهها. على الأقل
إذا كنت ستعلمهم مهارة
غير قابلة لإعادة
الاستخدام، فاجعلهم
متحمسين لشيء ما في
البرمجة. مثلًا، رائع،
إليك كيفية إنشاء موقع
ويب، لم يكن الأمر
ممتعًا، ولكن على
الأقل يمكنك إرسال
نموذج عند الانتهاء أو
شيء من هذا القبيل. لا
أعرف. حسنًا، عليّ أن
>> أعترف بشيء.
>> أوه لا.
>> ما هو؟ انظر، في جامعة
ولاية مونتانا، وليس
ميشيغان.
>> حسنًا. أجل. حسنًا،
>> أنا أيضًا لا أحب
جامعة ولاية ميشيغان،
لذا لا بأس.
>> أعرف. لقد بصقت على ذلك
. كنت أبصق، لقد بصقت
على ذلك الشيء.
>> هل تعلم كم عدد
الرؤساء التنفيذيين
لـ HTMX الآن الذين
ينتظرون كل كلمة
ستقولها؟
>> أوه، نعم.
>> سيأخذون رئيس مونتانا.
لقد
>> ذهبت إلى مكتبه. أعرف
مكانه بالفعل. أعرف كل
شيء عن
>> مبنى EPS Represent،
>> مباني الهندسة
والعلوم الفيزيائية،
والذي يضم أيضًا مختبر
علوم الحاسوب. حسنًا،
على أي حال، لقد
استطردت قليلًا، لكن
خلال فترة دراستي،
عندما بدأت في عام 2005،
كانت لغة جافا هي
اللغة التي يدرسونها.
وأكره الاعتراف بذلك،
لكنني كنت طالبًا
متفوقًا. في مفاهيم
لغات البرمجة، حصلت
على درجات عالية جدًا
لدرجة أنهم اضطروا إلى
استبعاد درجتي ثم
رفعوا الدرجات إلى
الدرجة التالية. حصلت
على 170%عدة مرات في
العديد من الاختبارات.
كنت بارعًا جدًا فيها.
>> لحظة، لحظة، لحظة، 170%؟
آه، بعد تعديل الدرجات
.
>> بعد استبعاد درجتي
وتعديل الدرجات
الجديد الذي رفع درجتي
إلى هذا الحد. كنت
بارعًا جدًا في هذه
الأمور. هندسة الحاسوب
، وبالتحديد في إجراء
عمليات الجمع من منظور
وحدة المعالجة
المركزية على الأعداد
الصحيحة يدويًا. لم
أسمع ما قاله تراش.
>> أنا أمزح فقط. قلت: "
ماذا حدث؟"
>> آه، ماذا حدث؟ سأخبرك
الآن. هذا ما سأقوله.
هذا أنا أصل إلى الجزء
المخزي، يا تراش.
>> حسنًا، حسنًا، حسنًا.
>> دعني أروي القصة
بطريقةٍ ما، كما تعلم،
لأنه عليك أن تروي
قصةً تجعل الناس
يقولون: "أوه، إنه
يتباهى بتواضعٍ زائف".
ثم أُقلب الأمر عليهم.
>> أجل.
>> الآن إليك الأمر: لقد
حضرتُ دورةً واحدةً
فقط في لغة C، وكانت
نوعًا ما...لقد حضرتُ
دورةً واحدةً فقط في
لغة C، وكانت نوعًا ما
...دورةً مختصرةً حيثُ
كان الأمر أشبه بـ: "
مرحبًا، إليك كيفية
إنشاء قائمة مرتبطة في
لغة C. إليك كيفية
القيام ببعض الأشياء".
ولم تكن جيدةً حقًا.
كان الأمر أشبه بدورة
تمهيدية في لغة C. كانت
دورة للمبتدئين، أشبه
بتعلم أساسيات C. بعد
تخرجي من الجامعة، كنت
أستطيع التحدث عن
ذاكرة الكومة والمكدس
وكل هذه الأمور، لكن
لم يخطر ببالي إلا بعد
سنتين تقريبًا أنني
عندما كنت أبرمج بلغة C
، كنت أكتب إما إلى
المكدس أو إلى الكومة،
لأنني لم أتعلم هذه
الأمور بشكل فعلي. لذا
، مع أنني كنت متفوقًا
في كل شيء، وأستطيع
جمع القيم يدويًا،
وأستطيع الضرب، كنت
أعرف كل هذه الأمور،
كل تلك الأساسيات. كنت
أستطيع فعل كل شيء.
لكنني لم أكن أربط
بينها. لدرجة أنني
>> لم أفهمها لأنهم لم
يدرسوا لغة C. كنت أعرف
لغة جافا فقط. وأعتقد
أن هذا كان ظلمًا
كبيرًا، إذ لم يتم
توجيهي أكثر إلى تلك
الفئة التي تأخذ
النظريات، مثل رسم
المربعات ثم تطبيقها
عمليًا في اللغة.
وأشعر حقًا أنني فوّت
الكثير من الفرص، لأن
جميع المهام العملية،
مثل إنشاء أشجار AVL
وغيرها، كانت تُنفذ
بلغة جافا. كل ما
أنجزته كان بلغة جافا
باستثناء الشبكات،
التي كانت بلغة سي. لكن
كما ذكرت، أنت فقط
تتعامل مع مكتبة net.h،
ولا تفعل شيئًا فعليًا
سوى إنشاء حزم UDP. لذا
فالأمر مختلف تمامًا.
أشعر فعلًا أنني حُرمت
من الكثير، وما زلت
أنظر إلى ذلك على أنه
مضيعة للوقت. كنت
أتعلم أشياء كثيرة لم
أكن أدرك مدى أهميتها،
لكنني كنت أجتاز
الامتحانات بنجاح تام
، لكنني لم أتعلم
شيئًا حقيقيًا لأنني
لم أكن أربط الأمور
ببعضها. لذا أنظر إلى
ذلك على أنه فشل ذريع،
وأوافقك الرأي تمامًا
، أتمنى لو كانت هناك
المزيد من الأمور التي
تُساعدني على فهم
الأمور بشكل أعمق، كما
تقول. هذا منطقي
تمامًا عند مقارنته
بتجربتي السابقة. أجل،
أستطيع تسريب الشفرة
البرمجية. أجل، أستطيع
تسريبها ببراعة. كنتُ
ذلك الشخص الذي يستطيع
موازنة شجرة، لكن ليس
لديه أدنى فكرة عن أي
شيء آخر.
>> حسنًا، وأعتقد أن هذا
يقودنا إلى فكرة لوري
عن التمديد التنازلي،
وهو الجزء الأساسي،
أليس كذلك؟ الأمر أشبه
بأنك تعلمت بعضًا من
لغة C، لكن لا يمكنك
ببساطة أن تقول: "ها هي
لغة C. حسنًا، أنت الآن
تعرف كل شيء." بل هي
أشبه بـ: "لا، لغة C هي
مجرد...ما نقوله حقًا
هو أنها طريقة، إطار
عمل، يُسهّل تعليم هذه
المفاهيم التي تحتاج
إلى معرفتها. ومرة
أخرى، ليس الأمر كما
لو أنك لا تستطيع
تعليمهم لغات أخرى.
على سبيل المثال، أحد
الأشياء التي فعلتها
على Substack، هو أنني قلت:
" ها هو برنامج بايثون
هذا. إنه بطيء للغاية
في جمع الأرقام،
ويمكننا أن نوضح السبب
. "حسنًا، يمكننا
استخدام Cython لتحويل
كود بايثون إلى لغة C.
يمكنك استخدام PyPy أو
ما شابه، لكن هذه
خطوات إضافية عليك
القيام بها. بدلًا من
ذلك، يمكننا ببساطة
الكتابة بهذه اللغة
دون تغيير أي شيء.
يمكننا فقط توضيح
كيفية القيام بذلك من
هنا. إنها خطوة قصيرة
جدًا، أليس كذلك؟ إنها
لغة ملائمة للغاية،
وتُحقق توازنًا
مثاليًا. لهذا السبب
ظلت لغةً راسخة. هناك
العديد من التطبيقات
المكتوبة بها، لذا من
السهل الاطلاع على
أمثلة لأنظمة تشغيل
مكتوبة بها، لأنها
اللغة المستخدمة في
كتابة أنظمة التشغيل،
إلخ. وكما تعلم، تحاول
هذه اللغات، ولغات
سلالة C مثل لغات Rust
اللاحقة، أن تكون لغة C
مع بعض الإضافات
الجديدة دون المساس
بجوهرها، أليس كذلك؟
إنها ببساطة أسهل في
هذا المجال التعليمي.
أعتقد ذلك. أعتقد أن
هذه هي الخلاصة، وإذا
طلبت مني تدريس نفس
الشيء بلغة جافا،
فسيكون الأمر أصعب
عليّ.
>> يا رفاق، إذا أعجبتكم
هذه الحلقة، يمكنكم
مشاهدة باقيها على
سبوتيفاي، ولا تنسوا
الإعجاب والاشتراك.
رائع! أراكم لاحقًا.
>> بدأت يومي. خمسة أخطاء
برمجية على شاشتي.
قهوة في الطرفية وشعري
. أعيش الحلم.
Ask follow-up questions or revisit key timestamps.
يتناول الفيديو نقاشاً حاداً حول تعليم علوم الحاسوب، مستنداً إلى وجهة نظر الباحثة لوري وايرد التي ترى أن البدء بتعليم بايثون بدلاً من C أو C++ يضر بالطلاب لأنه يبعدهم عن فهم كيفية عمل أجهزة الكمبيوتر فعلياً. يناقش المتحدثون الفرق بين علوم الحاسوب التطبيقية والنظرية، وتحديات سوق العمل، وأهمية المهارات الأساسية في إدارة الذاكرة وتحسين الأداء، مع مشاركة تجارب شخصية حول فوائد البدء بلغات عالية المستوى ثم الانتقال للغات منخفضة المستوى لربط النظرية بالتطبيق.
Videos recently processed by our community