مقارنة لغات البرمجة (بناء الجملة)
تقارن هذه المقالة بين بنية العديد من لغات البرمجة البارزة .
تعابير الوجه
يمكن تصنيف تعابير لغات البرمجة بشكل عام إلى أربعة هياكل نحوية:
- تدوين البادئة
- التلعثم
(* (+ 2 3) (expt 4 5))
- تدوين الوسطي
- فورتران
(2 + 3) * (4 ** 5)
- اللاحقة، أو اللاحقة، أو تدوين اللغة البولندية العكسية
- إلى الأمام
2 3 + 4 5 ** *
- رموز رياضية
- مدرس خاص
(2 + 3)(45) $$ note implicit multiply operator
تحديد نطاق البيان
اللغة التي تدعم بنية العبارة عادة ما تحتوي على قواعد لواحد أو أكثر من الجوانب التالية:
- فاصل العبارة – يشير إلى نهاية العبارة
- فاصل العبارات – يحدد الحد الفاصل بين عبارتين؛ غير مطلوب للعبارة الأخيرة
- استمرار السطر – يهرب من سطر جديد لمواصلة العبارة في السطر التالي
تُعرّف بعض اللغات حرفًا خاصًا كفاصل بين الأسطر، بينما تعتمد لغات أخرى، تُسمى اللغات الموجهة نحو الأسطر ، على سطر جديد . عادةً ما تتضمن اللغات الموجهة نحو الأسطر خاصية استمرار السطر، بينما لا تحتاج لغات أخرى إلى استمرار السطر لأن السطر الجديد يُعامل كأي مسافة بيضاء أخرى . توفر بعض اللغات الموجهة نحو الأسطر فاصلًا لاستخدامه بين العبارات في السطر الواحد.
| لغة | تحديد نطاق البيان |
|---|---|
| ABAP | فترة مفصولة |
| آدا | فاصلة منقوطة |
| ألغول | مفصول بفاصلة منقوطة |
| ALGOL 68 | مفصولة بفاصلة منقوطة وفاصلة [ 1 ] |
| APL | تم إنهاء السطر الجديد، [Direct_function ⋄]تم الفصل |
| أبل سكريبت | تم إنهاء السطر الجديد |
| أوتوهوتكي | تم إنهاء السطر الجديد |
| محرج | سطر جديد أو فاصلة منقوطة |
| أساسي | تم إنهاء السطر الجديد، وتم فصل النقطتين الرأسيتين |
| بو | تم إنهاء السطر الجديد |
| ج | التعبيرات المنتهية بفاصلة منقوطة والمفصولة بفواصل |
| لغة سي++ | التعبيرات المنتهية بفاصلة منقوطة والمفصولة بفواصل |
| سي شارب | فاصلة منقوطة |
| كوبول | مفصولة بمسافات بيضاء، وأحيانًا بنقاط، ويمكن فصلها اختياريًا بفواصل أو فواصل منقوطة |
| الكوبرا | تم إنهاء السطر الجديد |
| كوفي سكريبت | تم إنهاء السطر الجديد |
| كريستال | التعبيرات المنتهية بسطر جديد والمفصولة بفاصلة منقوطة |
| CSS | فاصلة منقوطة |
| د | فاصلة منقوطة |
| إيفل | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| إرلانغ | تم فصل النقطتين، وانتهت الدورة الشهرية |
| فا# | تم إنهاء السطر الجديد، فاصلة منقوطة |
| فورتران | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| إلى الأمام | تُستخدم الفاصلة المنقوطة لإنهاء تعريفات الكلمات؛ وتُستخدم المسافة لإنهاء استخدام الكلمات |
| GFA BASIC | تم إنهاء السطر الجديد |
| يذهب | مفصولة بفاصلة منقوطة (أدخلها المترجم) |
| هاسكل | في صيغة do: يتم الفصل بين الأسطر الجديدة، وفي صيغة do مع الأقواس: يتم الفصل بين الفواصل المنقوطة |
| جافا | فاصلة منقوطة |
| جافا سكريبت | يتم الفصل بينها بفاصلة منقوطة (ولكن غالبًا ما يتم إدخالها كفاصلة بين الجمل). |
| كوتلين | يتم الفصل بينها بفاصلة منقوطة (ولكن يتم إدراجها ضمنيًا أحيانًا في أسطر جديدة) |
| لغة لوا | مفصولة بمسافات بيضاء (الفاصلة المنقوطة اختيارية) |
| ماثيماتيكا المعروفة أيضًا باسم وولفرام | مفصول بفاصلة منقوطة |
| MATLAB | يتم إنهاء السطر الجديد، ويتم الفصل بينهما بفاصلة منقوطة أو فاصلة (الفاصلة المنقوطة - نتيجة العبارة المتراجعة مخفية، الفاصلة - النتيجة معروضة) |
| المومبس أو M | يُنهي سطر جديد نطاق السطر، وهو الأقرب إلى "عبارة" في لغة M، حيث تفصل المسافة بين الأوامر أو تُنهيها، مما يسمح بظهور أمر آخر بعدها. |
| نيم | تم إنهاء السطر الجديد |
| أوبجكت باسكال ( دلفي ) | مفصول بفاصلة منقوطة |
| أوبجكتيف سي | فاصلة منقوطة |
| أوكاميل | مفصول بفاصلة منقوطة |
| باسكال | مفصول بفاصلة منقوطة |
| بيرل | مفصول بفاصلة منقوطة |
| PHP | فاصلة منقوطة |
| اختر الأساسي | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| باور شيل | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| مقدمة | مفصولة بفاصلة (حرف عطف)، مفصولة بفاصلة منقوطة (حرف فصل)، منتهية بنقطة (جملة) |
| بايثون | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| R | تم إنهاء السطر الجديد، وتم فصل النص بفاصلة منقوطة [ 2 ] |
| راكو | مفصول بفاصلة منقوطة |
| أحمر | مفصول بمسافات بيضاء |
| روبي | تم إنهاء السطر الجديد، وفصلت النقاط بفاصلة منقوطة |
| الصدأ | تنتهي الكلمات بفاصلة منقوطة، وتفصل الفاصلة بين العبارات. |
| سكالا | تم إنهاء السطر الجديد، فاصلة منقوطة |
| سيد7 | مفصولة بفاصلة منقوطة (يُسمح بإنهاء الجملة بفاصلة منقوطة) |
| محاكاة | مفصول بفاصلة منقوطة |
| دارجة | مفصول بفاصلة منقوطة |
| أحاديث قصيرة | فترة مفصولة |
| لغة الآلة القياسية | مفصول بفاصلة منقوطة |
| سويفت | مفصولة بفاصلة منقوطة (أدخلها المترجم) |
| تي سي إل | سطر جديد أو فاصلة منقوطة |
| V (Vlang) | ينتهي السطر بسطر جديد، أو مفصول بفاصلة أو فاصلة منقوطة |
| فيجوال بيسك | تم إنهاء السطر الجديد، وتم فصل النقطتين الرأسيتين |
| فيجوال بيسك (.NET) | تم إنهاء السطر الجديد، وتم فصل النقطتين الرأسيتين |
| زوجو | تم إنهاء السطر الجديد |
| زيج | فاصلة منقوطة |
استمرار السطر
فيما يلي بعض لغات البرمجة البارزة التي تعتمد على الأسطر وتوفر إمكانية استمرار النص في السطر. ما لم يُذكر خلاف ذلك، يجب أن يكون مُحدِّد الاستمرار هو النص الأخير في السطر.
- باش [ 3 ] وغيرها من واجهات يونكس
- وحدات المعالجة المسبقة للغة C ؛ تُستخدم بالتزامن مع لغات البرمجة C و C++ والعديد من سياقات البرمجة الأخرى.
- كريستال
- ماثيماتيكا ، لغة وولفرام
- بايثون [ 4 ]
- روبي
- جافا سكريبت – فقط داخل السلاسل النصية ذات علامات الاقتباس المفردة أو المزدوجة
- Vimscript كأول حرف في السطر المتواصل
- علامة الحذف (ثلاث نقاط)
- في MATLAB : لا يشترط أن تنتهي علامة الحذف (...) عند نهاية السطر، ولكن يتم تجاهل النص الذي يليها. [ 5 ] تبدأ هذه العلامة تعليقًا يمتد حتى (بما في ذلك) أول سطر جديد لاحق. قارن هذا بتعليق السطر الذي يمتد حتى السطر الجديد التالي.
- روبي: قد يتبع التعليق المحدد
- ملف الدفعات : بدء كتلة بين قوسين يمكن أن يسمح باستمرار السطر [ 6 ]
- روبي: قوس مفتوح، أو قوس مربع مفتوح، أو قوس معقوف مفتوح
- روبي: كآخر عنصر في السطر؛ قد يتبع التعليق عامل التشغيل
- AutoHotkey : كأول حرف في السطر المتواصل؛ أي عوامل تعبير باستثناء ++ و --، وفاصلة أو نقطة [ 7 ]
- يُستخدم نوع من أنواع التعليقات على الأسطر كامتداد للسطر
- مُجمِّع توربو :
\ - m4 :
dnl - TeX :
%
- موقع الشخصية
- فورتران 77 : يُعتبر السطر غير التعليقي استمرارًا للسطر غير التعليقي السابق إذا ظهر أي حرف غير مسافة في العمود 6. لا يمكن استمرار الأسطر التعليقية.
- COBOL : يمكن استكمال الثوابت النصية عن طريق عدم إنهاء السلسلة الأصلية في عبارة PICTURE بـ
'، ثم إدراج-في العمود 7 (نفس موضع*التعليق المستخدم). - ملاحظة : الأسطر التي تبدأ بعلامة جدولة (بعد أي مسافة بادئة مطلوبة حسب السياق) تستمر في تنفيذ الأمر السابق.
يقوم مترجم لغة C بربط السلاسل النصية المتجاورة حتى لو كانت على أسطر منفصلة، ولكن هذا ليس بناء جملة استمرار السطر لأنه يعمل بنفس الطريقة بغض النظر عن نوع المسافة البيضاء بين السلاسل النصية.
استهلاك البرامج الخارجية
تدعم لغات البرمجة طرقًا متنوعة للإشارة إلى البرامج الأخرى واستخدامها ضمن بنية اللغة. في بعض الحالات، يتم ذلك عن طريق استيراد الوظائف المُصدَّرة من مكتبة أو حزمة أو وحدة برمجية ، بينما في حالات أخرى، تكون الآليات أبسط، مثل تضمين ملفات نصية.
يمكن تصنيف الاستيراد حسب المستوى (الوحدة النمطية، الحزمة، الفئة، الإجراء، ...) وحسب بناء الجملة (اسم التوجيه، السمات، ...).
ملف مضمن
#include <filename>أو – معالج C المسبق المستخدم بالتزامن مع لغتي C و C++ وأدوات التطوير الأخرى#include "filename"
استيراد الملفات
addpath(directory)– MATLAB [ 8 ]COPYfilename.– كوبولimport<filename>;أو – لغة C++import"filename";:-include("filename").– مقدمة#include file="filename"– ASP#include <filename>أو – AutoHotkey ، AutoIt#include "filename"#import "filename"أو – أوبجكتيف سي#import <filename>Import["filename"]– ماثيماتيكا ، لغة وولفرامinclude'filename'– فورترانinclude "filename";– PHPinclude [filename] programأو#include [filename] program– اختر الأساسيinclude!("filename");– الصدأload "filename"– روبيload%filename- أحمرrequire('filename')– لغة لواrequire "filename";– بيرل ، بي إتش بيrequire"filename"– روبي ، كريستالsource(""filename"")– ر@import("filename");– زيج
استيراد الحزم
#include filename– جimport module;– لغة C++#[path = "filename"] mod altname;– الصدأ@import module;– أوبجكتيف سي<<name– ماثيماتيكا ، لغة وولفرام:-use_module(module).– مقدمة :from module import *– بايثونextern crate libname;– أو أو – الصدأextern crate libname as altname;mod modname;library("package")– R :IMPORT module– أوبرونimport altname "package/name"- يذهب :import package.module;أو – دimport altname = package.module;import Moduleأو – هاسكلimport qualified Module as Mimport package.*– جافا ، ماتلاب ، كوتلينimport "modname";– جافا سكريبتimport altname from "modname";– جافا سكريبتimport packageأو – سكالاimport package._import module– سويفتimport module– V (Vlang)import module– بايثونrequire('modname')– لغة لواrequire"shard"– كريستالrequire"gem"– روبيuse module– فورتران 90+use module, only : identifier– فورتران 90+use Module;– بيرلuse Module qw(import options);– بيرلuse Package.Name- الكوبراuses unit- باسكالwith package– آدا@import("pkgname");– زيج
استيراد الفئة
from module import Class– بايثونimport package.class– جافا ، ماتلاب ، كوتلينimport class from "modname";– جافا سكريبتimport {class} from "modname";– جافا سكريبتimport {class as altname} from "modname";– جافا سكريبتimport package.class– سكالاimport package.{ class1 => alternativeName, class2 }– سكالاimport package._– سكالاuse Namespace\ClassName;– PHPuse Namespace\ClassName as AliasName;– PHPusing namespace::subnamespace::Class;– لغة C++
- استيراد الإجراءات/الدوال
from module import function– بايثونimport package.module : symbol;– دimport package.module : altsymbolname = symbol;– دimport Module (function)– هاسكلimport function from "modname";– جافا سكريبتimport {function} from "modname";– جافا سكريبتimport {function as altname} from "modname";– جافا سكريبتimport package.function– MATLABimport package.class.function– سكالاimport package.class.{ function => alternativeName, otherFunction }– سكالاuseModule('symbol');– بيرلuse function Namespace\function_name;– PHPuse Namespace\function_name as function_alias_name;– PHPusing namespace::subnamespace::symbol;– لغة C++use module::submodule::symbol;– الصدأuse module::submodule::{symbol1, symbol2};– الصدأuse module::submodule::symbol as altname;– الصدأ
استيراد مستمر
use const Namespace\CONST_NAME;– PHP
يمكن أيضًا تصنيف العبارات المذكورة أعلاه حسب ما إذا كانت وسيلة ملائمة نحوية (تسمح بالإشارة إلى الأشياء باسم أقصر، ولكن لا يزال من الممكن الإشارة إليها باسم مؤهل بالكامل دون استيراد)، أو ما إذا كانت مطلوبة بالفعل للوصول إلى الكود (بدونها يستحيل الوصول إلى الكود، حتى مع الأسماء المؤهلة بالكامل).
سهولة التركيب النحوي
مطلوب للوصول إلى الرمز
import module;لغة سي++import altname "package/name"يذهبimport altname from "modname";جافا سكريبتimport moduleبايثون
تحديد حدود الكتلة
الكتلة البرمجية هي مجموعة من التعليمات البرمجية التي تُعامل كوحدة واحدة. يمكن أن تتكون العديد من صيغ الكتل البرمجية من أي عدد من العناصر (عبارات، أو تعابير، أو وحدات برمجية أخرى)، بما في ذلك عنصر واحد أو صفر. تحدد لغات البرمجة الكتلة البرمجية بطرق متنوعة: بعضها عن طريق تمييز النص، والبعض الآخر عن طريق التنسيق النسبي مثل مستويات المسافة البادئة.
- الأقواس المعقوفة (المعروفة أيضًا باسم الأقواس المعقوفة)
{...}
- لغات الأقواس المعقوفة : من السمات المميزة للغات الأقواس المعقوفة أنها تستخدم الأقواس المعقوفة لتحديد كتلة.
- الأقواس
(...)
- ملفات الدفعات ، F# (بنية خفيفة الوزن)، [ 9 ] OCaml ، Prolog ، Standard ML
- الأقواس المربعة
[...]
begin...end
- Ada و ALGOL و F# (بناء الجملة المطول) و [ 9 ] Pascal و Ruby (
forوdo/whileوالحلقاتdo/until) و Crystal و OCaml و SCL و Simula و Erlang .
do...end
do...done
- باش (
forمعwhileالحلقات)، إف شارب (بنية مطولة) [ 9 ] فيجوال بيسك ، فورتران ، برنامج تعليمي (مع مسافة بادئة إلزامية لجسم الكتلة)، فيجوال برولوج
do...end
- X ...
end(مثالif...end):
- روبي ( عبارات
if،while،until،def،class،module)، أوكاميل ( حلقاتforوwhile)، ماتلاب (ifشروطswitchوحلقاتforوعباراتwhileوtry،package،classdef،properties، ،methods، وكتلeventsوfunction)، لوا (then/elseوfunction)
- (
begin...)
- (توقعات ...)
- (
do...)
- المسافة البادئة
- لغات قواعد التسلل : Boo ، Cobra ، CoffeeScript ، F# ، Haskell (في صيغة do عند حذف الأقواس المعقوفة)، LiveScript ، occam ، Python ، Nemerle (اختياري؛ يمكن للمستخدم استخدام صيغة حساسة للمسافات البيضاء بدلاً من صيغة الأقواس المعقوفة إذا رغب في ذلك)، Nim ، Scala (اختياري، كما في Nemerle)
- اللغات ذات الشكل الحر : معظم اللغات المنحدرة من لغة ALGOL (بما في ذلك لغات C و Pascal و Perl )؛ لغات Lisp
- آحرون
- أدا ، فيجوال بيسك ، سيد7 :
if...end if - الغول 68 :
begin...end،(...)،if...fi،do...od - APL :
:If...:EndIfأو:If...:End - Bash و sh و ksh :
if...fi,do...done,case...esac; - كوبول :
IF...END-IF،PERFORM...END-PERFORM، إلخ. للعبارات؛ ....للجمل.* لوا ، باسكال ، مودولا-2 ، سيد7 :repeat...until - لغة سمول بيسك :
If...EndIf،For...EndFor،While...EndWhile - فيجوال بيسك (.NET) :
If...End If،For...Next،Do...Loop
تعليقات
فيما يتعلق بتعريف اللغة، يمكن تصنيف بناء جملة التعليقات بعدة طرق، بما في ذلك:
- الفرق بين التعليق السطري والتعليق الكتلي: يبدأ التعليق السطري بفاصل ويستمر حتى نهاية السطر ( علامة سطر جديد )، بينما يبدأ التعليق الكتلي بفاصل وينتهي بفاصل آخر، ويمكنه أن يمتد عبر الأسطر.
- قابل للتداخل - ما إذا كان يمكن أن يكون تعليق الكتلة داخل تعليق كتلة آخر
- كيفية تحليلها بالنسبة للغة؛ قد تقوم الأدوات (بما في ذلك المترجمات والمفسرات) أيضًا بتحليل التعليقات، ولكن قد يكون ذلك خارج تعريف اللغة.
طرق أخرى لتصنيف التعليقات التي لا تندرج ضمن تعريف اللغة:
- التعليقات المضمنة مقابل التعليقات التمهيدية – يأتي التعليق المضمن بعد الكود في نفس السطر، بينما يسبق التعليق التمهيدي الكود البرمجي الذي يتعلق به؛ ويمكن استخدام التعليقات السطرية أو الكتلية كتعليقات مضمنة أو تمهيدية.
- دعم إنشاء وثائق واجهة برمجة التطبيقات (API) خارج نطاق تعريف اللغة
تعليق السطر
| رمز | اللغات |
|---|---|
C | من Fortran I إلى Fortran 77 (C في العمود 1) |
REM | لغة بيسك ، ملفات الدفعات ، فيجوال بيسك |
:: | ملفات الدفعات ، COMMAND.COM ، cmd.exe |
NB. | J ؛ من الاختصار الشائع (تاريخيًا) Nota bene ، وهي الكلمة اللاتينية التي تعني "لاحظ جيدًا". |
⍝ | APL ؛ والطريقة التذكيرية هي أن الرمز (النقطة التي تم ضربها بضربة حذاء) يشبه مصباح المكتب، وبالتالي "يضيء" ما سبق. |
# | Boo ، Bourne shell وغيرها من أغلفة UNIX ، Cobra ، Crystal ، Perl ، Python ، Ruby ، Seed7 ، PowerShell ، PHP ، R ، Make ، Maple ، Elixir ، Julia ، Nim [ 10 ] |
% | TeX ، Prolog ، MATLAB ، [ 11 ] Erlang ، S-Lang ، Visual Prolog ، PostScript |
// | ActionScript ، Boo ، C (C99) ، C++ ، C# ، D ، F# ، Go ، Java ، JavaScript ، Kotlin ، Object Pascal ( Delphi )، Objective-C ، PHP ، Rust ، Scala ، Sass ، Swift ، Xojo ، V (Vlang) ، Zig |
' | مونكي، فيجوال بيسك ، في بي سكريبت ، سمول بيسك ، جامباس ، زوجو |
! | فاكتور ، فورتران ، بيسك بلس، إنفورم، بيك بيسك |
; | معظم لغات التجميع ، AutoHotkey ، AutoIt ، Lisp ، Common Lisp ، Clojure ، PGN ، Rebol ، Red ، Scheme |
-- | Euphoria ، Haskell ، SQL ، Ada ، AppleScript ، Eiffel ، Lua ، VHDL ، SGML ، PureScript ، Elm |
* | Assembler S/360 (* في العمود 1)، COBOL I إلى COBOL 85، PAW ، Fortran IV إلى Fortran 77 (* في العمود 1)، Pick Basic ، GAMS (* في العمود 1) |
|| | حليقة |
" | Vimscript ، ABAP |
\ | إلى الأمام |
*> | كوبول 90 |
حظر التعليق
في هذه الأمثلة، ~يُمثل النص محتوى التعليق، والنص المحيط به هو الفواصل. لا تُعتبر المسافات البيضاء (بما في ذلك سطر جديد ) فواصل.
| بناء الجملة | اللغات |
|---|---|
comment~; | ALGOL 60 ، محاكاة |
¢~ ¢, #~ #, co~ co, comment~comment | ALGOL 68 [ 12 ] [ 13 ] |
/*~*/ | ActionScript، AutoHotkey ، C، C++، C#، CSS ، D، [ 14 ] Go، Java ، JavaScript ، Kotlin ، Objective-C ، PHP ، PL/I ، Prolog ، Rexx ، Rust (قابلة للتداخل)، Scala (قابلة للتداخل)، SAS ، SASS، SQL، Swift (قابلة للتداخل)، V (Vlang) ، Visual Prolog |
#cs~#ce | AutoIt [ 15 ] |
/+~+/ | D (يمكن أن يكون متداخلًا) [ 14 ] |
/#~#/ | كوبرا (يمكن أن تكون متداخلة) |
<#~#> | باور شيل |
<!--~--> | HTML ، XML |
=begin~=cut | بيرل (التوثيق البسيط القديم) |
#`(~) | Raku (يمكن أن تكون أحرف الأقواس ()، <>، {}، []، أي أحرف Unicode ذات انعكاسات ثنائية الاتجاه، أو أحرف Unicode ذات خصائص Ps/Pe/Pi/Pf) |
=begin~=end | روبي |
#<TAG>~ , ~ , ~ , ~ , ~ , ~#</TAG>#stopEOF#iffalse#endif#ifntrue#endif#if false#endif#if !true#endif | S-Lang [ 16 ] |
{-~-} | هاسكل (يمكن أن تكون متداخلة)، إلم |
(*~*) | دلفي ، إم إل ، ماثيماتيكا ، أوبجكت باسكال ، باسكال ، سيد 7 ، أبل سكريبت ، أو كاميل (يمكن تداخلها)، ستاندرد إم إل (يمكن تداخلها)، مابل ، نيو سبيك ، إف شارب |
{~} | دلفي، أوبجكت باسكال، باسكال، PGN ، ريد |
{#~#} | نانجوكس، غصن |
{{!~}} | شارب ، مقود دراجة |
{{!--~--}} | المقابض (لا يمكن أن تكون متداخلة، ولكن قد تحتوي على {{و }}) |
|#~#| | حليقة |
%{~%} | MATLAB [ 11 ] (يجب أن تكون الرموز في سطر منفصل) |
#|~|# | Lisp و Scheme و Racket (يمكن تضمينها في الثلاثة جميعها). |
#=~=# | جوليا [ 17 ] |
#[~]# | نيم [ 18 ] |
--[[~ ]]، --[=[~ ]=]، --[==[~ ]==]إلخ. | لغة لوا (يمكن أن تحتوي الأقواس على أي عدد من =الأحرف المتطابقة؛ ويمكن أن تكون متداخلة داخل محددات غير متطابقة) |
"~" | أحاديث قصيرة |
(comment~) | كلوجر |
#If COMMENT Then~ [ أ ]#End If | فيجوال بيسك (.NET) |
#if COMMENT~ #endif[ ب ] | سي شارب |
' comment _، [ ج ]REM comment _ | لغة البرمجة الكلاسيكية Visual Basic ، VBA ، VBScript |
أنواع فريدة
- فورتران
يُعدّ وضع مسافة بادئة للأسطر في لغة فورتران 66/77 أمرًا بالغ الأهمية. يُكتب النص الفعلي في الأعمدة من 7 إلى 72 من السطر. أي حرف غير مسافة في العمود 6 يُشير إلى أن هذا السطر هو امتداد للسطر السابق. وجود علامة اقتباس مفردة (' C') في العمود 1 يُشير إلى أن هذا السطر بأكمله عبارة عن تعليق. قد تحتوي الأعمدة من 1 إلى 5 على رقم يُستخدم كعلامة. يتم تجاهل الأعمدة من 73 إلى 80، ويمكن استخدامها للتعليقات؛ في زمن البطاقات المثقبة ، كانت هذه الأعمدة تحتوي غالبًا على رقم تسلسلي لتسهيل فرز مجموعة البطاقات بالترتيب الصحيح في حال سقوطها عن طريق الخطأ. ألغى فورتران 90 الحاجة إلى قاعدة المسافة البادئة، وأضاف تعليقات الأسطر، مستخدمًا الحرف !كفاصل للتعليقات.
- كوبول
في التعليمات البرمجية ذات التنسيق الثابت، يُعدّ ترتيب الأسطر مهمًا. يتم تجاهل الأعمدة من 1 إلى 6 والأعمدة من 73 فصاعدًا. إذا وُجدت قيمة a *أو /في العمود 7، فإن هذا السطر يُعتبر تعليقًا. حتى إصدار COBOL 2002، إذا وُجدت قيمة a Dأو dفي العمود 7، فإنها تُعرّف "سطر تصحيح الأخطاء" الذي يتم تجاهله ما لم يُطلب من المُصرّف ترجمته.
- الكوبرا
يدعم برنامج كوبرا التعليقات المطولة باستخدام " /#... #/"، وهي تشبه " /*... */" الموجودة عادةً في لغات البرمجة المبنية على لغة C، ولكن مع اختلافين: أولهما، #إعادة استخدام الحرف من صيغة التعليق أحادي السطر " #..."، وثانيهما، إمكانية تداخل التعليقات المطولة، مما يُسهّل عملية التعليق على أجزاء كبيرة من التعليمات البرمجية.
- حليقة
يدعم Curl التعليقات المضمنة مع علامات محددة من قبل المستخدم كما في |foo# ... #foo|.
- لغة لوا
كما هو الحال مع السلاسل النصية الخام، يمكن أن يحتوي كل من وسم الفتح ووسم الإغلاق على عدد متطابق من علامات المساواة؛ وهذا يسمح بالتداخل طالما أن التعليقات/السلاسل النصية الخام المتداخلة تستخدم عددًا مختلفًا من علامات المساواة عن التعليق المحيط بها. --[[comment --[=[ nested comment ]=] ]]تتجاهل لغة Lua أول سطر جديد (إن وجد) يلي وسم الفتح مباشرةً.
- بيرل
تُعتبر التعليقات المطولة في لغة بيرل جزءًا من التوثيق، ويُطلق عليها اسم " التوثيق البسيط القديم " (POD). من الناحية التقنية، لا يوجد في بيرل اتفاقية محددة لإدراج التعليقات المطولة في شفرة المصدر، ولكن يُستخدم التوثيق البسيط القديم بشكل روتيني كحل بديل.
- PHP
يدعم PHP التعليقات القياسية على نمط C/C++، ولكنه يدعم نمط Perl أيضًا.
- بايثون
إن استخدام علامات الاقتباس الثلاثية للتعليق على أسطر من التعليمات البرمجية المصدرية لا يشكل تعليقًا فعليًا. [ 19 ] يصبح النص المضمن سلسلة نصية حرفية، والتي يتجاهلها بايثون عادةً (إلا إذا كانت العبارة الأولى في جسم وحدة أو فئة أو دالة؛ انظر docstring ).
- إكسير
الحيلة المذكورة أعلاه، والمستخدمة في بايثون، تعمل أيضًا في إليكسير، لكن المُصرّف سيُصدر تحذيرًا إذا رصدها. لتجاهل هذا التحذير، يجب إضافة رمز ~S(يمنع استيفاء السلاسل النصية) قبل السلسلة النصية المُحاطة بثلاث علامات اقتباس، ما يُؤدي إلى البنية النهائية ~S""" ... """. إضافةً إلى ذلك، تدعم إليكسير شكلًا محدودًا من التعليقات الكتلية كميزة لغوية رسمية، ولكن كما هو الحال في بيرل، فإن هذه البنية مُخصصة لكتابة التوثيق فقط. على عكس بيرل، لا يُمكن استخدامها كحل بديل، إذ تقتصر على أجزاء مُعينة من الكود، وتُصدر أخطاءً أو حتى تُعطّل الدوال إذا استُخدمت في أماكن أخرى. [ 20 ]
- راكو
يستخدم راكو#`(...) للدلالة على التعليقات الكتلية. [ 21 ] يسمح راكو فعليًا باستخدام أي زوج من الأقواس "اليمنى" و"اليسرى" بعد #`(أي #`(...)، #`[...]و #`{...}، و #`<...>، وحتى الأقواس الأكثر تعقيدًا كلها تعليقات كتلية صالحة). كما يُسمح بتداخل الأقواس داخل التعليقات (أي، حتى آخر قوس إغلاق).#`{{...}}#`{ a { b } c }
- روبي
يُفتح التعليق الكتلي في لغة روبي عند =beginالسطر 1 ويُغلق عند =endالسطر 2.
- دارجة
يتجاهل المفسر منطقة الأسطر المحصورة بين علامتي و . يمكن أن يكون اسم الوسم أي سلسلة من الأحرف والأرقام تُستخدم للإشارة إلى كيفية فك تشفير الكتلة المحصورة. على سبيل المثال، قد يشير إلى بداية كتلة من وثائق LaTeX المنسقة.#<tag>#</tag>#<latex>
- مخطط واحتيال
يمكن التعليق على المكون النحوي الكامل التالي (تعبير-s) باستخدام #;.
- ABAP
يدعم ABAP نوعين مختلفين من التعليقات. إذا كان الحرف الأول من السطر، بما في ذلك المسافة البادئة، علامة نجمية (* *)، يُعتبر السطر بأكمله تعليقًا، بينما "تبدأ علامة اقتباس مزدوجة واحدة (*) تعليقًا ضمن السطر يستمر حتى نهايته. لا يمكن كتابة تعليقات ABAP بين العبارات، EXEC SQLوذلك لأن لغة SQL الأصلية لها استخدامات أخرى لهذه الأحرف. في معظم لهجات SQL، يمكن استخدام ENDEXECالشرطة المزدوجة (- ) بدلاً من ذلك.--
- اللغات الباطنية
تتبع العديد من لغات البرمجة الباطنية الاتفاقية القائلة بأن أي نص لا يتم تنفيذه بواسطة مؤشر التعليمات (مثل Befunge ) أو يتم تعيين معنى له بطريقة أخرى (مثل Brainfuck ) يعتبر "تعليقًا".
مقارنة التعليقات
توجد أنماط كتابة متنوعة لكتابة التعليقات في الشيفرة المصدرية. BlockCommentيُستخدم الخط المائل هنا للإشارة إلى نمط التعليق الكتلي. LineCommentويُستخدم الخط المائل هنا للإشارة إلى نمط التعليق السطري.
| لغة | تعليق مضمن | حظر التعليق |
|---|---|---|
| Ada و Eiffel و Euphoria و Occam و SPARK و ANSI SQL و VHDL | -- LineComment | |
| ALGOL 60 | comment BlockComment; | |
| ALGOL 68 | ¢ BlockComment ¢
| |
| APL | ⍝ LineComment | |
| أبل سكريبت | -- LineComment | (* BlockComment *) |
| لغة التجميع (تختلف) | ; LineComment مثال واحد (معظم لغات التجميع تستخدم التعليقات السطرية فقط) | |
| أوتوهوتكي | ; LineComment | /* BlockComment */ |
| AWK ، Bourne shell ، C shell ، Maple ، PowerShell | # LineComment | <# BlockComment #> |
| سحق | # LineComment | <<EOFBlockCommentEOF: 'BlockComment' |
| اللغة الأساسية (بلهجات مختلفة): | 'LineComment(ليست كل اللهجات)
| |
| C (K&R، ANSI/C89/C90)، CHILL ، PL/I ، REXX | /* BlockComment */ | |
| C (C99) ، C++ ، Go ، Swift ، JavaScript ، V (Vlang) | // LineComment | /* BlockComment */ |
| سي شارب | // LineComment/// LineComment(تعليق على وثائق XML) | /* BlockComment *//** BlockComment */(تعليق توثيق XML) (توجيه المترجم) [ ب ]#if COMMENT BlockComment#endif |
| من COBOL I إلى COBOL 85 | * LineComment(* في العمود 7) | |
| كوبول 2002 | *> LineComment | |
| حليقة | ||LineComment | |# BlockComment #|
|
| الكوبرا | # LineComment | /# BlockComment #/(قابل للتداخل) |
| د | // LineComment/// Documentation LineComment(تعليقات ddoc) | /* BlockComment *//** Documentation BlockComment */(تعليقات ddoc)
|
| DCL | $! LineComment | |
| ECMAScript ( جافا سكريبت ، أكشن سكريبت ، إلخ.) | // LineComment | /* BlockComment */ |
| إكسير | # LineComment | ~S"""BlockComment"""@doc """BlockComment"""(الوثائق، تعمل فقط في الوحدات النمطية) (وثائق الوحدة النمطية) (وثائق النوع)@moduledocBlockComment"""@typedocBlockComment""" |
| إلى الأمام | \ LineComment | ( BlockComment )(سطر واحد وأسطر متعددة)
|
| من FORTRAN I إلى FORTRAN 77 | C LineComment(ج في العمود 1) | |
| فورتران 90 والإصدارات الأحدث | ! LineComment | #if 0 BlockComment#endif[ د ] |
| هاسكل | -- LineComment | {- BlockComment -} |
| ج | NB. | |
| جافا | // LineComment | /* BlockComment */
|
| جوليا | # LineComment | #=BlockComment=# |
| لغة ليسب ، لغة سكيم | ; LineComment | #|BlockComment|# |
| لغة لوا | -- LineComment | --[==[ BlockComment]==](عدد متغير من علامات المساواة، قابلة للتداخل مع محددات ذات أعداد مختلفة من علامات المساواة) |
| خشب القيقب | # LineComment | (* BlockComment *) |
| ماثيماتيكا | (* BlockComment *) | |
| MATLAB | % LineComment | %{BlockComment (nestable)%}[ هـ ] |
| نيم | # LineComment | #[BlockComment]# |
| أوبجكت باسكال | // LineComment | (* BlockComment *){ BlockComment } |
| أوكاميل | (* BlockComment (* nestable *) *) | |
| باسكال ، مودولا-2 ، مودولا-3 ، أوبيرون ، إم إل : | (* BlockComment *) | |
| بيرل ، روبي | # LineComment | =beginBlockComment=cut( =endفي لغة روبي) ( تعليق توثيقي لـ POD )
|
| PGN ، أحمر | ; LineComment | { BlockComment } |
| PHP | # LineComment// LineComment | /* BlockComment *//** Documentation BlockComment */( تعليقات توثيق PHP ) |
| طيار | R:LineComment | |
| PLZ/SYS | ! BlockComment ! | |
| PL/SQL ، TSQL | -- LineComment | /* BlockComment */ |
| مقدمة | % LineComment | /* BlockComment */ |
| بايثون | # LineComment | '''BlockComment'''""" BlockComment """( سلسلة التوثيق عند السطر الأول من الوحدة النمطية أو الفئة أو الطريقة أو الدالة) |
| R | # LineComment | |
| راكو | # LineComment | #`{BlockComment}
|
| الصدأ | // LineComment
| /* BlockComment */ (قابل للتداخل)
|
| ساس | * BlockComment;/* BlockComment */ | |
| سيد7 | # LineComment | (* BlockComment *) |
| محاكاة | comment BlockComment;! BlockComment; | |
| أحاديث قصيرة | "BlockComment" | |
| سمارتي | {* BlockComment *} | |
| لغة الآلة القياسية | (* BlockComment *) | |
| TeX ، LaTeX ، PostScript ، Erlang ، S-Lang | % LineComment | |
| معلومات تقنية | @c LineComment
| |
| مدرس خاص | * LineCommentcommand $$ LineComment | |
| فيجوال بيسك | 'LineCommentRem LineComment | 'BlockComment _BlockCommentRem BlockComment _BlockComment[ ج ] |
| فيجوال بيسك (.NET) | 'LineComment
| #If COMMENT Then BlockComment#End If |
| مقدمة مرئية | % LineComment | /* BlockComment */ |
| لغة وولفرام | (* BlockComment *) | |
| زوجو | ' LineComment// LineCommentrem LineComment | |
| زيج | // LineComment/// LineComment//! LineComment |
انظر أيضاً
مراجع
- ↑ ثلاثة أنواع مختلفة من الجمل، كل منها يفصل العبارات والوحدات بشكل مختلف:
- العبارة التسلسلية باستخدام go-on-token (أي الفاصلة المنقوطة): ابدأ أ؛ ب؛ ج نهاية - يتم تنفيذ الوحدات بالترتيب.
- collateral-clause using and-also-token (viz. ","): begin a, b, c end – سيتم تحسين ترتيب التنفيذ بواسطة المترجم.
- العبارة المتوازية باستخدام رمز "و" أيضًا (أي ","): par begin a, b, c end – يجب تشغيل الوحدات في سلاسل متوازية.
- ↑ من تعريف لغة R ، القسم 3.2 هياكل التحكم: "تشير الفاصلة المنقوطة دائمًا إلى نهاية العبارة، بينما قد يشير سطر جديد إلى نهاية العبارة. إذا لم تكن العبارة الحالية مكتملة نحويًا، فإن المُقيِّم يتجاهل الأسطر الجديدة ببساطة."
- ↑ دليل مرجع Bash ، 3.1.2.1 حرف الهروب
- ↑ توثيق بايثون ، 2. التحليل المعجمي : 2.1.5. وصل الأسطر الصريح
- ↑ "Mathworks.com" . مؤرشف من الأصل في 7 فبراير 2010.
- ↑ "الأقواس - موجه أوامر ويندوز - SS64.com" . ss64.com .
- ↑ "البرامج النصية - التعريف والاستخدام | AutoHotkey" .
- ↑ لكي يكون ملف M (مصدر MATLAB) قابلاً للوصول إليه بالاسم، يجب أن يكون الدليل الأصل الخاص به موجودًا في مسار البحث (أو الدليل الحالي).
- 1 2 3 "الصيغة المطولة - F# | مايكروسوفت ليرن" . مايكروسوفت ليرن . 5 نوفمبر 2021. تم الاطلاع عليه في 17 نوفمبر 2022 .
- ↑ "دليل لغة نيم" . nim-lang.org .
- 1 2 "Mathworks.com" . مؤرشف من الأصل في 21 نوفمبر 2013. تم الاطلاع عليه في 25 يونيو 2013 .
- ↑ "Algol68_revised_report-AB.pdf" (الصفحات 61-62 من التقرير بصيغة PDF، والصفحات 121-122 من الوثيقة الأصلية) (PDF) . تم الاطلاع عليه بتاريخ 27 مايو 2014 .
- ↑ "نسخة HTML من تقرير Algol68 المنقح AB" . مؤرشف من الأصل بتاريخ 17 مارس 2013. تم الاطلاع عليه بتاريخ 27 مايو 2014 .
- 1 2 "DLang.org، المعجمي" . تم الاطلاع عليه بتاريخ 27 مايو 2014 .
- ↑ "مرجع الكلمات الرئيسية لموقع AutoItScript.com، #comments-start" . تم الاطلاع عليه بتاريخ 27 مايو 2014 .
- ↑ "slang-2.2.4/src/slprepr.c – السطر 43 إلى 113" . مؤرشف من الأصل بتاريخ 21 نوفمبر 2017. تم الاطلاع عليه بتاريخ 28 مايو 2014 .
- ↑ "علامات الترقيم · لغة جوليا" .
- ↑ "دليل لغة نيم" . nim-lang.org .
- ↑ «نصيحة بايثون: يمكنك استخدام السلاسل النصية متعددة الأسطر كتعليقات متعددة الأسطر» ، 11 سبتمبر 2011، غيدو فان روسوم
- ↑ "كتابة التوثيق - Elixir الإصدار 1.12.3" . تم الاطلاع عليه بتاريخ 28 يوليو 2023 .
- ↑ "توثيق بيرل 6 (بناء الجملة)" . docs.perl6.org. التعليقات . تم الاطلاع عليه في 5 أبريل 2017 .
- ↑ "استخدام معالج FPP المسبق" . مؤرشف من الأصل بتاريخ 18 نوفمبر 2022. تم الاطلاع عليه بتاريخ 18 نوفمبر 2022 .
- ↑ "تعليقات حول Perl 6 POD" . 25 مايو 2023.
- ↑ "Perl 6 POD (الكتل المختصرة)" . 25 مايو 2023.
ملحوظات
- ↑ لا يدعم Visual Basic (.NET) التعليقات التقليدية متعددة الأسطر، ولكن يمكن محاكاتها من خلال توجيهات المترجم.
- 1 2 بينما يدعم C# التعليقات الكتلية التقليدية
/* ... */، يمكن استخدام توجيهات المترجم لمحاكاتها، كما هو الحال في VB.NET. - ١ ٢ يمكن استخدام رمز استمرار السطر
_لتمديد تعليق من سطر واحد إلى السطر التالي دون الحاجة إلى كتابة الرمز'مرةREMأخرى. ويمكن القيام بذلك حتى ٢٤ مرة متتالية. - ↑ لا تدعم لغة فورتران التعليقات التقليدية على شكل كتل، ولكن بعض المترجمات تدعم توجيهات المعالج المسبق على غرار لغة C / C++ ، مما يسمح للمبرمج بمحاكاة التعليقات متعددة الأسطر. [ 22 ]
- ↑ يجب أن يكون رمز النسبة المئوية والأقواس هما الحرفان الوحيدان غير الفراغات على سطورهما الخاصة.
- مقارنات لغات البرمجة
