De remarcat ca
ORICE, repet
ORICE persoana care a scris chiar si un Hello World a interactionat indirect, chiar si fara sa-si dea seama cu acest concept al algoritmului. Un algoritm poate fi vazut ca un set finit de pasi, clar specificati, ce descriu si prescriu o solutie pentru o anumita problema. Un algoritm este o metoda de a corela un input cu un output. Daca ne gandim la ce inseamna o functie(un mecanism de asociere a unui obiect din multimea D cu un obiect din multimea C) am putea spune ca un algoritm seamana intr-o oarecare masura cu o functie desi... nu este o functie ci un set de pasi ce trebuie urmati,ce indeplinesc o preconditie, fiind cerut ca la finalul urmarii acestor pasi sa fie valida/satisfacuta o postconditie. Iata cateva exemple, despre care putini gandesc ca intr-adevar reprezinta algoritmi:
printf("Eu sunt un algoritm\n");
void main()
{
vec3 ct,cf;
vec4 texel;
float intensity,at,af;
intensity = max(dot(lightDir,normalize(normal)),0.0);
cf = intensity * (gl_FrontMaterial.diffuse).rgb +
gl_FrontMaterial.ambient.rgb;
af = gl_FrontMaterial.diffuse.a;
texel = texture2D(tex,gl_TexCoord[0].st);
ct = texel.rgb;
at = texel.a;
gl_FragColor = vec4(ct * cf, at * af);
}
daca 1==2 atunci scrie("Ceva este in neregula");
Toate exemplele de mai sus sunt algoritmi! Ceea ce difera este limbajul in care au fost scrisi, astfel ajungem la un nou aspect ce tine de specificarea algoritmilor. Un algoritm poate fi specificat formal,informal, uzand de un limbaj(toti cunoastem limbajul pseudocod, acea scriere intermediara, de nivel inalt folosita deseori pentru a ne simplifica munca).
Va sa zica, a spune ca nu te folosesti de algoritmi denota o lipsa de cunoastere(cunoastere ce iti este necesara) a ceea ce faci. Cu siguranta, vrei sa spui ca, de nu folosesti BFS, DFS, arbori indexati binar, Dijkstra, si mai stiu eu ce minune de algoritm care probabil nici nu poarta un nume dar este "smecher" dupa cum zic unii, atunci nu folosesti algoritmi. Dar modul asta de abordare a situatiei trebuie revalidat. Tu, folosesti algoritmi, beneficiezi de pe urma investigatiilor si analizei algoritmilor in fiecare zi, fara sa-ti dai seama. Pe langa asta traiesti dupa diversi algoritmi (iata unul amuzant: dormit, trezit, programat si inapoi la dormit), urmezi conduite in viata ta care seamana cu pasi ce-i urmezi pentru a rezolva probleme. Si-atunci daca pretutindeni este prezent conceptul de algoritm, de ce spui ca ti-e bine fara el, cand de fapt il porti in gandirea ta si in faptele tale?
Problemele clasice(si nu numai) pe care le studiem la scoala sunt menite sa ne formeze o gandire algoritmica, sa ne dezvolte capacitatile de a gandi folosind algoritmi, de a descompune probleme complexe in probleme mai simple, desigur de a forma o intuitie apriga(necesara mai ales in conditii de concurs) si de a construi un bagaj de instrumente/unelte utile in "atacarea" problemelor ce ni se cer spre rezolvare.
La ce sunt buni algoritmii zici? La rezolvarea de probleme cu siguranta. Si se pare ca cine stie algoritmi dintre cei mai complecsi, cine ii intelege profund si jongleaza cu ei intr-un mod creativ fiind capabil sa construiasca alti algoritmi da dovada de calitati ce il fac cautat in lumea de astazi pentru un job de... programator / cercetator / profesor samd.
Dar ce ne facem daca nu ne trebuie "algoritmi"(adica metode poate mai complexe de a rezolva probleme)? Pai nu ne facem nimic! Daca ne descurcam fara ei nu doare pe nimic capul ca nu stim sa implementam un BFS(poate doar profesorul / profesoara de informatica ar putea sa aiba ceva de spus). Va sa zica nu trebuie nimeni stigmatizat ca are o aversiune fata de algoritmi, poate ca se descurca la altceva, la imbinarea a diverse tehnologii(web poate), la folosirea cu succes a unor librarii, la a face un (singur) lucru bine si repede. Si sa stiti ca sunt destule firme care te plafoneaza, antrenandu-te si dezvoltandu-te in a efectua un singur tip de sarcina repede fi foarte bine.
Insa problema este ca lumea se schimba, domeniul informaticii fiind unul fluid, viclean, limbajele de programare vin si pleaca, tehnologiile, librariile, frameworkurile evolueaza insa afla ca
algoritmii/conceptele raman! 
.
Este natural ca pentru o persoana ce se descurca bine cu algoritmii sa invete nou limbaj de programare mult mai repede(chiar si un limbaj caracterizat de o paradigma diferita-functional,logic,algebric) fata de cineva ce este fixat pe o singura paradigma si un singur limbaj de programare.
Iar in societatea schimbarii, in care se cultiva concepte ca invatare/formare continua, de nu-ti cultivi si tu o oarecare adaptabilitate formata de-a lungul timpului, sustinuta de concepte care se schimba mai greu sau poate ca nicicand e posibil sa te descurci mai greu.
Asa ca ce zici? Incercam un BFS?
