ജി.ഡബ്ല്യു. ബേസിക്

ബേസിക് പ്രോഗ്രാമിങ് ഭാഷയുടെ മൈക്രോസോഫ്റ്റ് വികസിപ്പിച്ച ഒരു വകഭേദമാണ് **ജി.ഡബ്ല്യു. ബേസിക്** (**GW-BASIC**). മൈക്രോസോഫ്റ്റ് തന്നെ മുമ്പ് ഐ.ബി.എമ്മിനുവേണ്ടി വികസിപ്പിച്ച ബേസിക്കയിൽ നിന്നും മാറ്റംവരുത്തിയെടുത്ത ഈ പതിപ്പ് യഥാർത്ഥത്തിൽ കോംപാക്കിനുവേണ്ടിയാണ് നിർമ്മിച്ചത്. ബേസിക്കയോട് സമാനമാണെങ്കിലും, റോം അടിസ്ഥാനമായുള്ള ബേസിക്കയിൽ നിന്നും വ്യത്യസ്തമായി ഇത് ഡിസ്ക് അടിസ്ഥാനമായാണ് പ്രവർത്തിക്കുന്നത്. ഐ.ബി.എം പി.സി. അനുരൂപികൾക്കായുള്ള (IBM PC compatibles) ഓപ്പറേറ്റിങ് സിസ്റ്റമായ എം.എസ്. ഡോസിനൊപ്പം ജി.ഡബ്ല്യു. ബേസിക് ഇന്റർപ്രട്ടർ വിതരണം ചെയ്തിരുന്നു. ഇതേ സമയത്തുതന്നെ ജി.ഡബ്ല്യു. ബേസിക്കിന് അനുരൂപമായ ബാസ്കോം എന്ന ഒരു ബേസിക് കമ്പൈലറും, കൂടുതൽ വേഗതയാവശ്യമുള്ള പ്രോഗ്രാമുകളെ ലക്ഷ്യമിട്ട്, മൈക്രോസോഫ്റ്റ് വിപണിയിലിറക്കിയിരുന്നു.

ലളിതമായ ബിസിനസ് പ്രോഗ്രാമുകൾ, കളികൾ തുടങ്ങിയവക്ക് ഈ ഇന്റർപ്രട്ടർ തികച്ചും അനുയോജ്യമായിരുന്നു. എം.എസ്. ഡോസിന്റെ മിക്ക പതിപ്പുകൾക്കുമൊപ്പം സൗജന്യമായി ഉൾപ്പെടുത്തിയിരുന്നതിനാൽ പ്രോഗ്രാമിങിന്റെ അടിസ്ഥാനകാര്യങ്ങൾ പഠിക്കാനാരംഭിക്കുന്നവർക്ക് ചിലവില്ലാത്ത ഒരു മാർഗ്ഗവുമായിരുന്നു ഇത്. 1991-ൽ എം.എസ്. ഡോസ് 5.0 പതിപ്പിന്റെ വരവോടെ ജി.ഡബ്ല്യു. ബേസിക്കിന്റെ സ്ഥാനം അതിൽ ഉൾപ്പെടുത്തിയിരുന്ന ക്യുബേസിക് ഇന്റർപ്രെട്ടർ കൈയടക്കി. ക്വിക്ക്ബേസിക്കിന്റെ ഇന്റർപ്രെട്ടർ വകഭേദമായിരുന്നു ക്യുബേസിക്.

## വാക്യഘടന
കമാൻഡ് ലൈൻ (നിർദ്ദേശങ്ങൾ എഴുതി നൽകേണ്ടുന്ന) അടിസ്ഥാനമാക്കിയുള്ള ഒരു ഇന്റഗ്രേറ്റഡ് ഡെവലപ്മെന്റ് എൻവയോൺമെന്റാണ് (ഐ.ഡി.ഇ.) ജി.ഡബ്ല്യു. ബേസിക്കിനുണ്ടായിരുന്നത്. പ്രോഗ്രാം മെമ്മറിയിലേക്കെടുക്കുന്നതിനും (Load) പ്രവർത്തിപ്പിക്കുന്നതിനും (Run) ഡിസ്കിൽ ശേഖരിക്കുന്നതിനും (Save) മറ്റുമായുള്ള ഫങ്ഷൻ കീ കുറുക്കുവഴികൾ സ്ക്രീനിൽ താഴെയായി കൊടുത്തിട്ടുണ്ടായിരുന്നു. (*വിവരപ്പെട്ടിയിലുള്ള [[:പ്രമാണം:GW-BASIC 3.23.png|ചിത്രം]] ശ്രദ്ധിക്കുക*) ബേസിക്കിന്റെ മറ്റു ആദ്യകാല മൈക്രോകമ്പ്യൂട്ടർ വകഭേദങ്ങളിലെന്നപോലെ ഘടനാപരമായ പ്രോഗ്രാമിങ്ങിനുവേണ്ടിയുള്ള ഘടകങ്ങളൊന്നുംതന്നെ (ഉദാഹരണത്തിന് തദ്ദേശചരങ്ങൾ) ജി.ഡബ്ല്യു. ബേസിക്കിലുണ്ടായിരുന്നില്ല. മാത്രമല്ല ഒരു ഇന്റർപ്രെട്ടറായിരുന്നതിനാൽ പ്രോഗ്രാമുകളുടെ പ്രവർത്തനവേഗവും കുറവായിരുന്നു. പ്രോഗ്രാമിലെ എല്ലാ വരികളും ക്രമസംഖ്യയിട്ട് എഴുതണമായിരുന്നു. (ക്രമസംഖ്യയിടാത്ത നിർദ്ദേശങ്ങൾ പ്രോഗ്രാമിന്റെ ഭാഗമായി കണക്കാക്കില്ല. ഡയറക്റ്റ് മോഡ് നിർദ്ദേശങ്ങളെന്ന് പറയുന്ന അവ അപ്പോൾത്തന്നെ പ്രവർത്തിക്കുന്നു). പ്രോഗ്രാമിന്റെ സോഴ്സ്ഫയലുകൾ, അതിലെ നിർദ്ദേശങ്ങളെ ടോക്കണുകളായി പരിവർത്തനം നടത്തി, ഞെരുക്കിയ ബൈനറി ഫയൽ രൂപത്തിലാണ് ശേഖരിച്ചിരുന്നത്. (ആസ്കി രൂപത്തിൽ ശേഖരിക്കാനുള്ള സൗകര്യവും ലഭ്യമായിരുന്നു)

ജി.ഡബ്ല്യു. ബേസിക്കിന്റെ കമാൻഡ്‌ലൈനിൽ പ്രോഗ്രാമുകളെ ഡിസ്കിൽ നിന്ന് മെമ്മറിയിലേക്കെടുക്കുക, പ്രോഗ്രാം സ്ക്രീനിൽ പ്രദർശിപ്പിക്കുക, പ്രോഗ്രാം ഡിസ്കിൽ ശേഖരിക്കുക, പ്രോഗ്രാം പ്രവർത്തിപ്പിക്കുക എന്നിവക്കായി യഥാക്രമം `LOAD, LIST, SAVE, RUN` എന്നീ നിർദ്ദേശങ്ങൾ ലഭ്യമായിരുന്നു. ഇതിനു പുറമേ ജി.ഡബ്ല്യു. ബേസിക് ഇന്റർപ്രട്ടറിൽ നിന്ന് പുറത്തേക്കിറങ്ങി ഓപ്പറേറ്റിങ് സിസ്റ്റം പ്രോംപ്റ്റിലേക്കെത്താനുള്ള `SYSTEM` എന്ന നിർദ്ദേശവുമുണ്ടായിരുന്നു. ഈ നിർദ്ദേശങ്ങളെല്ലാംതന്നെ ഏതെങ്കിലും പ്രോഗ്രാമിനകത്തും ഉപയോഗിക്കാവുന്നതാണ്. 

പ്രോഗ്രാമിലെ `IF/THEN/ELSE` കണ്ടീഷണൽ നിർദ്ദേശങ്ങൾ ഒറ്റവരിയിൽത്തന്നെ എഴുതണമായിരുന്നു. എന്നാൽ `FOR/NEXT`, `WHILE/WEND` നിർദ്ദേശങ്ങൾക്ക് ഒരുകൂട്ടം വരികളെ സ്വാധീനിക്കാനാകും. DEF FNf(x)= എന്നരീതിയിൽ ഫങ്ഷനുകൾ ഒറ്റവരിയിൽത്തന്നെ നിർവചിക്കണം (ഉദാഹരണം, `DEF FNLOG(base,number)=LOG(number)/LOG(base)`). 

ചരങ്ങളുടെ പേരിനവസാനമുള്ള ചിഹ്നമനുസരിച്ചാണ് അവയുടെ തരം (data type) നിശ്ചയിക്കപ്പെട്ടിരുന്നത്. ഉദാഹരണത്തിന് `A$` എന്നത് ഒരു സ്ട്രിങ് (അക്ഷരക്കൂട്ടം) ചരമാണെങ്കിൽ `A%` എന്നത് ഇന്റിജർ (എണ്ണൽസംഖ്യ) ചരവുമാണ്. `DEFINT, DEFSTR` തുടങ്ങിയ നിർദ്ദേശങ്ങളുപയോഗിച്ച് മുൻകൂട്ടി നിർവചിക്കാത്ത ചരങ്ങളെ അവയുടെ പേര് തുടങ്ങുന്ന അക്ഷരമനുസരിച്ച് ഒരു പ്രത്യേക ഡാറ്റാടൈപ്പ് ആണെന്ന് തരംതിരിക്കാനാകും. ഇത്തരം നിർദ്ദേശങ്ങളൊന്നും കൂടാതെ ഉപയോഗിക്കുന്ന ചരങ്ങൾ സിംഗിൾ പ്രിസിഷൻ ഫ്ലോട്ടിങ് പോയിന്റ് ചരമായാണ് സ്വതേ എടുക്കുന്നത്.

ജോയ്സ്റ്റിക്ക്, മൗസ്, ലൈറ്റ് പെൻ തുടങ്ങിയ അന്നത്തെ ഇൻപുട്ട് ഉപകരണങ്ങളെല്ലാം ജി.ഡബ്ല്യു. ബേസിക്കിൽ ഉപയോഗിക്കാമായിരുന്നു. സീരിയൽ പോർട്ടുമായി (കോം പോർട്ട്) വിവരവിനിമയം നടത്താനും, അതിലെ സംഭവഗതികൾ പിടിച്ചെടുക്കാനും ജി.ഡബ്ല്യു. ബേസിക്കിലൂടെ സാധിച്ചിരുന്നു. യഥാർത്ഥ ഐ.ബി.എം. പി.സിയിലെ കാസറ്റ് പോർട്ട്, അനുരൂപികളിൽ (compatibles) ഉൾപ്പെടുത്തിയിരുന്നില്ലെന്നതുകൊണ്ട്, കാസറ്റുമായി ബന്ധപ്പെട്ട പ്രവർത്തനങ്ങളെ ജി.ഡബ്ല്യു. ബേസിക് പിന്തുണച്ചിരുന്നില്ല. `PLAY` നിർദ്ദേശത്തിനോടൊപ്പം മൂസിക് മാക്രോ ഭാഷയിലുള്ള അക്ഷരക്കൂട്ടങ്ങൾ നൽകി പി.സി. സ്പീക്കറുകളിൽ ലളിതമായ സംഗീതശബ്ദങ്ങൾ പുറപ്പെടുവിക്കാനും (ഉദാഹരണം: `PLAY "edcdeee2dfedc4"`) `SOUND` നിർദ്ദേശത്തോടൊപ്പം, ശബ്ദത്തിന്റെ ആവൃത്തി, സമയദൈർഘ്യം എന്നിവ നൽകി ശബ്ദത്തെ കൂടുതൽ മികച്ചരീതിയിൽ നിയന്ത്രിക്കാനും സാധിച്ചിരുന്നു. ബിസിനസ് കമ്പ്യൂട്ടറുകളിൽ ഒറ്റ ചാനൽ സ്പീക്കറായിരുന്നതിനാൽ ശബ്ദം മൂളലിലും ചൂളമടിയിലും ഒതുങ്ങിയപ്പോൾ ടാൻഡി 1000 പോലുള്ള ഗാർഹിക കമ്പ്യൂട്ടറുകളിലെ മൂന്നു ചാനലുകളിൽ മികച്ച സംഗീതം സൃഷ്ടിക്കാൻ `SOUND`, `PLAY` നിർദ്ദേശങ്ങളെക്കൊണ്ട് സാധിച്ചു.

## പേര്
ജി.ഡബ്ല്യു. എന്ന പേരിന്റെ ആദ്യഭാഗത്തെക്കുറിച്ച് പല കഥകളുണ്ട്. ബിൽ ഗേറ്റ്സാണ് ഈ പേര് തിരഞ്ഞെടുത്തതെന്ന്, മൈക്രോസോഫ്റ്റിലെ ഒരു ആദ്യകാലജീവനക്കാരനും കമ്പനിയുടെ ബേസിക് കമ്പൈലർ മാനകങ്ങൾ വികസിപ്പിച്ചയാളുമായ ഗ്രെഗ് വിറ്റൻ പറയുന്നു. *"ഗീ-വിസ്"* ബേസിക് (Gee-Whiz) എന്നതിൽനിന്നാണ് ഈ പേരുണ്ടായതെന്ന് വിറ്റൻ പറയുന്നുവെങ്കിലും സ്വന്തം പേരിൽനിന്നാണ് ബിൽ ഗേറ്റ്സ് ഈ ചുരുക്കരൂപം ഉണ്ടാക്കിയതെന്നകാര്യം ഉറപ്പില്ലെന്നും കൂട്ടിച്ചേർക്കുന്നു. ധാരാളം ഗ്രാഫിക്സ് നിർദ്ദേശങ്ങൾ ജി.ഡബ്ല്യു. ബേസിക്കിലുണ്ടായിരുന്നതിനാൽ *ഗീ-വിസ്* എന്ന ചെല്ലപ്പേര് ഇതിന് തികച്ചും അനുയോജ്യവുമാണ്. *ഗ്രാഫിക്സ് ആൻഡ് വിൻഡോസ്* എന്നതിന്റെ ചുരുക്കമാണെന്ന മറ്റൊരു കഥ പ്രചാരത്തിലുണ്ട്. അന്ന് കമ്പനിയുടെ അദ്ധ്യക്ഷനായിരുന്ന ബിൽ ഗേറ്റ്സിന്റെ (*ഗേറ്റ്സ്, വില്ല്യം*) തന്നെ പേരിന്റെ ചുരുക്കമാണെന്നും ഗേറ്റ്സിന്റേയും വിറ്റന്റേയും പേരുകളിൽ നിന്നെടുത്തതാണെന്നും (ഇരുവരും, ഈ പ്രോഗ്രാമിന്റെ പ്രധാന രൂപകർത്താക്കളായിരുന്നു) മറ്റു കഥകളാണ്.

## അവലംബം

വർഗ്ഗം:ബേസിക് പ്രോഗ്രാമിങ് ഭാഷാ കുടുംബം
വർഗ്ഗം:ഇന്റർപ്രട്ടറുകൾ