Može li mi netko objasniti što su ova dva tipa programiranja, što je "state" i reći što je dok radim u C# koristim?
Čitao sam nešto po wikipedii ali malo razumijem.
Može li mi netko objasniti što su ova dva tipa programiranja, što je "state" i reći što je dok radim u C# koristim?
Čitao sam nešto po wikipedii ali malo razumijem.
Može li mi netko objasniti što su ova dva tipa programiranja, što je "state" i reći što je dok radim u C# koristim?
Čitao sam nešto po wikipedii ali malo razumijem.
Funkcionalno programiranje se, kao sto mu naslov govori, vrti oko funkcija. Dakle, stil programiranja je takav da se trudis razbiti probleme u malene black-boxeve koji imaju jasno definiran ulaz i izlaz, ali se ne brines previse o tome _kako_ ulaz postaje izlaz. Haskell i Erlang su predvodnici ovog stila.
Imperativno programiranje je holy-grail dobro napisanog koda, i podskup je proceduralnog programiranja. Procedure su funkcije koje teoretski ne vracaju vrijednost, vec modificiraju parametre. Vecina proceduralnih jezika dopusta oznacavanje parametara sa 'in' i 'out' (sto je u praksi const i ne const). Imperativi su, u ovom konteksu, procedure koje ne primaju parametre i ne vracaju nikakvu vrijednost - sto logicki znaci da se svi podaci cuvaju u nekom unikatnom kontekstu/okruzenju, odnosno 'stateu'. Vecina funkcionalnih jezika dopusta proceduralni stil, no glavni predstavnik je PL/SQL i OpenGL specifikacija.
"State" je, kao sto sam naveo, bazicno skup varijabli. Procedure ili imperativi onda rade razlicitu stvar, ovisno o tome kako je state postavljen.
C# je objektno orijentiran jezik - dakle stil programiranja je takav da "razbijes" problem na manje probleme, od koji svaki ima jasno definirana stanja i ponasanja, te medjusobna interakcija tih objekata rijesava originalni problem.
Funkcionalno programiranje se, kao sto mu naslov govori, vrti oko funkcija. Dakle, stil programiranja je takav da se trudis razbiti probleme u malene black-boxeve koji imaju jasno definiran ulaz i izlaz, ali se ne brines previse o tome _kako_ ulaz postaje izlaz. Haskell i Erlang su predvodnici ovog stila.
Imperativno programiranje je holy-grail dobro napisanog koda, i podskup je proceduralnog programiranja. Procedure su funkcije koje teoretski ne vracaju vrijednost, vec modificiraju parametre. Vecina proceduralnih jezika dopusta oznacavanje parametara sa 'in' i 'out' (sto je u praksi const i ne const). Imperativi su, u ovom konteksu, procedure koje ne primaju parametre i ne vracaju nikakvu vrijednost - sto logicki znaci da se svi podaci cuvaju u nekom unikatnom kontekstu/okruzenju, odnosno 'stateu'. Vecina funkcionalnih jezika dopusta proceduralni stil, no glavni predstavnik je PL/SQL i OpenGL specifikacija.
"State" je, kao sto sam naveo, bazicno skup varijabli. Procedure ili imperativi onda rade razlicitu stvar, ovisno o tome kako je state postavljen.
C# je objektno orijentiran jezik - dakle stil programiranja je takav da "razbijes" problem na manje probleme, od koji svaki ima jasno definirana stanja i ponasanja, te medjusobna interakcija tih objekata rijesava originalni problem.
Ok, ok... nisam siguran da sam shvatio pa želim napisati jedan sample program pa ti vidi jeli to to.
Evo ovo su dva trivialna programa za zbrajanje dvije variable i pohranjivanje zbroja u treću:
//FUNKCIONALNO:
main ()
{
int a, b, c;
c = zbroji(a,b)
}
int zbroji (a, b)
{
return a+b;
}
//IMPERATIVNO:
main ()
{
int a, b, c;
zbroji();
}
void zbroji()
{
c = a + b;
}
Ok, ok... nisam siguran da sam shvatio pa želim napisati jedan sample program pa ti vidi jeli to to.
Evo ovo su dva trivialna programa za zbrajanje dvije variable i pohranjivanje zbroja u treću:
Meni se pak cini da si shvatio ;-)
Iako ti program nece raditi jer su a,b,c nedostupni. Punokrvni imperativni program bi te varijable definirao kao globalne, ili kad se vec sluzis C-om - napravio struct "State" sa a,b,c i onda globalno definirao taj state.
Ok, ok... nisam siguran da sam shvatio pa želim napisati jedan sample program pa ti vidi jeli to to.
Evo ovo su dva trivialna programa za zbrajanje dvije variable i pohranjivanje zbroja u treću:
Meni se pak cini da si shvatio ;-)
Iako ti program nece raditi jer su a,b,c nedostupni. Punokrvni imperativni program bi te varijable definirao kao globalne, ili kad se vec sluzis C-om - napravio struct "State" sa a,b,c i onda globalno definirao taj state.
Shvaćam. Hvala.