تراك (لغة برمجة)

**تراك** أو **لغة حساب وتجميع النص** وَبالإنكليزيَّة: **T**ext **R**eckoning **A**nd **C**ompiling، اختصارًا: **TRAC**. هي لغة برمجة طُوِّرَت بين عامي 1959-1964 من قِبَل كالفين موريس وَنُفِّذَت على معالج البيانات المبرمَج 10 في عام 1964 من قِبَل ل. بيتر دويتش. وَكانت واحدة من «اللُّغات الثلاثة الَّتي نصح بها تيد نيلسون في كتاب مكتبات الحاسوب/آلات الأحلام (Computer Lib/Dream Machines)». بقيت لغة حساب وتجميع النص 64 مُستخدَمة حتَّى 1984 عندها قام كالفين موريس بتحديثها إلى لغة حساب وتجميع النص 84.

تعتبر لغة حساب وتجميع النص لُغَةً مُعتمدة على النص؛ وهي نوع من اللُّغات الكبيرة. وَبعكس اللُّغات الكبيرة التقليديَّة في وقتها مثل تلك الموجودة في المُجَمِّعَاْت، فهي مُصَمَّمَة بإحكام وَمتينة وبعبارة أخرى هي «كاملة». لديها مُعامِلات دخل وَ خرج واضحة، بعكس الدخل وَ الخرج المثاليّ المُضمَن في المستوى الكبير الخارجيّ الأبعد، وبذلك أصبحت أبسط وَأكثر تعدّديَّة للاستعمال من اللُّغات الكبيرة الأقدم.

وتختلف عن اللُّغات الكبيرة التقليديَّة بأنّ أعدادها عبارة عن سلسلة نصيّة من الأرقام، وتُوَفِّر دَوالًّا مُدمَجة «بِدائيّة» لِحسابات الأعداد الطبيعيَّة (دون تخصيص حَدٍّ لأعلى قيمة ممكنة). إحدى جوانب كمالِها -كما يُزعَم- هي حصر مفهوم الغلطة/الخطأ Error في أحداث مثل «قلّة المساحة التخزينيّة اللّازمة للملف» وَ«طلب توسيع سلسلة نصيّة أطول من مساحة المفسّر المخصّصة للعمل»؛ وتوصف هذه العمليّات في لُغات أخرى بأنّها **عمليّات غَير شرعيّة** لكن تمّ التعامل معها في لغة حساب وتجميع النص بتعريف نتيجة (وَغالبًا ما تكون **باطل** null) لكلّ احتمال دمج لِلمُعامِلات الوسيطيَّة argument النصيَّة للدوال.

توفّر لغة حساب وتجميع النص آليَّات لاستيعاب المحارِف النحويَّة للُّغة بِكلٍّ من قواعدها النحويَّة الخاصَّة أو بأيِّ مَحرَف آخر، وَبذلك تؤكِّد على السلاسل النصيَّة بكونها سلاسلًا نصيَّة، وَيكون للـشفرة ذاتية التعديل نتيجة «أكثر طبيعيَّة» في التقنيّات البرمجيَّة للغة حساب وتجميع النص من كونها مَيِّزَة خاصَّة.

إنَّ لغة حساب وتجميع النص تشبه أي بي إل أو ليسب، فهي لغة موجهة التعابير (بعكس لغات البرمجة الإجرائيَّة)، وتفتقد المُعامِلات بعكس **أي بي إل**. يتمّ اعتبارها حالة من البرمجة الوظيفيّة النقيّة.

تشترك مع لغة ليسب بالنحويَّة الَّتي تتضمَّن عمومًا العديد من مستويات الأقواس المُعَشِّشة.

وضع كالفين موريس علامة تجاريّة للاسم «TRAC» بهدف الحفاظ على تحكُّمِه بتعريف اللُّغة، وكان عملًا غير اعتياديّ ومبتكر في ذلك الوقت. وقد أحضر وثيقة مُلكيّة فِكْريّة ضد شركة مُعِدّات رقميّة، مُدَّعيًا وجود عقد لتوصيل حاسوب صغير مُزَوَّدًا بمفسّر لغة حساب وتجميع النص وبذلك تُنْتَهَك حقوقه. «أوّل قضيّة لِـمجلة دكتور دوب، وَهي واحدة من أُولى المنشورات في مجال الحاسوب الشخصيّ، افتتاحيّة لاذعة ضد موريس وَطمعه في حَضّ الناس على لغته البرمجيّة.» انتهت علامته التجاريّة (#72301892) في عام 1992. ومنذ ذلك الحين استُخدِمَ الاسم عدّة مرّات لِمشاريع تقنية معلومات لا علاقة لها بموريس ولا بلغة حساب وتجميع النص، مُتضمَّنةً مشروعًا حاليًّا مفتوح المصدر لِنظام إدارة سُمِّيَ تراك .

لقد استُلهِمَت العديد من اللُّغات من لغة حساب وتجميع النص. ولتفادِ أي مشاكل مع موريس، قاموا بإعادة تسمية أنواع البيانات وَ/أو استخدموا مَحارف مختلفة. في حالة «SAM76»، أُضيفت أنواع بيانات، وبحسب كلاودي كاجان : «السبب هو كون لغة حساب وتجميع النص عبارة عن كلام أطفال»!. وفي حالة مينت ، أُضيفت أنواع بيانات لتمكين الولوج إلى محرر نصّي رفيع.
* عيبٌ واحد محسوس للغة حساب وتجميع النص هو افتقارها لكامل قابليّة التمدّد: بعض وظائفها حسّاسة بحيث تفرّق بين «باطل» null (صفر-محارِف) وَ«مَعدوم» nonexistent (غير محدود)، لكن لا يمكن للدوال المُعَرَّفَة من قِبَل المُستخدِم القيام بذاك التمييز. وَلكن كانت سام76  لُغَةً شبيهةً بلغة حساب وتجميع النص وَقد أزالت تلك الحدود.
* نفّذ رُسْ نيلسون لغة لشركة إيماكس سمّيت مينت(اختصارًا لِـ: **M**INT **I**s **N**ot **T**RAC). وَاستُخدِمَت هذه اللُّغة من قِبَل مُحَرِّر فري دوس الـفري ماكس.

استخدمت لغة حساب وتجميع النص من قِبَل برمجيَّة بروتوكول انتقال الملفّ (FTP) في منتجها حاسوب مكتبيّ/نظام السيطرة على الإرسال(PC/TCP) كما في لُغات طالب المودم النصيَّة(modem dialler scripting language).

استُخدِمَت كـ«واجهة أماميَّة» Front-End على مُعِدَّات كراي للإنتاج الرَّقميّ للأفلام، متضمِّنةً آخر محارب نجمي.

## طالع أيضًا
* تي تي إم، لغة برمجة استُلهِمَت من لغة حساب وتجميع النص.

## المراجع

## روابط خارجيَّة
*The TRAC Foundation (مُؤَرْشَفٌ)
*TRAC, a procedure-describing language for the reactive typewriter in the Communications of the ACM, Volume 9 Issue 3, March 1966.
*Andrew Walker's TRAC Information page
*TRAC entry in the HOPL Encyclopedia of Computer Languages
*TRAC information page, at The History of Computing Project, with small code sample and photo of C. M. Mooers.
*A TRAC implementation project on سورس فورج. *Sadly, this seems to be a dead project.*
*Oral history interview with Calvin N. Mooers and Charlotte D. Mooers at the Charles Babbage Institute. Interview discusses information retrieval and programming language research from World War II through the early 1990s.

تصنيف:لغات برمجة ماكرو