Pretty-printing
Pretty-printing (or prettyprinting) is the application of any of various stylistic formatting conventions to text files, such as source code, markup, and similar kinds of content. These formatting conventions may entail adhering to an indentation style, using different color and typeface to highlight syntactic elements of source code, or adjusting size, to make the content easier for people to read, and understand. Pretty-printers for source code are sometimes called code formatters or beautifiers.
Pretty-printing mathematics

Pretty-printing usually refers to displaying mathematical expressions similar to the way they would be typeset professionally. For example, in computer algebra systems such as Maxima or Mathematica the system may write output like "x ^ 2 + 3 * x" as "". Some graphing calculators can perform pretty-printing. Such calculators include the Casio 9860 series, HP-49/50 series and HP Prime, TI-84 Plus, TI-89, TI-Nspire, and the TI-83 Plus with the PrettyPt[1] add-on. Similarly, the TI-84 Plus with the PrettPt add-on or with "MathPrint"-enabled operating systems. Additionally, a number of newer scientific calculators are equipped with dot matrix screens capable of pretty-printing such as the Casio FX-ES series (Natural Display), Sharp EL-W series (WriteView), HP SmartCalc 300s, TI-30XB, and Numworks.
Many text formatting programs can also typeset mathematics: TeX was developed specifically for high-quality mathematical typesetting.
Pretty-printing markup and tag-based code

Pretty-printing in markup language instances is most typically associated with indentation of tags and string content to visually determine hierarchy and nesting. Although the syntactical structures of tag-based languages do not significantly vary, the indentation may vary significantly due to how a markup language is interpreted or due to the data it describes.
في لغة MathML ، لا تعكس المسافات البيضاء البيانات أو المعنى أو البنية النحوية التي تتجاوز ما تتطلبه بنية XML . أما في لغة HTML ، فتُعتبر المسافات البيضاء بين الوسوم نصًا، ويتم تحليلها كعُقد نصية في النتيجة المُحللة. [ 2 ] مع أنه يُمكن تطبيق المسافة البادئة بسخاء على مستند MathML، إلا أنه يجب توخي الحذر الشديد عند تنسيق مستند HTML لضمان عدم إنشاء أو حذف عُقد نصية إضافية بالقرب من المحتوى أو عناصر الوسوم التي تعكس المحتوى. هذا الاختلاف في التعقيد ليس بالأمر البسيط من منظور عملية التنسيق التلقائي، حيث لا توجد قواعد خاصة أو حالات استثنائية ضرورية، كما هو الحال في مثال MathML الأبسط. قد يتطلب مثال HTML سلسلة من الخوارزميات المتدرجة والمترابطة لمراعاة أنماط عناصر الوسوم والمحتوى المختلفة التي تتوافق مع نمط موحد وتكون متسقة في التطبيق عبر مختلف الحالات، كما يتضح من مكون التطبيق markup.ts [ 3 ] المستخدم لتنسيق HTML وXML والتقنيات ذات الصلة لأداة Pretty Diff .
تنسيق شفرة المصدر للبرنامج
يتعلم المبرمجون الالتزام بأسلوب تنسيق محدد عند كتابة شفرة المصدر البرمجية ، وذلك لتسهيل قراءة الشفرة وفهمها. وتختلف هذه الأساليب، وتشمل أمورًا مثل المسافة البادئة ، والمسافات البيضاء المحيطة بالكلمات المفتاحية وعلامات الترقيم، وموضع الأقواس .
توجد أدوات لأتمتة (إعادة) تنسيق الكود. تُسمى هذه الأدوات مُحسِّنات التنسيق، أو مُنسِّقات الكود، أو مُدرِّبات المسافات البادئة . تُحوِّل هذه الأدوات الكود المصدري من نمط تنسيق إلى آخر. يُعدّ تطبيق هذه الأدوات بسيطًا نسبيًا، نظرًا لوضوح قواعد لغات البرمجة. تقرأ الأداة الكود المصدري، وتتعرّف على بنيته (مثل عبارات الإسناد، والشروط، والحلقات - انظر تدفق التحكم )، ثم تعرض الكود المصدري مُنسَّقًا وفقًا للنمط المُحدَّد في ملف التكوين.
بعض أدوات تحسين الكود عبارة عن تطبيقات مستقلة، بينما البعض الآخر مُدمج في محررات النصوص وبيئات التطوير المتكاملة . على سبيل المثال، يحتوي محرر Emacs على إعدادات لتحديد لغة البرمجة ("وضع لغة Emacs") ولتنسيق كتل الكود وفقًا لذلك. [ 4 ]
HTML
طابعة Lisp الجميلة
كان برنامج "GRINDEF" ( أي "دالة الطحن") لبيل جوسبر ( حوالي عام 1967) مثالًا مبكرًا على الطباعة الجميلة، حيث استخدم البحث التوافقي مع التقليم لتنسيق برامج لغة ليسب . عملت الإصدارات الأولى على الشكل التنفيذي (بنية القائمة) لبرنامج ليسب، ولم تكن على دراية بالمعاني الخاصة للدوال المختلفة. أما الإصدارات اللاحقة، فقد احتوت على اصطلاحات قراءة خاصة لإدراج التعليقات غير التنفيذية، وكذلك للحفاظ على وحدات الماكرو المقروءة في شكلها غير الموسع. كما سمحت باصطلاحات مسافة بادئة خاصة لدوال معينة . [ 5 ] [ 6 ] استُخدم مصطلح "grind" في بعض أوساط ليسب كمرادف للطباعة الجميلة. [ 7 ]if
قواعد أسلوب المشروع
وضعت العديد من مشاريع البرمجيات الحرة قواعد لتنظيم الشيفرة البرمجية. وأشهرها تنسيق GNU [ 8 ] ونمط BSD [ 9 ] . ويكمن الاختلاف الأكبر بينهما في موضع الأقواس المعقوفة: ففي نمط GNU، يُوضع كل قوس على سطر منفصل، وتُزاح الأقواس المتطابقة (القوس المفتوح والقوس المغلق) إلى نفس المستوى. أما نمط BSD، فيضع القوس المفتوح في نهاية سطر الشيفرة، ويسمح بأن يتبع القوس المغلق كلمة else . كما يختلف حجم المسافة البادئة وموقع المسافات البيضاء.
مثال على تنسيق وتجميل الكود
يوضح المثال التالي بعض هياكل لغة C النموذجية وكيفية تنسيقها باستخدام قواعد التنسيق المختلفة . بدون أي تنسيق، تبدو كما يلي:
int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "خارج النطاق \n " ); printf ( "هذه الدالة تتطلب قيمة 1 أو 2 \n " ); } else { printf ( "جارٍ التبديل \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; }}}يُنتج برنامج GNU indent المخرجات التالية عند طلبه تطبيق المسافة البادئة وفقًا لقواعد GNU :
int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "خارج النطاق \n " ); printf ( "هذه الدالة تتطلب قيمة 1 أو 2 \n " ); } else { printf ( "جارٍ التبديل \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }ينتج هذا الناتج عند التنسيق وفقًا لقواعد BSD:
int foo ( int k ) { if ( k < 1 || k > 2 ) { printf ( "خارج النطاق \n " ); printf ( "هذه الدالة تتطلب قيمة 1 أو 2 \n " ); } else { printf ( "جارٍ التبديل \n " ); switch ( k ) { case 1 : printf ( "1 \n " ); break ; case 2 : printf ( "2 \n " ); break ; } } }انظر أيضاً
مفاهيم ذات صلة
- خاصية المسافة البادئة المرنة ، وهي ميزة موجودة في العديد من محررات أكواد المصدر، تقوم باكتشاف المسافات البادئة والحفاظ عليها.
- التصغير ، أي جعل شفرة المصدر مضغوطة، حتى لو أصبح فهمها أصعب على البشر.
- التعتيم ، وهو جعل شفرة المصدر صعبة الفهم على البشر عمداً - خاصة مع ازدياد تعقيدها.
المرافق
- برنامج enscript ، وهو محول من نص إلى PostScript، مزود بميزات تنسيق الطباعة.
مراجع
- ↑ "PrettyPrint - ticalc.org" . www.ticalc.org . تم الاطلاع عليه بتاريخ 13 أبريل 2022 .
- ↑ بارون، ل. ديفيد. "المسافات البيضاء في نموذج كائن المستند" . شبكة مطوري موزيلا . تم الاسترجاع في 27 أغسطس 2012 .
- ↑ markup.ts
- ↑ ستالمان، ريتشارد م. "المسافة البادئة للبرامج" . دليل جنو إيماكس . مؤسسة البرمجيات الحرة . تم الاسترجاع في 20 أكتوبر 2011 .
- ↑ إيرا غولدشتاين، "الطباعة الجميلة : تحويل القائمة إلى بنية خطية"، مذكرة الذكاء الاصطناعي 279، معهد ماساتشوستس للتكنولوجيا، فبراير 1973. النص الكامل
- ↑ ريتشارد سي. ووترز، "استخدام طابعة التنسيق الجديدة الشائعة في لغة ليسب"، ACM SIGPLAN Lisp Pointers 5 :2:27-34، أبريل–يونيو 1992. النص الكامل
- ↑ ملف المصطلحات ،طحن sv
- ↑ نمط جنو
- ↑ نمط BSD
روابط خارجية
- الخوارزمية 268: محرر لغة المرجع ALGOL 60، بقلم ويليام م. ماكيمان : مجلة الاتصالات ACM 8(11): 667-668 (1965)
- شبكة أرشيف TEX الشاملة lgrind
- NEATER2: برنامج لإعادة تنسيق عبارات المصدر PL/I ، كينيث كونرو، رونالد ج. سميث : مجلة الاتصالات ACM 13(11): 669-675 (1970)
- SOAP - تبسيط برامج Algol الغامضة R. S Scowen، D. Allin، AL Hillman، M. Shimell : تقرير وحدة الحاسوب المركزية للمختبر الفيزيائي الوطني CCU6 (أبريل 1969) يتضمن قائمة منسقة لرمز مصدر SOAP.
- SOAP - برنامج لتوثيق وتحرير برامج ALGOL 60. RS Scowen, D. Allin, AL Hillman, M. Shimell : Comput. J. 14(2): 133-135 (1971)
- شفرة المصدر الأصلية لبروتوكول SOAP من KDF9
- دليل مستخدم SOAP. (لإصدار إدنبرة ) بيتر سالكيلد روبرتسون (1976)
- شفرة مصدر SOAP في/لـ IMP9
- Soap80: برنامج لتنسيق برامج المصدر IMP80. جيه إم موريسون، مركز إدنبرة الإقليمي للحاسوب (1980)
- شفرة مصدر SOAP في/لـ IMP80، إي. إن. غريغوري، جامعة كنت في كانتربري؛ بيتر د. ستيفنز، مركز إدنبرة الإقليمي للحاسوب
- PRETTYP.PAS برنامج طباعة الصور المبكرة بلغة باسكال. ليدجارد وآخرون.
- باسكال بأسلوبه الخاص (1979)
- إرشادات تصميم FreeBSD (9)
- vgrind ، مشروع الإرث [Unix]
- تنسيق شفرة المصدر الخاصة بك - إرشادات أسلوب GNU
- شفرة المصدر
- ميزات محرر النصوص
