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

يشير مصطلح "الطباعة الجميلة" عادةً إلى عرض التعبيرات الرياضية بطريقة مشابهة لطريقة طباعتها في البرامج الاحترافية. على سبيل المثال، في أنظمة الجبر الحاسوبية مثل Maxima أو Mathematica، قد يكتب النظام مخرجات مثل "x^2 + 3 * x" مثل " بعض الآلات الحاسبة البيانية تدعم الطباعة المنسقة. تشمل هذه الآلات سلسلة Casio 9860 ، وسلسلة HP-49/50 ، و HP Prime ، و TI-84 Plus ، و TI-89 ، و TI-Nspire ، و TI-83 Plus المزودة بوحدة PrettyPt الإضافية [ 1 ] . كذلك، تدعم TI-84 Plus المزودة بوحدة PrettyPt الإضافية أو بأنظمة تشغيل تدعم تقنية MathPrint هذه الميزة. بالإضافة إلى ذلك، تم تجهيز عدد من الآلات الحاسبة العلمية الحديثة بشاشات نقطية تدعم الطباعة المنسقة، مثل سلسلة Casio FX-ES (Natural Display)، وسلسلة Sharp EL-W (WriteView)، و HP SmartCalc 300s ، و TI-30XB ، و Numworks .
يمكن للعديد من برامج تنسيق النصوص أيضًا طباعة المعادلات الرياضية: تم تطوير TeX خصيصًا لطباعة المعادلات الرياضية بجودة عالية .
تنسيق الطباعة الجميلة والترميز القائم على الوسوم

يرتبط تنسيق النصوص في لغات الترميز عادةً بمسافة بادئة للوسوم ومحتوى النصوص لتحديد التسلسل الهرمي والتداخل بصريًا. ورغم أن البنية النحوية للغات القائمة على الوسوم لا تختلف اختلافًا كبيرًا، إلا أن المسافة البادئة قد تختلف اختلافًا كبيرًا تبعًا لكيفية تفسير لغة الترميز أو تبعًا للبيانات التي تصفها.
في لغة 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
- شفرة المصدر
- ميزات محرر النصوص
