क्विकबेसिक

From Vigyanwiki
Revision as of 11:28, 10 August 2023 by Indicwiki (talk | contribs) (5 revisions imported from alpha:क्विकबेसिक)
क्विकबेसिक
Developer(s)माइक्रोसॉफ्ट
Initial release1985; 39 years ago (1985)
Stable release
7 / 1990; 34 years ago (1990)
Operating systemएमएस-डॉस, क्लासिक मैक ओएस
Platformx86, मोटोरोला 68000
Typeमाइक्रोसॉफ्ट बेसिक
Licenseप्रोपर्टी

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

इतिहास

माइक्रोसॉफ्ट ने क्विकबेसिक का पहला वर्जन 18 अगस्त, 1985 को 5.25-इंच 360 KB फ्लॉपी डिस्क पर जारी किया था। क्विकबेसिक वर्जन 2.0 और पश्चात् में एकीकृत विकास पर्यावरण (आईडीई) सम्मिलित है, जिससे उपयोगकर्ता सीधे इसके ऑन-स्क्रीन पाठ संपादक में संपादित कर सकते हैं।

चूँकि क्विकबेसिक में अभी भी समर्थित है, लाइन नंबर वैकल्पिक हो गए हैं। प्रोग्राम जंप्स ने नामित लेबल के साथ भी कार्य किया था। इसके पश्चात् वर्जन में मल्टीलाइन कंडीशनल स्टेटमेंट और लूप ब्लॉक जैसी नियंत्रण संरचनाएं भी जोड़ी गईं थी।

माइक्रोसॉफ्ट के PC बेसिक कंपाइलर को DOS निष्पादनयोग्य में प्रोग्राम संकलित करने के लिए सम्मिलित किया गया था। इस प्रकार वर्जन 4.0 से प्रारंभ करते हुए, संपादक में दुभाषिया सम्मिलित था जिसने प्रोग्रामर को संपादक को छोड़े बिना प्रोग्राम चलाने की अनुमति दी थी। निष्पादन योग्य फ़ाइल बनाने से पहले प्रोग्राम को डीबग करने के लिए दुभाषिया का उपयोग किया गया था। सामान्यतः, दुभाषिया और कंपाइलर के बीच कुछ सूक्ष्म अंतर थे, जिसका अर्थ था कि दुभाषिया में सही विधि से चलने वाले बड़े प्रोग्राम संकलन के पश्चात् विफल हो सकते हैं, या मेमोरी प्रबंधन में अंतर के कारण संकलित नहीं हो सकते हैं।[2]

क्विकबेसिक का अंतिम वर्जन वर्जन 4.5 (1988) था, चूँकि माइक्रोसॉफ्ट बेसिक व्यावसायिक विकास सिस्टम (PDS) का विकास अक्टूबर 1990 में वर्जन 7.1 के अंतिम रिलीज़ तक जारी रहा था।[3] उसी समय, क्विकबेसिक पैकेजिंग को शांतिपूर्वक बदल दिया गया था जिससे डिस्क बेसिक पीडीएस 7.1 के लिए उपयोग किए जाने वाले समान संपीड़न का उपयोग कर सकते है।[4] आईडीई के मूल PDS 7.x वर्जन को क्विकबेसिक विस्तारित (QBX) कहा जाता था, और यह केवल DOS पर चलता था, अतिरिक्त बेसिक PDS 7.x के विपरीत, जो OS/2 पर भी चलता था। क्विकबेसिक और बेसिक PDS का उत्तराधिकारी MS-DOS के लिए दृश्य बेसिक (क्लासिक) वर्जन 1.0 था, जिसे मानक और व्यावसायिक वर्जनों में भेज दिया गया था। विज़ुअल बेसिक के पश्चात् के वर्जनों में डॉस वर्जन सम्मिलित नहीं थे, क्योंकि माइक्रोसॉफ्ट विंडोज़ अनुप्रयोगों पर केंद्रित था।

क्यूबेसिक नामक क्विकबेसिक 4.5 का सबसेट, MS-DOS 5 और पश्चात् के वर्जनों के साथ सम्मिलित किया गया था, जो MS-DOS के पिछले वर्जनों के साथ सम्मिलित जीडब्ल्यू-बेसिक की स्थान ले रहा था। क्विकबेसिक की तुलना में, क्यूबेसिक केवल दुभाषिया तक सीमित है, इसमें कुछ कार्यों का अभाव है, केवल सीमित आकार के प्रोग्रामों को संभाल सकता है, और अलग प्रोग्राम मॉड्यूल के लिए समर्थन की कमी है। चूंकि इसमें कंपाइलर की कमी है, इसका उपयोग निष्पादन योग्य फ़ाइलों को बनाने के लिए नहीं किया जा सकता है, चूँकि इसका प्रोग्राम स्रोत कोड अभी भी उपलब्ध होने पर क्विकबेसिक 4.5, PDS 7.x या VBDOS 1.0 कंपाइलर द्वारा संकलित किया जा सकता है।

मैकिंटोश ऑपरेटिंग सिस्टम के लिए क्विकबेसिक 1.00 को 1988 में लॉन्च किया गया था। यह कम से कम 1 एमबी रैम के साथ सिस्टम 6 चलाने वाली मशीनों पर अधिकांशतः समर्थित था।[5] क्विकबेसिक को सिस्टम 7 पर भी चलाया जा सकता है, जब तक कि 32-बिट एड्रेसिंग अक्षम हो जाता है।

सिंटेक्स उदाहरण

हैलो, विश्व, सबसे छोटा वर्जन:

?"Hello, World"


हैलो, विश्व, विस्तारित वर्जन:

CLS
PRINT "Hello, World"
END

99 बीयर की बोटल:

LET BOTTLES = 99: LET BOTTLES$ = "99": LET BOTTLE$ = " bottles"                                                             
FOR A = 1 TO 99                                                                                                                                                                                                                              
PRINT BOTTLES$; BOTTLE$; " of beer on the wall, "; BOTTLES$; BOTTLE$; " of beer."                                                                                                 
LET BOTTLES = BOTTLES - 1                                                                                                                                                                                               
IF BOTTLES > 0 THEN LET BOTTLES$ = LTRIM$(STR$(BOTTLES)): LET PRONOUN$ = "one"                                                                                                              
IF BOTTLES = 0 THEN LET BOTTLES$ = "no more": LET PRONOUN$ = "it"                                                                                                                                                                                                                        
IF BOTTLES <> 1 THEN LET BOTTLE$ = " bottles"                                                                                                                                                                       
IF BOTTLES = 1 THEN LET BOTTLE$ = " bottle"                                                                                                                                                             
PRINT "Take "; PRONOUN$; " down and pass it around, "; BOTTLES$; BOTTLE$; " of beer on the wall."                                                                                                                                                                                                                  
PRINT: NEXT A
PRINT "No more bottles of beer on the wall, no more bottles of beer."                                                                                                    
PRINT "Go to the store and buy some more, 99 bottles of beer on the wall."


ग्राफिक्स उदाहरण:

SCREEN 13
DIM a(3976) AS INTEGER, b(3976) AS INTEGER, c(3976) AS INTEGER
DIM d(3976) AS INTEGER, e(3976) AS INTEGER
col% = 16: col1% = 16: col2% = 16: col3% = 16: col4% = 16
col5% = 16: col6% = 16: col7% = 16: flag = 1: flag1 = 1
flag2 = 1: flag3 = 1:flag4 = 1: flag5 = 1: flag6 = 1: flag7 = 1
DO
    GET (1, 38)-(318, 62), a                                                                                         
    PUT (2, 38), a, PSET                                                                                                 
    LINE (1, 38)-(1, 62), col%                                                                                                                                          
    IF flag = 1 THEN col% = col% + 1: IF col% = 32 THEN flag = 2                                                      
    IF flag = 2 THEN col% = col% - 1: IF col% = 16 THEN flag = 1                                                           
    GET (2, 63)-(319, 87), b                                                                                          
    PUT (1, 63), b, PSET                                                                                                        
    LINE (319, 63)-(319, 87), col1%                                                                                   
    IF flag1 = 1 THEN col1% = col1% + 1: IF col1% = 32 THEN flag1 = 2                                                 
    IF flag1 = 2 THEN col1% = col1% - 1: IF col1% = 16 THEN flag1 = 1                                                     
    GET (1, 88)-(318, 112), c                                                                                      
    PUT (2, 88), c, PSET                                                                                                 
    LINE (1, 88)-(1, 112), col2%                                                                                                                                                                                 
    IF flag2 = 1 THEN col2% = col2% + 1: IF col2% = 32 THEN flag2 = 2                                                    
    IF flag2 = 2 THEN col2% = col2% - 1: IF col2% = 16 THEN flag2 = 1                                                  
    GET (2, 113)-(319, 137), d                                                                                                        
    PUT (1, 113), d, PSET                                                                                                        
    LINE (319, 113)-(319, 137), col3%                                                                                                                                              
    IF flag3 = 1 THEN col3% = col3% + 1: IF col3% = 32 THEN flag3 = 2                                                             
    IF flag3 = 2 THEN col3% = col3% - 1: IF col3% = 16 THEN flag3 = 1                                                                                                                                                   
    GET (1, 138)-(318, 162), e                                                                                           
    PUT (2, 138), e, PSET                                                                                            
    LINE (1, 138)-(1, 162), col4%                                                                                          
    IF flag4 = 1 THEN col4% = col4% + 1: IF col4% = 32 THEN flag4 = 2                                                                                                          
    IF flag4 = 2 THEN col4% = col4% - 1: IF col4% = 16 THEN flag4 = 1                                                                                                                    
LOOP UNTIL LEN(INKEY$)

बबल शॅाट:

REM sample of bubble sort                                                                                                                        
N = 10                                                                                                                
DIM A(N) AS INTEGER                                                                                               
FOR L = 1 TO N                                                                                                          
    A(L) = INT(RND * 10 + 1)                                                                                              
NEXT                                                                                                                              
FOR X = 1 TO N                                                                                                                              
    FOR Y = 1 TO N - 1                                                                                                          
        IF A(X) < A(Y) THEN SWAP A(X), A(Y)                                                                                   
    NEXT                                                                                                                  
NEXT                                                                                                                         
FOR L = 1 TO N                                                                                                           
    PRINT A(L)                                                                                                         
NEXT                                                                                                                   
END

वर्तमान उपयोग

क्विकबेसिक के पास हॉबी प्रोग्रामर्स का अनौपचारिक समुदाय है जो वीडियो गेम, GUI और उपयोगिता सॉफ्टवेयर लिखने के लिए कंपाइलर का उपयोग करता है।[6][7][8] समुदाय ने लैंग्वेज को कई वेब साइट्स, संदेश बोर्ड और ऑनलाइन पत्रिकाएं समर्पित की हैं।[9][10]

आज, प्रोग्रामर कभी-कभी लिनक्स पर क्विकबेसिक चलाने के लिए और आधुनिक पर्सनल कंप्यूटर हार्डवेयर पर DOS एमुलेटर का उपयोग करते हैं, जैसे DOSBox, जो अब कंपाइलर का समर्थन नहीं करता है।[11][12] इसके विकल्पों में फ्रीबेसिक और QB64 सम्मिलित हैं, किन्तु वह अभी तक सभी क्यूबेसिक/क्विकबेसिक प्रोग्राम नहीं चला सकते हैं।[13]

2008 के पश्चात् से, क्विकबेसिक 4.x और 7.1 के लिए TCP/IP रूटीन के सेट ने सॉफ़्टवेयर में कुछ रुचि को पुनर्जीवित किया है। विशेष रूप से, पुराने कंप्यूटर अमेचर समुदाय DOS चलाने वाले पुराने कंप्यूटरों के लिए सॉफ़्टवेयर लिखने में सक्षम हो गए हैं, जिससे ये मशीनें स्थानीय क्षेत्र नेटवर्क या इंटरनेट के माध्यम से अन्य कंप्यूटरों तक पहुँचने की अनुमति देती हैं। इसने 8088 जितनी पुरानी प्रणालियों को भी नए कार्य करने की अनुमति दी है, जैसे वेब सर्वर के रूप में कार्य करना या IRC का उपयोग करता है।[14]

उत्तराधिकारी

माइक्रोसॉफ्ट का विज़ुअल बेसिक (क्लासिक) क्विकबेसिक का उत्तराधिकारी था। पॉवरबेसिक और फ्रीबेसिक जैसे अन्य कंपाइलरों में अनुकूलता की अलग-अलग डिग्री होती है। QB64, C++ अनुवादक के लिए बहु-प्लेटफ़ॉर्म क्विकबेसिक, लगभग 100% संगतता बनाए रखता है और माइक्रोसॉफ्ट विंडोज, लिनक्स और मैकओएस के लिए मूल रूप से संकलित करता है।[15]

यह भी देखें

संदर्भ

  1. Early Microsoft documentation rendered the name exclusively as "QuickBASIC", although later references on Microsoft's Web site also use "QuickBasic".
  2. Microsoft Knowledge Base 45850: Memory Management in QuickBasic & Basic Compiler
  3. QuickBASIC 4.5 was delivered on a set of five 360 KB 5.25-inch DSDD floppy disks or three 720 KB 3.5-inch DSDD floppy disks. The three-disk version could also be installed from 1.2 MB 5.25-inch or 1.44 MB 3.5-inch DSHD disks. To save costs, the files were compressed and later versions were shipped on just four 5.25-inch disks or two 3.5-inch disks.
  4. Microsoft Knowledge Base article 65291
  5. QuickBASIC for Macintosh system requirements
  6. "QBASIC Games Directory". 2008-11-29. Archived from the original on 4 September 2014. Retrieved 2008-12-28.
  7. "GUI Reviews". 2008-12-19. Retrieved 2008-12-28.
  8. "The (BASIC) GUI Blog". 2011-02-06. Retrieved 2011-02-06.
  9. "Qbasic/Quickbasic News". 2008-12-26. Retrieved 2008-12-28.
  10. "QB Express". Pete's QBASIC/QuickBasic Site. 2008. Retrieved 2008-12-28.
  11. Pete Trbovich (2007-03-31). "HOWTO Play With Your Old QBasic Programs on Linux". Retrieved 2008-12-28.
  12. Kiyote Wolf (2008-05-10). "Kiyote Wolf on a Variety of Subjects". QB Express. Retrieved 2008-12-28.
  13. For example, FreeBASIC does not yet support QBasic's "ON PLAY" callback for background music, or the use of PEEK and POKE to I/O ports.
  14. Mike Chambers (2008-07-12). "rubbermallet.org: Where QuickBASIC gets much more powerful". Retrieved 2008-12-28.
  15. Virtanen, E. K. (2008-05-26). "Interview With Galleon". Archived from the original on March 6, 2016. Retrieved 2008-07-14.{{cite web}}: CS1 maint: unfit URL (link)

बाहरी संबंध