تعليق (برمجة الحاسوب)

في برمجة الحاسوب ، يُعدّ التعليق نصًا مُضمّنًا في شفرة المصدر يتجاهله المُترجم ( المُجمّع أو المُفسّر ). عمومًا، يُعتبر التعليق شرحًا توضيحيًا يهدف إلى تسهيل فهم الشفرة على المُبرمج ، وغالبًا ما يُفسّر جانبًا غير واضح في شفرة البرنامج (بدون التعليق). [ 1 ] في هذه المقالة، يُشير مصطلح "التعليق" إلى المفهوم نفسه في لغات البرمجة ، ولغات الترميز ، وملفات الإعدادات ، وأي سياق مُشابه. [ 2 ] تقوم بعض أدوات التطوير ، بخلاف مُترجم شفرة المصدر، بتحليل التعليقات لتوفير إمكانيات مثل إنشاء وثائق واجهة برمجة التطبيقات (API) ، والتحليل الثابت ، ودمج أنظمة التحكم في الإصدارات . يختلف بناء جملة التعليقات باختلاف لغات البرمجة، إلا أن هناك أنماطًا مُتكررة في بناء الجملة بين اللغات، بالإضافة إلى جوانب مُتشابهة مُرتبطة بمحتوى التعليق.
تتيح المرونة التي توفرها التعليقات تنوعًا واسعًا في أسلوب كتابة المحتوى. ولتعزيز التوحيد، تُعدّ قواعد الأسلوب جزءًا شائعًا من دليل أسلوب البرمجة . مع ذلك، فإن أفضل الممارسات محل خلاف وتناقض. [ 3 ] [ 4 ]
السمات المشتركة
يُحدد دعم التعليقات البرمجية من قِبل كل لغة برمجة. تختلف الميزات باختلاف اللغات، ولكن هناك العديد من السمات المشتركة التي تنطبق على جميع اللغات.
تدعم معظم لغات البرمجة التعليقات متعددة الأسطر (المعروفة أيضًا بالتعليقات المتسلسلة) و/أو التعليقات أحادية السطر. يُحدد التعليق المتسلسل بنص يُشير إلى بدايته ونهايته. ويمكن أن يمتد على عدة أسطر أو يشغل أي جزء من السطر. تسمح بعض اللغات بتداخل التعليقات المتسلسلة بشكل متكرر، بينما لا تسمح بذلك لغات أخرى. [ 5 ] [ 6 ] [ 7 ] ينتهي التعليق السطري بنهاية سطر النص. في اللغات الحديثة، يبدأ التعليق السطري بفاصل، بينما تُحدد بعض اللغات القديمة عمودًا يُعتبر النص اللاحق عنده تعليقًا. [ 7 ] تدعم العديد من اللغات نوعي التعليقات المتسلسلة والسطرية ، باستخدام فواصل مختلفة لكل منهما. على سبيل المثال، تدعم لغات C و C++ والعديد من مشتقاتها التعليقات المتسلسلة المحددة بـ `<br>` والتعليقات السطرية المحددة بـ `<br>` . بينما تدعم لغات أخرى نوعًا واحدًا فقط من التعليقات. [ 7 ]/**///
يمكن تصنيف التعليقات إلى نوعين: تعليقات تمهيدية وتعليقات مضمنة، وذلك بناءً على موقعها ومحتواها بالنسبة لشيفرة البرنامج. التعليق التمهيدي هو تعليق (أو مجموعة تعليقات مترابطة) يقع بالقرب من بداية موضوع برمجي ذي صلة، مثلاً قبل تعريف رمز أو في بداية ملف. أما التعليق المضمن فهو تعليق يقع على نفس سطر شيفرة البرنامج التي يشير إليها، وإلى يمينها. [ 8 ] يمكن تمثيل كل من التعليقات التمهيدية والمضمنة إما كتعليقات سطرية أو تعليقات كتلية. على سبيل المثال:
/* * تعليق كتلة المقدمة */ bool foo () { return true ; /* تعليق كتلة مضمنة */ }// // تعليق سطر المقدمة // bool bar () { return false ; // تعليق سطر مضمن }أمثلة على الاستخدام
وصف النية
يمكن للتعليقات أن توضح نية المؤلف - أي سبب وجود الكود على هذا النحو. يرى البعض أن وصف وظيفة الكود أمرٌ زائد عن الحاجة. فالحاجة إلى شرح الوظيفة دليل على أنها معقدة للغاية وتحتاج إلى إعادة صياغة.
- "لا توثق الكود السيئ - أعد كتابته." [ 9 ]
- "التعليقات الجيدة لا تكرر الكود أو تشرحه، بل توضح الغرض منه. ينبغي أن تشرح التعليقات، على مستوى تجريدي أعلى من الكود، ما تحاول القيام به." [ 10 ]
تسليط الضوء على الممارسات غير المألوفة
قد توضح التعليقات سبب اختيار كتابة كود يخالف الأعراف أو أفضل الممارسات. على سبيل المثال:
المتغير الثاني مُخفَّض بسبب أخطاء الخادم الناتجة عن إعادة استخدام بيانات النموذج. لا توجد وثائق متاحة حول مشكلة سلوك الخادم، لذا يتم تجاوزها برمجيًا. vtx = server.mappath ( "local settings" )يوضح المثال أدناه سبب اختيار فرز الإدراج بدلاً من الفرز السريع ، حيث أن الأول، من الناحية النظرية، أبطأ من الأخير.
list = [ f ( b ), f ( b ), f ( c ), f ( d ), f ( a ), ... ] ; // نحتاج إلى دالة فرز مستقرة. بالإضافة إلى ذلك، لا يهم الأداء حقًا. insertion_sort ( list );وصف الخوارزمية
يمكن للتعليقات وصف الخوارزمية باستخدام الشفرة الزائفة . يُمكن القيام بذلك قبل كتابة الشفرة كمسودة أولية. إذا تُركت التعليقات في الشفرة، فإنها تُسهّل مراجعة الشفرة من خلال السماح بمقارنة الشفرة الناتجة بالمنطق المقصود. على سبيل المثال:
/* تكرار عكسي لجميع العناصر التي يُرجعها الخادم (يجب معالجتها بترتيب زمني) */ for ( i = ( numElementsReturned - 0 ); i >= 1 ; i -- ) { /* معالجة بيانات كل عنصر */ updatePattern ( i , returnedElements [ i ]); }أحيانًا، يحتوي الكود على حل مبتكر أو جدير بالذكر يستدعي تعليقًا توضيحيًا. قد تكون هذه الشروحات مطولة وتتضمن رسومًا بيانية وبراهين رياضية رسمية. قد يصف هذا ما يفعله الكود بدلًا من الغرض منه، ولكنه قد يكون مفيدًا لصيانة الكود. قد ينطبق هذا على مجالات المشكلات المتخصصة للغاية أو التحسينات أو البنى أو استدعاءات الدوال نادرة الاستخدام. [ 11 ]
مراجع
عندما يعتمد جزء من الكود على معلومات من مرجع خارجي، فإن التعليقات تُشير إلى ذلك المرجع. على سبيل المثال، كعنوان URL أو اسم كتاب ورقم صفحة.
التعليق خارج الموضوع
من الممارسات الشائعة لدى المطورين تعطيل سطر أو أكثر من التعليمات البرمجية عن طريق التعليق . يضيف المبرمج صيغة تعليق تحوّل التعليمات البرمجية إلى تعليقات، بحيث لا يتم تنفيذ ما كان قابلاً للتنفيذ أثناء التشغيل. تُستخدم هذه التقنية أحيانًا لتحديد سبب الخطأ البرمجي. فمن خلال التعليق المنهجي على أجزاء من البرنامج وتشغيلها، يمكن تحديد موقع التعليمات البرمجية المصدرية المُسببة للخطأ. [ 12 ]
تدعم العديد من بيئات التطوير المتكاملة إضافة التعليقات وإزالتها من خلال إجراءات واجهة المستخدم المريحة مثل اختصار لوحة المفاتيح .
بيانات تعريف المتجر
يمكن للتعليقات تخزين بيانات وصفية حول الكود. تشمل البيانات الوصفية الشائعة اسم المؤلف الأصلي والقائمين على الصيانة اللاحقة، وتواريخ كتابة الكود وتعديله، ورابطًا إلى وثائق التطوير والاستخدام، ومعلومات قانونية مثل حقوق النشر ورخصة البرمجيات . وفي حالات نادرة، يمكن تضمين بيانات ثنائية مشفرة نصيًا .
تقوم بعض أدوات البرمجة بكتابة البيانات الوصفية في الكود على شكل تعليقات. [ 13 ] على سبيل المثال، قد تقوم أداة التحكم في الإصدارات بكتابة بيانات وصفية مثل المؤلف والتاريخ ورقم الإصدار في كل ملف عند إضافته إلى المستودع. [ 14 ]
التكامل مع أدوات التطوير
أحيانًا، تستخدم أدوات التطوير الأخرى غير المترجم - الأداة الأساسية التي تستخدم الكود - المعلومات المخزنة في التعليقات. قد تتضمن هذه المعلومات بيانات وصفية (تُستخدم غالبًا بواسطة مولد الوثائق) أو إعدادات الأداة.
تدعم بعض محررات شفرة المصدر إمكانية التهيئة عبر البيانات الوصفية في التعليقات. [ 15 ] ومن الأمثلة على ذلك ميزة "modeline" في محرر Vim ، والتي تُهيئ معالجة أحرف الجدولة. على سبيل المثال:
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4
إنشاء وثائق الدعم
يقوم مولد توثيق واجهة برمجة التطبيقات ( API ) بتحليل المعلومات من قاعدة التعليمات البرمجية لإنشاء توثيق واجهة برمجة التطبيقات. يدعم العديد منها قراءة المعلومات من التعليقات، وغالبًا ما يقوم بتحليل البيانات الوصفية، للتحكم في محتوى وتنسيق المستند الناتج.
على الرغم من أن البعض يدّعي أن توثيق واجهات برمجة التطبيقات (API) يمكن أن يكون بجودة أعلى عند كتابته بطريقة تقليدية ويدوية، إلا أن البعض الآخر يرى أن تخزين معلومات التوثيق في تعليقات الكود يُبسّط عملية التوثيق، ويزيد من احتمالية تحديث التوثيق باستمرار. [ 16 ] ومن الأمثلة على ذلك Javadoc وDdoc و Doxygen و Visual Expert و PHPDoc . وتدعم لغات Python و Lisp و Elixir و Clojure أشكالًا مختلفة من سلاسل التوثيق . [ 17 ] وتُطبّق لغات C# و F# و Visual Basic .NET ميزة مشابهة تُسمى "تعليقات XML"، والتي يقرأها IntelliSense من تجميعة .NET المُجمّعة . [ 18 ]
التصور
يمكن تضمين تمثيل فني باستخدام رموز ASCII مثل الشعار أو الرسم التخطيطي أو مخطط التدفق في التعليق. [ 19 ]
يوضح جزء الكود التالي مسار عملية نص برمجي لإدارة النظام ( ملف نص برمجي لنظام ويندوز ). على الرغم من أن قسمًا يُشير إلى الكود يظهر كتعليق، إلا أن الرسم التخطيطي موجود في قسم بيانات XML (CDATA) ، وهو ليس تعليقًا بالمعنى التقني، ولكنه يؤدي الغرض نفسه هنا. [ 20 ] مع أن هذا الرسم التخطيطي كان من الممكن أن يكون ضمن تعليق، إلا أن هذا المثال يوضح حالةً اختار فيها المبرمج عدم استخدام تعليق كوسيلة لتضمين الموارد في الكود المصدري. [ 20 ]
<!-- بداية: wsf_resource_nodes --> <resource id= "ProcessDiagram000" > <![CDATA[ HostApp (Main_process) | V script.wsf (app_cmd) --> ClientApp (async_run, batch_process) | | V mru.ini (mru_history) ]]> </resource>عملية تطوير الوثائق
أحيانًا، تصف التعليقات عمليات التطوير المتعلقة بالبرنامج. على سبيل المثال، قد تصف التعليقات كيفية بناء البرنامج أو كيفية إرسال التغييرات إلى مسؤول صيانة البرنامج .
توسيع بناء جملة اللغة
أحيانًا، يُعاد استخدام الكود المُنسق كتعليق لنقل معلومات إضافية إلى المُترجم، مثل التعليقات الشرطية. ولذلك، قد يُمثل التركيب الذي يُشير عادةً إلى تعليق كود البرنامج، وليس كود التعليق. قد يكون هذا التركيب طريقة عملية للحفاظ على التوافق مع إضافة وظائف إضافية، لكن البعض يعتبر هذا الحل حلًا ترقيعيًا . [ 21 ]
ومن الأمثلة الأخرى توجيهات المترجم الفوري :
- يُستخدم " shebang " في نظام Unix
#!في السطر الأول من البرنامج النصي للإشارة إلى المفسر المراد استخدامه. - "التعليقات السحرية" التي تحدد ترميز ملف المصدر، [ 22 ] على سبيل المثال PEP 263 الخاص بلغة بايثون. [ 23 ]
يوضح النص البرمجي أدناه لنظام شبيه بنظام يونكس كلا الاستخدامين التاليين:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- print ( "Testing" )يبحث مُصرّف gcc (منذ عام 2017) عن تعليق في عبارة switch إذا كان أحد الحالات ينتقل إلى الحالة التالية. إذا لم يُعثر على إشارة صريحة إلى هذا الانتقال، يُصدر المُصرّف تحذيرًا بشأن مشكلة برمجية محتملة. يُعدّ إدراج مثل هذا التعليق حول الانتقال إلى الحالة التالية عرفًا راسخًا، وقد قام المُصرّف بتقنين هذه الممارسة. [ 24 ] على سبيل المثال:
التبديل ( الأمر ) {case CMD_SHOW_HELP_AND_EXIT :do_show_help ();/* السقوط من خلال */حالة CMD_EXIT :do_exit ();استراحة ؛}تخفيف التوتر
للتخفيف من التوتر أو محاولة إضفاء روح الدعابة، يضيف المبرمجون أحيانًا تعليقات حول جودة الكود، أو الأدوات، أو المنافسين، أو أصحاب العمل، أو ظروف العمل، أو غيرها من المواضيع التي يمكن اعتبارها غير مهنية - وأحيانًا يستخدمون ألفاظًا نابية . [ 25 ] [ 26 ]
وجهات النظر المعيارية
توجد آراء معيارية وآراء راسخة متعددة بشأن الاستخدام الأمثل للتعليقات في شفرة المصدر. [ 27 ] [ 28 ] بعض هذه الآراء غير رسمي ويعتمد على التفضيل الشخصي، بينما يُنشر بعضها الآخر أو يُعمم كإرشادات رسمية لمجتمع معين. [ 29 ]
الحاجة إلى تعليقات
تتباين آراء الخبراء حول مدى ملاءمة التعليقات في شفرة المصدر، وتوقيت استخدامها. [ 9 ] [ 30 ] يرى البعض ضرورة كتابة شفرة المصدر بأقل عدد ممكن من التعليقات، انطلاقًا من مبدأ أن تكون الشفرة واضحة بذاتها . [ 9 ] بينما يقترح آخرون ضرورة إضافة تعليقات وافية (إذ ليس من النادر أن تحتوي أكثر من 50% من الأحرف غير المسافات البيضاء في شفرة المصدر على تعليقات). [ 31 ] [ 32 ]
بين هذين الرأيين، هناك تأكيد على أن التعليقات ليست مفيدة ولا ضارة في حد ذاتها، وأن المهم هو صحتها وتوافقها مع شفرة المصدر، وحذفها إذا كانت زائدة عن الحاجة، أو مفرطة، أو صعبة الصيانة، أو غير مفيدة لأي سبب آخر. [ 33 ] [ 34 ]
تُستخدم التعليقات أحيانًا لتوثيق العقود في منهجية التصميم التعاقدي للبرمجة.
مستوى التفاصيل
قد يختلف مستوى التفاصيل والوصف بشكل كبير تبعاً للجمهور المستهدف للبرنامج واعتبارات أخرى.
على سبيل المثال، سيكون التعليق التالي في لغة جافا مناسبًا في نص تمهيدي مصمم لتعليم البرمجة للمبتدئين:
String s = "Wikipedia" ; /* يُسند القيمة "Wikipedia" إلى المتغير s. */مع ذلك، فإن هذا المستوى من التفصيل غير مناسب في سياق كود الإنتاج، أو في حالات أخرى تتطلب مطورين ذوي خبرة. فهذه الأوصاف المبسطة لا تتوافق مع المبدأ التوجيهي: "التعليقات الجيدة... توضح الغرض". [ 10 ] علاوة على ذلك، في بيئات البرمجة الاحترافية، يكون مستوى التفصيل عادةً محددًا بدقة لتلبية متطلبات أداء محددة من قِبل العمليات التجارية. [ 32 ]
الأنماط
باعتبارها نصوصًا حرة، يمكن تنسيق التعليقات بطرق متنوعة. يفضل الكثيرون أسلوبًا متسقًا، غير مُعيق، سهل التعديل، ويصعب تغييره. ولأن البعض يرى أن مستوىً من الاتساق قيّم ومفيد، يُتفق أحيانًا على أسلوب تعليقات متسق قبل بدء المشروع أو يتبلور مع تقدم عملية التطوير. [ 35 ]
تُظهر أجزاء كود C التالية بعضًا من التنوع في أسلوب التعليقات الكتلية:
/* هذا هو نص التعليق. *//***************************** * * * هذا نص التعليق. * * * *****************************/تؤثر عوامل مثل التفضيل الشخصي ومرونة أدوات البرمجة على أسلوب كتابة التعليقات. فعلى سبيل المثال، قد يفضل المبرمجون الذين يستخدمون محرر شفرة مصدرية لا يقوم بتنسيق التعليقات تلقائيًا، كما هو موضح في المثال الثاني، الأسلوب الأول.
يدعو مستشار البرمجيات والمعلق التقني ألين هولوب [ 36 ] إلى محاذاة الحواف اليسرى للتعليقات: [ 37 ]
/* هذا هو الأسلوب الذي أوصى به هولوب للغتين C و C++. * وهو موضح في "Enough Rope"، في القاعدة 29. *//* هذه طريقة أخرى للقيام بذلك، وهي موجودة أيضًا في لغة C. ** يسهل القيام بذلك في المحررات التي لا تقوم تلقائيًا بإضافة مسافة بادئة للأسطر من الثاني إلى الأخير من التعليق بمقدار مسافة واحدة من الأول. ** كما أنها مستخدمة في كتاب هولوب، في القاعدة 31. */في العديد من لغات البرمجة، يمكن أن يتبع التعليق السطري كود البرنامج بحيث يكون التعليق مضمنًا في الكود ويصف عادةً الكود الموجود على يساره. على سبيل المثال، في لغة بيرل هذه:
print $s . "\n" ; # أضف سطرًا جديدًا بعد الطباعةإذا كانت لغة البرمجة تدعم كلاً من التعليقات السطرية والتعليقات الكتلية، فيمكن لفرق البرمجة الاتفاق على اصطلاح لاستخدام كل منهما. على سبيل المثال، تُستخدم التعليقات السطرية فقط للتعليقات البسيطة، بينما تُستخدم التعليقات الكتلية للتعليقات ذات المستوى الأعلى.
الوسم
تُصنّف بعض التعليقات باستخدام بادئة - وسم ، أو وسم برمجي [ 38 ] [ 39 ] أو رمز. [ 40 ] يقوم بعض المحررين بتمييز التعليق بناءً على وسمه.
تشمل العلامات الشائعة الاستخدام ما يلي:
- خطأ، تصحيح — يشير إلى وجود خطأ معروف ، وربما يعني ذلك أنه يجب إصلاحه
- ملاحظة: يشير هذا إلى وجود عمل يتعين القيام به لإصلاح خطأ برمجي.
- الاختراق، والارتجال، والحلول المؤقتة — تشير إلى حل قد يُعتبر منخفض الجودة
- TODO — يصف بعض الأعمال التي يتعين القيام بها
- ملاحظة - معلومات عامة نسبياً
- تم التراجع — عكس أو "إعادة تنفيذ" الكود السابق
على سبيل المثال:
int current_stock_price () { return 100 ; // TODO implement API call to fetch actual live price }أمثلة على بناء الجملة
تختلف صيغة التعليقات باختلاف لغات البرمجة. توجد أنماط شائعة تستخدمها لغات متعددة، بينما يوجد تنوع كبير في الصيغة بين اللغات عمومًا. ولتقليل طول هذا القسم، تم تجميع بعض الأمثلة حسب اللغات ذات الصيغة المتشابهة أو المتقاربة جدًا. أما الأمثلة الأخرى فهي خاصة بلغات معينة ذات صيغة أقل شيوعًا.
لغات الأقواس المعقوفة
تستخدم العديد من لغات البرمجة التي تعتمد على الأقواس المعقوفة ، مثل C وC++ ومشتقاتها، الأقواس المعقوفة لتمييز التعليقات السطرية، //والتعليقات الكتلية /*. */في الأصل، كانت لغة C تفتقر إلى التعليقات السطرية، ولكن تمت إضافتها في C99 . ومن أبرز هذه اللغات: C وC++ و C# و D و Java و JavaScript و Swift . على سبيل المثال:
/* * التحقق مما إذا كان الحد الأقصى للعمليات يتجاوز الحد الأقصى المسموح به، مع التأكد من استبعاد المستخدم الجذر. * هذا ضروري لتمكين تسجيل الدخول من تعيين حد العمليات لكل مستخدم إلى قيمة أقل من العمليات التي يُشغلها المستخدم الجذر. */ bool isOverMaximumProcessLimit () { // TODO implement }تسمح بعض اللغات، بما في ذلك D [ 41 ] و Swift [ 42 ] ، بتداخل التعليقات الكتلية بينما لا تسمح لغات أخرى بذلك، بما في ذلك C و C++.
مثال على الكتل المتداخلة في لغة D:
// تعليق سطري /* تعليق كتلة */ /+ بداية الكتلة الخارجية /+ الكتلة الداخلية +/ نهاية الكتلة الخارجية +/مثال على الكتل المتداخلة في لغة Swift:
/* هذه بداية التعليق الخارجي. /* هذا هو التعليق المتداخل. */ هذه نهاية التعليق الخارجي. */كتابة البرامج النصية
من الأنماط الشائعة في العديد من لغات البرمجة النصية استخدام الفاصلة ( , ) لفصل التعليقات السطرية #. أما دعم التعليقات الكتلية فيختلف من لغة لأخرى. ومن أبرز هذه اللغات: Bash و Raku و Ruby و Perl و PowerShell و Python و R.
مثال في لغة R:
# هذا تعليق print ( "هذا ليس تعليقًا" ) هذا تعليق آخركتلة في لغة روبي
يُفصل التعليق المضمن بعلامة ` =begin--` =endالتي تبدأ سطرًا. على سبيل المثال:
يضع "ليس تعليقًا" # هذا تعليق يضع "ليس تعليقًا" = بداية كل ما يُكتب في هذه الأسطر هو للقارئ البشري فقط = نهاية يضع "ليس تعليقًا"كتلة في بيرل
بدلاً من استخدام بنية التعليقات التقليدية، تستخدم لغة بيرل ترميز التوثيق البسيط القديم (POD) الخاص بالبرمجة الأدبية . [ 43 ] على سبيل المثال: [ 44 ]
=item Pod::List->new() إنشاء كائن قائمة جديد. يمكن تحديد الخصائص من خلال مرجع تجزئة كما يلي: my $list = Pod::List->new({ -start => $., -indent => 4 }); =cut sub new { ... }يستخدم راكو (المعروف سابقًا باسم بيرل 6) نفس التعليقات السطرية وتعليقات POD المستخدمة في بيرل ، ولكنه يضيف نوعًا من التعليقات الكتلية القابلة للتكوين: "التعليقات متعددة الأسطر / المضمنة". [ 45 ] يبدأ هذا النوع بـ #`ثم قوس مفتوح وينتهي بقوس مغلق مطابق. [ 45 ] على سبيل المثال:
#`{{ "commenting out" this version toggle-case(Str:D $s) يُبدّل حالة كل حرف في سلسلة نصية: my Str $toggled-string = toggle-case("mY NAME IS mICHAEL!"); }} sub toggle-case ( Str:D $s ) #`( this version of parens is used now ) { ... } كتلة في PowerShell
يدعم PowerShell التعليقات المترابطة المحددة بعلامة `--` <#و `--` #>. على سبيل المثال:
# تعليق من سطر واحد <# تعليق متعدد الأسطر #>كتلة في بايثون
على الرغم من أن لغة بايثون لا تدعم التعليقات الكتلية [ 46 ]، إلا أنه غالبًا ما يُستخدم نص حرفي مُمثَّل بثلاث علامات اقتباس لهذا الغرض. [ 47 ] [ 46 ] في الأمثلة أدناه، تعمل النصوص الثلاثية المُحاطة بعلامات اقتباس مزدوجة كتعليقات، ولكنها تُعامل أيضًا كنصوص توثيقية (docstrings) .
""" في أعلى الملف، هذا هو توثيق الوحدة النمطية """class MyClass : """Class docstring"""def my_method ( self ): """Method docstring"""ترميز المتصفح
تختلف لغات الترميز عمومًا في صيغة التعليقات، لكن بعض تنسيقات الترميز البارزة على الإنترنت، مثل HTML و XML، تُحدد التعليقات الكتلية بعلامة <b> <!--ولا تدعم التعليقات السطرية. مثال بلغة XML:-->
<!-- حدد السياق هنا --> <param name= "context" value= "public" />لضمان التوافق مع SGML ، لا يُسمح باستخدام الواصلة المزدوجة (--) داخل التعليقات.
يوفر ColdFusion صيغة مشابهة لتعليقات HTML ، ولكنه يستخدم ثلاثة شرطات بدلاً من اثنتين. يسمح CodeFusion بالتعليقات المتداخلة.
كتلة في لغة هاسكل
في لغة هاسكل، يتم تحديد التعليق الكتلي بواسطة علامتي {-و -}. على سبيل المثال:
{- هذا تعليق على عدة أسطر -} -- وهذا تعليق على سطر واحد putStrLn "Wikipedia" -- هذا تعليق آخرتوفر لغة هاسكل أيضًا أسلوبًا برمجيًا واضحًا للتعليق يُعرف باسم "أسلوب بيرد". [ 48 ] تُفسَّر الأسطر التي تبدأ بـ >`<br>` على أنها شيفرة برمجية، بينما يُعتبر كل ما عداها تعليقًا. ومن المتطلبات الإضافية وجود سطر فارغ قبل وبعد كتلة الشيفرة البرمجية.
في أسلوب بيرد، يجب ترك مسافة فارغة قبل الرمز. > fact :: Integer -> Integer > fact 0 = 1 > fact ( n + 1 ) = ( n + 1 ) * fact n ويجب عليك ترك سطر فارغ بعد الكود أيضاً. يمكن أيضًا إنجاز البرمجة الأدبية باستخدام LaTeX . مثال على التعريف:
\usepackage { verbatim } \newenvironment { code }{ \verbatim }{ \endverbatim }يُستخدم على النحو التالي:
% ملف مصدر LaTeX. تحسب الدالة \verb |fact n| قيمة $ n ! $ إذا كانت $ n \ ge 0 $ . إليك تعريفها: \\ \begin { code } fact :: Integer -> Integer fact 0 = 1 fact ( n + 1 ) = ( n + 1 ) * fact n \end { code } إليك شرحًا إضافيًا باستخدام علامات \LaTeX {}كتلة في لغة Lua
يدعم Lua التعليقات المضمنة بعلامة --[[و ]][ 49 ] على سبيل المثال:
--[[ تعليق طويل متعدد الأسطر ]]كتلة في SQL
/**/في بعض إصدارات لغة SQL، يُدعم استخدام التعليقات النصية بين قوسين معقوفين ( ). تشمل هذه الإصدارات: Transact-SQL و MySQL و SQLite و PostgreSQL و Oracle . [ 50 ] [ 51 ] [ 52 ] [ 53 ] [ 54 ]
يدعم MySQL أيضًا التعليقات السطرية المحددة بواسطة #.
صيغة أقل شيوعًا
APL
تستخدم لغة APL⍝ كلمة "lamp" للتعليق على سطر. على سبيل المثال:
⍝ الآن اجمع الأرقام: ج ← أ + ب ⍝ الجمعفي اللهجات التي تحتوي على العناصر الأولية ⊣("يسار") و ⊢("يمين")، يمكن أن تكون التعليقات في كثير من الأحيان داخل العبارات أو منفصلة عنها، على شكل سلاسل نصية يتم تجاهلها:
د ← ٢ × ج ⊣ 'حيث' ⊢ ج ← أ + 'مُقيد' ⊢ بأبل سكريبت
يدعم AppleScript كلاً من التعليقات السطرية والتعليقات الكتلية. على سبيل المثال:
# تعليق سطري (في الإصدارات اللاحقة) (* يعرض هذا البرنامج تحية. *) on greet ( myGreeting ) display dialog myGreeting & " world!" end greet-- عرض رسالة الترحيب ( " مرحبا" )أساسي
استخدمت الإصدارات المبكرة من لغة BASICREM (اختصارًا لكلمة remark) للتعليق على السطر.
١٠ ملاحظة: يُظهر برنامج BASIC هذا استخدام عبارات PRINT و GOTO. ١٥ ملاحظة: يملأ الشاشة بعبارة "HELLO". ٢٠ اطبع "HELLO" . ٣٠ اذهب إلى ٢٠في الإصدارات اللاحقة، بما في ذلك Quick Basic و Q Basic و Visual Basic (VB) و VB.NET و VBScript و FreeBASIC و Gambas ، يُفصل التعليق السطري بعلامة 'اقتباس مفردة ('). مثال في VB.NET:
Public Class Form1 Private Sub Button1_Click ( sender As Object , e As EventArgs ) Handles Button1 . Click ' تعليق سطر جديد ، إزالة تعليق السطر القديم، لا يزال مدعومًا MessageBox . Show ( "Hello, World" ) ' عرض مربع حوار مع تحية End Sub End Classتكوين Cisco IOS و IOS-XE
يمكن استخدام علامة التعجب ( ! ) لتمييز التعليقات في وضع تكوين جهاز توجيه سيسكو، إلا أن هذه التعليقات لا تُحفظ في الذاكرة غير المتطايرة (التي تحتوي على ملف تهيئة بدء التشغيل)، كما أنها لا تُعرض بواسطة الأمر "show run". [ 55 ] [ 56 ]
من الممكن إدراج محتوى قابل للقراءة البشرية وهو في الواقع جزء من التكوين، ويمكن حفظه في ملف تكوين بدء التشغيل NVRAM عبر:
- يُستخدم الأمر "description" لإضافة وصف إلى تكوين واجهة أو جار BGP
- يُستخدم مُعامل "name" لإضافة ملاحظة إلى مسار ثابت
- أمر "الملاحظة" في قوائم الوصول
! الصق النص أدناه لإعادة توجيه حركة المرور يدويًا تكوين ت int gi0/2 لا إغلاق ip route 0.0.0.0 0.0.0.0 gi0/2 name ISP2 لا يوجد مسار IP 0.0.0.0 0.0.0.0 gi0/1 الاسم ISP1 int gi0/1 أغلق مخرج فورتران
يوضح جزء الكود التالي المكتوب بلغة فورتران أن صيغة التعليقات تعتمد على الأعمدة. Cيؤدي وجود حرف في العمود الأول إلى اعتبار السطر بأكمله تعليقًا. في فورتران 77 ، تشير علامة النجمة (*) في العمود الأول أيضًا إلى وجود تعليق.
C C الأسطر التي تبدأ بالحرف 'C' في العمود الأول (أي عمود التعليقات) هي تعليقات C WRITE ( 6 , 610 ) 610 FORMAT ( 12 H HELLO WORLD ) ENDيوضح جزء الكود التالي المكتوب بلغة فورتران 90 صيغة تعليق سطرية أكثر حداثة: النص التالي !.
! برنامج تعليق comment_test print '(A)' , 'Hello world' ! أيضًا تعليق end programلغة فورتران الحرة، التي تم تقديمها أيضًا مع فورتران 90، تدعم فقط هذا النمط الأخير من التعليقات.
على الرغم من أنها ليست جزءًا من معيار فورتران، إلا أن العديد من مُجمِّعات فورتران تُتيح تمريرة مُعالِجة مُسبقة اختيارية تُشبه لغة سي . يُمكن استخدام هذه التمريرة لإضافة تعليقات على الكتل البرمجية.
#if 0 هذا تعليق كتلة يمتد على عدة أسطر . #endif برنامج comment_test اطبع ' (A)' ، ' Hello world' ! أيضًا تعليق نهاية البرنامجMATLAB
في لغة برمجة MATLAB ، يشير الرمز '%' إلى تعليق من سطر واحد. كما تتوفر التعليقات متعددة الأسطر عبر الأقواس %{ و %} ويمكن تداخلها، على سبيل المثال
% هذه هي المشتقات لكل حد d = [ 0 - 1 0 ]؛%{ %{ ( مثال على تعليق متداخل، المسافة البادئة لأغراض تجميلية (ويتم تجاهلها).) % } نقوم بتكوين المتتالية باتباع صيغة تايلور . لاحظ أننا نتعامل مع متجه . % } seq = d . * ( x - c ) . ^ n ./ ( factorial ( n ) )نجمع للحصول على تقريب تايلور approx = sum ( seq )نيم
يُحدد Nim التعليقات السطرية باستخدام ` #--` والتعليقات الكتلية باستخدام `--` #[و`--` ]#. يمكن تداخل التعليقات الكتلية.
يحتوي Nim أيضًا على تعليقات توثيقية تستخدم علامات Markdown و ReStructuredText مختلطة . يستخدم تعليق التوثيق السطري الرمز '##'، بينما يستخدم تعليق التوثيق الكتلي الرمزين '##[' و']##'. يمكن للمترجم إنشاء توثيق HTML و LaTeX و JSON من تعليقات التوثيق. تُعد تعليقات التوثيق جزءًا من شجرة بناء الجملة المجردة ، ويمكن استخراجها باستخدام وحدات الماكرو. [ 57 ]
## توثيق الوحدة *ReSTructuredText* و **MarkDown** # هذا تعليق، ولكنه ليس تعليقًا توثيقيًا.نوع Kitten = كائن ## توثيق نوع age : عدد صحيح ## توثيق الحقلproc purr ( self : Kitten ) = ## توثيق الدالة echo "Purr Purr" # هذا تعليق، ولكنه ليس تعليقًا توثيقيًا.# هذا تعليق، ولكنه ليس تعليقًا توثيقيًا.أوكاميل
يدعم OCaml التعليقات المتداخلة. على سبيل المثال:
codeLine (* تعليق المستوى 1(* تعليق المستوى 2*)*)باسكال، دلفي
في لغتي باسكال ودلفي ، يُفصل التعليق الكتلي بالفاصلة ` {\` و`\` }، وكبديل للحواسيب التي لا تدعم هذه الأحرف، (*تُدعم *)أيضًا الفاصلة `\`. أما التعليق السطري فيُفصل بالفاصلة `\` \\. [ 58 ] في عائلة لغات نيكلاوس ويرث الأكثر حداثة (بما في ذلك مودولا-2 وأوبرون )، تُفصل التعليقات بالفاصلة `\` و`(* \` *). [ 59 ] [ 60 ] يمكن أن تكون التعليقات متداخلة. على سبيل المثال:
(* اختبار الأقطار *) فرق العمود := عمود الاختبار - العمود ؛ إذا ( الصف + فرق العمود = صف الاختبار ) أو .......PHP
يمكن أن تكون التعليقات في PHP إما على شكل أقواس معقوفة (سطر أو كتلة)، أو على شكل سطر مفصول بالحرف #l. لا يمكن تداخل الكتل. بدءًا من PHP 8، #يُعتبر الحرف a تعليقًا فقط إذا لم يتبعه مباشرةً الحرف [. وإلا، فإنه يُحدد سمة، ويستمر هذا التحديد حتى الحرف التالي ]. على سبيل المثال:
/** * يحتوي هذا الصنف على نموذج توثيق. * @author غير معروف */ #[ Attribute ] class MyAttribute { const VALUE = 'value' ; // تعليق سطري بنمط C++ private $value ; # تعليق سطري بنمط script public function __construct ( $value = null ) { $this -> value = $value ; } }شرطة مزدوجة
مجموعة لغات برمجة متنوعة نسبيًا تُستخدم --لكتابة التعليقات في سطر واحد. من أبرز هذه اللغات: Ada و Eiffel و Haskell و Lua و SQL و VHDL . يختلف دعم التعليقات في الأسطر. مثال بلغة Ada:
-- مهمة مراقب الحركة الجوية تستقبل طلبات الإقلاع والهبوط. نوع المهمة : Controller ( My_Runway : Runway_Access ) -- مدخلات المهمة لتمرير الرسائل المتزامنة: entry Request_Takeoff ( ID : in Airplane_ID ; Takeoff : out Runway_Access ); entry Request_Approach ( ID : in Airplane_ID ; Approach : out Runway_Access ); end Controller ;قضايا أمنية
في اللغات المفسرة ، وبحسب إمكانيات نظام التشغيل وخيارات المسؤول، قد يكون كامل كود المصدر، بما في ذلك التعليقات، قابلاً للعرض للمستخدم النهائي للبرنامج . وقد يُشكل هذا ثغرة أمنية ، عندما تحتوي التعليقات على معلومات سرية أو عندما يتم تعطيل أجزاء سرية من الكود بتعليقات فقط. [ 61 ]
انظر أيضاً
ملاحظات ومراجع
- ↑ بيني جروب، أرمسترونج تاكانج (2003). صيانة البرمجيات: المفاهيم والتطبيق . وورلد ساينتيفيك. ص 7، يرجى البدء من 120-121. ISBN 978-981-238-426-3.
- ↑ جانجولي، مادهوشري (2002). الاستفادة من JSP . نيويورك: وايلي. ISBN 978-0-471-21974-3.هيويت ، إيبن (2003). جافا لمطوري كولدفيوجن . أبر سادل ريفر: بيرسون إديوكيشن. ISBN 978-0-13-046180-3.
- ↑ دبليو آر، ديتريش (2003). التعرف التطبيقي على الأنماط: الخوارزميات والتنفيذ بلغة سي++ . سبرينغر. رقم ISBN 978-3-528-35558-6.يقدم وجهات نظر حول الاستخدام الصحيح للتعليقات في شفرة المصدر. ص 66.
- ↑ كيز، جيسيكا (2003). دليل هندسة البرمجيات . مطبعة سي آر سي. رقم ISBN 978-0-8493-1479-7.يناقش التعليقات و"علم التوثيق" ص 256.
- ↑ هايغام، ديزموند (2005). دليل MATLAB . SIAM. ISBN 978-0-89871-578-1.
- ↑ فيرمولين، آل (2000). عناصر أسلوب جافا . مطبعة جامعة كامبريدج. ISBN 978-0-521-77768-1.
- 1 2 3 "استخدام التعليق الصحيح في جافا" . 2000-03-04 . تم الاطلاع عليه بتاريخ 2007-07-24 .
- ↑ ديكسيت، جيه بي (2003). أساسيات الحاسوب والبرمجة بلغة سي . منشورات لاكشمي. رقم ISBN 978-81-7008-882-0.
- 1 2 3 عناصر أسلوب البرمجة ، كيرنيغان وبلاوغر
- 1 2 اكتمل الكود ، ماكونيل
- ↑ سبينليس، ديوميديس (2003). قراءة الشفرة: منظور المصادر المفتوحة . أديسون-ويسلي. ISBN 978-0-201-79940-8.
- ↑ الوسائط، الأنظمة المفتوحة. "التعليقات ورمز التصحيح" . تصميم الحوسبة المدمجة . تم الاسترجاع في 17-06-2026 .
- ↑ انظر على سبيل المثال، وين-باول، رود (2008). نظام التشغيل ماك أو إس إكس للمصورين: سير عمل مُحسَّن للصور لمستخدمي ماك . أكسفورد: فوكال برس. ص 243. ISBN 978-0-240-52027-8.
- ↑ انظر على سبيل المثال، برلين، دانيال (2006). التخريب العملي، الطبعة الثانية . بيركلي: إيه برس. ص 168. ISBN 978-1-59059-753-8.
- ↑ لامب، ليندا (1998). تعلم محرر VI . سيباستوبول: أورايلي وشركاؤه. ISBN 978-1-56592-426-0.
- ↑ أمبلر، سكوت (2004). مدخل إلى الكائنات: تطوير البرمجيات الرشيق الموجه بالنماذج باستخدام UML 2.0 . مطبعة جامعة كامبريدج. ISBN 978-1-397-80521-8.
- ↑ تعريف الدالة مع سلسلة التوثيق في كلوجر
- ↑ موراش. سي شارب 2005. ص 56.
- ↑ "CodePlotter 1.6 - أضف وعدّل المخططات في التعليمات البرمجية باستخدام هذه الأداة الشبيهة ببرنامج Visio" . مؤرشف من الأصل بتاريخ 14 يوليو 2007. تم الاطلاع عليه بتاريخ 24 يوليو 2007 .
- 1 2 نيدرست، جينيفر (2006). تصميم المواقع الإلكترونية باختصار: مرجع سريع لسطح المكتب . أورايلي. ISBN 978-0-596-00987-8. أحيانًا، ينطوي الفرق بين "التعليق" وعناصر بناء الجملة الأخرى في لغة البرمجة أو لغة الترميز على فروق دقيقة. يشير نيدرست إلى إحدى هذه الحالات بقوله: "لسوء الحظ، تعتبر برامج XML التعليقات معلومات غير مهمة، وقد تحذفها ببساطة من المستند قبل معالجته. لتجنب هذه المشكلة، استخدم قسم CDATA في XML بدلاً من ذلك."
- ↑ c2: التعليقات الساخنة
- ↑ "ترميز الفئة" . روبي . ruby-lang.org . تم الاطلاع عليه في 5 ديسمبر 2018 .
- ↑ "PEP 263 – تعريف ترميزات كود مصدر بايثون" . Python.org . تم الاطلاع عليه في 5 ديسمبر 2018 .
- ↑ بولاسيك، ماريك (10 مارس 2017). "-Wimplicit-fallthrough في GCC 7" . مطورو ريد هات . ريد هات . تم الاطلاع عليه بتاريخ 10 فبراير 2019 .
- ↑ ليزا إيديسيكو (27 مارس 2014). "مبرمجو مايكروسوفت أخفوا الكثير من الألفاظ النابية في شفرة البرامج المبكرة" . بزنس إنسايدر أستراليا . مؤرشف من الأصل في 29 ديسمبر 2016.
- ↑ (انظر على سبيل المثال، عدد الكلمات البذيئة في لينكس ).
- ↑ غودليف، بيت (2006). فن البرمجة . سان فرانسيسكو: دار نشر نو ستارش. رقم ISBN 978-1-59327-119-0.
- ↑ سميث، ت. (1991). مبادئ وتقنيات البرمجة المتوسطة باستخدام باسكال . بلمونت: دار نشر ويست. ISBN 978-0-314-66314-6.
- ↑ انظر على سبيل المثال، كوليتزكي، بيتر (2000). أوراكل ديفيلوبر: النماذج والتقارير المتقدمة . بيركلي: أوزبورن/ماكجرو هيل. ISBN 978-0-07-212048-6.الصفحة 65.
- ↑ "أسوأ الممارسات - التعليقات السيئة" . تم الاطلاع عليه بتاريخ 24-07-2007 .
- ↑ موريللي، رالف (2006). جافا، جافا، جافا: حل المشكلات باستخدام البرمجة الكائنية . برنتيس هول كوليدج. ISBN 978-0-13-147434-5.
- 1 2 "كيفية كتابة تعليقات التوثيق لأداة Javadoc" . تم الاطلاع عليه بتاريخ 24-07-2007 .تُشير إرشادات Javadoc إلى أن التعليقات ضرورية للمنصة. علاوة على ذلك، فإن مستوى التفصيل المناسب مُحدد بدقة: "نُكرّس الوقت والجهد لتحديد الشروط الحدية ونطاقات الوسائط والحالات الشاذة بدلاً من تعريف مصطلحات البرمجة الشائعة وكتابة ملخصات مفاهيمية وإضافة أمثلة للمطورين."
- ↑ يوردون، إدوارد (2007). تقنيات هيكلة وتصميم البرامج . جامعة ميشيغان. 013901702X.قد تجعل التعليقات غير الموجودة من الصعب فهم التعليمات البرمجية، ولكن قد تكون التعليقات ضارة إذا كانت قديمة أو زائدة عن الحاجة أو غير صحيحة أو تجعل من الصعب فهم الغرض المقصود من التعليمات البرمجية المصدرية.
- ↑ ديوهيرست، ستيفن سي (2002). أخطاء شائعة في لغة سي++: تجنب المشاكل الشائعة في البرمجة والتصميم . أديسون-ويسلي بروفيشنال. ISBN 978-0-321-12518-7.
- ↑ "أسلوب البرمجة" . مؤرشف من الأصل بتاريخ 8 أغسطس 2007. تم الاطلاع عليه بتاريخ 24 يوليو 2007 .
- ↑ "ألين هولوب" . مؤرشف من الأصل بتاريخ 20 يوليو 2007. تم الاطلاع عليه بتاريخ 24 يوليو 2007 .
- ↑ ألين هولوب، حبل كافٍ لإطلاق النار على قدمك ، رقم ISBN 0-07-029689-81995، ماكجرو هيل
- ↑ "PEP 0350 – Codetags" ، مؤسسة برمجيات بايثون
- ↑ "لا تنسَ أي شيء قبل البرمجة أو بعدها أو أثناءها" ، استخدام تعليقات "codetag" كتذكيرات مفيدة
- ↑ "استخدام قائمة المهام" ، msdn.microsoft.com
- ↑ "Lexical" . لغة برمجة D. تم الاسترجاع في 17-11-2025 .
- ↑ "البنية المعجمية | التوثيق" . docs.swift.org . تم الاطلاع عليه بتاريخ 17-11-2025 .
- ↑ "perlpod – تنسيق التوثيق القديم البسيط" . تم الاطلاع عليه بتاريخ 12-09-2011 .
- ↑ "Pod::ParseUtils – أدوات مساعدة لتحليل وتحويل POD" . تم الاسترجاع في 12-09-2011 .
- 1 2 "توثيق بيرل 6 - بناء الجملة (التعليقات)" . تم الاطلاع عليه بتاريخ 2017-04-06 .
- ١ ٢ " صياغة بايثون ٣ الأساسية" . مؤرشف من الأصل في ١٩ أغسطس ٢٠٢١. تم الاطلاع عليه في ٢٥ فبراير ٢٠١٩.
تُعامل علامات الاقتباس الثلاثية كسلاسل نصية عادية، باستثناء أنها قد تمتد على عدة أسطر. أقصد بالسلاسل النصية العادية أنها إذا لم تُسند إلى متغير، فسيتم حذفها من الذاكرة فور تنفيذ الكود. وبالتالي، لا يتجاهلها المفسر بنفس طريقة تجاهل علامة # للتعليقات.
- ↑ «نصيحة بايثون: يمكنك استخدام السلاسل النصية متعددة الأسطر كتعليقات متعددة الأسطر» ، 11 سبتمبر 2011، غيدو فان روسوم
- ↑ "البرمجة الأدبية" . haskell.org .
- ↑ "البرمجة بلغة Lua 1.3" . www.Lua.org . تاريخ الاسترجاع: 2017-11-08 .
- ↑ تالمج، رونالد ر. (1999). مايكروسوفت إس كيو إل سيرفر 7. دار بريما للنشر. رقم ISBN 978-0-7615-1389-6.
- ↑ "دليل مرجعي لـ MySQL 8.0" . شركة أوراكل . تم الاطلاع عليه في 2 يناير 2020 .
- ↑ "SQL كما يفهمها SQLite" . اتحاد SQLite . تم الاطلاع عليه في 2 يناير 2020 .
- ↑ "وثائق PostgreSQL 10.11" . مجموعة تطوير PostgreSQL العالمية . تم الاطلاع عليه في 2 يناير 2020 .
- ↑ "مرجع SQL لقاعدة بيانات أوراكل®" . شركة أوراكل . تم الاطلاع عليه في 2 يناير 2020 .
- ↑ "اترك تعليقًا في ملف الإعدادات الجارية" . شبكة سيسكو التعليمية (منتدى نقاش) .
- ↑ "دليل إدارة ملفات التكوين، Cisco IOS XE الإصدار 3S (سلسلة ASR 900)" .
- ↑ macros.extractDocCommentsAndRunnables
- ^ كاثلين جنسن، نيكلاوس ويرث (1985). دليل مستخدم باسكال والتقرير . سبرينغر-فيرلاغ. رقم ISBN 0-387-96048-1.
- ^ نيكلاوس ويرث (1983). البرمجة في Modula-2 . سبرينغر-فيرلاغ. رقم ISBN 0-387-15078-1.
- ↑
- مارتن رايزر، نيكلاوس ويرث (1992). البرمجة بلغة أوبرون . أديسون-ويسلي. ISBN 0-201-56543-9.
- ↑ أندريس، ماندي (2003). البقاء في مجال الأمن: كيفية دمج الأفراد والعمليات والتكنولوجيا . دار نشر سي آر سي. رقم ISBN 978-0-8493-2042-2.
للمزيد من القراءة
- موفشوفيتز-أتياس، دانا وكوهين، ويليام دبليو. (2013) نماذج اللغة الطبيعية للتنبؤ بتعليقات البرمجة . في رابطة اللغويات الحاسوبية (ACL)، 2013.
روابط خارجية
- كيفية كتابة التعليقات بقلم دينيس كروكوفسكي
- توثيق شفرة المصدر كدليل مستخدم مباشر من PTLogica
- كيفية كتابة التعليقات لأداة Javadoc
- شفرة المصدر
- البيانات الوصفية
