الرمز (البرمجة)

الرمز في برمجة الكمبيوتر هو نوع بيانات بدائي تكون مثيلاته ذات شكل يمكن قراءته من قبل الإنسان. يمكن استخدام الرموز كمعرفات . في بعض لغات البرمجة ، تسمى ذرات . [1] يتم فرض التفرد من خلال الاحتفاظ بها في جدول رموز . الاستخدام الأكثر شيوعًا للرموز من قبل المبرمجين هو إجراء انعكاس اللغة (خاصة لعمليات الاسترجاع )، والأكثر شيوعًا بشكل غير مباشر هو استخدامها لإنشاء ارتباطات الكائنات .

في أبسط التنفيذات ، يتم تسميتها أساسًا بالأعداد الصحيحة ؛ على سبيل المثال، النوع المُعَدَّد في لغة C.

يدعم

توفر لغات البرمجة التالية الدعم وقت التشغيل للرموز:

لغة اسم النوع(الأسماء) مثال حرفي(حرفي)
لغة ANSI Common Lisp الرمز، الكلمة الرئيسية symbol,:keyword
كلوجور الرمز، [2] الكلمة الأساسية [3] 'symbol,:keyword
دارت الرمز [4] #sym
الإكسير الذرة، الرمز :sym
إرلانج ذرة symأو'sym'
جافا سكريبت (ES6 والإصدارات الأحدث) رمز Symbol("sym");
جوليا رمز :sym
ك رمز `سم`
Objective-C اللغة الإنجليزية: SEL @selector(sym)
بيكاكسي بيزيك رمز symbol let name = variable
بوستسكريبت اسم /symأوsym
برولوج الذرة، الرمز symأو'sym'
روبي رمز :symأو:'sym'
سكالا سكالا.الرمز 'symbol
مخطط رمز sym
محادثة قصيرة رمز #symأو#'sym'
إس إم إل/نيوجيرسي ذرة.ذرة
لغة ولفرام رمز Symbol["sym"]أوsym

جوليا

الرموز في جوليا هي سلاسل مضمنة تستخدم لتمثيل المعرفات في كود جوليا المحلل ( ASTs ) وكأسماء أو تسميات لتحديد الكيانات (على سبيل المثال كمفاتيح في القاموس). [5]

ليشبس

الرمز في لغة Lisp فريد من نوعه في مساحة الاسم (أو الحزمة في لغة Common Lisp ). ويمكن اختبار مساواة الرموز باستخدام الدالة EQ. ويمكن لبرامج Lisp إنشاء رموز جديدة في وقت التشغيل. وعندما تقرأ لغة Lisp بيانات تحتوي على رموز ممثلة نصيًا، تتم الإشارة إلى الرموز الموجودة. وإذا كان الرمز غير معروف، يقوم قارئ لغة Lisp بإنشاء رمز جديد.

في لغة Common Lisp، تحتوي الرموز على السمات التالية: اسم، وقيمة، ووظيفة، وقائمة من الخصائص، وحزمة. [6]

في لغة Common Lisp، من الممكن أيضًا ألا يكون الرمز مضمنًا في حزمة. يمكن طباعة مثل هذه الرموز، ولكن عند قراءتها مرة أخرى، يلزم إنشاء رمز جديد. نظرًا لأنه غير مضمن ، فلا يمكن استرداد الرمز الأصلي من الحزمة.

في لغة Common Lisp، يمكن للرموز استخدام أي أحرف، بما في ذلك المسافات البيضاء، مثل المسافات والأسطر الجديدة. إذا كان الرمز يحتوي على حرف مسافة بيضاء، فيجب كتابته على النحو التالي |هذا رمز|. يمكن استخدام الرموز كمعرفات لأي نوع من أنواع بنيات البرمجة المسماة: المتغيرات والوظائف والماكرو والفئات والأنواع وعلامات الانتقال إلى والمزيد. يمكن تخزين الرموز في حزمة. [7] رموز الكلمات الأساسية ذاتية التقييم، [8] وتخزينها في الحزمة المسماة KEYWORD.

أمثلة

فيما يلي تمثيل خارجي بسيط لرمز Common Lisp :

هذا هو الرمز

يمكن أن تحتوي الرموز على مسافات بيضاء (وكل الأحرف الأخرى):

|هذا رمز به مسافة بيضاء|

في لغة Common Lisp، تعتبر الرموز التي تبدأ بعلامة النقطتين في تمثيلاتها المطبوعة رموز كلمات رئيسية . يتم تضمين هذه الرموز في حزمة الكلمات الرئيسية.

:رمز الكلمة الرئيسية

قد يتضمن التمثيل المطبوع للرمز اسم الحزمة. تتم كتابة نقطتين بين اسم الحزمة واسم الرمز.

اسم الحزمة::اسم الرمز

يمكن للحزم تصدير الرموز. بعد ذلك، تتم كتابة علامة نقطتين فقط بين اسم الحزمة واسم الرمز.

الحزمة: رمز التصدير

يمكن أيضًا إنشاء الرموز التي لا يتم تضمينها في حزمة، ولها تدوين:

#:رمز غير مقيد

بوستسكريبت

في PostScript ، يمكن أن تكون الإشارات إلى كائنات الأسماء إما حرفية أو قابلة للتنفيذ ، مما يؤثر على سلوك المترجم عند مواجهتها. يمكن استخدام المشغلين cvxand cvlللتحويل بين الشكلين. عند إنشاء الأسماء من السلاسل بواسطة cvnالمشغل، تكون مجموعة الأحرف المسموح بها غير مقيدة.

برولوج

في لغة البرمجة Prolog ، تعد الرموز (أو الذرات) أنواع البيانات الأولية الرئيسية، على غرار الأرقام. [9] قد يختلف التدوين الدقيق في لهجات Prolog المختلفة. ومع ذلك، فهو دائمًا بسيط للغاية (لا توجد علامات اقتباس أو أحرف بداية خاصة ضرورية).

على عكس العديد من اللغات الأخرى، من الممكن إعطاء الرموز معنى من خلال إنشاء بعض الحقائق و/أو القواعد البرولوجية.

أمثلة

يوضح المثال التالي حقيقتين (تصفان ما هو الأب ) وقاعدة واحدة (تصف معنى الأخ ). تستخدم هذه الجمل الثلاث الرموز (الأب، زيوس، هيرميس، بيرسيوس، الأخ ) وبعض المتغيرات المجردة (X، Y، Z). تم حذف علاقة الأم من أجل الوضوح.

الأب ( زيوس ،  هيرميس ). 
الأب ( زيوس ،  بيرسيوس ).

الأخ ( X ،  Y )  :  الأب ( Z ،  X  الأب ( Z ،  Y ).

روبي

في روبي ، يمكن إنشاء الرموز بصيغة حرفية، أو عن طريق تحويل سلسلة. [1] ويمكن استخدامها كمعرف أو سلسلة داخلية. [10] سيشير رمزان لهما نفس المحتوى دائمًا إلى نفس الكائن. [11] يُعتبر استخدام الرموز كمفاتيح لمصفوفة ارتباطية في روبي من أفضل الممارسات . [10] [12]

أمثلة

فيما يلي مثال بسيط لرمز حرفي في Ruby: [1]

my_symbol = :a my_symbol = :"معرف"  
  

يمكن تحويل السلاسل إلى رموز، والعكس صحيح:

irb(main):001:0> my_symbol = "مرحبا بالعالم!" . intern => :"مرحبا بالعالم!" irb(main):002:0> my_symbol = "مرحبا بالعالم!" . to_sym => :"مرحبا بالعالم!" irb(main):003:0> my_string = :hello . to_s => "hello"   

   

  

الرموز هي كائنات من Symbolالفئة في Ruby: [13]

irb(main):004:0> my_symbol = :hello_world => :hello_world irb(main):005:0> my_symbol . الطول => 11 irb(main):006:0> my_symbol . الفئة => الرمز  

 

 

تُستخدم الرموز عادةً لإرسال رسائل بشكل ديناميكي إلى الكائنات (استدعاء الأساليب على):

irb(main):007:0> "aoboc" . split ( "o" ) 
=> ["a", "b", "c"] 
irb(main):008:0> "aoboc" . send ( :split , "o" ) # نفس النتيجة => ["a", "b", "c"]  

الرموز كمفاتيح لمصفوفة ارتباطية:

irb(main):009:0> my_hash = { a : "apple" , b : "banana" } => {:a=>"apple", :b=>"banana"} irb(main):010:0> my_hash [ :a ] => "apple" irb(main):011:0> my_hash [ :b ] => "banana"       

 

 

محادثة قصيرة

في Smalltalk ، يمكن إنشاء الرموز بصيغة حرفية، أو عن طريق تحويل سلسلة. ويمكن استخدامها كمعرف أو سلسلة داخلية. سيشير رمزان لهما نفس المحتوى دائمًا إلى نفس الكائن. [14] في معظم تطبيقات Smalltalk، يتم تنفيذ المحددات (أسماء الطرق) كرموز.

أمثلة

فيما يلي مثال بسيط لرمز حرفي في Smalltalk:

my_symbol  :=  # 'معرّف'  " رمز حرفي " 
my_symbol  :=  #a                " من الناحية الفنية، هذا هو رمز حرفي للمحدد. في معظم التطبيقات، " 
                              " تكون المحددات عبارة عن رموز، لذا فهذا أيضًا رمز حرفي "

يمكن تحويل السلاسل إلى رموز، والعكس صحيح:

my_symbol  :=  'مرحبا بالعالم!'  asSymbol  " => #'مرحبا بالعالم!' " 
my_string  :=  #hello:  asString          " => 'مرحبا:' "

تتوافق الرموز مع symbolالبروتوكول، ويتم استدعاء فئتها Symbolفي معظم التنفيذات:

my_symbol  :=  #hello_world 
my_symbol  class             " => Symbol "

تُستخدم الرموز عادةً لإرسال رسائل بشكل ديناميكي إلى الكائنات (استدعاء الأساليب على):

"نفس الأمر 'foo' عند: 2" 
'foo'  يؤدي:  #at:  مع:  2  " => $o "

مراجع

  1. ^ abc Thomas, Dave ; Fowler, Chad; Hunt, Andy (2001). Programming Ruby the pragmatic Programmers' Guide; [includes Ruby 1.8] (الطبعة الثانية، 10 طبعات). Raleigh, North Carolina: The Pragmatic Bookshelf. ISBN 978-0-9745140-5-5.
  2. ^ الرموز الموجودة في الصفحة الخاصة بهياكل البيانات
  3. ^ الكلمات الرئيسية في الصفحة الخاصة بهياكل البيانات
  4. ^ "جولة في لغة دارت | الرموز". لغة برمجة دارت . تم الاسترجاع في 17 يناير 2021 .
  5. ^ "Julia Core.Symbol". وثائق جوليا . تم الاسترجاع في 31 مايو 2022 .
  6. ^ "CLHS: رمز فئة النظام". www.lispworks.com .
  7. ^ "CLHS: System Class PACKAGE". www.lispworks.com .
  8. ^ بيتر نورفيج : نماذج برمجة الذكاء الاصطناعي: دراسات حالة في لغة كومون ليسب ، مورجان كوفمان، 1991، ISBN 1-55860-191-0 ، الويب 
  9. ^ براتكو، إيفان (2001). برمجة برولوج للذكاء الاصطناعي . هارلو، إنجلترا؛ نيويورك: أديسون ويسلي. ISBN 978-0-201-40375-6.
  10. ^ ab Kidd, Eric (20 يناير 2007). "13 طريقة للنظر إلى رمز روبي". اختراقات عشوائية . تم الاسترجاع في 10 يوليو 2011 .
  11. ^ "برمجة روبي: دليل المبرمج البراجماتي". ruby-doc.com .
  12. ^ "استخدام الرموز لسبب خاطئ". ملاحظات جنومية .
  13. ^ "الرمز". توثيق روبي . تم الاسترجاع في 10 يوليو 2011 .
  14. ^ http://wiki.squeak.org/squeak/uploads/172/standard_v1_9-indexed.pdf معيار ANSI Smalltalk.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Symbol_(programming)&oldid=1235321541"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate