പാഠ്യപദ്ധതിയില് സി അല്ലെങ്കില് സി++ ഉള്ളവരുടെ സ്ഥിരം പരാതിയാണ് ടര്ബോ സി++, ഗ്നു/ലിനക്സില് പ്രവര്ത്തിക്കുന്നില്ല എന്നത്. വിന്ഡോസ് ഉപയോക്താക്കള്ക്കുതന്നെയും ഈ പ്രശ്നം പലപ്പോഴും വരാറുണ്ട്. പഴയ ടര്ബോയെ പുതിയ കംപ്യൂട്ടറുകളില് ഓടിയ്ക്കുന്നതെങ്ങനെ എന്ന് നോക്കാം. ഒപ്പം പുതിയ സാങ്കേതികവിദ്യ അനുസരിച്ചുള്ള സി/സി++ പ്രോഗ്രാമിങ് എങ്ങനെ എന്നും ചര്ച്ച ചെയ്യാം.
കുറിപ്പ്: ഈ ലേഖനത്തില് 'ടര്ബോ സി++', 'സി' എന്നെല്ലാം പറയുന്നത് അതാത് ഭാഷകളെയും സോഫ്റ്റ്വെയറിനെയും ഉദ്ദേശിച്ചാണ്. എന്നാല് 'സി ഡ്രൈവ്' എന്നു പറയുന്നത് വിന്ഡോസിന്റെ അഥവാ ഡോസിന്റെ C: എന്ന ഡിസ്ക് പാര്ട്ടീഷനെ ഉദ്ദേശിച്ചാണ്. ഇവ പരസ്പരം മാറിപ്പോവാതെ സൂക്ഷിക്കുമല്ലോ. വലിയ വ്യത്യാസമൊന്നുമില്ലാത്ത കാര്യങ്ങളില് സി, സി++ എന്നിങ്ങനെ വേറിട്ടു പറയാതെ ഏതെങ്കിലും ഒന്നിന്റെ മാത്രം പേര് കൊടുത്തിട്ടുണ്ടാവുമെന്നതും ശ്രദ്ധിക്കുക.
പഴകിയ ടര്ബോ
സി, സി++ പ്രോഗ്രാമിങ് ഭാഷകള്ക്ക് പല വകഭേദങ്ങളും (Dialect) ഉണ്ടായിട്ടുണ്ട്. വകഭേദങ്ങള് പലതാവുമ്പോള് ഏകീകൃതമായ ഒരു രൂപം ഉണ്ടാവേണ്ടത് ആവശ്യമായി വരുന്നു. അങ്ങനെയാണ് ആന്സി (ANSI), ഐ.എസ്.ഒ. (ISO) പോലെയുള്ള സംഘടനകളുടെ സി, സി++ സ്റ്റാന്ഡേഡുകള് നിലവില് വരുന്നത്. ലോകമെങ്ങും സ്വീകാര്യമായ തരത്തില് പ്രോഗ്രാമെഴുതാന് ആഗ്രഹിക്കുന്നയാളാണ് നിങ്ങളെങ്കില് ഈ സ്റ്റാന്ഡേഡുകളും അവ പിന്തുണയ്ക്കുന്ന കമ്പൈലറുകളും ആണ് ഉപയോഗിയ്ക്കേണ്ടത്.
ദൗര്ഭാഗ്യമെന്നുപറയട്ടെ, നിര്മ്മിച്ച സ്ഥാപനം തന്നെ ഉപേക്ഷിച്ച ‘ടര്ബോ സി++’ ആണ് ഇന്നും പല പരിശീലനകേന്ദ്രങ്ങളും ഉപയോഗിക്കുന്നത്. പാഠ്യപദ്ധതിയില് ആന്സി സി ആണെങ്കിലും ലാബില് ടര്ബോ ഉപയോഗിക്കുന്ന പ്രവണതയുമുണ്ട്. ബോര്ലാന്ഡ് കമ്പനി വികസിപ്പിച്ചെടുത്ത സി++ വകഭേദവും അതില് പ്രോഗ്രാമെഴുതി കമ്പൈല് ചെയ്യാനുള്ള സോഫ്റ്റ്വെയറും (ഐ.ഡി.ഇ. -- ഇന്റഗ്രേറ്റഡ് ഡിവലപ്മെന്റ് ഇന്വയോണ്മെന്റ്) ആണ് ടര്ബോ സി++. എണ്പതുകളിലും തൊണ്ണൂറുകളിലും മറ്റും 16 ബിറ്റ് കമ്പ്യൂട്ടറുകളെ മുന്നില്ക്കണ്ട് നിര്മ്മിച്ച ഇത് പുതിയ കമ്പ്യൂട്ടറുകള്ക്ക് അനുയോജ്യമായ രീതിയില് പിന്നീട് പുതുക്കിയിട്ടില്ല. അതുകൊണ്ടുതന്നെ ഉയര്ന്ന ബിറ്റുള്ള പ്രൊസസറുകളില് ടര്ബോയോ അതിലെഴുതിയ പ്രോഗ്രാമുകളോ ശരിക്ക് പ്രവര്ത്തിച്ചെന്നുവരില്ല. കൂടാതെ, ഐ.എസ്.ഒ.യുടെ സ്റ്റാന്ഡേഡുകളുമായി വ്യത്യാസമുള്ളതാണ് ടര്ബോ സി++ ഭാഷ. ചുരുക്കിപ്പറഞ്ഞാല് ഇനിയങ്ങോട്ടുള്ള പ്രോഗ്രാമിങ്ങിന് ടര്ബോ ഉപയോഗിയ്ക്കാനാവില്ല. ജി.സി.സി. പോലുള്ള നല്ല കമ്പൈലറുകള് സൗജന്യമായിത്തന്നെ ലഭിക്കുമ്പോള് അതിന്റെ ആവശ്യവുമില്ല.
എങ്കിലും പാഠ്യപദ്ധതികള് മാറും വരെ ടര്ബോ ഉപയോഗിയ്ക്കാന് നാം നിര്ബന്ധിതരാണല്ലോ. മാത്രമല്ല, പ്രൊഫഷണല് തലത്തില് മാറ്റിനിര്ത്തിയാലും പഠനാവശ്യത്തിന് ടര്ബോ ഉപയോഗിക്കുന്നതില് അത്ര വലിയ അപകടമില്ല. അതുകൊണ്ട് തത്കാലം നമുക്ക് ടര്ബോയെ പുതിയ കമ്പ്യൂട്ടറുകളില് പ്രവര്ത്തിപ്പിയ്ക്കാന് നോക്കാം.
ഡോസ്ബോക്സ്
ഡോസ് ഓപ്പറേറ്റിങ് സിസ്റ്റത്തിനുവേണ്ടി തയ്യാറാക്കിയ പ്രോഗ്രാമുകള് പുതിയ കംപ്യൂട്ടറുകളില് പ്രവര്ത്തിപ്പിക്കാന് സഹായിക്കുന്ന ഒരു എമുലേറ്ററാണ് ഡോസ്ബോക്സ്. ഗ്നു/ലിനക്സിലും വിന്ഡോസിലും ഇത് ഡൗണ്ലോഡ് ചെയ്തുപയോഗിക്കാം. ഡോസ്ബോക്സ് ഉപയോഗിച്ചാണ് നാം ടര്ബോ സി++ പ്രവര്ത്തിപ്പിക്കാന് പോകുന്നത്.
ഗ്നു/ലിനക്സല് ടര്ബോ സി++
ആദ്യമേ പറയട്ടെ, ഗ്നു/ലിനക്സിലെ സി പ്രോഗ്രാമിങ് എത്രയോ ലളിതവും കാര്യക്ഷമവുമാണ്. തുടക്കക്കാര്ക്കുപോലും ഇണങ്ങുന്ന നല്ല ഐ.ഡി.ഇ.കളുമുണ്ട്. ടര്ബോ തന്നെ പ്രവര്ത്തിപ്പിച്ചുകിട്ടേണ്ടതുകൊണ്ടാണ് നാം ഇനി പറയുന്ന മെനക്കേടുകളൊക്കെ ചെയ്യുന്നത്.
വിന്ഡോസ് പ്രോഗ്രാമുകള് ഗ്നു/ലിനക്സില് പ്രവര്ത്തിപ്പിയ്ക്കാന് വൈന് (wine) എന്ന സോഫ്റ്റ്വെയറാണ് സാധാരണയായി ഉപയോഗിയ്ക്കുന്നത്. മൈക്രോസോഫ്റ്റ് ഓഫീസടക്കമുള്ള പാക്കേജുകള് വൈനിന്റെ സഹായത്തോടെ ഗ്നു/ലിനക്സില് ഭംഗിയായി പ്രവര്ത്തിക്കുന്നു. എന്നാല് 16 ബിറ്റ് മോഡിലുള്ള ടര്ബോ സി++ പ്രവര്ത്തിപ്പിക്കാന് വൈനിന് കഴിയാറില്ല. അതുകൊണ്ട് ഇവിടെയും ഡോസ്ബോക്സിന്റെ സഹായം തേടാം.
ആദ്യം വേണ്ടത് ഗ്നു/ലിനക്സില് ഡോസ്ബോക്സ് ഇന്സ്റ്റാള് ചെയ്യലാണ് (ഇന്റര്നെറ്റ് കണക്ഷന് വേണം). ഉബുണ്ടു സോഫ്റ്റ്വെയര് സെന്റര്, സിനാപ്റ്റിക് പാക്കേജ് മാനേജര് തുടങ്ങിയ പ്രോഗ്രാമുകള് ഉപയോഗിച്ച് ഇത് തീര്ത്തും ലളിതമായി ചെയ്യാം. (സേര്ച്ച് ബോക്സില് dosbox എന്ന് ടൈപ്പ് ചെയ്യുക. സോഫ്റ്റ്വെയര് സെന്ററാണെങ്കില് ഡോസ്ബോക്സ് സെലക്റ്റ് ചെയ്ത് ഇന്സ്റ്റാള് എന്ന് കൊടുക്കുക. സിനാപ്റ്റിക് ആണെങ്കില് സേര്ച്ച് ലിസ്റ്റിലെ ഡോസ്ബോക്സില് റൈറ്റ് ക്ലിക്ക് ചെയ്ത് മാര്ക്ക് ഫോര് ഇന്സ്റ്റാള് കൊടുത്ത ശേഷം ടൂള്ബാറിലെ അപ്ലൈ ബട്ടണ് ക്ലിക്ക് ചെയ്യുക.) കമാന്ഡ് ലൈന് ടെര്മിനല് (Applications → Accessories → Terminal) ഉപയോഗിക്കുന്നയാളാണ് നിങ്ങളെങ്കില് ഈ കമാന്ഡ് വഴി ഇത് ഒറ്റയടിക്ക് ചെയ്യാം:
sudo apt-get install dosbox
ഇനി ടര്ബോ സി++ ഇന്സ്റ്റാള് ചെയ്യാം. ടര്ബോയുടെ ഫയലുകളുള്ള TC എന്ന ഫോള്ഡര് സി ഡ്രൈവിലേക്ക് പേസ്റ്റ് ചെയ്താണല്ലോ വിന്ഡോസില് ഇത് ചെയ്യാറുള്ളത് (ടര്ബോ സി ഇന്സ്റ്റാള് ചെയ്തിട്ടുള്ള ഒരു വിന്ഡോസ് കംപ്യൂട്ടറില് പരതിയാല് മതി; ചിലപ്പോള് TURBOC എന്നൊക്കെയാവും പേര്). ഇതേ ഫോള്ഡര് ഗ്നു/ലിനക്സില് നമ്മുടെ ഹോം ഫോള്ഡറിലേയ്ക്ക് പേസ്റ്റ് ചെയ്യുകയാണ് നാമിപ്പോള് ചെയ്യുന്നത്. കാരണം, ഹോം ഫോള്ഡറാണ് ഡോസ്ബോക്സിന്റെ സി ഡ്രൈവായി ഉപയോഗിക്കാന് പോകുന്നത്.
ഇനി ഡോസ്ബോക്സ് തുറന്ന് ഏതാനും കമാന്ഡുകള് കൊടുത്താല് ടര്ബോ സി++ തുറന്നുവരും. എന്നാല് തുടക്കക്കാരെസ്സംബന്ധിച്ച് എല്ലാ തവണയും ഈ കമാന്ഡുകള് കൊടുക്കുന്നത് ബുദ്ധിമുട്ടായിരിയ്ക്കും. അതുകൊണ്ട് അവ കൂട്ടിച്ചേര്ത്ത് ഒരു ഷോട്കട്ട് ഫയലാക്കിമാറ്റാം. അതോടെ ഒറ്റക്ലിക്കില് ടര്ബോ തുറന്നുവരുന്ന സംവിധാനമാവും.
ആദ്യം ഒരു ടെക്സ്റ്റ് എഡിറ്റര് തുറന്ന് താഴെ കൊടുത്തിട്ടുള്ള വരികള് ടൈപ്പ് ചെയ്ത് ഹോം ഫോള്ഡറില് tc.sh എന്ന പേരില് സേവ് ചെയ്യുക:
#!/bin/sh dosbox -c "mount C ~/" -c "C:" -c "cd TC" -c "TC.EXE"
ഇവിടെ "cd TC" എന്ന് പറഞ്ഞിരിയ്ക്കുന്നതിലെ TC എന്നത് TC.EXE എന്ന ഫയല് ഉള്ള ഫോള്ഡറാണ്. ചിലപ്പോള് TC ഫോള്ഡറിലെ BIN എന്ന സബ്ഫോള്ഡറിലാവും TC.EXE. അപ്പോള് കമാന്ഡ് "cd TC\\BIN" എന്നാക്കി മാറ്റണം.
ഇനി tc.sh എന്ന ഈ ഷോട്കട്ട് ഫയലിന് എക്സിക്യൂഷന് പെര്മിഷന് കൊടുക്കണം. അതിനായി ഹോം ഫോള്ഡര് തുറന്ന് ഫയലില് റൈറ്റ് ക്ലിക്ക് ചെയ്യുക. പ്രോപ്പര്ട്ടീസ് എടുത്ത് പെര്മിഷന്സ് വിഭാഗത്തിലെ അലോ എക്സിക്യൂട്ടിങ് ഫയല് ആസ് പ്രോഗ്രാം എന്ന ഓപ്ഷന് ഓണാക്കിയിടുക. കമാന്ഡ് ലൈന് ആണ് ഉപയോഗിക്കുന്നതെങ്കില് ഇത് കൊടുത്താല് മതി:
chmod +x tc.sh
ഇതോടെ ടര്ബോ സി++ പ്രവര്ത്തിപ്പിയ്ക്കാനുള്ള ഷോട്കട്ട് പൂര്ത്തിയായിക്കഴിഞ്ഞു. ഇനി ടര്ബോ തുറക്കേണ്ടപ്പോഴെല്ലാം ഹോം ഫോള്ഡറിലെ tc.sh ഡബ്ള് ക്ലിക്ക് ചെയ്താല് മതി. റണ് ചെയ്യണോ എന്ന് ചോദിയ്ക്കുന്നുണ്ടെങ്കില് റണ് എന്ന് കൊടുക്കുക.
ഡയറക്റ്ററി ക്രമീകരണം
ഡോസ്ബോക്സിനായി നാമെഴുതിയ സ്ക്രിപ്റ്റുകള് പ്രകാരം ഇന്ക്ലൂഡ് ഡയറക്റ്ററി C:\TC\INCLUDE എന്നതും ലൈബ്രറി ഡയറക്റ്ററി C:\TC\LIB എന്നതും ആണ് വേണ്ടത്. മാറ്റമുണ്ടെങ്കില് അതനുസരിച്ച് ചെയ്യുക.
ജി.സി.സി.
പ്രൊഫഷണല് തലത്തിലും അക്കാദമിക് തലത്തിലും ഒരേ പോലെ പ്രശസ്തമാണ് ഗ്നു കംപൈലര് കളക്ഷന് എന്ന ജി.സി.സി. അതേ ചുരുക്കപ്പേരിലറിയപ്പെടുന്ന ഗ്നു സി കംപൈലര് ആണ് ഇതിന്റെ പ്രസക്തഭാഗം. ഗ്നു/ലിനക്സിലും വിന്ഡോസിലും മാക്കിലുമെല്ലാം ഉപയോഗിയ്ക്കാവുന്ന ഇത് പുതിയ സി, സി++ സ്റ്റാന്ഡേഡുകളെ പിന്തുണയ്ക്കുന്നു. ഒരു ടെക്സ്റ്റ് എഡിറ്ററില് പ്രോഗ്രാമെഴുതി സേവ് ചെയ്ത്, കമാന്ഡ് ലൈന് വഴി ജി.സി.സി.യെ വിളിച്ചാണ് കംപൈലിങ് നടത്തുന്നത്.
തുടക്കക്കാര്ക്ക് ഇത് ബുദ്ധിമുട്ടാവുമെന്നതുകൊണ്ട് ലളിതമായ ഒരു ഐ.ഡി.ഇ. ഉപയോഗിച്ച് ഗ്നു/ലിനക്സില് സി, സി++ പ്രോഗ്രാമുകള് തയ്യാറാക്കുന്നത് പരിചയപ്പെടാം.
ജീനി
വിവിധ ഭാഷകളില് പ്രോഗ്രാമുകളെഴുതാന് സഹായിയ്ക്കുന്ന ഒരു ഐ.ഡി.ഇ. ആണ് ജീനി (Geany). ഐ.റ്റി.@സ്കൂളിന്റെ ഉബുണ്ടുവില് ഇത് ഉള്പ്പെടുത്തിയിട്ടുണ്ട്. മറ്റു പതിപ്പുകള് ഉപയോഗിയ്ക്കുന്നവര്ക്ക് ഡോസ്ബോക്സ് ഇന്സ്റ്റാള് ചെയ്ത അതുപോലെതന്നെ ജീനിയും ഇന്സ്റ്റാള് ചെയ്യാം. Applications → Programming → Geany എന്ന ക്രമത്തിലാണ് പഴയ ഇന്റര്ഫെയ്സ് ഉപയോഗിയ്ക്കുന്നവര് ഇത് തുറക്കേണ്ടത്.
ജീനിയില് ടൈപ്പ് ചെയ്യുന്ന ഫയലുകള് .c അല്ലെങ്കില് .cpp എക്സ്റ്റന്ഷനില് സേവ് ചെയ്യണം. കമ്പൈല് ചെയ്യാനും എക്സിക്യൂട്ട് (റണ്) ചെയ്യാനുമെല്ലാമുള്ള ഓപ്ഷനുകള് Build മെനുവില് കാണാം (ആന്തരികമായി ജി.സി.സി. തന്നെയാണ് ഇവിടെയും കമ്പൈല് ചെയ്യുന്നത്).
ടര്ബോ vs സ്റ്റാന്ഡേഡ്
ജി.സി.സി., മൈക്രോസോഫ്റ്റ് വിഷ്വല് സി++ തുടങ്ങി ആധുനിക കമ്പൈലറുകളെല്ലാം സ്റ്റാന്ഡേഡ് (ആന്സി/ഐ.എസ്.ഒ.) സിയെയാണ് പിന്തുണക്കുന്നതെന്ന് പറഞ്ഞല്ലോ. ടര്ബോ ശീലമാക്കിയവര്ക്ക് ഇവിടെ ചില ബുദ്ധിമുട്ടുകള് നേരിടേണ്ടിവരും. പ്രധാനപ്പെട്ട ചിലത് പറയാം.
ടര്ബോ ഉപയോക്താക്കളുടെ സ്ഥിരം ഉപകരണമായ conio.h-ഉം അനുബന്ധ ഫങ്ഷനുകളും സ്റ്റാന്ഡേഡ് സിയിലില്ല. ബദലുകളാവട്ടെ കുറച്ച് വളഞ്ഞ വഴിയ്ക്കാണ്. ഏതായാലും clrscr()-ഉം getch()-ഉമൊന്നും അത്ര ആവശ്യമുള്ളതല്ല. ഓരോ പ്രോഗ്രാമും അനാവശ്യമായി സ്ക്രീന് ക്ലിയര് ചെയ്യേണ്ടതില്ല. പ്രോഗ്രാമിന്റെ ജോലി കഴിഞ്ഞാല് പിന്നെ ഒരു കീസ്ട്രോക്കിനായി കാത്തിരിക്കുകയും വേണ്ട. അതുകൊണ്ട് ഇവയെല്ലാം ഒഴിവാക്കിവേണം ആന്സി സിയില് പ്രോഗ്രാമെഴുതാന്.
ഇനി സ്ക്രീന് ക്ലിയര് ചെയ്യല് നിര്ബന്ധമാണെങ്കില് അതിനായി ഗ്നു/ലിനക്സില് system("clear"); എന്ന സ്റ്റേറ്റമെന്റും വിന്ഡോസിലും ഡോസിലും system("cls"); എന്ന സ്റ്റേറ്റ്മെന്റും ഉപയോഗിക്കാം. ഇതിനായി stdlib.h എന്ന ഹെഡര് ഫയല് ഇന്ക്ലൂഡ് ചെയ്യണം. getch()-നെ തത്കാലം getchar() ഉപയോഗിച്ച് മാറ്റിയെഴുതാം. ആദ്യത്തേത് ഏതെങ്കിലുമൊരു കീയ്ക്കായി കാത്തുനില്ക്കുമ്പോള് രണ്ടാമത്തേത് എന്റര് കീയ്ക്കായിത്തിന്നെ കാത്തുനില്ക്കും എന്നതാണ് വ്യത്യാസം.
സി++ ഉപയോക്താക്കള്ക്കാണ് കാര്യമായ മാറ്റങ്ങള് വേണ്ടിവരിക. ചില ഹെഡര് ഫയലുകള്ക്ക് എക്സ്റ്റന്ഷന് (.h, .hpp) ഒഴിവാക്കേണ്ടിവരും (ഉദാ: iostream; എന്നാല് സിയിലെ ഹെഡര് ഫയലുകളായ stdlib.h, string.h എന്നിവയ്ക്കെല്ലാം എക്സ്റ്റന്ഷനുണ്ടാവും). മെയിന് ഫങ്ഷന് വോയിഡ് റിട്ടേണ് ടൈപ്പ് കൊടുക്കാനാവില്ല. cout-ഉം cin-ഉം std::cout-ഉം std::cin-ഉം ആയി മാറും. ഓരോ തവണയും std:: കൊടുക്കുന്ന ബുദ്ധിമുട്ട് ഒഴിവാക്കാന് using namespace std; എന്ന ഒറ്റ വരി, ഹെഡര് ഫയലുകള് ഇന്ക്ലൂഡ് ചെയ്തശേഷം കൊടുത്താല് മതി.
സ്റ്റാന്ഡേഡ് സി++ ഉപയോഗിച്ച് എഴുതിയ ഒരു ഹലോ വേള്ഡ് പ്രോഗ്രാം താഴെ കൊടുക്കുന്നു:
#include <iostream> using namespace std; int main() { cout << "Hello, world!\n"; return 0; }