iProgrammering
Det har vært interessant å følge Apples utvikling de siste 11 årene siden de slapp første versjon av Mac OS X. I 2001 ble versjon 10 (derav X) sluppet, og denne hadde en rekke forandringer fra tidligere versjoner. Apple opplevde en nedtur på 90-tallet og ønsket på et tidspunkt å kjøpe inn eksternt operativsystem framfor å videreutvikle sitte eget selv. Mange alternativer ble vurdert, men istedet for å velge for eksempel Suns unix-baserte Solaris, eller Windows NT (som faktisk ble vurdert ifølge Walter Isaacsons nye biografi om Steve Jobs) valgte Apple å kjøpe opp NeXT og deres NEXTSTEP operativsystem i 1996. De forskjellige Mac OSX versjonene, og senere mobil-varianten iOS, har en arkitektur bygget på BSD-Unix med et overbygg av proprietære teknologier. De siste årene har Apple åpnet og lagt til rette for masseutvikling fra almuen. Spesielt har en ny forretningsmodell hvor utviklere selv kan distribuere programvare for et verdensomspennende publikum gjennom App stores til en minimal investeringskostnad gjort plattformen interessant for nye grupper. Jeg ønsker her å nevne noen av aspektene jeg syntes er relevante, og som jeg har funnet interessante i min lille flørt med Apple denne høsten.
Plattform
Apple har to forskjellige programmer (som i opplegg, ikke software) for utvikling avhengig av hvilken plattform du ønsker å utvikle for. Prisen for å utvikle for for Mac OS X (desktop) eller iOS (mobile flater) er per i dag $99 per plattform. Dette inkluderer distribusjonsavtale igjennom respektive programvare-marked, ressurser på developer.apple.com som for eksempel tilgang til mange av foredragene fra utviklerkonferansen WWDC som video. Jeg har ennå ikke investert i en slik avtale, men har likevel hatt mulighet til å lage små programmer for både Mac OSX og iOS, og fått tilgang til masse ressurser, jeg har dog ikke lansert noen programmer. Utviklingsverktøyet XCode er tilgjengelig gratis til Lion, igjennom AppStore, og versjon 4.1 kommer med SDK for Lion og versjon 4.2 kommer med iOS5 SDKet. Med mindre du ønsker å benytte deg av fordelene med en utviklingslisens kan du programmere uten, og i startfasen kan dette være lurt da det kan ta litt tid å bli kjent med Objective-C og de respektive rammeverkene. Det er viktig å få med seg at for å benytte en fysisk iPad, iPhone eller iPod touch for å teste ut egen programvare trenger du en lisens. I iOS SDK-pakken følger det med simulator for disse enhetene (merk: ikke en emulator) og den har ikke mulighet for å benytte seg av de fysiske sensor-dataene som det kan være moro å inkludere i programmer på iOS.
Verktøy
Apple har laget gode verktøy for sine utviklere og disse er fritt tilgjengelig igjennom App Store. I Snow Leopard kom verktøyet som et ekstravalg på installasjons
platen, men nå som OS distribusjonen skjer gjennom skyen har også ekstra programvare blitt tilgjengelig for nedlastning. Fram til Xcode 4 var det i hovedsak to programmer du ville ha brukt i utviklingsprosessen: Xcode og Interface Builder. I dag er begge disse programmene bygget inn i Xcode 4 og det å skifte mellom kode-editoren og GUI-editoren skjer sømløst basert på hvilke fil du bearbeider. For Objective-C filer får du opp en god tekstbehandler som er godt integrert med dokumentasjonen, feilsøkingsverktøy og andre hjelpefunksjoner. Dersom du velger en xib-fil vil du få mulighet til å grafisk plassere brukergrensesnitt-enheter som NSTextField, NSLabel og NSSlider. Xcode tar seg også av kompilering, versjonskontroll og fra og med XCode 4.2 kan du også legge ut forskjellige view i iOS applikasjoner ved hjelp av Storyboard. I tillegg kommer utviklingspakken med et godt analyseverktøy kalt Instruments og et morsomt og kreativt verktøy kalt Quartz Composer. Sistnevnte benytter et visuelt grensesnitt tilsvarende de som finnes i Max MSP og Pure Data.
Språk
Selv om du kan programmere i mange språk på Apple plattformen er det foretrukkede språket Objective-C. Dette språket startet i utgangspunktet som et objekt orientert klasse bygget på C, men har i dag en lang tradisjon og er i versjon 2. Språket har mange likheter med andre C baserte språk, men har en ganske annerledes syntaks når det gjelder å kalle metoder hvor de bruker noe så utradisjonelt som square brackets. Noe jeg hadde problemer med å forstå når studiene krevde at jeg arbeidet med C var viktigheten av kompilatoren til å kunne utføre oppgaver ifra funky syntaks. Etter et par måneder med objective-C kan jeg lært å se viktigheten av dette. For eksempel lar Objective-C deg autogenerere get og set metoder basert på synthesize i implementeringen og property i interfacet.
[code lang=”objc”]
#import "SessionController.h"
@implementation SessionController
@synthesize user, sessions;
– (void)viewDidLoad
{
user = [[User alloc] init];
sessions = [[NSMutableArray alloc] init];
Session *s = [[Session alloc] init];
[sessions addObject:s];
}
[/code]
Jeg har ingen intensjon om å fortelle så veldig mye om Objective-c, men det virker som å være et morsomt språk å kunne. Det finnes i dag mange halv-gode og noen gode løsninger som lar deg programmere for flere plattformer uten å måtte kunne hver plattforms egne språk og skikker, men jeg syntes det har vært en lærerik opplevelse å forsøke å få hodet rundt Objective-C. For meg, som hovedsakelig har arbeidet med Java, er det vanskelig å fatte den dynamiske naturen til Objective-C: ikke bare kan du sende hvilken som helst datatype igjennom id-signaturen, du kan også kalle ting igjennom stier og laste inn ny kildekode mens programmet kjører.
Rammeverk
Rammeverkene er det som skaper mye av det som kan gjøres på en plattform. Det er her Python får sine “batteries included” og funksjonaliteten plattformene blir realisert. Skal du tegne grafikk eller initialisere en datastruktur basert på et XML HTTP-svar eller mange av de andre hverdagslige eller spesielle oppgavene som kreves av et program er det kjekt å kunne stå på skuldrene til noen som allerede har gjort tilsvarende oppgaver. Xcode kan linkes mot et stort antall rammeverk, men noen brukes mer enn andre. I første rekke kan det være greit å lære seg Foundation og et eller begge Cocoa-rammeverkene (Cocoa for Mac OS X og Cocoa Touch for iOS). Dokumentasjonen til disse, og andre rammeverk, er bygget inn i XCode så ved å holde inne alt og klikke på et metodenavn dukker denne opp. I tillegg vil rammeverk som er linket til fra headerfilen automatisk bli inkludert i auto-completion, og siden kodehintingen er god vil du med kun begrensede kunnskaper om metodenes navn kunne gjøre ganske mye i XCode.
Hvordan begynne?
Hvis du har en mac er første steg å få tak i siste versjon av XCode. Gå inn på i App Store for å laste denne ned. Installasjonsfilen er stor og dette tar derfor litt tid, men benytt tiden til å gjøre deg kjent på developer.apple.com. Her kan du finne mange artikler, APIer og introduksjoner til forskjellige Apple teknologier, og dette kan være et greit utgangspunkt. Her finner du også artikler for nybegynnere som skal starte å lage sin første app samt best practices, rettningslinjer og demonstrasjonsapplikasjoner.
Lykke til, og si gjerne ifra om hvordan det gikk!
Bildet Big XCode er laget av Lee Gillen og gjort tilgjengelig på Flickr under en Creative Commons lisens.
2 thoughts on “iProgrammering”
Lærerikt innlegg Ola 🙂 Kanskje jeg skal prøve ut XCode og Objective C etterhvert? Virker jo som et morsomt språk som kan være nyttig å lære seg
Burde absolutt testes ut. Ganske funky syntaks og genialt IDE.