TRAC (प्रोग्रामिंग भाषा)

टीआरएसी (टेक्स्ट रेकनिंग एंड कंपाइलिंग के लिए) भाषा एक प्रोग्रामिंग भाषा  है जिसे 1959-1964 के बीच केल्विन मूर्स द्वारा विकसित किया गया था और पहली बार 1964 में एल पीटर Deutsch द्वारा पीडीपी-1 पर लागू किया गया था। यह कंप्यूटर लिब में टेड नेल्सन द्वारा सुझाई गई तीन "पहली भाषाओं" में से एक थी। टीआरएसी टी64 का उपयोग कम से कम 1984 तक किया गया था, जब मूर्स ने इसे टीआरएसी टी84 में अपडेट किया था।

भाषा विवरण
टीआरएसी विशुद्ध रूप से टेक्स्ट-आधारित भाषा है - एक प्रकार का सामान्य-उद्देश्य मैक्रो प्रोसेसर। उस समय की पारंपरिक तदर्थ मैक्रो भाषाओं के विपरीत, जैसे कि असेंबलरों में पाई जाने वाली, टीआरएसी सुनियोजित, सुसंगत और कई अर्थों में पूर्ण है। इसमें स्पष्ट इनपुट और आउटपुट ऑपरेटर हैं, जो सबसे बाहरी मैक्रो स्तर पर विशिष्ट निहित I/O के विपरीत है, जो इसे एक साथ सरल और पुरानी मैक्रो भाषाओं की तुलना में अधिक बहुमुखी बनाता है।

यह परंपरागत मैक्रो भाषाओं से भी अलग है जिसमें टीआरएसी संख्याएँ अंकों के स्ट्रिंग हैं, पूर्णांक अंकगणितीय (अधिकतम मूल्यों पर विशिष्ट सीमा के बिना) अंतर्निहित ("प्राचीन") कार्यों के माध्यम से प्रदान की जा रही हैं। यकीनन, इसकी पूर्णता का एक पहलू यह है कि त्रुटि की अवधारणा फ़ाइल स्थान की कमी और दुभाषिया के कार्यशील भंडारण की तुलना में लंबे समय तक एक स्ट्रिंग के विस्तार का अनुरोध करने जैसी घटनाओं तक सीमित है; कई भाषाओं में क्या वर्णित किया जाएगा क्योंकि किसी फ़ंक्शन के तर्क स्ट्रिंग्स के हर संभावित संयोजन के लिए परिणाम (अक्सर एक शून्य स्ट्रिंग) को परिभाषित करके टीआरएसी में अवैध संचालन से निपटा जाता है।

टीआरएसी एक टेक्स्ट-प्रोसेसिंग भाषा है, जिसे स्ट्रिंग प्रोसेसिंग भाषा भी कहा जाता है।

स्ट्रिंग्स के रूप में स्ट्रिंग्स पर जोर इतना मजबूत है कि टीआरएसी भाषा के स्वयं के वाक्यात्मक वर्णों को या तो उनकी वाक्यात्मक भूमिकाओं में या किसी अन्य वर्ण की तरह संभालने के लिए तंत्र प्रदान करता है, और स्व-संशोधित कोड में विशेष गुण होने की तुलना में विशिष्ट टीआरएसी प्रोग्रामिंग तकनीकों के स्वाभाविक परिणाम का अधिक अनुभव होता है।

टीआरएसी, एपीएल प्रोग्रामिंग भाषा या लिस्प की तरह है, एक अभिव्यक्ति अभिविन्यास भाषा (अधिक विशिष्ट प्रक्रिया अभिविन्यास भाषाओं के विपरीत), लेकिन APL के विपरीत, इसमें ऑपरेटरों की पूरी तरह से कमी है। ज्यादातर मामलों में, यह शुद्ध कार्यात्मक प्रोग्रामिंग का मामला है।

टीआरएसी होमोइकोनिक है।





टीआरएसी में एलआईएसपी के साथ आम तौर पर एक सिंटैक्स होता है जिसमें आम तौर पर नेस्टेड कोष्ठक के कई स्तरों की उपस्थिति शामिल होती है।

टीआरएसी के लिए मुख्य प्रेरणा डगलस मैक्लॉयय के तीन शोधपत्रों से मिली।

बौद्धिक संपदा
मूरर्स ने भाषा की परिभाषा पर अपना नियंत्रण बनाए रखने के प्रयास में TRAC नाम का ट्रेडमार्क बनाया, जो उस समय एक असामान्य और अग्रणी कार्रवाई थी। एक बिंदु पर, उन्होंने डिजिटल उपकरण निगम के खिलाफ एक बौद्धिक संपदा उल्लंघन का मुकदमा दायर किया, यह आरोप लगाते हुए कि TRAC व्याख्याता के साथ एक मिनी-कंप्यूटर देने के अनुबंध ने उनके अधिकारों का उल्लंघन किया। डॉ. डॉब के जर्नल का पहला अंक, पर्सनल कंप्यूटर क्षेत्र के शुरुआती प्रकाशनों में से एक है, जिसमें मूर्स और उसकी कंप्यूटिंग भाषा के लिए लोगों पर आरोप लगाने की उसकी प्रचंडता के खिलाफ कटु संपादकीय है।" इसके बाद से असंबद्ध सूचना प्रौद्योगिकी परियोजनाओं के लिए नाम का कई बार उपयोग किया गया है, जिसमें ट्रैक नामक एक मौजूदा खुला स्रोत सॉफ्टवेयर परियोजना प्रबंधन सिस्टम भी शामिल है।

प्रभाव और उपयोग
TRAC को बाद में PDP-8, PDP-10 और PDP-11 पर लागू किया गया।

TRAC से प्रेरित विभिन्न भाषाएँ हैं। मूवर्स के साथ किसी भी परेशानी से बचने के लिए, उन्होंने आदिम का नाम बदल दिया और/या विभिन्न मेटाचैकर का इस्तेमाल किया। SAM76 के मामले में, क्लॉड कगन के अनुसार, प्रिमिटिव जोड़े गए थे, क्योंकि TRAC बेबी टॉक है। मिंट के मामले में, एक परिष्कृत टेक्स्ट एडिटर मशीनरी तक पहुंच प्रदान करने के लिए प्रिमिटिव जोड़े गए थे।
 * टीआरएसी की एक कथित कमी पूर्ण विस्तार की कमी थी: कुछ टीआरएसी आदिम कार्य एक अशक्त (शून्य-वर्ण) तर्क और एक गैर-अस्तित्व (गैर-सीमांकित) के बीच अंतर के प्रति संवेदनशील होते हैं, लेकिन इसके अंतिम गैर-अशक्त तर्क से परे, एक उपयोगकर्ता परिभाषित फ़ंक्शन भेद नहीं कर सकता है। SAM76 एक TRAC जैसी भाषा थी जिसने उस सीमा को समाप्त कर दिया।
 * रस नेल्सन ने MINT (MINT is Not TRAC) नाम की एक Emacs एक्सटेंशन लैंग्वेज को लागू किया। इस भाषा का उपयोग FreeDOS संपादक FreeMACS द्वारा किया जाता है।

TRAC का उपयोग FTP सॉफ़्टवेयर द्वारा अपने PC/TCP उत्पाद में मॉडेम डायलर स्क्रिप्टिंग भाषा के रूप में किया गया था।

टीआरएसी का उपयोग 'द लास्ट स्टारफाइटर' सहित फिल्मों के लिए डिजिटल प्रोडक्शंस क्रे रेंडरर पर फ्रंट एंड के रूप में भी किया गया था।

उदाहरण कार्यक्रम
फाइबोनैचि संख्याओं की गणना करने के लिए TRAC T84 स्क्रिप्ट: <पूर्व>:(s,fibo,(
 * (ईआइ,<1>, 1, 0,(
 * (ईआई,<1>, 2, 1,(
 * (आ, :(री,फाइबो,:(as, <1>,1)),:(ri,fibo,:(as, <1>,2)))

)) )) ))`
 * (मेगावाट, Fibo)'

यह भी देखें

 * TTM (प्रोग्रामिंग लैंग्वेज), TRAC से प्रेरित टीटीएम (प्रोग्रामिंग भाषा)

बाहरी संबंध

 * The TRAC Foundation (Archived)
 * 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
 * A TRAC implementation project on SourceForge.
 * 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.