අදහස් දැක්වීමේ අවශ්යතාවය කේතයේ වියුක්ත මට්ටමට ප්රතිලෝමව සමානුපාතික වේ.
උදාහරණයක් ලෙස, එකලස් කිරීමේ භාෂාව, බොහෝ ප්රායෝගික අරමුණු සඳහා, අදහස් දැක්වීමකින් තොරව තේරුම්ගත නොහැකිය. ෆිබොනාච්චි ශ්රේණියේ නියමයන් ගණනය කර මුද්රණය කරන කුඩා වැඩසටහනක උපුටනයක් මෙන්න :
main:
; initializes the two numbers and the counter. Note that this assumes
; that the counter and num1 and num2 areas are contiguous!
;
mov ax,'00' ; initialize to all ASCII zeroes
mov di,counter ; including the counter
mov cx,digits+cntDigits/2 ; two bytes at a time
cld ; initialize from low to high memory
rep stosw ; write the data
inc ax ; make sure ASCII zero is in al
mov [num1 + digits - 1],al ; last digit is one
mov [num2 + digits - 1],al ;
mov [counter + cntDigits - 1],al
jmp .bottom ; done with initialization, so begin
.top
; add num1 to num2
mov di,num1+digits-1
mov si,num2+digits-1
mov cx,digits ;
call AddNumbers ; num2 += num1
mov bp,num2 ;
call PrintLine ;
dec dword [term] ; decrement loop counter
jz .done ;
; add num2 to num1
mov di,num2+digits-1
mov si,num1+digits-1
mov cx,digits ;
call AddNumbers ; num1 += num2
.bottom
mov bp,num1 ;
call PrintLine ;
dec dword [term] ; decrement loop counter
jnz .top ;
.done
call CRLF ; finish off with CRLF
mov ax,4c00h ; terminate
int 21h ;
අදහස් දැක්වීම් සමඟ වුවද, එය විහිළුවට ලක් කිරීම තරමක් සංකීර්ණ විය හැකිය.
නවීන උදාහරණය: රීජෙක්ස් බොහෝ විට ඉතා අඩු වියුක්ත ව්යුහයන් වේ (කුඩා අකුරු, අංක 0, 1, 2, නව රේඛා ආදිය). ඔවුන්ට බොහෝ විට සාම්පල ස්වරූපයෙන් අදහස් අවශ්ය වේ (බොබ් මාටින්, IIRC, මෙය පිළිගනී). මෙන්න (මම හිතන්නේ) HTTP (S) සහ FTP URL වලට අනුරූප විය යුතු රීජෙක්ස් එකක්:
^(((ht|f)tp(s?))\://)?(www.|[a-zA-Z].)[a-zA-Z0-9\-\.]+\.(com|edu|gov|m
+il|net|org|biz|info|name|museum|us|ca|uk)(\:[0-9]+)*(/($|[a-zA-Z0-9\.
+\,\;\?\'\\\+&%\$#\=~_\-]+))*$
භාෂා වියුක්ත ධූරාවලිය ඉදිරියට යත්ම, ගොඩනංවන ලද ලියකියවිලි සැපයීම සඳහා ක්රමලේඛකයාට ප්රකෝපකාරී වියුක්ත කිරීම් (විචල්ය නාමය, ක්රියාකාරී නම්, පන්ති නාම, මොඩියුලයේ නම්, අතුරුමුහුණත්, ඇමතුම් ආපසු යනාදිය) භාවිතා කළ හැකිය. මෙයින් වාසි ලබා ගැනීම නොසලකා හැරීම සහ ඒ පිළිබඳව කඩදාසි වලට අදහස් දැක්වීම කම්මැලි, නඩත්තු කරන්නාට අගෞරව කිරීමකි.
මම හිතනකොටත් සී සංඛ්යාත්මක වට්ටෝරු බොහෝ දුරට කිරීමට වදාල පරිවර්තනය C ++ සංඛ්යාත්මක වට්ටෝරු , මම ඒවයින් ලෙස ආරම්භ වූ සංඛ්යාත්මක වට්ටෝරු සියලුම විචල්යයන් සමඟ, (FORTAN දී) a
, aa
, b
, c
, cc
, ආදිය එක් එක් අනුවාදය මගින් පවත්වා ගෙන ගියෝ ය. ඇල්ගොරිතම නිවැරදි විය හැකි නමුත් ඒවා ලබා දී ඇති භාෂා වියුක්ත කිරීම් වලින් ප්රයෝජන ගත්තේ නැත. ඔවුන් මාව ඉවත් කරනවා. ආචාර්ය ඩොබ්ස් ලිපියක නියැදිය - වේගවත් ෆූරියර් පරිවර්තනය :
void four1(double* data, unsigned long nn)
{
unsigned long n, mmax, m, j, istep, i;
double wtemp, wr, wpr, wpi, wi, theta;
double tempr, tempi;
// reverse-binary reindexing
n = nn<<1;
j=1;
for (i=1; i<n; i+=2) {
if (j>i) {
swap(data[j-1], data[i-1]);
swap(data[j], data[i]);
}
m = nn;
while (m>=2 && j>m) {
j -= m;
m >>= 1;
}
j += m;
};
// here begins the Danielson-Lanczos section
mmax=2;
while (n>mmax) {
istep = mmax<<1;
theta = -(2*M_PI/mmax);
wtemp = sin(0.5*theta);
wpr = -2.0*wtemp*wtemp;
wpi = sin(theta);
wr = 1.0;
wi = 0.0;
for (m=1; m < mmax; m += 2) {
for (i=m; i <= n; i += istep) {
j=i+mmax;
tempr = wr*data[j-1] - wi*data[j];
tempi = wr * data[j] + wi*data[j-1];
data[j-1] = data[i-1] - tempr;
data[j] = data[i] - tempi;
data[i-1] += tempr;
data[i] += tempi;
}
wtemp=wr;
wr += wr*wpr - wi*wpi;
wi += wi*wpr + wtemp*wpi;
}
mmax=istep;
}
}
වියුක්තකරණය පිළිබඳ විශේෂ අවස්ථාවක් ලෙස, සෑම භාෂාවකම ඇතැම් පොදු කාර්යයන් සඳහා මුග්ධ / කැනොනිකල් කේත ස්නිපෙට් ඇත (සී හි ගතික සම්බන්ධිත ලැයිස්තුවක් මකා දැමීම), ඒවා පෙනුම කෙසේ වෙතත් ඒවා ලේඛනගත නොකළ යුතුය. ක්රමලේඛකයින් නිල නොවන ලෙස භාෂාවේ කොටසක් වන බැවින් මෙම මෝඩයන් ඉගෙන ගත යුතුය.
එබැවින් රැගෙන යාම: වළක්වා ගත නොහැකි පහත් මට්ටමේ ගොඩනැඟිලි කොටස් වලින් සාදන ලද මුග්ධ නොවන කේතයට අදහස් දැක්වීම් අවශ්ය වේ. මෙය සිදුවීමට වඩා අඩු WAAAAY අවශ්ය වේ.