لكنها لم تتطور بأي شكل من الأشكال. من لغات البرمجة الأولى إلى يومنا هذا ، التعليقات على الكود هي مجرد نص ثابت (مع بعض الاستثناءات القليلة التي سأناقشها).

حسنًا ، ما الأشياء الأخرى التي يمكنك تحسينها أو الخروج بها؟ دعونا نتأمل في هذا الموضوع - هل من الممكن تحسين تجربتنا بطريقة ما في التفاعل مع هذا الجانب المهم الذي يتم تجاهله في كثير من الأحيان في البرمجة مثل الوثائق في التعليمات البرمجية ، أو في تعليق بسيط.
بادئ ذي بدء ، سيتم تخصيص فقرتين لموضوع عنوان هذه المقالة. نعم ، لأنه لا توجد حقيقة قصة التطوير هذه ، لذلك يمكنك تسمية العنوان الاستفزازي. إخلاء بسيط: معرفتي محدودة (تنازلي في الخبرة) على اللغات التالية: خبرة واسعة: TS ، JS ، Rust ، متوسطة: PHP ، C ++ ، صغيرة: Go ، Java.
لذلك ، كل ما لدينا هو هذا: JSDoc مهجورة وعربات التي تجرها الدواب ، ماتت أخيرًا في عصر TypeScript ، من خلال الطريقة التي لا يوجد بها TSDoc أقل وعربات التي تم التخلي عنها. بالنسبة لـ PHP ، يوجد PHPDoc ، والذي كان مفيدًا بشكل سيء عندما أستخدم الرمز في هذه اللغة. أعترف أن لدي أصغر تجربة في C ++ ، لذلك لم أسمع شيئًا من هذا القبيل ، وأن CppDoc الموجود في Google لا يسبب أي شيء سوى ابتسامة حزينة. الأكثر تطورا في هذا الصدد هو الصدأ ، كما هو الحال دائما. يحتوي على نظام RustDoc ممتاز ، لكن لسوء الحظ ، ليس دائمًا مريحًا ولا يزال مدعومًا بشكل ضعيف من قِبل IDE.
وبالتالي ، فإن الصورة العامة حزينة إلى حد ما ، ولم تتغير البنية الأساسية للتعليقات حول الكود من بداية تاريخ البرمجة. تبدو التعليقات كما كانت منذ 90 عامًا في Plancalkul الشرطية كما هو الحال في رمز المجمّع لجهاز الكمبيوتر Apollo 11 lunar module.
(الصورة من shopify.com)القصة انتهت. الآن ، ما الخطأ في حقيقة أن التعليقات مجرد نص ثابت؟ أليس النص الثابت مثاليًا ويمكن تحسين شيء عليه؟ اخترعوا بعض النصوص التشعبية و HTML ، الإنترنت هو كل هذا. ولكن من يحتاج كل هذا؟ ما هو الصعب جدًا كتابة عناوين URL يدويًا؟ كان جيل الألفية كسولًا جدًا.
بالطبع كان تهكمًا. ولكن ما علاقة النص التشعبي بالتعليقات على الكود؟ دعونا نفكر في ما هي المشاكل التي تم حل النص التشعبي وهل هناك أي مشاكل مماثلة عند استخدام تعليقات الكود؟
لذلك ، تحول النص التشعبي النص الثابت إلى نص مع الارتباطات التشعبية. أسهل طريقة لفهم فوائد ذلك هي قراءة مقالة Wikipedia. على سبيل المثال ، حول
مصادم هادرون الكبير . بعد البدء في قراءة المقال ، سيتفهم معظم الناس ماهية البروتونات والأيونات إذا لم يفوتوا دروس الفيزياء. ولكن بعد ذلك تظهر كلمة "Hadron". ما هو وكيف يمكن للقارئ معرفة ذلك؟ إذا كان نصًا ثابتًا ، فلن يكون هناك الكثير من الخيارات ، باستثناء العثور على مكان (في المكتبة؟) نص آخر حيث يقول ما هو Hadron. ولكن الحمد لله هذا ليس كذلك ، ويمكننا فقط النقر على الرابط التشعبي.
دعونا نفكر ، هل هناك مثل هذه الحالات في البرمجة؟ الآلاف منهم. للعثور على مثال ، انتقل إلى
أي مستودع مفتوح تقريبًا ، مثل Linux kernel. ذهبت إلى
الملف الأول الذي حصلت عليه
static void irq_cpu_rmap_notify() { }
لذا ، تخيل أنك انضممت إلى المشروع مؤخرًا وفجأة حدث شيء ما. التراجع يؤدي إلى هذه الوظيفة ، لكنك لا تعرف أي شيء عنها. ماذا يجب ان تفعل؟ هذا صحيح - استخدم كل ما لديك لفهم معنى هذه الوظيفة - الكود نفسه والتعليقات عليه. النص البشري عموماً أسهل في الفهم من الكود نفسه ، أليس كذلك؟ لذلك ، نبدأ بقراءة التعليق. وبعد ذلك يقع مزاجنا تحت القاعدة.
أي نوع من IRQ؟ ليس لديك فكرة عما هو عليه. ما هي الخطوات التالية؟ الاتصال وتشتيت الزملاء أكثر خبرة؟ يمكنك بالطبع ، ولكن لا تريد حقا. أم أنهم في إجازة. البحث عن طريق الكود؟ ستجد الآلاف من الإشارات إلى هذا الاختصار ، وهذا سيجعلك مكتئبًا. حسنًا ، دعنا نقول إنك نفدت نصف قاعدة الكود وتجد على ما يبدو شرحًا لما يعنيه هذا IRQ. ولكن يحدث أيضًا أن هذا التفسير هو اختصار آخر لـ IRQ ، والذي له معنى مختلف تمامًا! حسنًا ، الحالة الأخيرة نادرة جدًا ، لكنها لا تزال كذلك.
ولكن ماذا لو نقرت على كلمة IRQ وبأعجوبة ، فإن IDE الخاص بك سوف يأخذك إلى مكان تعريف هذا الاختصار؟ سيكون ذلك رائعا ، أليس كذلك؟ وإلى جانب ذلك ، ببساطة ، ليست أكثر تعقيدًا من النص التشعبي.
فلماذا في عام 2020 لن يصنع المبرمجون أنفسهم مثل هذه الأداة؟ أود تسليط الضوء على كل من الكبسولة والجملة السابقة جريئة. والسبب في ذلك لغزا كبيرا بالنسبة لي. ربما هناك مثل IDEs الأخرى ، لكنني لم أجد شيئًا لـ VSCode. لذلك ، جعلت
هذا التمديد بنفسي. أدعوك لاختبار والتعبير عن رأيك.
لكن دعنا نستمر.
عند قراءة جزء الشفرة أعلاه ، أو بالأحرى التعليق ، تنشأ الأسئلة من خلال كل كلمة تقريبًا. على سبيل المثال ، أين تقع بنية irq_affinity_notify هذه؟ أو لماذا في عام 2020 ، لا يمكنني النقر فوق irq / management.c حتى يقوم IDE بنقل وسرعة نقلي إلى هذا الملف؟ هذا أيضا لغز كبير بالنسبة لي. لذلك ، في الإضافة الخاصة بي ، تم حل الأول بالفعل ، ولكن حتى الآن فقط لجافا سكريبت و TypeScript (ما يلي: C / C ++ ، Rust ، Java ، Go) ، والثاني بأنه أقل أهمية سيتم حله أيضًا ، ولكن بعد ذلك بقليل.
لا أرغب في زيادة تحملك بحفنة من النص ، لذلك عليك فقط إدراج gif مع بضعة أمثلة أخرى عن العمل:

أنا خائف جداً من النقد والتعليقات السامة ، لكنني أريد أن أعرف أكثر ما رأيك في هذا؟