Learning Cocoa
Posted: 28 December 2006 01:16 AM
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

Koja knjiga je najbolja za učenje Object C-a i Cocoa?
Na Amazonu sam video dve O’Reilly knjige i jednu iz ‘For Dummies’ serijala i to je bilo otprilike to (ostalo je imalo previše stare datume pa sam procenio da je irelevantno)

Dosad nisam pravio desktop aplikacije (ne računajući Javu); ali već 5 godina programiram u PHP-u, učo sam C (na faxu) i znam malo više od osnova Jave (OO paradigma mi je jasna, radio sam i sa Swingom, itd). Tako da mi treba neka ‘srednje-teška’ knjiga - da ne objašnjava ‘Hello, world!’ na 5 strana ali opet da nije brutalna kao Kernighan&Richie ANSI C 😉

Istina da ovome neću da se posvetim pre proleća (jer u međuvremenu moram da izučavam C# zbog Imagine Cup-a… pfft) ali čsto da planiram šta i odakle da naručujem, itd.

Uzgred, kakav je Object C u poređenju sa C-om i Javom?
Negde sam čtao maksimalno crnjenje istog, ali je to bilo na blogu nekog isfrustriranog lika kome je Apple bio krivac svih nesreća u životu tako da sem toga nemam baš neke informacije 😊

 Signature 

Carnival of Flesh

Profile
 
Posted: 28 December 2006 10:37 AM   [ # 1 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7582
Joined  2005-04-28

Dachaz wrote:

Koja knjiga je najbolja za učenje Object C-a i Cocoa?
Na Amazonu sam video dve O’Reilly knjige i jednu iz ‘For Dummies’ serijala i to je bilo otprilike to (ostalo je imalo previše stare datume pa sam procenio da je irelevantno)

Ne znam odgovor na prvo pitanje, ali zašto na Amazon po O’Reilly knjige? Jesi li pročtao ovu vest? Kao što možeš da vidiš sa banera sa leve strane, naša mala zajednica je User Group Program Member izdavačke kuće O’Reilly.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 28 December 2006 11:16 AM   [ # 2 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

Zato i pitam da li O’Reilly ili neko drugo izdanje 😉

 Signature 

Carnival of Flesh

Profile
 
Posted: 29 December 2006 03:40 AM   [ # 3 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  443
Joined  2005-05-16

Dachaz wrote:

Koja knjiga je najbolja za učenje Object C-a i Cocoa?

Moje skromno mišljenje:
[ul]
[li]Ovu čtaš kao prvu, brzo će te naučti da startuješ sa jednostavnim programima.[/li]
[li]Ovu čtaš kao drugu, pokazaće ti kako Cocoa prosto nudi da koristiš MVC (Model-View-Controller) pattern i nemoj da te obeshrabri što ti na prvih 170 stranica opisuje kako napraviti aplikaciju sa jednim checkbox-om u prozoru.[/li]
[li]Ova je detaljni referentni udžbenik, koji ćeš i ubuduće šesto koristiti, čtaš je kao treću i mnogo puta kasnije..[/li]
[/ul]Na žalost, zadnje dve su prilično outdated, pokrivaju samo 10.2, mislim da na američkom Amazonu više i nisu dostupne kao nove, ali smatram da su stvari u njima ipak esencijalne, nakon toga nema ti druge do rovarenja po Apple Dev dokumentaciji. Na žalost, knjige koje pokrivaju neke usko specifične frejmvorkove (npr. CoreData, CoreImage…) ne postoje, ili bar ja ne znam za njih.

Za ObjC:
[ul]
[li]Ova, mada ćeš dosta o istom saznati i iz gore navedenih.[/li]
[/ul]A dok je ne kupiš, a zanimaju te osnove ObjC-a, pogledaj ovde. Obrati pažnju na odeljak The Runtime System 😊

Post edited by: milke, at: 2007/01/04 19:10

Profile
 
Posted: 22 June 2007 10:51 AM   [ # 4 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1850
Joined  2006-11-24

Nikad ti se ne zahvalih na uputima što je izrazito grozno od mene :ohmy:

However, moj plan da učm na proleće se utopio u onom C#-u i ASP.NET-u koji su okupirali celo proleće i - cvrc - eto ga leto 😊

No, pošto će uskoro kraj semestra, ponovo se u meni budi nit planiranja dobre šoljice kakaa. 😉

Dve konkretne stvari koje me interesuju u ovom trenutku:
1) Da li je sa CoreVideo moguće dobiti informacije o bilo kom video fajlu koji QuickTime ume da otvori? Informacije tipa dimenzije i trajanje, ostalo mi i nije toliko bitno za ono čme hoću da se zezam
2) Da li WebObject-based aplikacija može bez ‘hakovanja’ da komunicira sa random aplikacijom i proćaska po koju s njom? :laugh:
Konkretno bih voleo da sklopim neki web interface za Transmission jer kao webdev imam taj fetiš da sve može biti dostupno u browseru od svuda… Pretpostavljam da će ovo da bude malo teže/nemoguće bez čačkanja koda samog Transmissiona, al’ ne škodi da pitam.

 Signature 

Carnival of Flesh

Profile
 
Posted: 22 June 2007 11:28 AM   [ # 5 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7582
Joined  2005-04-28

1) Da li je sa CoreVideo moguće dobiti informacije o bilo kom video fajlu koji QuickTime ume da otvori? Informacije tipa dimenzije i trajanje, ostalo mi i nije toliko bitno za ono čme hoću da se zezam

Za ovo treba da pogledaš u njegov API, ali ja čsto sumnjam u to, moraćš to da saznaš kroz QuickTime API. BTW, mislim da CoreVideo nema nikakve veze sa video fajlovima onako kako si ti postavio pitanje, no možda se varam.

2) Da li WebObject-based aplikacija može bez ‘hakovanja’ da komunicira sa random aplikacijom i proćaska po koju s njom?

Kao i svaka druga Web aplikacija na lokalnoj mašini. Još ako je ciljna aplikacija AppleScriptabilna, kakve li sreće. B)

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 03 August 2010 11:27 AM   [ # 6 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  443
Joined  2005-05-16

Evo, prođe više od tri godine od ove diskusije, pa je red da se lista malo osveži, tim pre što me u poslednje vreme nekoliko članova grupe pitalo šta bi bila moja preporuka za učenje Mac/iOS/Cocoa programiranja. Ja obično preporučujem knjige. Jeste da je obimna dokumentacija dostupna i on-line i kao deo Xcode/DevTools instalacije i da se na Internetu može naći gomila saveta, primera, uputstava i tako dalje, ali sam ja po tom pitanju staromodan; i dalje smatram da je najbolje početi od dobre knjige (ili više njih); koja će sistematizovano uputiti čtaoca u temu. Nakon toga, kada se ima uvid u temu i saznaju osnovne stvari na lak i sistemski načn, mnogo lakše je prolaziti kroz dokumentaciju i ostale dostupne primere.

Lista je uglavnom posvećena Mek programiranju, pošto se sa iOS-om nisam do sada ozbiljnije bavio. Preporuka knjiga za iOS će uslediti nekom drugom prilikom.
[ul]
[li] Ono što je važilo pre tri godine, važi i sada; Cocoa Programming for Mac OS X od Arona Hilegasa je apsolutni referentni bukvar za učenje prvih koraka u Mac/Cocoa programiranju. Neće vas svemu naučti, daleko od toga, ali nakon nje ćete imati jasnu sliku o kakvom se programskom okruženju radi i biti sposobni da pravite programe sasvim zavidnih mogućnosti. Trenutno je aktualno treće izdanje i tokom revizija novih izdanja malo toga se u konceptu knjige menjalo, samo su dodavana neka nova poglavlja koja pokrivaju nove tehnologije (Cocoa Bindings, Core Animation,...) i malo menjana postojeća, kako bi se učnila jasnijim i uklonile eventualne greške.

Knjiga delimično pokriva i Objective-C, što je i razumljivo jer je to Cocoa native jezik, ali joj to nije glavni cilj.

Po mom skromnom mišljenju Aron je pravi majstor da na lak i zanimljiv načn uvede čtaoca u nešto novo, a da to ne zvuč glupo i napadno (tipa knjiga ‘For Dummies’ i slično). Apsolutna preporuka za prvu kjnigu koju neko ko tek ulazi u Mac/Cocoa vode treba da pročta.[/li]
[li] Knjigu Cocoa Recipes for Mac OS X Bila Čizmena sam pre tri godine preporučo kao drugu Cocoa knjigu koju treba pročtati. Radi se o relativno nepoznatoj knjizi, na koju sam naleteo sasvim slučajno i nisam zažalio, naprotiv. Knjiga je (bila) dobra zato što je zaista polako, postepeno i studiozno obučavala čtaoca kako na pravilan načn da primeni MVC (Model-View-Controller) šablon (pattern); koji Cocoa forsira u samom svom dizajnu. Može se učniti malo suvoparnom, jer na prvih 170 stranica opisuje kako napraviti aplikaciju sa jednim checkbox-om u prozoru i zatim nastavlja sa nadogradnjom iste, ali ono što je tokom tog procesa objašnjeno, po atraktivnosti daleko nadmašuje krajnji rezultat na ekranu.

Knjiga je u prvom izdanju pokrivala Mac OS X 10.2 (Jaguar). Cocoa API je u međuvremenu dobio mnoge nove tehnologije (Cocoa Bindings, KVC (Key-Value-Coding); KVO (Key-Value-Observing)) i klase u controller delu (NSObjectController, NSArrayController, NSTreeController, NSUserDefaultsController,...); što sve zajedno značajno menja dizajn applikacija u controller delu, omogućujući mnogo više ‘magije’ sa značajno manje napisanog koda. Ali zahteva i dosta vremena dok se ne ‘svari’ (jednom kada se to desi, sve se čni krajnje jednostavnim i logičnim, pa se čovek zapita kako je moguće da mu je trebalo toliko vremena da ukapira tako očgledne stvari).

Bio sam iznenađen da izlazi drugo izdanje ove knjige i s obzirom na njen fokus (u prvom izdanju); očekivao sam da će drugo izdanje biti jako fokusirano na sve novine pomenute u prethodnom pasusu. Na žalost, to nije slučaj. Dosta novih stvari je pokriveno, među njima bindings i klase iz controller dela, ali mi se čni da je propuštena prilika da knjiga bude zaista biser, koji će (napokon) kompletno pokriti Cocoa Bindings i nove klase iz controller dela.

Ipak, knjigu mogu i dalje da preporučm, opet kao drugu Cocoa knjigu koju treba pročtati. Iako ne pokriva sve ono čemu sam se nadao, nakon čtanja lakše je kroz dokumentaciju shvatiti bindings i novi controller deo, kao i gde i kako ga efikasno primenjivati.[/li]
[li] Cocoa Programming sam na početku ove teme preporučo kao referentni udžbenik, sa mnogim detaljnim objašnjenjima i objašnjenim pojedinačnim Cocoa klasama, kao i različtim specifičnim operacijama (copy/paste, drag’n'drop…). Knjiga je dobrano zastarela (pokriva najkasnije Mac OS 10.2 Jaguar) i na žalost, nije doživela naknadna izdanja. Jedan od razloga je i što glavni autor, Skot Enguiš, već godinama radi kao pisac Eplove programerske dokumentacije.

Srećom, pojavila se knjiga sličnog sadržaja, ali osveženog novim informacijama, tako da je čak i Amazon reklamira kao novo izdanje Skotove knjige. U pitanju je Cocoa Programming Developer’s Handbook. Puna je detaljnih objašnjenja, ali nije pogodna za početnike. Naime, tekst zna ponekad da bude suvoparan, više objašnjavajući koje su sve mogućnosti određene klase/metoda, nego konkretne primere kako to iskoristiti i implementirati u sopstvenom programu. Dakle, nešto između suvoparne dokumentacije i praktičnog uputstva, najbolje kao referentna knjiga koja se ne čta od korice do korice, veće joj se stalno vraćate da se potsetite ‘koja ono beše klasa radi to i to, i koji tačno metod se za to koristi’.

Ah da, papir na kome je štampana ova knjiga izaziva jako neprijatan osećaj pod prstima (bar meni).[/li]
[li] Sve pobrojane knjige su već imale svoja ranija izdanja, te su dobro poznate na tržištu. Sledeća koju preporučujem je Cocoa Design Patterns i pojavila se pre par meseci. Autori su druga dva autora knjige ‘Cocoa Programming’ (pored Skota Enguiša); Erik Bak i Donald Jaktman. Ona knjiga ide nekako u paru sa čuvenom Design Patterns: Elements of Reusable Object-Oriented Software iz pera The Gang of Four. ‘Cocoa Design Patterns’ detaljno opisuje načn na koji su neki od šablona iz knjige Četvorice implementirani u Cocoa API-jima i spremni za korišćenje. Tamo gde implementacija odstupa od originala, navedene su razlike i razlog njihovog postojanja. Konačno, neki standardni šabloni nisu implementirani u Cocoa-i, ali se knjiga (bar delimično) stara da pokaže kako ih sami možete implementirati koristeći standardne Cocoa klase.

Zanimljiva knjiga, ali svakako ne za učenje Cocoa-e, već ako radite na većim projektima i stalo vam je da budu korektno (bar onako kako kaže prihvaćena teorija) dizajnirani i implementirani.[/li]
[/ul]
Ovime sam iscrpeo listu svoji omiljenih Cocoa knjiga, prelazimo na Objective-C. Lista je mnogo kraća, jer je i raspoloživih knjiga manje. S obzirom da je Cocoa neraskidivo vezana za ObjC, dosta od jezika se može pokupiti čtanjem Cocoa knjiga.
[ul]
[li] Programming in Objective-C 2.0 je praktično jedina knjiga koja će vam trebati. Na tržištu je dosta dugo, a drugo izdanje je doživela kako bi se sadržaj osvežio mnogim novim stvarima koje je donela verzija 2.0 jezika (properties, garbage collection, fast enumerations…). Sprema se i treće izdanje, nema baš mnogo informacija šta je u njemu novo. Knjiga će vas naučti svim tajnama jezika, ali služi i kao referenca, kojoj ćete se iznova vraćati, kada god vam treba potsetnik za nešto. U skladu sa tim, sadrži i formalni deo pri kraju, gde su semantički pobrojane sve ključne reč, deklaracije itd.[/li]
[li] Na Learn Objective–C on the Mac sam slučajno naleteo. Nije baš za preporuku, što ne znač da je loša, nego smatram da nije potrebna ako imate ovu prvopomenutu. Može biti zanimljiva ako više volite da učte novi programski jezik tako što ćete krenuti od jednostavnog projekta/primera, a zatim postepeno nadograđivati znanje i otkrivati nove čari jezika kroz nadgradnju i usložavanje istog projekta/primera.[/li]
[/ul]
Da napomenem da čtanje ove dve knjige zahteva bar neko znanje C-a, jer je ObjC nadgradnja istog, i neće vas učti sve ključne reč C-a od nule. Za to postoje druge knjige.

Ovo bi za sada bilo sve, i ovako se ovo pretvorilo u kilometarsku poruku. U sledećoj ću pomenuti neke knjige koje su mi dopale šaka, a koje se bave specifičnim Mac/Cocoa API-jima (Core Data, Core Animation, ...). Srećom je Mek postao dovoljno popularna platforma za programiranje pa su se i ovakve knjige počele pojavljivati, za čme je većdugo postojala potreba.

Profile
 
Posted: 03 August 2010 12:05 PM   [ # 7 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7582
Joined  2005-04-28

milke wrote:

[li] Programming in Objective-C 2.0 je praktično jedina knjiga koja će vam trebati. Na tržištu je dosta dugo, a drugo izdanje je doživela kako bi se sadržaj osvežio mnogim novim stvarima koje je donela verzija 2.0 jezika (properties, garbage collection, fast enumerations…). Sprema se i treće izdanje, nema baš mnogo informacija šta je u njemu novo. Knjiga će vas naučti svim tajnama jezika, ali služi i kao referenca, kojoj ćete se iznova vraćati, kada god vam treba potsetnik za nešto. U skladu sa tim, sadrži i formalni deo pri kraju, gde su semantički pobrojane sve ključne reč, deklaracije itd.[/li]

Samo da napomenem da ovu knjigu posedujem u paprinom obliku, trenutno je na čtanju kod MMX-a jer ja nemam vremena za rad na mom strateškom planu još od prošle godine i teško da ću do Nove godine imati vremena, tako da ako nekom treba za kopiranje ili čtanje, neka se javi. PDF ove knjige je dobavljiv na za to namenjenim mestima po internetu, da ne budem previše eksplicitan. B)

Inače, odlična knjiga, zaista.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 03 August 2010 01:47 PM   [ # 8 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  259
Joined  2010-07-21

Od skora sam vlasnik jednog divnog MacBook, kupljenog sa namerom da se na njemu igram iPhone programiranja (a što da ne i svega ostalog). Trenutno se prelistavam ovo i lepo je poslužilo kao kick start.

madamov wrote:
Ne znam odgovor na prvo pitanje, ali zašto na Amazon po O’Reilly knjige? Jesi li pročtao ovu vest? Kao što možeš da vidiš sa banera sa leve strane, naša mala zajednica je User Group Program Member izdavačke kuće O’Reilly.

Ovo je lepo znati.
😊

P.S. Svoj PC zadnjih desetak dana uključo samo za glupi RBS e-banking. Ne znam šta stavljaju u ove mašine, ali dobro je. 😉

 Signature 

Eager to learn

Profile
 
Posted: 13 September 2010 07:32 PM   [ # 9 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

Pre nego što napišem bilo šta drugo, prvo da skinem kapu gospon’ Milketu na ovom postu iz avgusta. Svaka čast, zbog ovakvih stvari je ovaj forum spolja jadac, a iznutra gladac.

Za razliku od, čni mi se, 99,9% ljudi koji disutuju na temama poput ove, ja nisam programer. Tako da ukoliko nekoga interesuje isključvo perspektiva apsolutnog početnika po svim osnovama — i u Objective-C-u i u programiranju uopšte — neka nastavi s čtanjem.

Osnovni utisak o svoj raspoloživoj literaturi je totalni, ali totalni, autizam autora. Što je neka knjiga tobože bila više orijentisana ka početniku to je ova stvar bila izraženija. Ni u jednoj njizi nisam mogao da nađem jasno obrazloženu logiku iza toga zašto se neka stvar radi baš onako kako je navedeno u primeru, u svakom trenutku sve je na dugačkom štapu, čekaš i čekaš da se priča zaokruži, a taj trenutak nikada ne dođe. Na kraju digneš ruke i budžiš stvari komad po komad. Jedan broj autora se krio iza suvoparnih definicija namenjenim kolegama programerima i computer science studentima, a većina nije našla za shodno ni toliko da napiše. Da ne drvim previše, evo ovde odličnog komentara na knjigu Cocoa and Objective-C: Up and Running, koji sjajno odslikava šta hoću da kažem. Bio je jedan još i bolji ali su ga obrisali.

Moj utisak o tome šta sam i kako morao da učm je na kraju formiran ovako: nema knjige koju treba pročtati prvu pa drugu i tako dalje, kako je Milke savetovao verovatno iskusnijim ljudima, nego se mora krenuti od jedne, pa paralelno s njom druga, pa treća, pa nazad na prvu, pa četvrta, pa malo primeri s neta, stackoverflow.com, itd., pa u krug, a za svo to vreme u širokom luku zaobilaziti zvaničnu Apple dokumentaciju (spomenuću je samo na ovom mestu i više nikada).

Svaka knjiga ponavlja neku od tri osnovne greške, često i više njih ili sve u kombinaciji, a koje su fatalne po mogućnost da čtalac-početnik sagledaa širu sliku:
1. Umesto da se krene od neke klase i da se dâ i po nekoliko primera za svaki od njenih metoda — pa taman to značlo da se pola knjige posveti jednoj klasi — autori imaju neodoljivu potrebu da daju po jedan šturi primer za svaku klasu. Ovo ne znam da li ima potrebe da elaboriram, reći ću samo da niti se dobije jasna slika o tome čemu klasa služi, niti čovek razume kako se može komunicirati i raditi s objektima te klase, niti se dobije jasan pregled (referenc lista) klasa. Ne duplo, nego trostruko golo!
2. U vezi s brojem jedan: autori po pravilu smisle jedan program koji razvlače čtavu knjigu, ‘nadograđuju’ ga i ‘usavršavaju’, tako da na kraju knjige čovek nema pregled jezika ili objektno orijentisanog programiranja nego isključvo pregled kako napraviti taj jedan konkretan program. Jedna knjiga - program jednog tipa. Za drugu primenu jezika potraži drugu knjigu!
3. U vezi s brojem dva: zaprepašćujuće mnogo vremena se posvećuje evoluciji jezika. Ovaj deo već zna da izludi čoveka. Trivijalan primer bi bila nezaobilazna priča o poreklu prefiksa ‘NS’ u nazivima klasa. Primer za nervni slom bi bio kada u jednom trenutku stigneš do polovine knjige, glava hoće da ti eksplodira od gomile stvari koje držiš u njoj i za koje čekaš da vidiš zašto ih uopšte držiš u glavi, i u tom trenutku pročtaš rečenicu: ‘sve ovo do sada može se uraditi za 5 sekundi i u tri reda ali hteli smo da vam pokažemo kako se tokom vremena sve ovo razvijalo’. Ja majke mi moje mile ne znam zašto bih učo -(void)setNumerator:(int)aNumerator; i -(int)numerator; pored živih i zdravih @property i @synthesize ali zato će svaka knjiga na objašnjavanje prvo dvoje potrošiti 45 strana, a da te ničemu ne nauč o komunikaciji između metoda, dok će drugo dvoje biti spomenuto u fusnoti tipa ‘ovo se može implementiraiti i na ovaj načn pa od sada tako pišite’ i kraj priče.

Sad, red bi bio da osim pjuvačne budem i od neke koristi i preporučm neke naslove. Svakako treba krenuti od navedenog Programming in Objective-C 2.0. Mislim da stvarno nema smisla da se neko uč tako što odmah krene s Cocoom u Interface Builderu, ipak je potrebno preći nešto ‘sirovog’ Objective-C-a pre toga, barem po meni. Ova knjiga, iako se takođe vodi ponajviše logikom iz tačke 3., ipak predstavlja najrazumljiviji uvod u sâm programski jezik.
Kako sam napredovao kroz knjigu tako sam gubio strpljenje da slušam nepovezana predavanja iz istorije, pa sam prešao na nešto što podrazumeva rad i sa IB. Tu je počelo žongliranje: Cocoa Programming for Mac OS XBeginning Mac Programming i (sada će nekome krenuti žmarci niz kičmu) knjige iz ‘for Dummies” edicije (Cocoa Programming i Objective-C). Međutim, ni tada mi glavne stvari nisu bile jasne dok nisam počeo da radim na svom programu i tu kreće odsudni boj čovek-protiv-sendviča: kopanje po netu, spomenunti stackoverflow.com i razni forumi. Recimo, evo jednog pozitivnog primera: Working with Tables: Writing an Address Book Application koji je napisao Michael Beam.

Ovo je daleko, daleko, najrazumljiviji i najprofesionalnije napisan tekst o bilo kojoj stvari koja se tiče Objective-C/Cocoa programiranja koji sam uspeo da nađem (knjige included). Svakog od ovih kišnih ljudi koji su pisali knjige bih terao da čtaj ovaj tekst sve dok i najgluplji među njima ne uvidi razliku između članka i gluposti koje je trpao u sopstvenu knjigu. Ozbiljno, kada bi Beam napisao čtavu knjigu u maniru ovog teksta, platio bih je $500, a da ne trepnem!
Ostali članci sa O’Reilly-ja su na ovoj adresi, ima svačega.

To vam je presek stanja kod mene, sa ulaznim podacima gore navedenim i u ovom trenutku. Videćemo kako će stvari napredovati, zapeo sam da sklepam Equals sada, u pauzi između dva šljakerisanja u bliskoistočnim pustarama. Ako bude bilo vremena da se napadnu ozbiljnije stvari rado ću dopisati nova iskustva ali što se tiče tabula rasa ulaska u svet Objective-C/Cocoa programiranja, mislim da je ovo realna slika.

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile
 
Posted: 13 September 2010 10:57 PM   [ # 10 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  835
Joined  2008-12-28

Ovo sam naleteo pre nekog vremena:
http://macdevcenter.com/pub/ct/37

Teme se citaju odozdo na gore. Bez previse davljenja, odlicno za kapiranje logike.

Edit: sad vidim da je linkovano 😊 Vredi procitati redom.

Post edited by: dusanx, at: 2010/09/13 23:01

Profile
 
Posted: 14 September 2010 11:52 AM   [ # 11 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  259
Joined  2010-07-21

DS_Store wrote:

Međutim, ni tada mi glavne stvari nisu bile jasne dok nisam počeo da radim na svom programu i tu kreće odsudni boj čovek-protiv-sendviča: kopanje po netu, spomenunti stackoverflow.com i razni forumi.

Ne znam za drugi načn. 😊 Imaš ideju šta program treba da radi, potreban ti je alat za to i delovi iz kojih ćeš program sastaviti. Onda tražiš sve to gde god možeš. Knjige, forumi itd. Stanje isto za koji god progrmski jezik, a knjige su debele, odn. opširne, ne zbog genijalne priče, didaktičkog pristupa itd. već zbog silnog koda 😉 U svakom slučaju, ne očekujem da se nađe autor koji će napisati baš ono što meni treba u datom trenutku. Da je loše, loše je. Ali to je što je.

Potrebno ti je samo vreme. Koje baš i nemam trenutno :D U svakom slučaju, za koji dan mi stižu Cocoa Programming for Mac OS X i Programming in Objective-C 2.0. Volim te papirne knjige, pa to ti je.

 Signature 

Eager to learn

Profile
 
Posted: 14 September 2010 08:26 PM   [ # 12 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  7582
Joined  2005-04-28

DS_Store wrote:

3. U vezi s brojem dva: zaprepašćujuće mnogo vremena se posvećuje evoluciji jezika. Ovaj deo već zna da izludi čoveka. Trivijalan primer bi bila nezaobilazna priča o poreklu prefiksa ‘NS’ u nazivima klasa. Primer za nervni slom bi bio kada u jednom trenutku stigneš do polovine knjige, glava hoće da ti eksplodira od gomile stvari koje držiš u njoj i za koje čekaš da vidiš zašto ih uopšte držiš u glavi, i u tom trenutku pročtaš rečenicu: ‘sve ovo do sada može se uraditi za 5 sekundi i u tri reda ali hteli smo da vam pokažemo kako se tokom vremena sve ovo razvijalo’. Ja majke mi moje mile ne znam zašto bih učo -(void)setNumerator:(int)aNumerator; i -(int)numerator; pored živih i zdravih @property i @synthesize ali zato će svaka knjiga na objašnjavanje prvo dvoje potrošiti 45 strana, a da te ničemu ne nauč o komunikaciji između metoda, dok će drugo dvoje biti spomenuto u fusnoti tipa ‘ovo se može implementiraiti i na ovaj načn pa od sada tako pišite’ i kraj priče.

Za ostalo se slažem, ali ovo nije mana, barem nije ako je isto kao što sam do sada nailazio za ovih 20 i kusur godina po raznim knjigama. Naime, tebi to neće koristiti ako ostaneš pri onome kako sada radiš: solo developer koji razvija jedan ili nekoliko programa. Međutim, ako ikada dobiješ u ruke tuđ kod koji treba da optimizuješ ili na njega nešto dodaš, ispraviš bag, šta li već, a prethodnik je koristio baš onaj metod čji ti je opis smetao, negde u malom mozgu će se upaliti lampica i setićeš se šta je to i kako možeš da ga zameniš, ako treba da ga zameniš. Meni se ovo desilo dovoljan broj puta da sada više ne zameram autorima knjiga/tekstova kada ‘troše’ vreme na tako nešto. Štaviše, poslednji put kada sam demonstrirao 4D nekim Slovencima koji pišu aplikacije u Filemakeru, često sam sebe hvatao kako im objašnjavajući neki komandu 4D-a objašnjavam i kako smo ranije gomilom koda rešavali problem koji komanda rešava jednom linijom koda.

u širokom luku zaobilaziti zvaničnu Apple dokumentaciju (spomenuću je samo na ovom mestu i više nikada).

Zvaničan dokumentacija najčešće ne služi ničemu kada se uč, pogotovo kada se uč nešto od nule. Nekom iskusnijem programeru u nekom drugom alatu bi pregled dokumentacije pomogao da stekne sliku šta se može novim jezikom/alatom. Međutim, svakoj zvaničnoj dokumentaciji ćeš se vraćati kao referenci (kako se poziva ona komanda? Šta beše vraća ova funkcija? Koji su parametri) kada ti zatreba pomoć za one stvari koje ne treba ni pamtiti (uvek sam mrzeo one profesore koji su smanjivali ocene na ispitima iz Pascala što je neko zaboravio da stavi ; tamo gde treba, a ovamo im algoritam i program rade desetu stvar od one koju treba da rade). A omiljene knjige iz kojih si učo će stajati na polici (ili disku u PDF-u) da ne budu više nikada otvorene.

Za razliku od, čni mi se, 99,9% ljudi koji disutuju na temama poput ove, ja nisam programer. Tako da ukoliko nekoga interesuje isključvo perspektiva apsolutnog početnika po svim osnovama — i u Objective-C-u i u programiranju uopšte — neka nastavi s čtanjem.

Ala tumbam ove citate, ovo s početka mi ide na kraj. Elem, koliko vidim ti si dvostruki početnik, isprva sam mislio da ti je samo ObjC i Cocoa novo. Stoga, kada budeš imao vremena nabavi knjigu Code Complete koja nevezano od jezika/alata koji koristiš daje toliko primera i opisa tehnika kako nešto treba (i kako nešto ne treba) raditi. Ja imam prvo izdanje iz 1993. godine kupljeno 1999. sa Amazona, međutim u njemu nema ni O od primera u objektnim jezicima (primeru su u C-u, nešto malo u Pascalu, a ima čak po jedan u Algolu, Smalltalku i asembleru!); dok drugo izdanje, kako čujem, ima primere u C++, Javi i Visual Basicu. Ako ti odgovara prvi izdanje, reci da ga ostavim kod Peđe u Macoli kada se vratim iz Grčke.

 Signature 

ACSP 10.10 - ACSP 10.9 - ACA 10.8 Mac Management - ACSP 10.8 -  ACSP 10.7 - ACSA 10.6

Profile
 
Posted: 15 September 2010 06:19 AM   [ # 13 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

Da i ja odmotam stvari unazad, prvo hvala na preporuci za knjigu i ponudi, pogledaću da li negde ima neki excerpt na netu pa ako knjiga radi radnju da se dogovorimo za pozajmicu.

A u vezi onoga prvog što si napisao, to si me dobro podsetio. Skroz sam zaboravio da napišem još jednu stvar, može komotno pod br. 4, a to je da se sve knjige pišu s ambicijom da čtaoca uvedu u programiranje u kome se pišu jako kompleksni programi, obimni, optimizuje se tuđ kod, itd. Knjige se pišu ne razmišljajući kako sve to izgleda nekome ko je tek krenuo u priču (autizam koji sam spomenuo); nego sa projekcijom šta će taj neko da radi za jednu, pet, deset godina.

To je po meni takođe velika mana i potpuno pogrešan pristup. Čitaoca početnika treba naučti rezonovanju i komunikaciji na tom jeziku na najosnovnijem nivou i to je sve. Kompleksnije teme su za druge knjige. Ipak mislim da autori prave grešku kada ubacuju te legacy primere u knjige za početnike, a mislim da se i iz primera koji si naveo vidi da je to nešto što služi ljudima koji već uveliko programiraju, a ne početnicima.

To se lepo vidi na osnovnim ali opet praktičnim stvarima. Recimo, nigde nisam našao knjigu u kojoj je jasno objašnjen KVO/KVC koncept. Raspoloživa literatura ili nudi besmisleno obimnu apstrakciju u opisu, ili šturi primer iz kog možeš da naučš samo to da KVO služi da se neke dve vrednosti drže jednakim (npr. slider i vrednost u text fieldu) ili oboje zajedno. Korisne primere naći ćeš svuda na netu, u knjizi - ne.

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile
 
Posted: 15 September 2010 11:18 AM   [ # 14 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  443
Joined  2005-05-16

Verovatno se moj metod učenja razlikuje od tvog, te se zbog toga sa nekim stvarima ne slažem, pa da obrazložim. Sa citatima idem redom, po originalnom tekstu.

DS_Store wrote:

1. Umesto da se krene od neke klase i da se dâ i po nekoliko primera za svaki od njenih metoda — pa taman to značlo da se pola knjige posveti jednoj klasi — autori imaju neodoljivu potrebu da daju po jedan šturi primer za svaku klasu. Ovo ne znam da li ima potrebe da elaboriram, reći ću samo da niti se dobije jasna slika o tome čemu klasa služi, niti čovek razume kako se može komunicirati i raditi s objektima te klase, niti se dobije jasan pregled (referenc lista) klasa. Ne duplo, nego trostruko golo!

Upravo za ove stvari služi dokumentacija, ili knjige koje su u stvari ‘Reference Manual’. Kako kompletnih takvih knjiga nema, ako više voliš papir od ekrana, uvek možeš skinuti dokumentaciju u PDF formatu i odštampati. Postoje klase koje su veoma male, pa bi se svaki od metoda mogao objasniti u knjizi, ali postoje i vrlo glomazne klase, za koje bi objašnjenje svakog metoda ponaosob, uz par primera, zaista zauzelo celu knjigu. Nadam se da uviđaš kakva bi to glupost bila, a za pokrivanje celog API-ja bi bilo potrebno više stotina knjiga! Tome dokumentacija i služi. Detaljno opisuje svaku klasu u sve njene metode, konstante, notifikacije itd. Zato i dalje smatram da knjiga treba da pruži osnovu razumevanja neke klase, ali za detalje se obraćaš dokumentaciji.

DS_Store wrote:

2. U vezi s brojem jedan: autori po pravilu smisle jedan program koji razvlače čtavu knjigu, ‘nadograđuju’ ga i ‘usavršavaju’, tako da na kraju knjige čovek nema pregled jezika ili objektno orijentisanog programiranja nego isključvo pregled kako napraviti taj jedan konkretan program. Jedna knjiga - program jednog tipa. Za drugu primenu jezika potraži drugu knjigu!

Smatram da je bitna stvar kako autor odradi svoj posao i ako je u tome spretan, knjige ovakvog tipa mogu biti pun pogodak. Upravo takva je knjiga Cocoa Recipes for Mac OS X Bila Čizmena, koju sam preporučo gore. Prost program, krajnje neatraktivnog izgleda, ali ono što je objašnjeno ‘ispod UI-a’ je, bar po meni, impresivno; koncepcija document based application, MVC šablon, sa objašnjenjima kako koncipirati klase u M(odel); V(iew) i C(ontroller) delu i šta sa čme povezati. Pri svemu tome se pominju i mnoge klase i njihovi metodi, sa konkretnim primerima, sasvim dovoljno da se nakon čtanja knjige (i stvarnog kucanja i igranja sa primerima, a ne samo copy/paste metodom) dobije jaka osnova za dalje usavršavanje (i neizbežno kopanje po dokumentaciji).

DS_Store wrote:

3. U vezi s brojem dva: zaprepašćujuće mnogo vremena se posvećuje evoluciji jezika. Ovaj deo već zna da izludi čoveka. Trivijalan primer bi bila nezaobilazna priča o poreklu prefiksa ‘NS’ u nazivima klasa. Primer za nervni slom bi bio kada u jednom trenutku stigneš do polovine knjige, glava hoće da ti eksplodira od gomile stvari koje držiš u njoj i za koje čekaš da vidiš zašto ih uopšte držiš u glavi, i u tom trenutku pročtaš rečenicu: ‘sve ovo do sada može se uraditi za 5 sekundi i u tri reda ali hteli smo da vam pokažemo kako se tokom vremena sve ovo razvijalo’. Ja majke mi moje mile ne znam zašto bih učo -(void)setNumerator: (int)aNumerator; i -(int)numerator; pored živih i zdravih @property i @synthesize ali zato će svaka knjiga na objašnjavanje prvo dvoje potrošiti 45 strana, a da te ničemu ne nauč o komunikaciji između metoda, dok će drugo dvoje biti spomenuto u fusnoti tipa ‘ovo se može implementiraiti i na ovaj načn pa od sada tako pišite’ i kraj priče.

Pored onoga što ti je Miki rekao (naići ćeš na kod koji treba da održavaš/menjaš, a napisan je na stari načn); skrenuo bih ti pažnju da ti je i sam primer (accessors metodi, @property i @synthesize) loš. Pojavom @property i @synthesize u Obj-C 2.0 accessor metodi (u tvom primeru -(void)setNumerator: (int)aNumerator; i -(int)numerator) uopšte ne gube na značaju i NIKAKO se ne smeju smatrati legacy-jem! Moguće je imati samo obične ivar-ove koji uopšte nisu property (zato što ne treba da budu) i njihove getter/setter metode. Takođe, @synthesize samo kaže kompajleru da umesto tebe ‘napravi’ accessors metode, ali će on generisati default, trivijalne metode. Vrlo često ćeš imati netrivijalne accessors metode (recimo getter ne vraća direktno vrednost ivar-a, već je možda i modifikuje pre nego je vrati, u zavisnosti od nekih uslova u programu) i tada ti @synthesize neće pomoći, već ćes accessors metode morati da kodiraš sam. Takođe, Cocoa Bindings se može koristiti i tako što ćeš se vezati (bind) za određeni keyValue neke klase/objekta, a da taj keyValue uopšte nije ivar ili property, već običan metod. Tu je korisno znati gde KVO traži dotični keyValue (objašnjeno u KVO dokumentaciji, ali to je već druga priča).

DS_Store wrote:

Mislim da stvarno nema smisla da se neko uč tako što odmah krene s Cocoom u Interface Builderu, ipak je potrebno preći nešto ‘sirovog’ ObjC-a pre toga, barem po meni.

Smatram da ovde grešiš. Korišćenje Interface Buildera je toliko u srži vezano za pravljenje Cocoa (a i drugih) aplikacija, da je najbolje sa njim i njegovim konceptima upoznati se što pre. Šta više, za pravljenje prvih hobi programa, koji treba nešto konkretno da urade i da imaju UI (kako bi dali motiva za dalje učenje) mnogo je važnije pohvatati fore IB-a, nego ući u detalje ObjC-a. Siguran sam da i tvoje iskustvo sa ‘Equals’ može ovo da potvrdi. Ja se uvek iznova smejem kada mnogi novi Cocoa/ObjC programeri, koji dolaze na platformu zbog iPhone-a, na raznoraznim mailing listama počnu da osporavaju svrhu i korišćenje IB-a (i da se usput čude ‘gde je programski kod koji IB stvara kada crtam UI’). Ne vredi što im iskusni ljudi, koji se Cocoa/ObjC-om bave i po dvadesetak godina, kažu istinu, a to je da ‘onaj ko shvati korišćenje IB-a u procesu stvaranja Cocoa aplikacije kao nešto opciono i nepotrebno i da ima bolju kontrolu nad kodom ako sve to uradi progrmaski (što jeste moguće); ukapirao je sve pogrešno i greši u samom startu.’

DS_Store wrote:

Međutim, ni tada mi glavne stvari nisu bile jasne dok nisam počeo da radim na svom programu i tu kreće odsudni boj čovek-protiv-sendviča: kopanje po netu, spomenunti stackoverflow.com i razni forumi.

Ovo će te čekati i u budućnosti, pomiri se sa tim 😊  Čak kada budeš i mnogo iskusniji. S tim što ćeš u celu priču ubaciti i Eplovu dokumentaciju (hoćeš, hoć
eš, veruj mi 😛).

Profile
 
Posted: 15 September 2010 08:47 PM   [ # 15 ]
Sr. Member
Avatar
RankRankRankRank
Total Posts:  1786
Joined  2005-05-08

Nisam sasvim ispratio ovo što si napisao u odgovoru na br. 1. Ja ne da nisam govorio da treba pokriti čtav API, nego upravo suprotno. Isto i za dokumentaciju koju si spomenuo — pa ja se upravo bunim protiv tog pristupa da se taksativno nabrajaju klase i poneki metod, uz šture primere.

Ja nikada ništa novo nisam naučo tako što sam čtao i pamtio i pamtio i čtao i na kraju odradio ‘ispit’ iz toga i tako naučo. Takvog pristupa najviše ima po fakultetima i to je do jaja loše. Ono što sam naučo naučo sam tako što sam pročtao i zapamtio jedan deo gradiva, a onda ga napao sa svih mogućih strana preko zadataka i realnih problema. Onda kada više nema nedoumica prelaziš na viši nivo i ponavljaš postupak sa kompleksnijim sadržajem. Kad pređeš, šta znam, sedmu-osmu kraljicu i pogledaš nazad vidiš koliko je ono prvo smešno. E, ali kada to prvo radiš prvi put onda uopšte nije smešno, naprotiv. I ona priča o autizmu je u vezi toga što ljudi koji pišu knjige zaboravljaju kako je to izgledalo kada su ga prvi put videli. Mislim, to nema striktno veze s programiranjem, to je na žalost pristup 99% ljudi koji pretenduju da ti prodaju znanje. Ali sada pričamo o programiranju.

I to je taj problem, vidi se u ovim knjigama, pa ti neko kaže nešto tipa: ‘evo ovo vam je klasa NSTextField, pošaljite message reciever-u ovako: [textField setStringValue]; Sledeća klasa je…’ i ti tu staneš i kažeš čekaj bre, šta je sad ovo setStringValue? Pa pogledaš u NSTextField/dokumentaciju a tamo nema ništa, pa onda pogledaš šta je to setStringValue, pa ga nađeš da je tamo negde u NSControl. Pa hajde se ti tu priseti da si 124 stranice pre toga čtao nešto o inheritance-u i sl. stvarima, zakopano u tonama svega i svačega. Ma nema šanse. I šta bi bio problem tom tipu da na tom mestu lepo elaborira ono što je ranije suvoparno izdeklarisao? Ništa. Šta bi ga koštalo da pokaže na par primera šta se sve od metoda iz super klasa može primeniti u toj klasi? Ništa. Pa u čemu je problem? Pa problem je što na ovom svetu na žalost ima puno mozgova kod kojih se mnogo stvari ‘podrazumeva’. On je tebi to izdeklamovao tamo u poglavlju dva — pa podrazumeva se da ti to imaš na umu kada iskoč u primeru u poglavlju šest. Mislim, spomenuo je i NSObject, zar ne, i nacrtao onaj inheritance dijagram sa tri pravougaonika i tri tačkice između njih, je li tako? Pa uzmi brate pa trebi dokumentaciju. Mene svakodnevno bole i glava i leđa od svih tih silnih stvari koje neko podrazumeva i što više matorim, sve sam više zagovornik toga da se svaka stvar pretrese, ma koliko ‘očgledna’ bila i ma koliko se ‘podrazumevala’.

Znač, po meni sama srž problema je kombinacija ‘to se podrazumeva da znaš’ pristupa i toga da se u predstavljanju sadržaja ne prave ama baš nikakve razlike između više i manje bitnih stvari.

Na 2. i 3. se ne bih ponovo vraćao, mislim OK, ne slažemo se i to je to. Ja mogu samo da ponovim šta je to perspektiva početnika i da ostanem pri svome. Samo ću ponoviti, imajući u vidu primere koje si naveo u odgovoru na 3., da ako neko piše knjigu za početnike onda neka se brate suzdrži i neka piše knjigu za početnike. A ako je piše tako da čoveka koji prvi put stupa u kontakt sa Cocoom priprema za logiku pisanja kompleksnih programa onda neka lepo skloni početnike iz ‘kome je knjiga namenjena’ i ja neću gubiti vreme s tim.

Mislim, ja ne mogu a da ne povlačm paralele sa svojim poslom, da meni dođe neki laik i da me pita neku običnu stvar, a ja uzmem da mu drvim neke kompleksne priče da me ništa ne razume, pa prvi bih ja sam sebe držao za neozbiljnog čoveka. Isto tako, ako ja imam metod koji treba nešto da vrati i ako se zapitam kao tu istu promenljivu mogu da iskoristim u nekom drugom metodu i ako ne mogu u pet knjiga da nađem rešenje jednog po meni tako elementarnog problema, nego odem na forum i postavim pitanje i tamo mi objasne u tri reč onda ne mogu a da te autore ne posmatram isto tako kao neozbiljne. Ali zato svaka od tih pet knjiga ima ono što sam spomenuo — odakle NS u nazivu klasa i tako neke basne.

E, da, samo u vezi IB jedna stvar, tu isto mislim da se nismo razumeli. Recimo da imaš jedan najobičniji window i jedan najobičniji button na njemu i klasu u kojoj je deklarisan metod, tj. class action. Šta je po tebi bolja škola:
a) Write Class Files… — kada neko to prvi put napravi tako što isklikće mišem po paletama i u XCode-u prvi put u životu vidi kobasicu: -(IBAction)doSomething:&#40id)sender;
b) Read Class Files… — kada neko nauč šta je to ‘-’, šta je to ‘(IBAction)’, šta je to ‘doSomethig:’, šta je to ‘(id)’ , šta je to ‘sender’ i šta je to ‘;’ i šta je sve to zajedno u kobasici i naravno (da ne pomisliš da mešam grendmadrs end frogs) zašto se tako deklariše i kad sam to sve iskuca?
Na to sam mislio, a ne da IB-u nešto fali ili da ga ne treba koristiti — naprotiv!

Opet — kao početnik — ja sam uradio i pod a) i pod b) — tim redom — znam kako sam se osećao posle pokušaja a); dok mi je pre pokušaja b) bilo potrebno bo’me podosta čtanja Objective-C-a ali mi je za razliku od prvog puta dobrim delom bilo jasno šta se tu dešava.

Džaba smajliji, neću da spominjem nečastivog! :D :D :D

 Signature 

10 HOME
20 SWEET
30 GO TO 10

Profile