08.02.2009 | 22:43
dsakic je napisao:
Htio bi nauciti programirati u Cocoa okruzenju i to nekakvim objektnim jezikom, jer mi nekako djeluje vise za moje potrebe i naravno radio bi na aplikaciji za Mac...
Konkretno zelim razviti jedan alat kojeg bi dodao ovom programu
avogadro.openmolecules.net/wiki/Main_Page, a radi se na nasumicnoj perturbaciji koordinata molekula u zadanom prostoru i vec postoji nekakav zaseban fortran programcic (300 linija koda) koji radi neke stvari, ali me ne zadovoljava, jer je jako ogranicavajuci...
Mozda malo prevelika jabuka, ali to mi je cilj, a za to trebam puno uciti, ali problem je kada ima previse literature (kao na developer stranici). Cak sam nasao na MacResearch stranici zanimljive clanke i pocetke programiranja, htio bi neki sustavniji pristup...
OK, bar znaš što hoćeš u konačnici. To je dobar početak.
Da si stao na tome da želiš "naučiti programirati u Cocoa okruženju", bilo bi jednostavno. Cocoin "materinji" jezik je Objective-C. Sam Objective-C je superset klasičnog C-a, što pak znači da je većina literature posvećena Objective-C-u usmjerena na to da pojasni razliku između njega i C-a. Obično se negdje na početku literature čitatelja uredno uputi na to da ponovi gradivo C-a prije nego što nastavi čitanje.
Objective-C nije nikakva mudrost - ako znaš C. U sklopu Appleovog SDK postoji knjiga (PDF) koja ima manje od 200 stranica i objašnjava sve što moraš znati o Objective-C-u. SDK je besplatan, dakle, i alat (Xcode) i potrebna Objective-C literatura su, doslovno "click away".
Međutim taj put očito ima smisla ako prethodno svladaš C i (usput) se upoznaš sa specifičnostima objektnog programiranja (što nije svojstveno C-u već nekom od njegovih objektnih izvedenica: C++, C#, Objective-C...). O C-u je, kao i o svemu drugom, napisano bezbroj knjiga. Topla preporuka je da nabaviš neku koja ti zvuči razumljivo. Posjeti knjižaru, prelistaj ponudu i kad nađeš neku koja objašnjava na tebi razumljiv način - kupi. I pročitaj, naravno.
Poželjno je da "odradiš" primjere iz knjige, a praksa je pokazala da se najbolje uči tako da rješavaš konkretne zadatke. Male, ali konkretne.
Može li se krenuti od C-a? I može i ne može.
Programiranje je spoj logike koja se bavi algoritmima i sintakse koja poštuje zakonitosti pojedinog programskog jezika. Drugim riječima, "sustavniji pristup" bi trebao početi od toga da prvo svladaš "algoritmiranje" (u smislu oblikovanja problemskog zadatka u formi algoritma koji ima svoj tijek). U idealnom slučaju možeš spojiti tu fazu s učenjem C-a jer je teško (iako ne i nemoguće) baviti se algoritmima na apstraktnom nivou - puno je praktičnije "vježbati" standardne algoritme pišući konkretan kod u, recimo, C-u - dvije muhe jednim udarcem: učiš algoritme i C, istovremeno. U tom smislu možeš potražiti knjigu koja C poučava kroz osnovne algoritme i prolaziti primjere kodirajući (programirajući ih) u Xcodeu.
U tom koraku svladao si "programiranje": razumiješ logiku algoritama i "govoriš" C. Sljedeći poželjan korak je prijeći na objektno programiranje. Ovdje ti literatura može pomoći tako da nabaviš nešto poput "Learning Cocoa with Objective-C" - O'Reillyeva knjiga za svaku preporuku. Istovremeno će ti dati uvid u "objektno", kroz Objective-C i još sve na primjeru Cocoe. Naravno, koristeći Xcode.
Kad to svladaš, spreman si za programiranje na Macu - uz opasku da je Cocoa samo jedan od frameworka koje ćeš putem sresti. Kad poželiš dodati malo 3D-a u svoj "Cocoa program", čeka te upoznavanje s OpenGLom. Da ne pomisliš da si sve naučio.
I sve bi to bilo divno i krasno da tvoja konkretna želja nije (ako sam dobro shvatio) neki add-on za Avogadro.
Avogadro je open source projekt koji je, s obzirom da je cross-platformski, baziran na Qt-u. A Qt pretpostavlja programiranje u C++ ili Javi.
Pod pretpostavkom da si uredno odradio sve ranije opisano, od tebe bi se očekivalo da usput svladaš i sintaksu C++/Jave (oboje je objektno).
U teoriji, ako ti je taj add-on primarna misija, možeš preskočiti Cocoa i Objective-C dio pa s C-a "skočiti" na C++ ili Javu. Ili, još hrabrije, pronaći neki C++ "početnicu" koja kreće od pretpostavke da čovjek starta od nule i odmah uči sve što mora znati kroz C++. Što nije loše ako se planiraš fokusirati isključivo na C++, ali, generalno, nije dobra ideja jer preskačeš osnove (kad svladaš C, primjetit ćeš da mu je većina drugih jezika "slična".
Dakle, dvije moguće opcije:
1) algoritmi -> C -> Objective-C -> Cocoa -> Mac programer ili
2) algoritmi -> C -> C++/Java -> Qt -> cross-platformski programer
Druga opcija je svakako univerzalnija, ali prva je definitivno "pravi put" za postati Mac programer.