Objc och Cocoa utveckling - Böcker?

Tråden skapades och har fått 19 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Skövde
  • 2008-05-19 09:58

Tänkte höra med er nördar här vilken bok som är en bra nybörjar-bok för Objc och även cocoa. Jag kan programmering sedan innan, men tänkte lära mig Objc under sommaren. Den typen jag letar efter är såna som går igenom exempel och visar hur man kan göra mer än att gå igenom teori.

Har ni några bra tips?

// Johan

  • Medlem
  • Stockholm
  • 2008-05-20 07:48

Hillegass, och Kochan

Vänligen, Ylan

Vilken bok på svenska är en bra bok att böra med för någon som aldrig tidigare har programmerat? (Innan Hillegass och Kochan)

Någon allmänt hållen bok om typ SmallTalk, eller?

Citat:

Någon allmänt hållen bok om typ SmallTalk, eller?

någon nybörjarbok i 'vanlig' C skulle jag tro är mer givande.

många har använt skansholms bok, men jag vet inte om någon tycker den är bra egentligen...?

Okej, har du något specifikt tips på någon som du tycker är bra?
Jag tycker säkert som du.

  • Medlem
  • Östersund
  • 2008-07-08 15:46

till thevil:

För guds skull: undvik C som första dataspråk!
Om du måste lära dig obj-C, skulle jag föreslå att du koncentrerar dig på Obj-C och bara nödvändigtvis spanar in i C-territoriet.
Att lära sig smalltalk är definitivt mer relevant för Obj-C än att härja med C.

Obj-C är "light"-smalltalk med C syntax. Men objektmodellen är smalltalks.

Tror det går hyffsat att lära sig obj-C utan att kunna C. Åtminstone borde man kunna skippa lära sig stdio-funktioner. Och skippa massor av C-syntax.

Man måste dock veta vad en pekare är, och hur man "berättar" att något är en pekare:
För tyvärr lider man i obj-C med C's syntax, vilket gör att man ibland får se metodsignaturer som denna:

- (BOOL)writeToURL:(NSURL *)absoluteURL
    ofType:(NSString *)typeName
    error:(NSError **)outError;

Där det som är irriterande naturligtvis är asterixarna, speciellt de dubbla.

  • Medlem
  • Gävle
  • 2008-07-08 16:04

Personligen tycker jag C är ett fantastiskt bra förstaspråk. Det ger en grundläggande kunskap om hur programmering fungerar på den lägre nivån, vilket gör det mycket enklare att förstå hur saker och ting fungerar, även om man fortsättningsvis programmerar på en högre nivå.

Jag tror det blir ganska svårt att lära sig Obj-C utan att först kunna C, faktiskt, just på grund av att Obj-C faktiskt kräver en förståelse för pekare.

  • Medlem
  • Östersund
  • 2008-07-08 16:37

Är inte så säker på att en nybörjare måste känna till hur saker och ting fungerar djupt där nede. Och vad är djupt nog? Även C abstraherar bort massor av hårdvara.

Har själv hållit kurs på högskolenivå om maskinnära programmering, med x86 assembler, PIC-programmering och analys av vad en C kompilator ger i från sig för assembler. Väldigt givande om man vill arbeta med programmering.

Men fördelen med andra språk, som t ex Ruby är att det går fortare (än i C) att göra något nyttigt. Det går snabbare att få till något.

En av Obj-Cs fördelar är att det är så lätt att integrera C-källkod. Det kunde inte smalltalk lika lätt. Men detta kostade att man fick ärva C-språkets jobbiga syntax.

  • Medlem
  • Mölndal
  • 2008-07-08 16:34

Jag får nog hålla med defun här. Visst är C bra om man vill lära sig lågnivåprogrammering, men hur användbart är det idag? De flesta av fördelarna med C (små snabba program med liten minnesåtgång) är inte speciellt aktuella i de flesta projekt idag. Istället prioriteras kort utvecklingstid, buggfrihet och enkelt underhåll, områden där C lätt får stryk. (Sen kan man förstås diskutera om ens Obj-C är vidare högnivå. När jag jämför med .Net och Ruby t ex känns det inte så.)

En annan nackdel med C är att man fastnar i det procedurella tänket. Att lära sig ett språks syntax är relativt enkelt, att få in ett bra objekttänk är svårt och ju förr man börjar med det desto bättre!

Rekommenderar dig tveklöst att börja direkt med en bra Obj-C-bok, thevil.

nu var ju thevils fråga hur man kvickast kommer upp i hastighet för att börja med en bok som hillegass.
då måste man nog traggla lite C, oavsett hur smidigt ruby än må vara...

kohen är bra och det behövs ingen direkt förkunskap vad jag förstår, men så är den inte på svenska.
(det språkproblemet har iofs potential att bli värre än okunskap om C...)

  • Medlem
  • Gävle
  • 2008-07-08 19:35

Nu vet jag inte varför diskussionen mynnat ut i en språk vs. språk-diskussion, det känns inte särskilt relevant i sammanhanget. Jag menar bara att C kan vara en bra grund att stå på när man ska lära sig Obj-C, inte att C är bättre eller mer relevant. (Som parentes kan sägas att jag personligen jobbar nästan uteslutande med Ruby — jag håller med i sak, men tycker det är irrelevant i diskussionen som handlar om att lära sig Obj-C.)

Jag tycker faktiskt att Obj-C är ett av de svårare språken att ta till sig utan förkunskaper — dels är det lågnivå med pekare och minneshantering, dels har du koncept som objektorientering och meddelandeskickning att ta till dig, och därtill en relativt plottrig syntax som ju defun visade exempel på här tidigare.

Hade jag inte redan förstått mig på C och objektorientering så tror jag inte att jag hade orkat sätta mig in i Obj-C — bara syntaxen gör mig alldeles matt. Men det klart, det beror ju på ens motivationsnivå och intresse för Mac-utveckling.

  • Medlem
  • Mölndal
  • 2008-07-08 19:49

Jag tycker inte heller att vilket språk som är "bättre" är relevant. Jag utgår från precis samma förutsättningar som du, men kommer helt enkelt till motsatt slutsats.

Att en nybörjarbok i Obj-C skulle vara för svår utan att man kan C sen innan säger väl mer om boken än om språket och dess arv.

Jag skulle säga att C är en bra början för att komma igång med programmering i OS X. En av de krångligaste grejerna att förstå när man sätter igång är vad en kompilator är, hur man konfigurerar den osv. Även om det är relativt smärtfritt att sätta igång med Locomotive (eller vad som nu är populärast/enklast för Ruby på OS X) så är installationen av Xcode och C++ Tool-templaten bra mycket enklare.

Vidare, som nybörjare vill man bara skriva kod och se att det händer något. Det är precis vad du får från ovan nämda template. Man behöver inte förstå mer än att det går fint att ta bort koden som finns i main.cpp och ersätta med printf("Hello world!")-koden i boken. Vilket är precis det man får lära sig i första kapittlet i alla nybörjarböcker.

Det mest grundläggande i programmeringen är naturligtvis logiken. I vilken ordning körs min kod. Hur fungerar en funktion, loopar, if osv. Det kan man få från vilket språk som helst. Men syntaxen för detta är samma i C och ObjC.

Sist men inte minst, om man förstår logikens grunder så är pekare och objekt de två absolut viktigaste prylarna man måste kunna när man skriver ObjC. Dessutom använder ObjC referensräknare (innan Leopard) vilket ger en extra twist på konceptet med pekare. Klasser i ObjC är otroligt rudementära om man jämför med de flesta OO-språken.

Mitt tips är därför att fokusera på att lära sig skriva procedurell C-kod och förstå hur logiken och minneshanteringen fungerar. Sen läser man en kort beskrivning om konceptet kring OOP och hur det förändrar tänkesättet. Därefter tycker jag att det är lämpligt att gå rakt på ObjC. Däremot tycker jag inte att man behöver lägga onödigt mycket tid på att lära sig C. Bara man förstår logik och minneshantering.

  • Medlem
  • Stockholm
  • 2008-07-13 07:35

Angående vilket språk som är bra att lära sig förr, måste jag säga att Kochan löser det hela mycket elegant genom att låtsas som att det inte finns någon skillnad mellan C och Obj-C. Genom att börja programmera i Obj-C direkt, fastnar man inte i procedurell programmering, samtidigt tar han upp primitiva typer och strukturer "on the fly" så att säga.

Vänligen, Ylan

Och där har Kochan rätt. Obj-c ÄR C - med lite tillägg. Huvudsakligen ett objektorienterat syntaxlager men även numera garbage collector.

Här beställt de två böcker som rek i tråden. Har en bakgrund med Java och C#, så det känns lite konstigt att gå tillbaka till pekare m.m. Dock känns det spännande att få leka med Xcode och Cocoa.

  • Medlem
  • Göteborg
  • 2008-07-31 09:02

Tänkte börja lära mig Obj-C, så sitter och läser igenom gratisboken Become An Xcoder just nu. Bra bok såhär långt, men om man tidigare lärt sig VB.net och Java i skolan känns syntaxen i Obj-C sådär halvkul.

Aja, det släpper väl någon gång och man börjar då ifrågasätta sitt tidigare ifrågasättande.

Ursprungligen av Kanin:

Tänkte börja lära mig Obj-C, så sitter och läser igenom gratisboken Become An Xcoder just nu. Bra bok såhär långt, men om man tidigare lärt sig VB.net och Java i skolan känns syntaxen i Obj-C sådär halvkul.

Aja, det släpper väl någon gång och man börjar då ifrågasätta sitt tidigare ifrågasättande.

Instämmer med dig Kanin.

Vart hittar du den boken som var gratis? Eller är det Apples pdf-fil?

  • Medlem
  • Göteborg
  • 2008-07-31 10:49
Ursprungligen av G.Lindqvist:

Instämmer med dig Kanin.

Vart hittar du den boken som var gratis? Eller är det Apples pdf-fil?

Inget Apple-dokument här inte, bara några överentusiastiska programmerare med för mycket fritid:
http://www.cocoalab.com/BecomeAnXcoder.pdf

  • Medlem
  • Stockholm
  • 2008-07-31 16:46
Ursprungligen av Kanin:

Tänkte börja lära mig Obj-C, så sitter och läser igenom gratisboken Become An Xcoder just nu. Bra bok såhär långt, men om man tidigare lärt sig VB.net och Java i skolan känns syntaxen i Obj-C sådär halvkul.

Aja, det släpper väl någon gång och man börjar då ifrågasätta sitt tidigare ifrågasättande.

Det är väl så att Obj-C:s styrka samtidigt är dess svaghet. Möjligheten att skriva på olika abstraktionsnivåer ger i någon mening svårare syntax.

Vänligen, Ylan

1
Bevaka tråden