طي الشفرة

طي النصوص أو التعليمات البرمجية ، أو ما يُعرف أحيانًا بالتلخيص الكامل ، [ 1 ] هي ميزة في بعض واجهات المستخدم الرسومية تُمكّن المستخدم من إخفاء ("طي") أو إظهار ("فتح") أجزاء من المستند بشكل انتقائي. يتيح ذلك للمستخدم إدارة كميات كبيرة من النصوص مع عرض الأقسام الفرعية التي تهمه فقط. تُستخدم هذه الميزة عادةً مع المستندات ذات البنية الشجرية الطبيعية التي تتكون من عناصر متداخلة. ومن الأسماء الأخرى لهذه الميزة: التوسيع والطي ، وإخفاء التعليمات البرمجية ، والتخطيط . في برنامج مايكروسوفت وورد ، تُسمى هذه الميزة "التخطيط القابل للطي".
توفر العديد من واجهات المستخدم أدوات كشف لطي التعليمات البرمجية في شريط جانبي، يتم الإشارة إليها على سبيل المثال بواسطة مثلث يشير إلى الجانب (إذا كان مطويًا) أو إلى الأسفل (إذا كان موسعًا)، أو بواسطة [-]مربع للنص القابل للطي (الموسع)، ومربع [+]للنص القابل للتوسيع (المطوي).
تُوجد خاصية طي التعليمات البرمجية في محررات النصوص ، ومحررات التعليمات البرمجية المصدرية ، وبيئات التطوير المتكاملة (IDEs) . عادةً ما يتبع هيكل الطي شجرة بناء الجملة للبرنامج المُحددة بلغة البرمجة . كما يُمكن تحديده بمستويات المسافة البادئة ، أو تحديده صراحةً باستخدام علامة داخلية (محفوظة كجزء من التعليمات البرمجية المصدرية) أو علامة خارجية.
طي النصوص ميزة مشابهة تُستخدم في النصوص العادية، حيث تتكون العناصر المتداخلة من فقرات أو أقسام أو مستويات تخطيطية . تشمل البرامج التي توفر هذه الميزة برامج تحرير النصوص القابلة للطي ، وبرامج التخطيط ، وبعض برامج معالجة النصوص .
توجد خاصية طي البيانات في بعض محررات الملفات السداسية العشرية ، وتُستخدم لهيكلة ملف ثنائي أو إخفاء أقسام البيانات التي لا يمكن الوصول إليها. [ 2 ]
كما يتم استخدام الطي بشكل متكرر في مقارنة البيانات ، لاختيار إصدار واحد أو آخر، أو الاختلافات فقط.
تاريخ
أقدم مثال معروف لطيّ التعليمات البرمجية في محرر موجود في لغة NLS . [ 3 ] ربما كان أول محرر طيّ متاح على نطاق واسع هو محرر Structured Programming Facility (SPF) لعام 1974 لأجهزة IBM 370 الرئيسية، والذي كان بإمكانه إخفاء الأسطر بناءً على المسافة البادئة. وكان يعرض على شاشات طرفية 3270 ذات تعيين الأحرف. [ 4 ] وكان مفيدًا جدًا للغات المطولة مثل COBOL . وقد تطور لاحقًا إلى نظام الإنتاجية التفاعلي ( ISPF ).
يستخدم
يُستخدم طي التعليمات البرمجية في أنماط متنوعة ، ويتمثل دوره الأساسي في تنظيم التعليمات البرمجية أو إخفاء المعلومات الأقل فائدة ليتسنى التركيز على المعلومات الأكثر أهمية. وفيما يلي الأنماط الشائعة. [ 5 ]
تحديد الخطوط العريضة
ببساطة، تستخدم التطبيقات خاصية طي الكود لتنظيم الكود المصدري، حيث يتم ضغط كل جزء منه في سطر واحد. قد يقتصر ذلك على الأجزاء الرئيسية مثل الدوال والفئات، أو الأجزاء المتداخلة مثل الدوال والأساليب المتداخلة، أو جميع الأجزاء، وخاصة أجزاء التحكم في تدفق الكود. يتيح ذلك الحصول على نظرة عامة على الكود، والتنقل فيه وإعادة ترتيبه بسهولة، والتعمق في التفاصيل عند الحاجة، دون تشتيت الانتباه بأجزاء أخرى من الكود. من ناحية العرض، يسمح ذلك برؤية قائمة بجميع الدوال (بدون أجزائها الداخلية) بسرعة، بينما من ناحية التنقل، يغني ذلك عن تصفح صفحات طويلة للدوال - أو البحث عن الدالة المطلوبة - بالانتقال مباشرةً إلى الدالة التالية.
إخفاء التعليمات البرمجية النمطية
تتطلب بعض اللغات أو المكتبات كتابة أكواد نمطية مطولة . ينتج عن ذلك أكواد طويلة للغاية، مما قد يحجب الفكرة الرئيسية. علاوة على ذلك، قد تضيع أجزاء مهمة من الكود وسط هذه الأكواد النمطية.
على سبيل المثال، في لغة جافا، يتطلب حقل خاص واحد مع دالة جلب ودالة تعيين ما لا يقل عن 3 أسطر، إذا كانت كل دالة على سطر منفصل:
private String name = null ; public String getName ( ) { return name ; } public void setName ( String name ) { this.name = name ; }يتوسع هذا إلى 10 أسطر مع فواصل الأسطر الوظيفية التقليدية والمسافات بين الوظائف (بما في ذلك سطر جديد لاحق):
private String name = null ;public String getName () { return name ; }public void setName ( String name ) { this . name = name ; }يؤدي استخدام Javadoc في التوثيق إلى توسيع هذا إلى 20 سطرًا:
/** * خاصية <code>name</code> قابلة للقراءة/الكتابة. */ private String name = null ;/** * دالة جلب للخاصية <code>name</code> */ public String getName () { return name ; }/** * دالة تعيين للخاصية <code>name</code>. * @param name */ public void setName ( String name ) { this . name = name ; }إذا كان هناك العديد من هذه الحقول، فقد ينتج عن ذلك مئات الأسطر من التعليمات البرمجية ذات محتوى "مهم" ضئيل للغاية - يمكن لتقنية طي التعليمات البرمجية تقليل ذلك إلى سطر واحد لكل حقل، أو حتى إلى سطر واحد لجميع الحقول. علاوة على ذلك، إذا تم طي جميع الحقول الروتينية، ولكن لم يتم طي الحقول غير الروتينية (حيث لا تقوم دوال الوصول أو التعيين بإرجاع أو تعيين حقل خاص فقط)، يصبح من الأسهل رؤية التعليمات البرمجية الأساسية.
دمج البيانات الوصفية
قد تكون البيانات الوصفية طويلة، وعادةً ما تكون أقل أهمية من البيانات التي تصفها. يسمح اختصار البيانات الوصفية بالتركيز بشكل أساسي على البيانات، وليس على البيانات الوصفية نفسها. على سبيل المثال، يمكن اختصار قائمة طويلة من السمات في لغة C# يدويًا كما يلي: [ 6 ]
#region Attributes [Browsable(false)] [MergableProperty(false)] [DefaultValue(null)] [PersistenceMode(PersistenceMode.InnerProperty)] [TemplateContainer(typeof(MyType))] [TemplateInstance(TemplateInstance.Single)] #endregion public ITemplate ContentTemplate { get ; set ; }يظهر الكود الناتج على النحو التالي:
السمات العامة ITemplate ContentTemplate { get ; set ; }طي التعليقات
التعليقات هي نوع من البيانات الوصفية سهلة القراءة، وقد تُعيق التعليقات المطولة انسيابية الكود. ينطبق هذا على التعليقات الطويلة التي تُغطي جزءًا قصيرًا من الكود، كفقرة لشرح سطر واحد، أو على التعليقات الخاصة بمولدات التوثيق ، مثل Javadoc أو توثيق XML . تتيح خاصية طي الكود إمكانية إضافة تعليقات طويلة، مع عرضها فقط عند الحاجة. في حال احتواء التعليق الطويل على سطر ملخص واحد، كما هو الحال في توثيق Python، يظل الملخص ظاهرًا حتى عند طي الجزء، مما يُتيح عرضًا موجزًا/تفصيليًا.
عرض بنية أو كود الساندويتش في البرمجة الهيكلية
تتألف البرمجة الهيكلية من كتل برمجية متداخلة، وقد تُخفي الكتل البرمجية الطويلة - مثل عبارات التبديل الطويلة - البنية العامة. يسمح طي الكود برؤية البنية العامة والتوسع إلى مستوى محدد. علاوة على ذلك، في بعض الاستخدامات، وخاصة البرمجة الهيكلية الصارمة (الخروج من دالة واحدة)، توجد أنماط برمجية يصعب رؤيتها عند النظر إلى الكود الموسع. على سبيل المثال، في إدارة الموارد في البرمجة الهيكلية، يتم عادةً الحصول على مورد، يليه كتلة برمجية تستخدم هذا المورد، ثم تحريره. يصعب رؤية عملية الحصول على المورد وتحريره إذا كانت هناك كتلة برمجية طويلة بينهما، ولكن يسهل رؤيتها إذا تم طي الكتلة الوسيطة. وبالمثل، في الكود الشرطي if...then...else، قد تكون الكتل الثانوية بعيدة عن عبارة الشرط.
رمز التجميع
يمكن استخدام مجموعات الطي لتجميع التعليمات البرمجية، إما عن طريق التجميع الصريح - على غرار كتل التعليقات التي تفصل وحدة نمطية إلى أقسام، أو أعضاء الفئة في مجموعات مرتبطة - أو ضمنيًا، مثل التجميع التلقائي لأعضاء الفئة حسب مستوى الوصول.
إخفاء التعليمات البرمجية القديمة
يمكن طي التعليمات البرمجية القديمة - أو أي تعليمات برمجية لا يرغب المطور في عرضها أو تغييرها في وقت معين - بحيث يتمكن المبرمجون من التركيز على التعليمات البرمجية قيد الدراسة.
إخفاء جداول البيانات داخل المصدر
الاتفاقيات
لدعم طي الأسطر البرمجية، يجب أن يوفر محرر النصوص آلية لتحديد "نقاط الطي" داخل ملف نصي. بعض محررات النصوص توفر هذه الآلية تلقائيًا، بينما يوفر البعض الآخر إعدادات افتراضية يمكن للمستخدم تجاوزها أو تعديلها.
توجد آليات متنوعة، تُقسم عمومًا إلى آلية تلقائية ويدوية - فهل تتطلب أي تحديد من المبرمج؟ تُحدد نقاط الطي عادةً باستخدام آلية واحدة أو أكثر من الآليات التالية. لكل منها مزاياها وصعوباتها الخاصة، ويعود القرار النهائي لمطوري برامج تحرير النصوص بشأن الآلية الأنسب. تتيح برامج تحرير النصوص التي تدعم آليات طي متعددة للمستخدم اختيار الآلية الأنسب للملف الذي يتم تحريره.
يعتمد على بناء الجملة
تعتمد نقاط الطي المعتمدة على بناء الجملة على محتوى الملف الذي يتم تحريره لتحديد بداية ونهاية مناطق الطي المحددة. تُعرَّف نقاط الطي المعتمدة على بناء الجملة عادةً بناءً على أيٍّ من الميزات الفرعية القياسية للغة الترميز أو لغة البرمجة المستخدمة، أو جميعها. وتُعدّ هذه النقاط مرغوبة لكونها تلقائية ومتوافقة مع بنية الكود، ولكنها قد تتطلب جهدًا كبيرًا لتنفيذها، ووقتًا طويلًا لحسابها أثناء تحرير الملف.
يعتمد على المسافة البادئة
تُحدد نقاط الطي القائمة على المسافة البادئة عادةً من خلال موضع وتسلسل المسافات البيضاء غير القابلة للطباعة، مثل علامات الجدولة والمسافات، داخل النص. ويُستخدم هذا غالبًا كشكل بسيط للطي القائم على بناء الجملة، حيث تعكس المسافة البادئة دائمًا تقريبًا مستوى التداخل في أنماط المسافة البادئة للغات البرمجة الهيكلية.
يُعدّ هذا الأسلوب مناسبًا بشكل خاص للصيغ التي تعتمد على قاعدة المسافة البادئة ، حيث يتوافق هيكل النص إلى حد كبير مع المسافة البادئة. ومن الأمثلة على ذلك لغة بايثون وملفات النصوص التي تتطلب المسافة البادئة كقاعدة أساسية. مع ذلك، حتى في هذه الحالات، لا يتطابق هيكل النص تمامًا مع المسافة البادئة، كما هو الحال في استمرار السطر ، ولذلك يُفضّل استخدام الطي المعتمد على الصيغة.
قائم على الرموز المميزة
تُحدد نقاط الطي القائمة على الرموز باستخدام فواصل خاصة لا تُستخدم في النص إلا لتحديد حدود نقاط الطي. يمكن مقارنة هذا الأسلوب بنقاط الطي القائمة على المسافة البادئة، حيث تُستخدم الأحرف القابلة للطباعة بدلاً من المسافات البيضاء. أكثر رموز الفواصل شيوعًا هي تلك التي تُستخدم {{{لبدء القسم المطوي، وتلك}}} التي تُستخدم لإنهاءه.
ومن الرموز البارزة الأخرى #region( توجيهات C# )، و #Region( توجيهات Visual Basic )، المستخدمة في محرر أكواد Microsoft Visual Studio . تُعامل هذه التوجيهات نحويًا كتوجيهات للمترجم ، على الرغم من أنها لا تؤثر على عملية الترجمة.
باعتبارها طريقة يدوية، فإن الطي القائم على الرموز يسمح بالتقدير في تجميع التعليمات البرمجية بناءً على معايير تعسفية، مثل "الوظائف المتعلقة بمهمة معينة"، والتي لا يمكن استنتاجها من التحليل النحوي.
يتطلب الطي القائم على الرموز إشارات داخلية، حيث تُعدّ رموز الطي بمثابة تعليقات مُهيكلة، وعلى عكس الطرق الأخرى، فهي موجودة في شفرة المصدر ومرئية للمبرمجين الآخرين. يسمح هذا بمشاركتها، ولكنه يتطلب أيضًا استخدامها (أو حفظها) من قِبل جميع المبرمجين العاملين على ملف معين، مما قد يُسبب احتكاكًا وأعباء صيانة.
يحدده المستخدم
تتيح خاصية الطي المُحددة من قِبل المستخدم طي أجزاء من النص باستخدام طريقة تحديد عامة، دون تغيير شفرة المصدر (خارج نطاق التحرير)، حيث يتم تحديدها فقط في المحرر. على سبيل المثال، قد يحدد المبرمج بعض أسطر النص ويحدد طيها. يمكن أن يكون النص المطوي مجهولاً أو مُسمى، ويمكن الاحتفاظ بهذا الطي بين جلسات التحرير أو حذفه. على عكس الطي القائم على الرموز، لا يُغير هذا الطي النص الأصلي، وبالتالي لا تتم مشاركته مع محرري الملف الآخرين، ولا يظهر في الشفرة.
أمثلة
يحتوي المستند التالي على رموز الطي ( {{{ ... }}}):
العنوان 1 {{{ جسم }}} العنوان 2 {{{ جسم }}} العنوان 3 {{{ جسم }}} عند تحميلها في محرر الطي، سيتم عرض بنية المخطط التفصيلي:
العنوان 1 {{{ ... العنوان 2 {{{ ... العنوان 3 {{{ ... عادةً ما يؤدي النقر على {{{العلامات إلى ظهور نص المحتوى المناسب.
برنامج مزود بإمكانية طي التعليمات البرمجية
كان برنامج STET من أوائل برامج تحرير النصوص القابلة للطي ، وهو محرر كتبه مايك كوليشو لنظام التشغيل VM/CMS عام 1977. يُعد STET محرر نصوص (للتوثيق والبرامج وغيرها) يقوم بطي الملفات بناءً على مجموعات من الأسطر؛ حيث يمكن طي أي مجموعة من الأسطر واستبدالها بسطر اسم (والذي بدوره يمكن أن يكون جزءًا من مجموعة يمكن طيها بدورها).
ظهر محرر قابل للطي في بيئة تطوير أوكام المتكاملة ( OCCAM IDE) حوالي عام 1983، والذي كان يُطلق عليه نظام تطوير Inmos Transputer (TDS) [ 7 ] ، [ 8 ] . ربما يكون محرر "f" (المذكور في القائمة أدناه) هو الإرث الأكثر سلامة من هذا العمل.
كان حاسوب ماكنتوش تاريخياً يحتوي على عدد من محررات شفرة المصدر التي كانت "تطوي" أجزاءً من الشفرة عبر " مثلثات الكشف ". منتج Frontier من شركة UserLand Software هو بيئة برمجة نصية تتمتع بهذه الإمكانية. [ 9 ]
تُوفّر العديد من برامج تحرير النصوص الحديثة خاصية طي النصوص، كما أصبح طي النصوص، سواءً كان قائمًا على بناء الجملة أو على دلالاتها، جزءًا أساسيًا من العديد من بيئات تطوير البرمجيات . ومن بين هذه البرامج:
| اسم | رمز مميز | المسافة البادئة | بناء الجملة | مستخدم |
|---|---|---|---|---|
| محرر ABAP | نعم | ؟ | نعم | ؟ |
| أكيلباد | ؟ | ؟ | نعم | ؟ |
| أنجوتا IDE | ؟ | نعم | نعم | ؟ |
| ذرة [ أ ] | ؟ | نعم | ؟ | نعم |
| BBEdit | ؟ | ؟ | نعم | ؟ |
| الأقواس | إضافة | نعم | نعم | لا |
| Codeanywhere | نعم | نعم | نعم | ؟ |
| كودينفي | نعم | نعم | نعم | ؟ |
| بيئة تطوير Code::Blocks | نعم | نعم | نعم | نعم |
| بيئة تطوير كيوبيك المتكاملة | نعم | نعم | نعم | نعم |
| كودا تكست | ؟ | ؟ | ؟ | ؟ |
| بيئة تطوير دلفي المتكاملة | نعم | ؟ | نعم | ؟ |
| دريم ويفر | ؟ | ؟ | ؟ | نعم |
| كسوف | ؟ | ؟ | نعم | ؟ |
| إيديت بلس | لا | نعم | لا | لا |
| إيماكس | نعم [ ب ] | ؟ [ ج ] | نعم [ د ] | نعم [ هـ ] |
| محرر تنفيذي محترف | ؟ | نعم | نعم | ؟ |
| بيئة تطوير FlashDevelop المتكاملة | ؟ | ؟ | نعم | ؟ |
| جيني | ؟ | نعم | نعم | ؟ |
| gedit | نعم | نعم | نعم | ؟ |
| ISPF | ؟ | نعم | ؟ | نعم |
| جيد | نعم | نعم [ f ] | ؟ | لا |
| jEdit | نعم | نعم | نعم | نعم |
| كيت | نعم | نعم | نعم | نعم |
| MATLAB | لا | لا | نعم | لا |
| مايكروسوفت فيجوال ستوديو | نعم | نعم | نعم | نعم |
| بيئة تطوير NetBeans | نعم | نعم | نعم | نعم |
| Notepad++ | ؟ | نعم | نعم | نعم |
| NuSphere PHPEd | ؟ | ؟ | نعم | نعم |
| منشئ Qt | ؟ | ؟ | نعم | ؟ |
| SciTE | نعم | نعم | نعم | ؟ |
| STET [ g ] | ؟ | ؟ | ؟ | ؟ |
| تطبيق TextMate | نعم | نعم | نعم | نعم |
| ألترا إيديت | لا | لا | نعم | نعم |
| همة | نعم | نعم | نعم | نعم |
| خبير بصري | ؟ | ؟ | نعم | ؟ |
| Visual Studio Code | نعم | نعم | نعم | لا |
| Xcode | نعم | نعم | نعم | نعم |
| زيند ستوديو | ؟ | ؟ | ؟ | ؟ |
محررون آخرون
- aoeui، محرر النصوص المُحسَّن لـ Dvorak
- برنامج Author-it لتأليف المحتوى المؤسسي وإدارة محتوى المكونات
- f (الاسم المستعار xf، Winf، Winf32)
- محرر النصوص القابل للطي
- GFA BASIC
- مفكرة GridinSoft
- IntelliJ IDEA (وغيرها من بيئات التطوير المتكاملة من JetBrains )
- الكلمة الرئيسية
- تحرير كومودو
- كرييت
- برج الأسد
- LEXX/LPEX (محرر قاموس أكسفورد الإنجليزي ) [ 10 ]
- مونو ديفيلوب
- نوت تاب برو
- الأب
- محرر نصوص RJ
- سمولترون
- محرر هيسلينج
- Visual Studio
- WinShell (منذ الإصدار 3.30)
- XEDIT (مع ذلك، تتأثر عملية طي الملفات فيه بواسطة البرامج النصية)
- زيوس
انظر أيضاً
- راجع قسم ميزات البرمجة في مقالة مقارنة محررات النصوص للاطلاع على المزيد من المحررات التي تدعم خاصية الطي.
- الأكورديون (واجهة المستخدم الرسومية) ، وهي تقنية واجهة مستخدم مماثلة تُطبق على القوائم الهرمية بدلاً من النصوص.
ملحوظات
- ↑ http://flight-manual.atom.io/using-atom/sections/folding/
- ↑ يتم تنفيذ الطي القائم على الرموز بواسطة وضع الطي الثانوي . ويمكن أيضًا استخدام وضعي المخطط التفصيلي والإخراج الكامل الثانويين لتقسيم مصادر البرنامج.
- ↑ يمكن استخدام
set-selective-displayالوظيفة في Emacs لإخفاء الأسطر بناءً على مستوى المسافة البادئة، كما هو مقترح في ملاحظة طي التعليمات البرمجية العالمية . - يدعم وضعا " outline" و "allout" طي النصوص المعتمد على بناء الجملة لأنواع بناء الجملة المخصصة؛ ووضع "hideshow" الثانوي لبعض لغات البرمجة؛ ووضع "semantic-tag-folding" الثانوي والأمرالخاص ببناء الجملة المدعوم من قِبل "semantic" ( أحد مكونات CEDET) ، بالإضافة إلى وضع "doc-mode" لتعليقات JavaDoc أو Doxygen ، ووضع "TeX-fold-mode" ،والأمر، ومكتبة "nxml-outln" في الأوضاع الخاصة بكل لغة، وربما في أوضاع أخرى لأنواع بناء جملة محددة. أحيانًا، يُستخدم وضع "outline" الثانوي البسيط القياسي لمحاكاة طي النصوص المعتمد على بناء الجملة، كما هو الحال في استخدامه في شفرة مصدر Emacs Lisp ذات المسافات البادئة الصحيحة، واستخدامه (انظر قرب نهاية الصفحة) في HTML ذي المسافات البادئة الصحيحة. يتم توحيد العديد من آليات الطي بواسطة واجهة "fold-dwim" . انظر أيضًا CategoryHideStuff .
senator-fold-tagsgml-fold-element - ↑ يتم تنفيذ طي المناطق التي يحددها المستخدم في Emacs بواسطة
hide-region-hideالأمر. - ↑ يمكن استخدام هذه
set_selective_displayالوظيفة لإخفاء الأسطر التي تم إدخالها بشكل زائد عن مقدار محدد. - ↑ ربما كان برنامج STET أول محرر نصوص يدعم طي النصوص
مراجع
- ↑ سيمون غوفان، أوميد بنياساد، "الشفافية، والتعبير الشامل، والتخطيط التلقائي المطبق على هياكل التحكم للغات برمجة تدفق البيانات المرئية"، في وقائع ندوة ACM لعام 2006 حول تصور البرمجيات ، ص 67-75
- ↑ "HxD - محرر ملفات سداسية عشرية ومحرر أقراص مجاني" . mh-nexus . تم الاطلاع عليه بتاريخ 30 أبريل 2007 .
- ↑ مارسيل (9 يوليو 2012)، "أم جميع العروض التجريبية، قدمها دوغلاس إنجلبارت (1968)" ، يوتيوب ، تم الاطلاع عليه بتاريخ 29 ديسمبر 2019
- ↑ سان فلور، جيلبرت (25 يونيو 1998). "تاريخ ISPF" . بلانيت إم في إس . تم الاسترجاع في 27 أكتوبر 2015 .
- ↑ أتوود 2008 .
- ↑ روب (19 مارس 2014). "هذا مثير للاهتمام، لأنني أميل إلى استخدام #region لإخفاء التفاصيل غير الضرورية (مثل توثيق XML، وقوائم السمات الطويلة، إلخ) مما يُسهّل رؤية الكود المهم..." . مشكلة طي الكود . نقاش حول رعب البرمجة. مؤرشف من الأصل في 6 أغسطس 2020.
- ↑ مؤتمر مجموعة مستخدمي ترانسبوتر في أمريكا الشمالية (الثاني : 1989 : دورهام، كارولاينا الشمالية) (1990). أبحاث وتطبيقات ترانسبوتر، 2 : NATUG-2، وقائع المؤتمر الثاني لمجموعة مستخدمي ترانسبوتر في أمريكا الشمالية، 18-19 أكتوبر 1989، دورهام، كارولاينا الشمالية . جون أ. بورد، جامعة ديوك. أمستردام: دار نشر IOS. ص 85. ISBN 9051990278. OCLC 35478471 .
{{cite book}}: صيانة CS1: الأسماء الرقمية: قائمة المؤلفين ( رابط ) - ↑ كورمي، ديفيد (1986). "المذكرة الفنية رقم 3 من INMOS - البدء باستخدام TDS" (ملف PDF) . transputer.net . تاريخ الاسترجاع: 19 يوليو 2019 .
- ↑ "Outliners.com" . مؤرشف من الأصل بتاريخ 23-12-2006 . تم الاطلاع عليه بتاريخ 27-12-2006 .
- ↑ LEXX – محرر هيكلي قابل للبرمجة، مجلة IBM للبحوث والتطوير ، المجلد 31، العدد 1، 1987، رقم طلب إعادة طبع IBM G322-0151
- أتوود، جيف (6 يوليو 2008). "مشكلة طي الكود" . رعب البرمجة - نقد لتقنية طي الكود، وتعليقات مفصلة حول استخدامها.
{{cite web}}: CS1 maint: postscript ( link )
روابط خارجية
- ما هو محرر الطي؟ بقلم مؤلف المحرر
fe. - وصف لمحرر الطي المستخدم في أوكام .
- شفرة المصدر
- ميزات محرر النصوص
