हार्बर - एक्सबेस परिवार का नया चेहरा

संदर्भ के लिए: xBase प्रोग्रामिंग सिस्टम, DBMS का एक परिवार है, जिसका उद्भव dBase (1980) से हुआ है। वे एक आम प्रोग्रामिंग भाषा (निश्चित रूप से, एक विशेष कार्यान्वयन में निहित भिन्नताओं) और इस भाषा में निर्मित DBF प्रारूप के संबंधपरक डेटाबेस तक पहुंच के साधनों से एकजुट होते हैं। वास्तव में, dBase डेटाबेस की सेवा के लिए डिज़ाइन की गई भाषा के साथ DBMS के रूप में शुरू हुआ। यह एक प्रक्रियात्मक प्रोग्रामिंग भाषा है, यह व्याख्या की गई भाषाओं के समूह से संबंधित है और कई हैं, यदि नहीं, तो उनकी सामान्य विशेषताएं, जैसे, उदाहरण के लिए, गतिशील टाइपिंग।

क्लिपर, हार्बर का एक पूर्ववर्ती, 1985 में dBase III प्रदर्शन को बढ़ाने के लक्ष्य के साथ बनाया गया था। ऐसा करने के लिए, प्रोग्राम के स्रोत कोड को संकलन चरण में बाइट कोड में परिवर्तित किया गया था, जो इस बाइट कोड को निष्पादित करने के लिए डिज़ाइन की गई वर्चुअल मशीन के साथ निष्पादन योग्य फ़ाइल में एम्बेडेड था। इस प्रकार, क्लिपर ने आउटपुट को एक स्टैंडअलोन exe फ़ाइल दी, जिसे चलाने और चलाने के लिए बाहरी दुभाषिया की आवश्यकता नहीं होती, जैसा कि dBase या FoxBase (एक अन्य लोकप्रिय xBase उत्पाद) के मामले में होता है।

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

XBase सिस्टम को हमेशा से ही माना जाता रहा है, मुख्य रूप से, डेटाबेस के साथ काम करने के लिए और, संभवतः, इसलिए, SQL की लोकप्रियता बढ़ने के साथ, वे चलन से बाहर होने लगे। और अगर फॉक्स के साथ सब कुछ कम या ज्यादा सफल रहा - तो माइक्रोसॉफ्ट ने इसे अपने विजुअल फॉक्सप्रो उत्पाद के आधार पर खरीदा, जो कुछ साल पहले (2006 में, विकिपीडिया के अनुसार), TIOBE सूची में माननीय 12 वें स्थान पर था, तब क्लिपर बहुत खराब था। कंप्यूटर एसोसिएट्स, जो 90 के दशक की शुरुआत से इसके मालिक थे, ने अन्य उत्पादों पर भरोसा किया। दूसरी ओर, क्लिपर, मुख्य मार्ग से अलग-थलग रहा, दबाने वाली समस्याओं का हल नहीं हुआ, और 1997 में कंप्यूटर एसोसिएट्स ने इसके आगे के विकास को बंद करने की घोषणा की, जिससे प्रोग्रामर्स ने इस पर अकेले एमएस-डॉस वातावरण में उपयोग के लिए डिज़ाइन किए गए 16-बिट प्रोग्रामिंग सिस्टम के साथ लिखा।

जो लोग अपने भविष्य के बारे में सोचते थे, उनमें से कई अन्य प्लेटफार्मों पर चले गए, लेकिन ऐसे लोग भी थे जो मानते थे कि आधुनिक प्रोग्रामिंग वातावरण में लागू किए जाने वाले क्लिपर के फायदे आगे की मांग में होंगे। इस तरह के कई कार्यान्वयन बनाए गए थे (xBase ++, क्लिप, हार्बर), जिनमें से एक, इस दिन के लिए सबसे सफल, मैं इस बारे में बात करूंगा - कृपया मुझे इतने लंबे समय के लिए क्षमा करें, लेकिन, मेरी राय में, आवश्यक परिचय।

तो हार्बर। परियोजना 1999 में शुरू की गई थी, आधिकारिक वेबसाइट www.harbour-project.org है । वर्तमान संस्करण 3.0 (स्थिर), 3.2 (विकास) है।

क्लिपर की तरह, हार्बर प्रोग्राम के स्रोत कोड को बाइटकोड में ट्रांसलेट करता है, लेकिन, इसके पूर्ववर्ती के विपरीत, हार्बर कंपाइलर ऑब्जेक्ट फाइल्स नहीं बनाता है, बल्कि कंपाइलर को फाइल की जानी चाहिए। उदाहरण के लिए, यहाँ एक सरल कार्य है जो कंसोल को अभिवादन प्रदर्शित करता है:

Function Hello ? "Hello" Return Nil 


इसका अनुवाद (टिप्पणी मेरी है):

 // HB_FUNC  : // #define HB_FUNC( funcname ) HB_EXTERN_C_ HB_EXPORT HARBOUR HB_FUN_##funcname ( void ) HB_FUNC( HELLO ) { // - static const HB_BYTE pcode[] = { 36,2,0,176,2,0,106,6,72,101,108,108,111,0, 20,1,36,3,0,100,110,7 }; //    ( - )   - hb_vmExecute( pcode, symbols ); } 


अधिक विस्तार से बायटेकोड पर विचार करें:

  static const HB_BYTE pcode[] = { 36,2,0, // 36 - ,      //  ,    - 2 176,2,0, // 176 -     ,  //  ,    106,6,'H','e','l','l','o','\0', // 106 -      20,1, // 20 -       //  , 1 -   36,3,0, // 36 - ,      //  ,    - 3 100, // 100 -  Nil    110, // 110 -        7 // 7 -     }; 


आपकी परियोजना में हार्बर ( * .prg ), सी, विशेष ऑब्जेक्ट फ़ाइलों और पुस्तकालयों में स्रोत शामिल हो सकते हैं। C कोड को एक prg फ़ाइल में भी एम्बेड किया जा सकता है, इसे #pragma BEGINDUMP ... #pragma ENDDUMP में संलग्न किया जाना चाहिए और निश्चित रूप से, यह EXTEND SYSTEM सम्मेलनों का पालन करना चाहिए (जब मैंने क्लिपर के बारे में बात की थी तो मैंने उल्लेख किया था)। नीचे इस तरह के सहजीवन का एक उदाहरण दिया गया है:

 Function Main ? Sinus( 30 ), Sinus( 60 ) ? Return Nil #pragma BEGINDUMP #include <math.h> #include "hbapi.h" #include "hbapiitm.h" #define PI 3.14159265 //   ,    HB_FUNC( SINUS ) { // hb_parnd( n ) -  EXTEND SYSTEM,  n-   //  double  Harbour  // hb_retnd( d ) -  EXTEND SYSTEM,  double  d //   Harbour  hb_retnd( sin( hb_parnd( 1 ) * PI / 180 ) ); } #pragma ENDDUMP 


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

डेटाबेस में निर्मित, एक्सबेस की यह सामान्य सुविधा, एक और विषय है जिस पर मैं विशेष ध्यान देना चाहूंगा। बाहरी DBMS का उपयोग किए बिना, डेटाबेस के साथ सभी आवश्यक जोड़तोड़ करने के लिए - बनाना, संशोधित करना, अपडेट करना, संपादन करना, खोजना सभी का उपयोग करना, सक्षम होना वास्तव में बहुत सुविधाजनक है। उस स्थिति में जब डेटाबेस में संग्रहीत जानकारी अपेक्षाकृत कम होती है, बाहरी DBMS का उपयोग पूरी तरह से बेमानी लगता है, ऐसे अनुप्रयोगों के लिए MySQL भी एक राक्षस की तरह दिखता है (और कुछ MS SQL भी डालते हैं) - यहाँ xBase दृष्टिकोण सबसे उपयुक्त समाधान लगता है। हालांकि, बड़े डेटाबेस के लिए, हार्बर को (और लागू किया जाता है) काफी सफलतापूर्वक लागू किया जा सकता है।

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

 Function Test Local aStru := { {"FAMILY","C",16,0}, {"IMYA","C",16,0}, {"OTCHES","C",16,0}, ; {"TELEFON","C",10,0} } //    mytable      dbCreate( "mytable", aStru ) //  mytable USE mytable //        INDEX ON FAMILY TAG FAMILY INDEX ON TELEFON TAG TELEFON //   APPEND BLANK REPLACE FAMILY WITH "", IMYA WITH "", OTCHES WITH "", ; TELEFON WITH "9101682020" ... //     ,   ordSetFocus( "TELEFON" ) IF dbSeek( "9101682020" ) //   ,   REPLACE TELEFON WITH "9102875555" ENDIF ... Return Nil 


डेटाबेस तक पहुंच के साधन केवल मानक वाले तक सीमित नहीं हैं। RDD क्लाइंट-सर्वर DBMS के लिए लिखे गए हैं, दोनों DBF (Sybase से वाणिज्यिक लाभ डेटाबेस सर्वर और ओपन सोर्स LetoDb), और SQL पर आधारित हैं। ऐसे मॉड्यूल हैं जो ODBC और ADO के माध्यम से पहुंच प्रदान करते हैं, इन DBMS के C API का उपयोग करके MySQL, PostgreSQL, SQLite के लिए मॉड्यूल हैं।

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

हां, मैं यह कहना भूल गया कि हार्बर एक ओपन सोर्स क्रॉस-प्लेटफॉर्म सिस्टम है। यह 32-बिट और 64-बिट प्लेटफार्मों पर मौजूद है, विंडोज, लिनक्स, यूनिक्स, मैक ओएस एक्स, क्यूएनएक्स, ओएस / 2 पर, यह एंड्रॉइड पर लगता है, और कुछ और जो मैंने नहीं देखा है।

मुझे खुशी होगी अगर यह लेख दिलचस्पी जगाए। इस मामले में, कुछ पहलुओं पर अधिक विस्तार से विचार करना संभव होगा।

Source: https://habr.com/ru/post/In198618/


All Articles