हाइपरटॉक

From alpha
Jump to navigation Jump to search
HyperTalk
Paradigmprocedural, event-driven
द्वारा डिज़ाइन किया गयाDan Winkler
DeveloperApple Computer Inc.
पहली प्रस्तुति1987 (1987)
Influenced by
Natural language programming, Pascal
Influenced
ActionScript, AppleScript, ECMAScript, JavaScript, Lingo, LiveCode, SenseTalk, SuperTalk

HyperTalk डेन विंकलर (कंप्यूटर वैज्ञानिक) द्वारा 1987 में बनाई गई एक बंद उच्च-स्तरीय, प्रक्रियात्मक प्रोग्रामिंग प्रोग्रामिंग भाषा है और बिल एटकिंसन द्वारा Apple इंक के हाइपर कार्ड हाइपरमीडिया प्रोग्राम के साथ संयोजन में उपयोग की जाती है। क्योंकि हाइपरटॉक के मुख्य लक्षित दर्शक शुरुआती प्रोग्रामर थे, हाइपरटॉक प्रोग्रामर को आमतौर पर लेखक कहा जाता था और प्रोग्राम लिखने की प्रक्रिया को स्क्रिप्टिंग भाषा के रूप में जाना जाता था। हाइपरटॉक स्क्रिप्ट लिखित अंग्रेजी भाषा से मिलती-जुलती है और पास्कल (प्रोग्रामिंग भाषा) के समान एक तार्किक संरचना का उपयोग करती है।

हाइपरटॉक ने प्रक्रियात्मक प्रोग्रामिंग भाषा की बुनियादी नियंत्रण संरचनाओं का समर्थन किया: के लिए/जबकि/जब तक, अगर/फिर/अन्यथा, साथ ही फ़ंक्शन और संदेश हैंडलर कॉल (एक फ़ंक्शन हैंडलर एक सबरूटीन था और एक संदेश हैंडलर एक प्रक्रिया थी) के लिए दोहराएं। डेटा प्रकार को आमतौर पर प्रोग्रामर द्वारा निर्दिष्ट करने की आवश्यकता नहीं होती है; रूपांतरण [[शाब्दिक स्ट्रिंगकंप्यूटर विज्ञान)]] और संख्याओं के बीच पृष्ठभूमि में पारदर्शी रूप से हुआ। पारंपरिक अर्थों में कोई कक्षा (कंप्यूटर विज्ञान) या डेटा संरचना नहीं थी; उनके स्थान पर विशेष स्ट्रिंग अक्षर थे, या अल्पविराम द्वारा सीमांकित वस्तुओं की सूची (बाद के संस्करणों में itemDelimiter संपत्ति ने मनमाना चरित्र चुनने की अनुमति दी)। कोड निष्पादन आम तौर पर एक घटना की प्रतिक्रिया के रूप में शुरू होता है जैसे यूआई विजेट पर माउस क्लिक।

1980 के दशक के अंत में Apple ने माना[1]हाइपरकार्ड की हाइपरटॉक स्क्रिप्टिंग भाषा का उपयोग कंपनी भर में मानक भाषा के रूप में और इसके क्लासिक मैक ओएस ऑपरेटिंग सिस्टम के साथ-साथ ऐप्पल और गैर-एप्पल उत्पादों के बीच इंटरप्रोसेस संचार के लिए किया जाता है। कंपनी ने सुपर कार्ड जैसी नकल के विकास का विरोध नहीं किया, लेकिन उसने भाषा रूपों के बीच असंगति से बचने के लिए हाइपरटॉक मानक समिति बनाई।[1] मामले की संवेदनशीलता | केस-इनसेंसिटिव लैंग्वेज शुरू में व्याख्या की गई भाषा थी, लेकिन हाइपरकार्ड 2.0 के साथ समय-समय पर संकलन प्राप्त किया।[2]


विवरण

मौलिक संचालन

गणितीय संगणनाओं सहित अधिकांश बुनियादी कार्यों के लिए, हाइपरटॉक ने गणितीय संकेतन में उपयोग किए जाने वाले क्रम पर विधेय के प्राकृतिक-भाषा क्रम का समर्थन किया। उदाहरण के लिए, हाइपरटॉक में put असाइनमेंट कमांड, वेरिएबल को स्टेटमेंट के अंत में रखा गया था: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

रिजल्ट में 5*4 डालें

</वाक्यविन्यास हाइलाइट> जबकि अधिक पारंपरिक बुनियादी प्रोग्रामिंग लैंग्वेज (और अधिकांश अन्य) में, इसे लिखकर पूरा किया जाएगा: <वाक्यविन्यास लैंग = मूल>

परिणाम = 5 * 4

</वाक्यविन्यास हाइलाइट>

HyperTalk कोड का परिवर्तनशील (कंप्यूटर विज्ञान) theResult ऑन द फ्लाई बनाने का दुष्प्रभाव है। लिपियों का उपयोग कर एक चर के लिए किसी भी प्रकार या मान को निर्दिष्ट कर सकता है put कमांड, हाइपरटॉक को बहुत कमजोर टाइप किया हुआ बनाता है। चर प्रकारों के बीच रूपांतरण अदृश्य और स्वचालित थे: स्ट्रिंग 3 को संख्या 15 उत्पन्न करने के लिए संख्या 5 से गुणा किया जा सकता है, या स्ट्रिंग 35 उत्पन्न करने के लिए स्ट्रिंग 3 पर संख्या 5 संयोजन किया जा सकता है। HyperTalk तब तक शिकायत नहीं करेगा जब तक कि प्रकारों को स्वचालित रूप से परिवर्तित नहीं किया जा सकता।

प्रवाह नियंत्रण और तर्क आम तौर पर अन्य सामान्य भाषाओं के समान थे, एक का उपयोग करते हुए if ... then ... else ... end if कंडिशनल (कंप्यूटर प्रोग्रामिंग) के लिए संरचना और लूप (कंप्यूटिंग) का समर्थन #Loops एक लचीलेपन पर आधारित है repeat ... end repeat वाक्य - विन्यास। टिप्पणी (कंप्यूटर प्रोग्रामिंग) दो ऋण चिह्नों के साथ शुरू की गई थी: -- this is a comment.

ऑब्जेक्ट, कंटेनर और स्क्रिप्ट

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

HyperTalk फ़ंक्शंस, या स्क्रिप्ट्स, सामान्य रूप से script संपत्ति ढेर के कई कंटेनरों में उपलब्ध है। लिपियों का उपयोग करके उदाहरण चर के अनुरूप कंटेनर के गुणों तक पहुंच सकता है get और set निर्देश। स्क्रिप्ट संपत्ति में सादा पाठ होता है और इसमें कोई विशेष गुण नहीं होता है; स्क्रिप्ट को स्ट्रिंग चर सहित, किसी भी टेक्स्ट कंटेनर में रखा और चलाया जा सकता है,[lower-alpha 1] या का उपयोग करके अन्य स्टैक से आयात किया जाता है start using आज्ञा। एक स्क्रिप्ट उपयोगकर्ता द्वारा प्रदान किया गया टेक्स्ट भी हो सकता है जो ऑन-स्क्रीन टेक्स्ट फ़ील्ड में टाइप किया गया हो। मनमाना पाठ का उपयोग करके निष्पादित किया जा सकता है do कमांड, डायनेमिक SQL के समान तरीके से।[3]


कंटेनरों का जिक्र

हाइपरटॉक में एक प्रमुख अवधारणा यह थी कि यह स्टैक के दृश्य पदानुक्रम के आधार पर एक नेविगेशनल सिस्टम के माध्यम से कंटेनरों को संदर्भित करता है। स्टैक में प्रत्येक कंटेनर को बनाए जाने पर एक अद्वितीय आईडी नंबर दिया गया था और उसे एक वैकल्पिक नाम भी दिया जा सकता था। स्क्रिप्ट इन पहचानकर्ताओं में से किसी एक का उपयोग करके वस्तुओं को निर्दिष्ट ऑब्जेक्ट प्रकार के साथ निर्दिष्ट कर सकती है of ऑपरेटर। इस ऑपरेटर ने आसानी से पढ़ने योग्य, स्व-दस्तावेज़ीकरण कोड के लिए एक प्राकृतिक भाषा सिंटैक्स का उपयोग किया। उदाहरण के लिए, एक कार्ड पर एक बटन में संग्रहीत एक स्क्रिप्ट उपयोगकर्ता द्वारा प्रदान किए गए टेक्स्ट को टेक्स्ट फ़ील्ड का उपयोग करके इकट्ठा करना चाहती है और टेक्स्ट को वैल्यू नामक चर में संग्रहीत करना चाहती है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 यहां कार्ड फील्ड टाइप की वैल्यू को वैल्यू में डालें

</वाक्यविन्यास हाइलाइट> दुभाषिए द्वारा बयानों के विभिन्न प्रासंगिक पहलुओं का अनुमान लगाया जा सकता है। उपरोक्त कथन में, उदाहरण के लिए, क्योंकि स्क्रिप्ट एक विशिष्ट कार्ड पर एक बटन के संदर्भ में चल रही होगी, पहचानकर्ता कार्ड को उस कार्ड को संदर्भित करने के लिए समझा गया था जिसके साथ उपयोगकर्ता बातचीत कर रहा था, भले ही बटन स्वयं सामान्य रूप से चालू हो पृष्ठभूमि। इसके अलावा, मूल्य (उपयोगकर्ता द्वारा सबमिट किया गया पाठ) को मुख्य संपत्ति माना जाता था और अन्यथा निर्दिष्ट नहीं होने पर संचालन का लक्ष्य माना जाता था। इसी तरह, पृष्ठभूमि क्षेत्र के विपरीत, कार्ड फ़ील्ड को कमांड का लक्ष्य माना जाता था, ताकि सूचना को भी छोड़ा जा सके। यहां तक ​​कि कंटेनर प्रकारों के भी छोटे रूप थे जिनका उपयोग प्रोग्रामर टाइपिंग को बचाने के लिए कर सकते थे। इस प्रकार उपरोक्त कोड छोटे रूप के बराबर है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 एफएलडी टाइप को यहां वैल्यू में डालें

</वाक्यविन्यास हाइलाइट>

किसी दिए गए सन्दर्भ में वस्तुएँ—उदाहरण के लिए कार्ड या पृष्ठभूमि—को भी स्क्रीन पर उनके z-क्रम के आधार पर एक रनटाइम संख्या दी गई थी। नेविगेशन के लिए अपनी स्थिति का उपयोग करने में सहायता करने के लिए, हाइपरटॉक ने सिंटैक्स को और सरल बनाने के लिए विभिन्न प्रकार की क्रमसूचक संख्या और बुनियादी संख्या संदर्भित सिस्टम भी शामिल किए। यह मानते हुए कि कार्ड पर केवल फ़ील्ड प्रकार है, उपरोक्त कोड भी लिखा जा सकता है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 पहले कार्ड फ़ील्ड को वैल्यू में डालें

</वाक्यविन्यास हाइलाइट> या: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 कार्ड फ़ील्ड 1 को वैल्यू में डालें

</वाक्यविन्यास हाइलाइट> संबोधित करने की शैली का विकल्प प्रोग्रामर पर छोड़ दिया गया था; कोड को अधिक पठनीय बनाने के लिए अक्सर अलग-अलग बयानों में अलग-अलग शैलियों का उपयोग किया जाता था।

हाइपरटॉक में शामिल थे me कंटेनर जो उसी अंदाज में काम करता था self क्वालीफायर अधिकांश ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग | ऑब्जेक्ट-ओरिएंटेड भाषाओं में पाया जाता है, जो वर्तमान कंटेनर ऑब्जेक्ट तक सरल पहुंच की अनुमति देता है। कम आम था it वेरिएबल, जो कुछ बिल्ट-इन ऑपरेटरों के लिए अंतिम ऑपरेशन का मान रखता था। उदाहरण के लिए: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 पूछो मूल्य क्या है?
 इसे कार्ड फील्ड डिस्प्ले में डालें

</वाक्यविन्यास हाइलाइट> का उपयोग करता है ask संवाद बकस प्रदर्शित करने और साथ में टेक्स्ट फ़ील्ड में टाइप किए गए टेक्स्ट को कैप्चर करने के लिए कमांड; जब डायलॉग मारकर पूरा किया जाता है Return या क्लिक करना OK, मान को असाइन किया गया है it छद्म चर। यह कोड तब उस मान को कार्ड फ़ील्ड में कॉपी करता है put असाइनमेंट ऑपरेटर।

संग्रह

किसी दिए गए प्रकार के कंटेनर उस कंटेनर प्रकार के बहुवचन संस्करण के साथ संग्रह के रूप में भी उपलब्ध थे - कार्ड पर फ़ील्ड का संग्रह था card fields. ये संग्रह स्वयं अपने गुणों के साथ कंटेनर थे। इनमें प्रमुख था number संपत्ति जिसका व्यापक रूप से पुनरावृत्तियों और इसी तरह के कार्यों के दौरान उपयोग किया गया था। उदाहरण के लिए, यदि कोई कार्ड पर सभी क्षेत्रों को छिपाना चाहता है, तो इसे इस कोड से पूरा किया जा सकता है:

<वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 कार्ड फ़ील्ड की संख्या के लिए i = 1 के साथ दोहराएं
   फ़ील्ड छुपाएं I
 अंत दोहराना

</वाक्यविन्यास हाइलाइट>

यह कोड हाइपरटॉक की एक अन्य सामान्य विशेषता को उजागर करता है: कि एक संपत्ति में कई नाम और ऑपरेटर हो सकते हैं। इस मामले में hide कमांड, और संबंधित show, कंटेनर के मान को सेट करके कार्य करें visible संपत्ति। इस प्रकार hide field i के ठीक बराबर है set the visible of field i to false. ऐसा ही एक उदाहरण था lock screen कमांड जिसने दृश्य अद्यतन करना बंद कर दिया, जो कि एक संक्षिप्त रूप था set the lockscreen to true, कहाँ lockscreen हाइपरकार्ड की ही एक संपत्ति है—एक कंटेनर भी। सिंटैक्स को सरल बनाने और सामान्य कोड की पठनीयता में सुधार करने के लिए, हाइपरटॉक में इस प्रकार की सिंटैक्टिक चीनी के कई उदाहरण पाए गए।

हाइपरकार्ड 2.2 और बाद में, संग्रह का संग्रह एक कंटेनर के रूप में भी उपलब्ध था parts. इसने एक स्क्रिप्ट को एक एकल पुनरावर्तक के साथ एक कंटेनर में सभी वस्तुओं को संबोधित करने की अनुमति दी।

पाठ संभालना

हाइपरटॉक कंटेनर मॉडल की एक उल्लेखनीय विशेषता इसके पाठ का संचालन था। पाठ का प्रत्येक संग्रह, चाहे वह किसी प्रोग्राम में एक शाब्दिक स्ट्रिंग हो या पाठ क्षेत्र में टाइप किया गया पाठ, स्वयं को कंटेनरों के कई संग्रहों के साथ एक कंटेनर माना जाता था। इसने स्क्रिप्ट को किसी अन्य कंटेनर के समान नेविगेशनल कमांड का उपयोग करके पाठ को पार्स करने की अनुमति दी। उदाहरण के लिए, स्पेस-सीमांकित डेटा फ़ाइल को पार्स करते समय, कोई तीसरा कॉलम इस तरह निकालना चाहेगा: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 TheFilesText के तीसरे शब्द को colThree में डालें

</वाक्यविन्यास हाइलाइट> इस सिंटैक्स ने स्क्रिप्ट को विशेष डेटा खोजने के लिए पाठ को नीचे चलने की अनुमति दी, जैसा कि इस उदाहरण में है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

  कार्ड फ़ील्ड की पंक्ति 5 के तीसरे शब्द के पहले वर्ण को कुछ पाठ में रखें

</वाक्यविन्यास हाइलाइट> टेक्स्ट को एक कंटेनर के रूप में मानने की इस प्रक्रिया को चंकिंग के रूप में जाना जाता है, और चंक एक्सप्रेशन के रूप में कार्य करता है। फ़ाइल प्रबंधन कार्यों के एक सेट के साथ, फ़ाइल हेरफेर को संभालने के लिए इसी प्रकार के भावों का उपयोग किया गया था। निम्न कोड एक ज्ञात फ़ाइल खोलता है, इससे पढ़ता है, डेटा निकालता है, और फिर फ़ाइल को बंद कर देता है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 माउसडाउन पर
   उत्तर फ़ाइल खोलने के लिए कृपया एक टेक्स्ट फ़ाइल चुनें।
   अगर यह खाली है तो माउसडाउन से बाहर निकलें
   इसे फाइलपाथ में डालें
   अगर कोई फ़ाइल फ़ाइलपाथ है तो
     फ़ाइल फ़ाइल पथ खोलें
     फ़ाइल फ़ाइलपाथ से वापसी तक पढ़ें
     इसे सीडी एफएलडी में किसी क्षेत्र में डाल दें
     फ़ाइल बंद करें फ़ाइलपथ
     कार्ड फ़ील्ड के वर्ण 1 से 10 की टेक्स्ट शैली को कुछ फ़ील्ड को बोल्ड करने के लिए सेट करें
   अगर अंत
 अंत माउसडाउन

</वाक्यविन्यास हाइलाइट> HyperTalk में सबस्ट्रिंग-फाइंड ऑपरेशन का उपयोग करके स्ट्रिंग्स को चंक करने के लिए फ़ंक्शंस भी शामिल हैं in ऑपरेटर। निम्नलिखित कोड दिए गए पैटर्न के सभी उदाहरणों का उपयोग कर पाता है in जैसे कि हिस्से के रूप में repeat पाश, जबकि offset स्ट्रिंग के भीतर उस पैटर्न का स्थान ढूँढता है: <वाक्यविन्यास हाइलाइट लैंग = एप्सस्क्रिप्ट हाइलाइट = 1>

 फंक्शन रिप्लेस एसटी पैटर्न, न्यू एसटीआर, इनएसटीआर
   दोहराएँ जबकि पैटर्न inStr में है
     ऑफसेट (पैटर्न, inStr) को स्थिति में रखें
     newStr को inStr के कैरेक्टर पॉज़ (स्थिति + पैटर्न की लंबाई) -1 में डालें
   अंत दोहराना
   एसटीआर में वापसी
 एंड रिप्लेस एसटी

</वाक्यविन्यास हाइलाइट>

सूची और अन्य संग्रह

हाइपरटॉक ने सरणियों या सूचियों जैसी संरचनाओं का निर्माण करने के लिए समान चंकिंग प्रणाली का उपयोग किया। इस तरह की संरचना अल्पविराम द्वारा अलग किए गए एक चर में कई डेटा आइटम रखकर बनाई जाएगी। हाइपरटॉक स्क्रिप्ट में स्ट्रिंग्स का उपयोग करके विभिन्न प्रकार के डेटा आयात किए जा सकते हैं जिन्हें आवश्यकतानुसार पार्स किया जाएगा। उदाहरण के लिए, स्क्रीन पर वस्तुओं की स्थिति को ऊपरी बाएँ कोने के सापेक्ष X और Y निर्देशांकों का प्रतिनिधित्व करने वाली संख्याओं की एक जोड़ी द्वारा परिभाषित किया गया था। निम्न कोड पॉस नामक एक चर बनाता है जो एक समन्वय जोड़ी रखता है, और उसके बाद कार्ड पर सभी बटनों को ऊपर-बाएं से नीचे-दाएं विकर्ण में फिर से स्थानांतरित करने के लिए इसका उपयोग करता है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

 माउसअप पर
   स्थिति में 100,100 रखो
   कार्ड बटनों की संख्या के लिए x = 1 के साथ दोहराएं
     कार्ड बटन x के स्थान को pos पर सेट करें
     स्थिति के आइटम 1 में 15 जोड़ें
   अंत दोहराना
 अंत माउसअप

</वाक्यविन्यास हाइलाइट> item e> चंकिंग एक्सप्रेशन मूल रूप से अल्पविराम सीमांकक पर आधारित था, लेकिन हाइपरकार्ड के बाद के संस्करणों ने इसे मान में बदल दिया itemDelimiter, मनमाने ढंग से सूचियों और संरचनाओं को पार्स करने की क्षमता प्रदान करता है।

संदेश और घटनाएं

हाइपरटॉक ने स्क्रिप्ट्स को कॉल करने के लिए एक ऑब्जेक्ट-ओरिएंटेड अवधारणा का उपयोग किया, स्टैक में ऑब्जेक्ट्स के साथ ईवेंट भेजने वाले संदेशों के रूप में जिन्हें हैंडलर द्वारा संसाधित किया जाएगा जिन्होंने ईवेंट का उपयोग करके ईवेंट प्राप्त करने में अपनी रुचि घोषित की। on वाक्य - विन्यास। उदाहरण के लिए, अधिकांश जीयूआई कंटेनर भेजेंगे mouseDown संदेश जब माउस बटन क्लिक किया गया था, और फिर a mouseUp संदेश जब यह उस कंटेनर के शीर्ष पर रहते हुए जारी किया गया था, और एक स्क्रिप्ट इन घटनाओं को इस तरह से कैप्चर कर सकती है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

माउसअप पर
 -- यहां अतिरिक्त कोड डालें
अंत माउसअप

</वाक्यविन्यास हाइलाइट> ईवेंट के लिए संदेश पहले उस स्क्रिप्ट को भेजे गए थे जिसने ईवेंट बनाया था, उदाहरण के लिए, यदि उपयोगकर्ता बटन पर क्लिक करता है mouseUp संदेश पहले उस बटन पर भेजा गया था। यदि बटन के स्क्रिप्ट ऑब्जेक्ट में a mouseUp हैंडलर (या कोई स्क्रिप्ट बिल्कुल नहीं), फिर इसे कार्ड, पृष्ठभूमि, ढेर, किसी भी ढेर में पास कर दिया गया था, जिसकी स्क्रिप्ट को स्पष्ट रूप से उपयोग करके आयात किया गया था start using कमांड, होम स्टैक (एक उपयोगकर्ता-चयनित हमेशा-खुला हाइपरकार्ड स्टैक), और अंत में स्वयं हाइपरकार्ड एप्लिकेशन के लिए।

बटन पर माउस क्लिक जैसी कई साधारण घटनाओं के लिए स्क्रिप्ट को सीधे प्रश्न में वस्तु के भीतर रखा जाएगा, बटन ही। उदाहरण के लिए, कोई इस तरह से एक बटन हैंडलर के भीतर उपरोक्त उदाहरण कोड का उपयोग कर सकता है: <वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

माउसअप पर
   कार्ड फ़ील्ड की संख्या के लिए i = 1 के साथ दोहराएं
     फ़ील्ड छुपाएं I
   अंत दोहराना
अंत माउसअप

</वाक्यविन्यास हाइलाइट> ऐसे मामले में जहां कोड को कई स्थानों से कॉल किया जा रहा था, या इसे किसी ईवेंट के लिए वैश्विक हैंडलर के रूप में इस्तेमाल किया जा रहा था, स्क्रिप्ट का उपयोग करके ईवेंट के मूल प्रेषक को निर्धारित कर सकता था target समारोह। इसी तरह, स्क्रिप्ट का उपयोग करके अन्य कंटेनरों को ईवेंट भेज सकते हैं send कमांड और उसके बाद उस हैंडलर के कोड वाले कंटेनर को संदर्भित करने के लिए नेविगेशनल कोड का उपयोग करना:

<वाक्यविन्यास लैंग = सेबस्क्रिप्ट>

   कार्ड बटन पर माउसअप भेजें कार्ड की सत्यता का ओके

</वाक्यविन्यास हाइलाइट> HyperTalk के स्ट्रिंग प्रोसेसिंग को do एक कार्ड पर टेक्स्ट फ़ील्ड रखकर और फिर इस कोड को फ़ील्ड की स्क्रिप्ट में रखकर इंटरएक्टिव दुभाषियों के निर्माण के लिए कमांड की अनुमति दी गई है: <वाक्यविन्यास हाइलाइट लैंग = एप्सस्क्रिप्ट हाइलाइट = 4>

 माउसअप पर
   क्लिकलाइन चुनें
   क्लिकलाइन के शब्द 2 को लिनेनम में रखें
   सीडी एफएलडी का डू लाइन लाइनम 1
 अंत माउसअप

</वाक्यविन्यास हाइलाइट> clickLine एक वैश्विक संपत्ति है जो क्लिक की गई अंतिम फ़ील्ड का नाम और पंक्ति संख्या लौटाती है, जैसे line 10 of card field 4. यह कोड पहले क्लिक किए गए लाइन पर सभी टेक्स्ट का चयन करता है, फिर लाइन नंबर को स्थानीय चर में निकालता है, फिर उपयोग करता है do टेक्स्ट को हाइपरकार्ड स्क्रिप्ट के रूप में चलाने के लिए। mouseDown ई> संदेश एक बटन पर भेजा गया था जब उपयोगकर्ता ने इसे क्लिक किया था, और mouseUp भेजा गया था जब उपयोगकर्ता ने अपनी कार्रवाई को ट्रिगर करने के लिए माउस को उसके अंदर छोड़ दिया था। इसी तरह, हाइपरकार्ड ने समय-समय पर भेजा idle संदेश, mouseEnter, mouseLeave, ... और हाइपरकार्ड स्टैक में विभिन्न कार्डों के बीच नेविगेशन से संबंधित विभिन्न संदेश, साथ ही साथ उपयोगकर्ता इनपुट (keyDown, functionKey, ...), और सिस्टम इवेंट्स। जहां तक ​​स्क्रिप्टर्स का संबंध था, अन्य प्रक्रियात्मक प्रोग्रामिंग भाषाओं की तरह कोई मेन इवेंट लूप नहीं था।

हाइपरकार्ड को नियंत्रित करना

सामान्य तीव्र अनुप्रयोग विकास प्लेटफार्मों के विपरीत, हाइपरकार्ड स्टैक हमेशा स्टैक की तरह दिखते थे - मेन्यू बार हाइपरकार्ड का था न कि प्रोग्रामर का (डिफ़ॉल्ट रूप से - स्क्रिप्टिंग मेनू को जोड़, हटा और संशोधित कर सकता था), एकल विंडो एक निश्चित आकार (शुरुआती संस्करणों में) थी। और कुछ मामलों में, कमांड जो ऑपरेशन के लिए केंद्रीय थे, वे ही एप्लिकेशन का हिस्सा थे, और हाइपरटॉक में सीधे उपलब्ध नहीं थे।

इसका एक अच्छा उदाहरण नए कार्डों का निर्माण था, जो उस एप्लिकेशन का हिस्सा था, जिसे सीधे हाइपरटॉक भाषा से ही एक्सेस नहीं किया जा सकता था। एक नया कार्ड केवल न्यू कार्ड मेनू आइटम का उपयोग करके बनाया जा सकता है, जिसे कोड का उपयोग करके अनुकरण किया जा सकता हैdoMenu "New Card". जबकि हाइपरटॉक ने मेन्यू कमांड में कॉल किया, मेन्यू कमांड ने हाइपरटॉक में हैंडलर्स को भी आमंत्रित किया। जब कॉपी मेनू आइटम का चयन किया जाता है तो कस्टम कोड चलाने के लिए, स्टैक में एक स्क्रिप्ट का उपयोग करके रखा जाएगा on doMenu itemName हैंडलर, और फिर जांच करें itemName यह देखने के लिए कि क्या यह कॉपी थी।

हाइपरटॉक ने बिल्ट-इन ड्रॉइंग टूल्स पर स्क्रिप्ट नियंत्रण भी प्रदान किया, बस पेंट टूल्स में आवश्यक बदलावों को स्क्रिप्ट करके और माउस मूवमेंट का उपयोग करके अनुकरण किया। drag from start to end और यह click at position आदेश।

क्षमाशील शब्दार्थ

हाइपरकार्ड की प्रोग्रामिंग भाषा हाइपरटॉक और ऐप्पलस्क्रिप्ट जैसी प्रतीत होने वाली समान भाषाओं के बीच एक अनूठा अंतर यह था कि हाइपरटॉक स्क्रिप्ट किस इनपुट को स्वीकार करने में अधिक उदार थीं।

चरों के ऊपर अंतर्निहित घोषणा के अलावा जब उन्हें एक मूल्य सौंपा गया था, और जिस तरह से मूल्यों को प्रकारों के बीच निहित रूप से परिवर्तित किया गया था (उदाहरण के लिए पूछने की अनुमति देता है) character 2 of 1234), हाइपरकार्ड कुछ भावों को भी पहचानेगा और उनसे उप-मान निकालेगा।

उदाहरण के लिए:

<वाक्यविन्यास लैंग = सेबस्क्रिप्ट> कार्ड फ़ील्ड लिस्टबॉक्स की चयनित लाइन को चयन में डालें - 'कार्ड फ़ील्ड लिस्टबॉक्स की लाइन 2 से 3' देता है कार्ड फ़ील्ड लिस्टबॉक्स की पंक्ति 1 का चयन करें कार्ड फ़ील्ड लिस्टबॉक्स की पंक्ति का चयन करें (चयन का शब्द 2)। चयन करें (चयनित कार्ड फ़ील्ड लिस्टबॉक्स की पंक्ति) - कोष्ठक केवल उदाहरण के लिए जोड़े गए हैं </वाक्यविन्यास हाइलाइट>

या

<वाक्यविन्यास लैंग = सेबस्क्रिप्ट> हार्पसीकोर्ड सी ई जी बजाओ हार्पसीकोर्ड सी ई जी बजाओ मेलोडी में c e g डालें हार्पसीकोर्ड मेलोडी बजाओ </वाक्यविन्यास हाइलाइट>

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

<वाक्यविन्यास लैंग = सेबस्क्रिप्ट> हार्पसीकोर्ड बजाओ सी ई जी () मेलोडी में c e() g डालें हार्पसीकोर्ड मेलोडी बजाओ </वाक्यविन्यास हाइलाइट>

हाइपरटॉक का विस्तार

हालांकि हाइपरटॉक भाषा हाइपरकार्ड की तरह ही समाप्त हो गई, इसे अपने प्लगइन प्रोटोकॉल, तथाकथित बाहरी कमांड (एक्ससीएमडी) और बाहरी फ़ंक्शंस (एक्सएफसीएन) के माध्यम से जीवन पर दूसरा पट्टा प्राप्त हुआ, जो ढेर से जुड़े मूल कोड कंटेनर थे (मैकिंटोश-विशिष्ट के रूप में) संसाधन कांटा) एक प्रवेश बिंदु और वापसी मूल्य के साथ। एक्ससीएमडी और एक्सएफसीएन को हाइपरटॉक स्क्रिप्ट से नियमित संदेश और फ़ंक्शन हैंडलर की तरह ही बुलाया जा सकता है, और वे हाइपरकार्ड एप्लिकेशन को वापस संदेश भेजने में भी सक्षम थे। कुछ उद्यमी XCMD लेखकों ने पूर्ण रंग समर्थन (ColorizeHC, HyperTint, AddColor), कई विशेष-उद्देश्य वाली विंडो (Prompt, Tabloid, Textoid, Listoid, ShowDialog, MegaWindows), ड्रैग एंड ड्रॉप सपोर्ट और भाषा में विभिन्न हार्डवेयर इंटरफेस जैसी उन्नत सुविधाएँ जोड़ीं।

== हाइपरटॉक == के वंशज विभिन्न स्क्रिप्टिंग भाषाओं ने HyperTalk (सामूहिक रूप से xTalk के रूप में जाना जाता है) के सुपरसेट को कार्यान्वित किया है:[4]

  • कंपाइलइट!-टॉक - टॉम पिटमैन (कंप्यूटर वैज्ञानिक) द्वारा एक हाइपरकार्ड स्टैक और एक्ससीएमडी जिसने हाइपरटॉक कोड से नेटिव 68000 मशीन कोड (उदाहरण के लिए एक्ससीएमडी और एक्सएफसीएन) को संकलित करने और देशी मैकिंटोश टूलबॉक्स रूटीन को कॉल करने की अनुमति दी। CompileIt बूटस्ट्रैपिंग (संकलक) था, अर्थात, बाद के संस्करणों को स्वयं के पुराने संस्करणों का उपयोग करके संकलित किया गया था।
  • डबल-एक्सएक्स-टॉक - डबल-एक्सएक्स एक हल्का हाइपरकार्ड क्लोन था जिसे कंपाइल इट के अतिरिक्त के रूप में भेजा गया था! और हाइपरकार्ड के बिना एक्ससीएमडी और एक्सएफसीएन चलाने की अनुमति दी, और यहां तक ​​कि एक छोटा हाइपरटॉक दुभाषिया भी शामिल किया।
  • मीडियाटॉक - ओरेकल मीडिया ऑब्जेक्ट्स की भाषा, प्लस का वंशज और पहला क्रॉस-प्लेटफॉर्म हाइपरकार्ड क्लोन। इसके अलावा, केवल वही जो वास्तव में मॉड्यूलर था।
  • प्लसटॉक - प्लस की भाषा, स्पिनकर सॉफ्टवेयर (मूल रूप से प्रारूप वर्लाग द्वारा विकसित) से, जिसे ओरेकल मीडिया ऑब्जेक्ट्स के आधार के रूप में इस्तेमाल किया गया था।
  • SenseTalk – NeXT की भाषा HyperSense और VNC-आधारित टेस्टिंग टूल redstonesoftware.com/usingeggplant.html बैंगन
  • सुपरटॉक - बिल एपलटन द्वारा सुपरकार्ड की भाषा, पहला हाइपरकार्ड क्लोन। एपलटन ने लोकप्रिय विश्व निर्माता एडवेंचर कंस्ट्रक्शन किट भी लिखी।
  • प्रतिलेख (प्रोग्रामिंग भाषा) (पूर्व में रेवटॉक और मेटाटॉक) - लाइवकोड (पूर्व में रेवोल्यूशन और मेटाकार्ड) सॉफ्टवेयर प्लेटफॉर्म और डेवलपमेंट एनवायरनमेंट में लागू की गई भाषा। मेटाकार्ड एक शुरुआती यूनिक्स-मूल हाइपरकार्ड क्लोन था जो क्लासिक मैक ओएस, मैक ओएस एक्स, विंडोज, लिनक्स और सोलारिस पर चलता था।
  • XION - मूल रूप से एक ओपन-सोर्स हाइपरकार्ड क्लोन की भाषा है जो कभी भौतिक नहीं हुई। अब OpenXION के रूप में लागू किया गया है।

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

ऐसी भाषाएँ भी हैं जिनके सिंटैक्स और संरचना HyperTalk से प्रभावित करती हैं, जैसे:

  • ActionScript - एडोब फ्लैश के लिए स्क्रिप्टिंग भाषा।
  • AppleScript - Apple के क्लासिक Mac OS की मुख्य स्क्रिप्टिंग भाषा, और अभी भी macOS में समर्थित है।
  • लिंगो (प्रोग्रामिंग भाषा) - मैक्रोमीडिया निदेशक की प्रोग्रामिंग भाषा xTalk-जैसी सिंटैक्स के साथ शुरू हुई, हालांकि बाद के संस्करण जावास्क्रिप्ट जैसी दिशा में चले गए।
  • जावास्क्रिप्ट - ब्रेंडन ईच द्वारा बनाई गई एक स्क्रिप्टिंग भाषा जिसे उन्नत उपयोगकर्ता इंटरफेस और गतिशील वेबसाइट बनाने के लिए आमतौर पर एक वेब ब्राउज़र के हिस्से के रूप में लागू किया जाता है।[5] इसे बाद में ECMAScript के रूप में सामान्यीकृत और मानकीकृत किया गया।

HyperTalk द्वारा सबसे पहले लोकप्रिय किए गए कई मेथड नामों ने इसे बाद की भाषाओं में बनाया, जैसे कि onmouseup जावास्क्रिप्ट में इवेंट हैंडलर।[6] हालांकि एसिमेट्रिक्स टूलबुक को अक्सर हाइपरकार्ड क्लोन भी माना जाता है, इसकी स्क्रिप्टिंग भाषा जाहिर तौर पर हाइपरटॉक से थोड़ी समानता रखती है।

यह भी देखें

  • Inform#Inform 7 - समान अंग्रेजी-समान सिंटैक्स वाली एक प्रोग्रामिंग भाषा

टिप्पणियाँ

  1. Which, in turn, could be loaded from text files.


संदर्भ

  1. 1.0 1.1 Flynn, Laurie (1989-02-27). "Apple Ponders Standardizing on HyperTalk". InfoWorld. p. 31.
  2. Dave Kelly, "Tools of the Trade: CompileIt! 2.0!", MacTech, Vol. 7 No. 9
  3. Erland Sommarskog and Frank Kalis, "The Curse and Blessings of Dynamic SQL", 23 June 2011
  4. Roman Knöll, Vaidas Gasiunas, Mira Mezini, "Naturalistic types", Onward! 2011: Proceedings of the 10th SIGPLAN symposium on New ideas, new paradigms, and reflections on programming and software, pp. 33–48, October 2011.
  5. Eich, Brendan (1998). "Foreword". In Goodman, Danny (ed.). JavaScript Bible (3rd ed.). John Wiley & Sons. ISBN 0-7645-3188-3. LCCN 97078208. OCLC 38888873. OL 712205M.
  6. Brendan Eich, "Splash keynote 2011, slide 10"


बाहरी संबंध