അക്ഷരശൃംഖല (കമ്പ്യൂട്ടർ ശാസ്ത്രം)

അക്ഷരങ്ങളുടെ (char) ഒരു ശൃംഖലയെയാണ് (array) കമ്പ്യൂട്ടർ ശാസ്ത്രത്തിൽ അക്ഷരശൃംഖല (string) എന്ന് പറയുന്നത്. അന്തർലീനമായി ഇത് അക്ഷരങ്ങളുടെ ഒരു ശൃംഖലയാണെങ്കിലും പല പ്രോഗ്രാമിങ്ങ് ഭാഷകളിലും അക്ഷരശൃംഖല (string) ഒരു തനതായ ഡാറ്റാറ്റൈപ്പാണ്. 

ഗണസിദ്ധാന്തത്തിൽ അക്ഷരശൃംഖലയുടെ ഔപചാരിക നിർവചനം ഇപ്രകാരമാണ് 
* Σ അക്ഷരമാലയിലെ അക്ഷരങ്ങളുടെ ശൂന്യമല്ലാത്ത ഗണമാണെങ്കിൽ ഒരു അക്ഷരശൃംഖല ഈ ഗണത്തിലെ അംഗങ്ങളുടെ അനന്തമല്ലാത്ത അനുക്രമമാണ് (finite sequence)
* ഒരു അക്ഷരശൃംഖലയുടെ നീളം അതിലുള്ള അക്ഷരങ്ങളുടെ എണ്ണമാകുന്നു. ഈ നീളം ഒരു ധനസംഖ്യയോ, പൂജ്യമോ ആകാം. ഒരിക്കലും ഋണസംഖ്യയോ ഭിന്നസംഖ്യയോ ആവില്ല. 
* ഒരു അക്ഷരശൃംഖലയുടെ നീളം പൂജ്യമാണെങ്കിൽ അത് ഒരു  Σ ന്റെ ഒരു ശൂന്യ ഗണമായിരിക്കും    

ഒരു സ്ട്രിംഗ് അക്ഷരാർത്ഥത്തിൽ സോഴ്സ് കോഡിൽ ദൃശ്യമാകുമ്പോൾ, അത് ഒരു സ്ട്രിംഗ് ലിറ്ററൽ അല്ലെങ്കിൽ അനോണിമസ് സ്ട്രിംഗ് എന്ന് അറിയപ്പെടുന്നു.

പ്രോഗ്രാമിംഗ് ഭാഷയും ഉപയോഗിക്കുന്ന കൃത്യമായ ഡാറ്റാ ടൈപ്പും അനുസരിച്ച്, ഒരു സ്ട്രിംഗ് ആയി പ്രഖ്യാപിക്കപ്പെട്ട ഒരു വേരിയബിൾ, ഒന്നുകിൽ മെമ്മറിയിലെ സംഭരണം മുൻകൂട്ടി നിശ്ചയിച്ചിട്ടുള്ള പരമാവധി സ്ഥലം നീക്കിവയ്ക്കുന്നതിന് കാരണമായേക്കാം അല്ലെങ്കിൽ ഒരു വേരിയബിളിലുള്ള എലമെന്റുകളുടെ എണ്ണം നിലനിർത്താൻ വേണ്ടി ഡൈനാമിക് അലോക്കേഷൻ ഉപയോഗിച്ചേക്കാം.

ഗണിതശാസ്ത്രത്തിലൂന്നിയുള്ള ലോജിക്ക്(യുക്തി) ഉപയോഗിച്ച് തിയറിറ്റിക്കൽ കമ്പ്യൂട്ടർ സയൻസിൽ ഉപയോഗിക്കുന്ന ഔപചാരിക ഭാഷകളിൽ, അക്ഷരമാല(Alphabet) എന്ന് വിളിക്കപ്പെടുന്ന ഒരു കൂട്ടത്തിൽ നിന്ന് തിരഞ്ഞെടുക്കുന്ന ചിഹ്നങ്ങളുടെ ഒരു പരിമിത ശ്രേണിയാണ് സ്ട്രിംഗ്.
## ചരിത്രം
ഗണിതശാസ്ത്രം, സിംമ്പോളിക്ക് ലോജിക്ക്, ഭാഷാ സിദ്ധാന്തം എന്നിവയിൽ നിന്ന് "ചിഹ്നങ്ങളുടെ ഒരു ശ്രേണി അല്ലെങ്കിൽ ഒരു നിശ്ചിത ക്രമത്തിലുള്ള ഭാഷാ ഘടകങ്ങൾ" എന്ന അർത്ഥത്തിൽ "സ്ട്രിംഗ്" എന്ന വാക്കിന്റെ ഉപയോഗം, സിംമ്പോളിക് സംവിധാനങ്ങളുടെ ഔപചാരിക സ്വഭാവത്തെക്കുറിച്ച് സംസാരിക്കാൻ വേണ്ടി, ചിഹ്നങ്ങളുടെ അർത്ഥം മാറ്റിവയ്ക്കുന്നു.

ഉദാഹരണത്തിന്, യുക്തിവാദിയായ സി.ഐ. ലൂയിസ് 1918-ൽ ഇപ്രകാരം എഴുതി:

മാത്തമാറ്റിക്കൽ സിസ്റ്റം എന്നത് തിരിച്ചറിയാവുന്ന മാർക്കുകളുടെ ഏതെങ്കിലും സ്ട്രിംഗുകളാണ്, അതിൽ ചില സ്ട്രിംഗുകൾ തുടക്കത്തിൽ എടുക്കുകയും ബാക്കിയുള്ളവ മാർക്കുകൾക്ക് നൽകിയിരിക്കുന്ന ഏതെങ്കിലും അർത്ഥത്തിൽ നിന്ന് സ്വതന്ത്രമായ നിയമങ്ങൾക്കനുസൃതമായി നടത്തുന്ന പ്രവർത്തനങ്ങളിലൂടെ ഉരുത്തിരിഞ്ഞതാണ്. ഒരു സംവിധാനത്തിൽ ശബ്ദത്തിനോ ഗന്ധത്തിനോ പകരം 'അടയാളങ്ങൾ' ഉണ്ടായിരിക്കണം എന്നത് ഇവിടെ അപ്രധാനമാണ്.

ജീൻ ഇ. സമ്മെറ്റ് പറയുന്നതനുസരിച്ച്, കമ്പ്യൂട്ടറുകൾക്കായുള്ള "ആദ്യത്തെ റിയലിസ്റ്റിക് സ്ട്രിംഗ് കൈകാര്യം ചെയ്യലും പാറ്റേൺ പൊരുത്തപ്പെടുത്തൽ ഭാഷയും" 1950-കളിൽ ഉൾപ്പെടുത്തിയിരുന്നത് കമ്മിറ്റ്(COMIT) ഭാഷയിൽ ആയിരുന്നു, തുടർന്ന് 1960-കളുടെ തുടക്കത്തിൽ സ്നോബോൾ(SNOBOL) ഭാഷയിൽ ഉപയോഗിച്ചു.

കമ്പ്യൂട്ടർ മെമ്മറിയിൽ "Hello world" എന്ന ഇംഗ്ലീഷ് വാക്യം ഇപ്രകാരമാണ് സംഭരിക്കുക : 



ഇൻഡെക്സ്(index)
0
1
2
3
4
5
6
7
8
9
10
11


അക്ഷരം
H
e
l
l
o
&nbsp;
w
o
r
l
d
NULL


ASCII decimal മൂല്യം 
72
101
108
108
111
32
119
111
114
108
100
NULL


ബൈനറി മൂല്യം
01001000
01100101
01101100
01101100
01101111
0100000
01110111
01101111
01110010
01101100
01100100
00000000


ഒരു  സി++ പ്രോഗ്രാമിൽ ഒരു അക്ഷരശൃംഗലയെ  അതിന്റെ പ്രാഥമിക (primitive) രൂപത്തിൽ (as char array) ഇപ്രകാരമാണ് സൃഷ്ട്ടിച്ച് ഉപയോഗിക്കുക.

```cpp
//Standard c++ code. Will need minor modification for Turbo C++

#include <iostream>
using namespace std;

int main() {
	char a[] = "Hello world";
	for(int j=0; j<11; ++j) {
	  cout<<a[j];
	}
	cout<<endl;
	return 0;
}
```


## അവലംബം

വർഗ്ഗം:ഡാറ്റാ ടൈപ്പുകൾ