Man lever så länge man lär

I fredags fick jag för mig att installera Xcode som utvecklingsmiljö på min MacBook Pro för att skriva ett enkelt program i (och därmed lära mig lite) Objective-C, som är det programmeringsspråk man använder i Apple-världen för Mac OS X och iOS.

Jag nöjde mig på kvällen med att göra Xcode-installationen, sätta upp mitt projekt och kolla upp Objective-C som hastigast. Programspråket såg lite skumt ut, men verkade möjligt att lära sig. Kombinationen C och objektorientering kan nog funka. Jag har ju programmerat i både C och Java, och en del andra mer obskyra språk.

Ändå pirrade det allt lite i magen – hur skulle det gå? Jag stod i begrepp att ge mig in på något nytt och främmande. Vet inte varför sådant gör mig nervös, men det gör det samtidigt som jag ändå någonstans vet att jag grejar det. Hur som helst tedde det sig som en utmärkt idé att där bryta för dagen och övergå till familjeliv, för att dagen efter läsa in mig på ämnet och börja koda. Och det var ungefär så det blev.

Det vill säga, jag läste mycket mindre än jag tänkt innan jag var igång med själva kodandet. Uppgiften jag ålagt mig handlade om att läsa data från en textfil, tolka innehållet genom att extrahera relevant information och göra några beräkningar.

Jag började med att läsa in hela filens innehåll och skriva mycket rudimentär kod för att identifera de rader som var av intresse och plocka ut det data jag behövde. Efter något femtiotal rader kod började jag sakna de konstruktioner jag obehindrat svänger mig med i Java-världen. Det är så frustrerande att inte veta hur man bäst gör saker i det aktuella programspråket, hela tiden tvingas googla efter exempel. Men visst, man lär sig. Jag lärde mig. Jag är nog inte en så gammal hund ändå.

Jag säger: Stack Overflow måste väl ändå vara världens bästa resurs!

I stort sett hela lördagen satt jag sedan och programmerade. Jag lärde mig skapa och hantera några enklare objekt. Jag lärde mig att börja med hakparentes för att kunna anropa metoder på ett objekt och hur man fick IDE:n att visa vilka metoder som finns. Jag lärde mig hur man skapar och använder reguljära uttryck (denna gudomliga skapelse!) för att hitta och extrahera datum och klockslag ur strängar. Jag lärde mig att jämföra tidpunkter och addera tidsintervall. Samt en del annat.

Mitt program består i nuläget av ungefär 150 rader kod, i en och samma källkodsfil, inklusive kommentarer och tomrader. Jag har en main-metod och 6 hjälpfunktioner. Det finns ytterligare någon sak jag vill testa, men programmet fungerar som det är.

Jag har bekantat mig mycket lite med själva utvecklingsmiljön än så länge, även om jag i alla fall lärt mig sådant som att kommentera block av kod och checka in koden i mitt lokala git-repository. Så här långt är Xcode rätt frustrerande och jag saknar Eclipse. Antar (hoppas!) att det främst beror på att Xcode är annorlunda, men det finns en möjlighet att Xcode faktiskt inte har de funktioner jag är van vid.

Det mest frustrerande är nog just det där att jag inte känner språket ännu – jag vet inte vilka metoder jag kan förvänta mig hitta på ett objekt och inte hur de namnges. Ibland tar det en evighet att begripa hur jag ska göra, ibland går det på ryggmärg – många gånger går saker faktiskt att göra på nästan exakt samma sätt som i Java.

Utöver att lära mig mer om själva programmeringen vill jag bli bättre kompis med utvecklingsmiljön (Xcode) och lära mig en massa om versionshanteringen (git). Och så vill jag givetvis också lära mig hur man kan unittesta kod i den här miljön.

En vacker dag tänker jag mig att prova på iOS-utveckling genom att skriva en app. Eller så blir det Android i stället – det är ju den plattform jag använder dagligdags. Oavsett vilket har jag en uppgift att lösa. Automatisera det jag idag gör manuellt.

Hur som helst var det riktigt roligt att utföra uppgiften – det kan nog bli mer sånt!

Kommentarer till: "Provprogrammerar i Objective-C" (5)

  1. Känner verkligen igen frustrationen av att inte kunna hitta motsvarigheter till de verktyg man är van vid. Någon borde komma på ett magiskt sätt att hitta svar på frågor innan man lärt sig hur frågorna ska uttryckas. Det blir ju inte lättare när man springer på ett läge där Apple valt en så egen väg att det man vill göra faktiskt ser helt annorlunda ut (datum och tid är det första som dyker upp i huvudet, men jag vet att jag sprungit på mer). Apples dokumentation i sig är väldigt bra, men jag har aldrig känt att jag hittat ett sätt som passat mig att bläddra eller söka i den. Dash är en app som många höjer till skyarna på det området.

    Men nog är det kul! Speciellt när saker börjar fastna och vidga ens vyer. Numera vill jag ofta namnge saker enligt konventionerna i Cocoa/Objective-C och saknar namngivna parametrar lite smått när jag inte har dem.

    • @bjoreman: Du säger Apple, och jag säger ”åäö” i filnamn. Eller case-insensitive filsystem som default på en Unix-burk, för den delen. Galet! Men jag antar att jag kommer att svära mer vartefter jag kommer in mer på sådant som är äppelspecifikt. Det blir skoj.

      Och genast försvann en timme eller så på att installera Dash och ladda ned docsets. Verkar som något jag kan ha nytta av i mitt experimenterande, tycker jag. Tack för tips!

      Så många saker, och så lite tid. :D

  2. […] ett litet program i Ruby. Och det programmet skrevs utifrån samma krav som det jag veckan innan skrev i Objective-C. Exakt likadant blev det dock inte då jag kom på nya saker att göra och färdigt blev det inte […]

  3. […] om man så vill) är ganska precis lika långt som det i Ruby och hälften så långt som det i Objective-C. Skillnaden mellan Ruby och Python blev mindre än jag förväntat mig, men det beror nog mycket […]

Kommentera

Fyll i dina uppgifter nedan eller klicka på en ikon för att logga in:

WordPress.com Logo

Du kommenterar med ditt WordPress.com-konto. Logga ut / Ändra )

Twitter-bild

Du kommenterar med ditt Twitter-konto. Logga ut / Ändra )

Facebook-foto

Du kommenterar med ditt Facebook-konto. Logga ut / Ändra )

Google+ photo

Du kommenterar med ditt Google+-konto. Logga ut / Ändra )

Ansluter till %s

Etikettmoln

%d bloggare gillar detta: