برمجة الروبوت: توقف عن تصميم البرامج لغير الروبوتيين
تم نشر النسخة الأصلية من هذا المنشور بواسطة Benjie Holson على Substack هنا، وتتضمن كاريكاتير Benjie الأصلي كجزء من سلسلته عن الروبوتات والشركات الناشئة.
لقد عملت على هذه الفكرة لعدة أشهر قبل أن أقرر أنها خطأ. في المرة الثانية التي سمعت فيها أحداً يذكر ذلك، فكرت: “هذا غريب، هاتان المجموعتان كان لهما نفس الفكرة. ربما يجب أن أخبرهم أن الأمر لم ينجح معنا”. وفي المرة الثالثة والرابعة أدرتُ عينيَّ وتجاهلتُ الأمر. في المرة الخامسة التي سمعت فيها عن مجموعة تعاني من هذا الخطأ، قررت أن الأمر يستحق كتابة مدونة بمفردها. أنا أسمي هذه الفكرة “الأسطوري غير الآلي”.
الخطأ
الفكرة هي كالتالي: برمجة الروبوتات أمر صعب. وهناك بعض الأشخاص الذين يتمتعون بمهارات غامضة حقًا وحاصلين على درجة الدكتوراه، وهم باهظون الثمن حقًا ويبدو أنهم مطلوبون لسبب ما. ألن يكون جميلاً لو تمكنا من صنع الروبوتات بدونها؟
1 ماذا لو كان بإمكان الجميع القيام بالروبوتات؟ سيكون ذلك رائعًا، أليس كذلك؟ يجب أن نصنع إطارًا برمجيًا حتى يتمكن غير الروبوتيين من برمجة الروبوتات.
هذه الفكرة قريبة جدًا من الفكرة الصحيحة لدرجة أنه من الصعب معرفة سبب عدم نجاحها. على السطح، ليس كذلك
خطأ: مع تساوي كل الأمور الأخرى، سيكون من الجيد أن تكون برمجة الروبوتات أكثر سهولة. المشكلة هي أننا لا نملك وصفة جيدة لصنع الروبوتات العاملة. لذلك نحن لا نعرف كيفية جعل هذه الوصفة أسهل في المتابعة. من أجل تبسيط الأمور، ينتهي الأمر بالناس إلى إزالة الأشياء التي قد يحتاجها الأشخاص، لأنه لا أحد يعرف على وجه اليقين ما هو مطلوب على الإطلاق. إنه مثل قول أنك تريد اختراع عباءة الاختفاء وتريد أن تكون قادرًا على صنعها من مواد يمكنك شراؤها من Home Depot. بالتأكيد، سيكون هذا أمرًا رائعًا، لكن إذا اخترعت عباءة غير مرئية تتطلب بعض الزئبق والنيوديميوم لتصنيعها، فهل ستتخلى عن الوصفة؟
في مجال الروبوتات، يرتكز هذا الخطأ على ملاحظة حقيقية وحقيقية للغاية: برمجة الروبوتات
يكون انه جدا صعب. المشهور بصعوبته. سيكون أمرًا رائعًا جدًا لو كانت برمجة الروبوتات أسهل. المشكلة هي أن برمجة الروبوتات تحتوي على نوعين مختلفين من الأجزاء الصلبة.
الروبوتات صعبة لأن العالم معقد
ستوديو مور / جيتي إيماجيس
النوع الأول من الجزء الصعب هو أن الروبوتات تتعامل مع العالم الحقيقي، ولا يتم استشعاره بشكل كامل أو تحفيزه بشكل كامل. الحالة العالمية القابلة للتغيير هي أسلوب برمجي سيء لأنه من الصعب حقًا التعامل معها، ولكن بالنسبة لبرامج الروبوت، فإن العالم المادي بأكمله هو حالة عالمية قابلة للتغيير، ولا يمكنك سوى مراقبتها بشكل غير موثوق وتأمل أن تقارب أفعالك ما تريد تحقيقه. غالبًا ما يكون تشغيل الروبوتات في حدود ما يمكن لأي شخص أن يفكر فيه، ويتطلب المرونة لاستخدام أي وسيلة إرشادية قد تنجح في حل مشكلتك الخاصة. هذا ال
جوهري تعقيد المشكلة: تعيش الروبوتات في عوالم معقدة، ولكل حل عملي هناك ملايين الحلول غير الناجحة، والعثور على الحل المناسب أمر صعب، وغالباً ما يعتمد بشكل كبير على المهمة والروبوت وأجهزة الاستشعار والبيئة.
ينظر الناس إلى هذا التحدي، ويرون أنه صعب للغاية، ويقررون أنه، بالتأكيد، ربما يستطيع بعض الروبوتات الفاخرة حله في سيناريو واحد معين، ولكن ماذا عن الأشخاص “العاديين”؟ ويقولون: “يجب أن نجعل هذا ممكنًا لغير المتخصصين في مجال الروبوتات”. أطلق على هؤلاء المستخدمين اسم “غير الروبوتيين الأسطوريين” لأنه بمجرد قيامهم ببرمجة الروبوت، أشعر بذلك
يصبح علماء الروبوتات. أليس أي شخص يبرمج روبوتًا لغرض ما هو عالم روبوت؟ توقفوا عن حراسة البوابة أيها الناس.
لا تصمم للمجموعات غير المتبلورة
أسميهم أيضًا “أسطوريين” لأن عبارة “غير الروبوتيين” عادةً ما تكون مجموعة غامضة وغير متبلورة. لا تصمم للمجموعات غير المتبلورة. إذا لم تتمكن من تسمية ثلاثة أشخاص حقيقيين (تحدثت معهم) تكون واجهة برمجة التطبيقات الخاصة بك مخصصة لهم، فأنت تصمم لمجموعة غير متبلورة ولن يحبذ واجهة برمجة التطبيقات الخاصة بك إلا الأشخاص غير المتبلورين.
ومع وضع هذه المجموعة الضبابية من المستخدمين في الاعتبار (ورؤية مدى صعوبة كل شيء)، يعتقد الناس، “بالتأكيد يمكننا أن نجعل هذا الأمر أسهل للجميع من خلال تغطية هذه الأشياء بواجهات برمجة تطبيقات بسيطة؟”
رقم لا لا يمكنك ذلك. توقف عن ذلك.
لا يمكنك التغلب على التعقيد الجوهري باستخدام واجهات برمجة التطبيقات البسيطة لأنه
إذا كانت واجهات برمجة التطبيقات الخاصة بك بسيطة، فلن تتمكن من تغطية مدى تعقيد المشكلة. سينتهي بك الأمر حتمًا بواجهة برمجة تطبيقات جميلة المظهر، مع مكالمات مثل “grasp_object” و”approach_person” والتي يتم عرضها بشكل جيد في انطلاقة hackathon ولكنها تستمر حوالي 15 دقيقة لشخص يحاول بالفعل إنجاز بعض الأعمال. سيتبين أنه بالنسبة لتطبيقهم المحدد، فإن “grasp_object()” تضع 3 أو 4 افتراضات خاطئة حول “grasp” و “الكائن” ولا يعمل معهم على الإطلاق.
المستخدمون لديك أذكياء مثلك تمامًا
ومما يزيد الأمر سوءًا الافتراض السائد بأن هؤلاء الأشخاص أقل ذكاءً (اقرأ: أقل ذكاءً) من مبدعي هذا الإطار السحري.
2 سيؤدي هذا الشعور بالتفوق إلى تشبث المصممين بشدة بأشياءهم الجميلة والبسيطة “grasp_object()” ومقاومة إضافة المقابض والوسائط اللازمة لتغطية المزيد من حالات الاستخدام والسماح للمستخدمين بتخصيص ما يحصلون عليه.
ومن المفارقات أن هذا يفرض مجموعة من التعقيد على المستخدمين الفقراء لواجهة برمجة التطبيقات (API) الذين يتعين عليهم التوصل إلى حلول ذكية لجعلها تعمل على الإطلاق.
ستوديو مور / جيتي إيماجيس
إن الأمر المحزن والمالح والمرير على كعكة الإحباط هذه هو أنه حتى لو تم تنفيذها بشكل جيد، فإن الهدف من هذا النوع من الإطار سيكون توسيع مجموعة الأشخاص الذين يمكنهم القيام بالعمل. ولتحقيق ذلك، قد تضحي ببعض الأداء الذي لا يمكنك الحصول عليه إلا من خلال التخصص الفائق في حل مشكلتك. إذا كنا نعيش في عالم حيث يمكن لخبراء الروبوتات برمجة الروبوتات التي تعمل بشكل جيد، ولكن كان هناك طلب كبير على الروبوتات بحيث لم يكن هناك ما يكفي من الوقت لهؤلاء الأشخاص للقيام بكل البرمجة، فسيكون هذا حلاً رائعًا.
3
الحقيقة الواضحة هي أنه (خارج البيئات المقيدة حقًا مثل خلايا التصنيع) حتى أفضل مجموعة من الروبوتات الحقيقية المخلصة وحاملة البطاقات التي تعمل بأفضل ما في وسعها تكافح من أجل الاقتراب من مستوى الأداء الذي يجعل الروبوتات قابلة للتطبيق تجاريًا، حتى مع وجود جداول زمنية طويلة وجبال من التمويل.
4 ليس لدينا أي الإرتفاع للتضحية بالقوة والفعالية من أجل السهولة.
ما هي المشكلة التي نحلها؟
فهل يجب أن نتخلى عن جعل الأمر أسهل؟ هل تطوير الروبوتات متاح فقط لمجموعة صغيرة من النخب الحاصلين على درجة الدكتوراه؟
5 لا لكلاهما! لقد عملت مع الكثير من المتدربين الجامعيين الذين كانوا قادرين تمامًا على القيام بالروبوتات.6 أنا نفسي أتعلم في الغالب ذاتيًا برمجة الروبوتات.7 في حين أن هناك الكثير من التعقيد الجوهري في جعل الروبوتات تعمل، إلا أنني لا أعتقد أن هناك أكثر من تطوير ألعاب الفيديو على سبيل المثال.
في مجال الروبوتات، كما هو الحال في كل الأشياء، تساعد الخبرة، وبعض الأشياء قابلة للتعليم، وعندما تتقن العديد من المجالات، يمكنك رؤية الأشياء تبدأ في الارتباط ببعضها البعض. هذه المهارات ليست سحرية أو فريدة بالنسبة للروبوتات. نحن لسنا مميزين كما نحب أن نعتقد.
ولكن ماذا عن جعل برمجة الروبوتات أسهل؟ هل تتذكر العودة إلى بداية المنشور عندما قلت أن هناك نوعين مختلفين من الأجزاء الصلبة؟ الأول هو التعقيد الجوهري للمشكلة، وسيكون ذلك صعبًا مهما حدث.
8 لكن الثاني هو التعقيد العرضي، أو كما أحب أن أسميه، تعقيد BS الغبي.
تعقيد BS غبي
الروبوتات هي أنظمة غير متزامنة وموزعة وفي الوقت الفعلي مزودة بأجهزة غريبة. سيكون من الصعب تكوين كل ذلك لأسباب BS غبية. تحتاج برامج التشغيل هذه إلى العمل بالنكهة الغريبة لنظام التشغيل Linux الذي تريده في الوقت الفعلي الصعب لعناصر التحكم الخاصة بك، وسيكون الحصول على كل هذا الإعداد أمرًا صعبًا لأسباب غبية. أنت تسيء استخدام شبكة Wi-Fi حتى تتمكن من التجول بسلاسة دون انقطاع، ولكن شبكة Wi-Fi في Linux لن ترغب في القيام بذلك. ملفات السجل الخاصة بك ضخمة ويجب عليك تحميلها في مكان ما حتى لا تملأ الروبوت الخاص بك. ستحتاج إلى التكامل مع بعض الأشياء السحابية أو غيرها والتعامل مع BS الغبي الخاص بها.
9
ستوديو مور / جيتي إيماجيس
هناك الكثير من الأشياء التي يجب التعامل معها قبل أن تصل إلى التعقيد في التعامل مع التدوير ثلاثي الأبعاد، والإطارات المرجعية المتحركة، ومزامنة الوقت، وبروتوكولات المراسلة. هذه الأشياء لها تعقيد جوهري (عليك أن تفكر في وقت ملاحظة شيء ما وكيفية التفكير فيه مع تحرك أشياء أخرى) وتعقيد BS الغبي (هناك خطأ غريب لأن شخصًا ما قام بضرب مصفوفتين تحويليتين بترتيب خاطئ والآن أنت) هل تحصل على رسالة خطأ مفادها أنه في بعض البروتوكولات لم يتم تطبيع الكواترنيون؟)
10
أحد أكبر التحديات التي تواجه برمجة الروبوتات هو الخوض في بحر من الـ BS الغبية التي تحتاج إلى الجدال حولها من أجل تحقيق ذلك
يبدأ العمل على مشكلة الروبوتات المثيرة للاهتمام والصعبة.
لذا فإن الإرشاد البسيط لإنشاء واجهات برمجة التطبيقات الجيدة هو:
صمم واجهات برمجة التطبيقات الخاصة بك لشخص ذكي مثلك، ولكنه أقل تسامحًا مع BS الغبي.
هذا يبدو عالميًا بدرجة كافية لدرجة أنني أميل إلى تسميته
قانون هولسون لتصميم API المسموح به.
عندما تستخدم الأدوات التي صنعتها، فأنت تعرفها جيدًا بما يكفي لتعرف الحواف الخشنة وكيفية تجنبها.
لكن الحواف الخشنة هي الأشياء التي يجب الاحتفاظ بها في ذاكرة المبرمج أثناء استخدام نظامك. إذا كنت تصر على صنع إطار عمل للروبوتات
11، يجب أن تسعى جاهدة لجعلها قوية قدر الإمكان بأقل قدر من BS الغبي. القضاء على التعقيد العرضي في كل مكان يمكنك. تريد إنشاء واجهات برمجة التطبيقات التي تتمتع بأقصى قدر من المرونة ولكن مع إعدادات افتراضية جيدة. يعجبني بناء جملة الوسيطة الافتراضية لـ python لهذا لأنه يعني أنه يمكنك كتابة واجهات برمجة التطبيقات التي يمكن استخدامها مثل:
من الممكن أن تكون الأمور سهلة بسيطة
و السماح للأشياء المعقدة. ومن فضلك، من فضلك، من فضلك لا تقم بإنشاء واجهات برمجة تطبيقات متعالية. شكرًا!
1. ومن المفارقات أنه في كثير من الأحيان يكون حاملو الدكتوراه باهظ الثمن والذين لديهم معرفة غامضة هم الذين يقترحون ذلك.
2. لماذا هو دائما إطار؟
3. الاستثناء الذي قد يثبت القاعدة هو أشياء مثل أتمتة خلايا التصنيع التقليدية. هذا هو المكان الذي توجد فيه الحلول، ولكن الحد الأقصى للتوسع هو تكلفة الإعداد. أنا لست خبيرًا في هذا المجال، ولكنني أشعر بالقلق من أن التثبيت المادي والامتثال للسلامة قد لا يزال يقلل من تكلفة برمجة البرامج.
4. كما أعلم من تجربتي الشخصية.
5. أو شهادات دكتوراه غير فاخرة في هذا الشأن؟
6. أظن أن العديد من طلاب المدارس الثانوية المتفوقين سيكونون قادرين أيضًا على القيام بهذا العمل. ومع ذلك، نظرًا لأن Google لا تميل إلى توظيفهم، فليس لدي أمثلة جيدة.
7. كانت دراستي في الهندسة الميكانيكية ولم أحصل على درجة الدكتوراه مطلقًا، على الرغم من أن واجباتي الدراسية في الهندسة الميكانيكية تضمنت بعض أساسيات البرمجة.
8. ما لم نقم بإنشاء ذكاء اصطناعي فعال للأغراض العامة. من الغريب أن أضيف هذا التحذير، لكن احتمال أن يأتي هذا في الواقع للروبوتات في حياتي يبدو ممكنًا أكثر بكثير مما كان عليه قبل عامين.
9. وإذا لم تكن محظوظًا، فقد تم تصميم واجهة برمجة التطبيقات (API) الخاصة بها من قبل شخص يعتقد أنه أكثر ذكاءً من عملائه.
10. هذه النكهة الخاصة لتعقيد BS هي السبب وراء كتابتي لـposetree.py. إذا كنت تستخدم الروبوتات، فيجب عليك التحقق من ذلك.
11. وهو أمر محفوف بالمخاطر، إذا حكمنا من خلال آثار شركات الروبوتات الميتة.
من مقالات موقعك
مقالات ذات صلة حول الويب