Re: C, C++, C#, Python

Poslao slobodan on 31.05.2006 9:55:32
Ona dva primjera za C i C++ koja si stavio su bezveze, jer su prejednostavni i u njima se uopće ne vide mogućnosti pojedinog jezika. Potrebno je dosta razumijevanja pojedinog jezika da bi razumio temeljne razlike između cout i printf.

Objektno programiranje je način razmišljanja koji kaže da se svaki problem može utrpati u objekt koji ima neke svoje karakteristike te funkcije koje rade na tim karakteristikama. U dijelu problema je to točno, no objektno programiranje nije riješenje za sve.

O tome koja sve "razmišljanja" (odnosno programing paradigms) postoje, možeš vidjeti ovdje. Ne postoji univerzalna metoda, tako da ovisno o problemu treba primjeniti odgovarajuću metodu ili čak i programski jezik, jer su različiti programski jezici prilagođeni različitim metodama. Tako je C proceduralni jezik, C++ objektni (IMHO bastard proceduralnog i objektnog koncepta, pravi čisti objektni jezik je smalltalk), C# je MSova reakcija na javu a oba su objektna, a python je funkcionalni jezik.

Naravno, u svakom od tih programskih jezika možeš osim njegovog glavnog "razmišljanja" koristiti i druge, ali u pravilu znatno teže. AFAIK ako baš želiš jezik koji brije po čim više različitih "razmišljanja", onda posegni za lisp grupacijom jezika (Scheme, Common Lisp...), IMHO naravno...

Što se C++ knjiga tiče, na netu ih ima hrpa, ali... su sve na engleskom. Inače, znanje je uvijek skupo, a takva je i situacija sa stručnim knjigama, no s druge strane pogledaj po gradskim knjižnicama, vjerojatno neka ima tu knjigu.

Garbage collection je sustav upravljanja memorijom. U nekim programskim jezicima moraš sam paziti na to gdje se i na koji način nalaze podaci kojima u danom trenutku čačka tvoj program (neki od takvih su Pascal, C, C++), a u drugim jezicima se sam jezik brine o tome (lisp jezici su to prvi uveli prije cca 20+ godina, a u današnje vrijeme to imaju i mlađi jezici kao što su java i C#). Prednost garbage collection sustava je da programer više ne mora brinuti oko raznih memory leak problema jer sam jezik brine o dostupnosti podataka i memorije, a mana je što su to "univerzalne" implementacije upravljanja memorijom u ponekim okolnostima sporije no što bi to bilo da se takav sustav implementira za specifične potrebe.

Ni C ni C++ nisu bolji, nego je svaki dobar za nešto. I C i C++ mogu čačkati direktno po hardveraju, ali C++ zbog objektnih elemenata uvodi dosta overheada pri radu sa funkcijama i sličnim internim stvarima, pa je u neku ruku sporiji. Ali nema neke specijalne prepreke da se ne može i u njemu pisati kernel. Osim naravno volje samih programera...

Što se GUI-a tiče, zgodniji je C++ zato jer je GUI po svom konceptu bliži ideji objekata kojima se manipulira. No gtk i Gnome su pokazatelj da to nije neka specijalna prepreka (oba su pisana u C, ali se u kodu vidi da su programeri ipak implementirali svoju varijantu objektne metodologije...).

Ova poruka je od: http://www.linux.hr/newbb/viewtopic.php?forum=8&topic_id=895&post_id=5924