Liten Datorhandbok För Målmedvetna

Academic Computer Club, Umeå Universitet, 2000


Macintosh Programmering

Programmeringsmiljöer

Det finns många olika sätt att programmera en Macintosh. Vilket man vill använda sig av beror på vad man vill åstadkomma. Om målet är att producera ett riktigt program som kräver en hyfsad mängd av informationshantering bör man använda sig av ett språk som verkar på relativt låg nivå, så som Pascal, C eller C++. Det finns exempel på shareware-program som är tillverkade i program som HyperCard och SuperCard, men de är oftast frustrerande långsamma.
Multimedia (Hypercard, etc.)
Multimediaprogram kan sammanfattningsvis sägas vara program där informationen, det innehåll som programmet presenterar, är viktigare än hur programmet rent tekniskt är konstruerat. Multimediaprogram har oftast ett enkelt klick-baserat gränssnitt och ingen, eller nästan ingen, databearbetning.

Det finns ett flertal verktyg för att tillverka multimediatillämpningar. Det som är populärast i dag är ett kommersiellt verktyg som heter MacroMedia Director. Många multimediaprogram och spel, som till exempel The Daedalus Encounter och BackPacker, är tillverkade i MacroMedia. MacroMedia är kraftfullt och kan skapa självstående program. Nackdelen är att programmet är relativt dyrt, för den som inte vill inrikta sig på professionell multimediaproduktion.

HyperCard var länge en multimediastandard på Macintosh, med en mycket utbredd distribution och goda programmeringsmöjligheter i ett enkelt språk kallat HyperTalk. Sedan bollades HyperCard mellan Apple och Claris som en het potatis i några år, med följd att det övertag som programmet hade helt och hållet slarvades bort. Till exempel dröjde det alldeles för länge innan en färgversion av programmet kom ut. Nu har programmet stramats upp igen, men det återstår att se om det kan få samma genomslagskraft.

Ett annat ofta använt program är SuperCard, som delvis tog över HyperCards roll, genom att programmet snabbt kunde erbjuda färg och möjligheten att skapa självstående tillämpningar (det vill säga sådana som inte kräver att slutanvändaren har tillgång till SuperCard-programmet.)

Att programmera i dessa multimediatillämpningar är relativt enkelt. De använder sig oftast av ett högnivåspråk som till sin uppbyggnad påminner om BASIC. Själva programmet byggs till stor del upp kring användargränssnittet och baseras på en enkel objektorienterad modell. Allt du ser på skärmen: knappar, textfält, etc är objekt. Genom att skriva manus för objekten i det enkla programmeringsspråket bestämmer du hur de skall reagera, till exempel när användaren klickar på dem. Ditt program kommer alltså att bestå av en stor mängd kodsnuttar som tillhör de olika elementen i användargränssnittet. Det ska nämnas att man kan komma ganska långt i de här programmen utan att skriva någon programkod över huvud taget.

Fig. Exempel på del av läxförhörsprogram skrivet i HyperTalk.

Databaser och kalkylblad
Program som i hög grad är orienterade kring att hantera information av en redan på förhand känd typ, kan med fördel skrivas i ett databasprogram eller som ett kalkylblad.

Ett databasprogram hanterar register, som är uppbyggda av poster. En post kan till exempel representera en person i ett adressregister. Posten är i sin tur uppbyggd av fält. Varje fält innehåller en typ av information, till exempel förnamn, efternamn, och så vidare. Fördelen med att använda ett färdigt databasprogram för att bygga upp sådana här register är att många funktioner som är vanliga vid registerhantering, till exempel sökning, sortering, och så vidare, redan finns konstruerade, vilket drastiskt skär ner på utvecklingstiden. I det populära registerprogrammet FileMaker Pro har du mycket god kontroll över registrets layout, så det är lätt att konstruera attraktiva tillämpningar.

FileMaker Pro har också ett inbyggt programmeringsverktyg, ScriptMaker, som tillåter dig att att ge ditt register ett något mer avancerat beteende. ScriptMaker har ett programmeringsgränssnitt som helt igenom bygger på att välja funktioner i en lista och dra dem till programkoden. Du skriver alltså inte in koden själv med tangentbordet. Den här metoden passar säkert bra för nybörjare, men en mer avancerad programmerare blir snart oerhört frustrerad över metodens ineffektivitet. Det kan jämföras med ett ordbehandlingsprogram, där du inte kan skriva in orden, utan istället måste välja dem från en lista över svenska språkets alla ord och klicka "sätt in". Visserligen är du försäkrad mot stavfel, men de flesta skulle nog föredra de traditionella ordbehandlingsprogrammen. Som om detta inte vore nog så saknar ScriptMaker möjlighet att kopiera mer än ett kommando åt gången, så den som försöker sig på att göra några större programmeringsjobb i ScriptMaker lär nog snart slita sitt hår.

Fig. ScriptMakers otympliga programmeringsmiljö.

Lyckligtvis finns ytterligare en möjlighet att programmera FileMaker Pro. Man kan nämligen knyta externa AppleScripts (beskrivs senare) till programmet. Dessa ger möjlighet till avsevärt mer avancerad programmering. En nackdel är att slutanvändaren också måste ha tillägget AppleScript installerat, annars kommer hon inte att kunna köra programmen. FileMaker Pro kan inte heller skapa självstående program, men ett läsarprogram (FileMaker Pro Viewer) distribueras som freeware. För vissa typer av program är FileMaker Pro den ideala lösningen, för andra lämpar det sig inte alls.

Det finns andra, mer avancerade databasprogram, som till exempel Oracle och 4D. Som vanlig Macintoshanvändare stöter man dock inte på dessa så ofta.

Man kan också använda kalkylblad från Excel eller Claris Works för vissa enkla programmeringsuppgifter. Kalkylblad kan vara lämpliga att använda när programmets funktion är att beräkna ett slutvärde givet vissa ingångsvärden, till exempel att beräkna amorteringsstorleken på ett villalån.

Fig. Beräkning gjord med kalkylblad.

Matematiska programmeringsmiljöer
En del programmeringsmiljöer har hämtat sina begrepp och termer från matematiken. Lågnivåspråk som Pascal och C har inget inbyggt stöd för begrepp som matriser, funktioner, komplexa tal, integrering och derivering. Visserligen finns det biblioteksrutiner för att hantera dem, men eftersom språken inte är centralt uppbyggda kring dessa begrepp kan notationen bli litet klumpig. Om man skall skriva ett program som i huvudsak arbetar med operationer på sådana här matematiska objekt, kan det därför vara lämpligare att använda sig av en strikt matematisk programmeringsmiljö.

De mest kända matematiska programmeringsmiljöerna är MatLab, Maple och Mathematica. Alla dessa finns tillgängliga till Macintosh.

AppleScript

AppleScript är ett enkelt programmeringsspråk som finns som tillägg i senare systemversioner. AppleScripts används huvudsakligen för att automatisera uppgifter som görs i andra program. För att det skall fungera krävs att programmen är "Apple Scriptable". De flesta nya kommersiella program är Apple Scriptable.

Varje program definierar de kommandon det kan hantera, och de objekt som det arbetar med. AppleScript-programmet kan sedan använda sig av dessa. Det blir som om de andra programmen på hårddisken är en del av programmeringsspråket. Ett program som säger åt StuffIt att komprimera de filer som har blivit modifierade under den senaste veckan, skulle till exempel kunna se ut som:

on open theFiles set archiveName to "Backup.sit" tell application "StuffIt Deluxe" activate make new archive with properties {pathname:archiveName} set the match criteria of archive 1 to {modification date is after:"last week"} stuff theFiles with match criteria end tell end open Det är lätt att inse att AppleScript får mycket stora möjligheter eftersom det kan använda sig av alla program som finns i datorn. AppleScript kan sägas vara en slags motsvarighet till batch-filer i DOS-systemet och shell-scripts i UNIX-systemet.

Fig. AppleScript program skrivet med hjälp av Manusredigeraren.

Vissa program går ett steg längre än att vara "Apple Scriptable" och är "AppleScript Recordable", eller inspelningsbara. Det betyder att du kan slå på en inspelningsfunktion i Manusredigeraren och sedan utföra de uppgifter du vill automatisera med programmet. Manusredigeraren skapar då automatiskt AppleScript-koden för att utföra handlingen. Du kan sedan gå in i koden och ändra den om du vill. Detta innebär att AppleScript kan användas som en mycket kraftfull makrofunktion. Än så länge är det ganska få tillämpningar som är inspelningsbara, men till exempel Findern och StuffIt Deluxe är det.

AppleScript lämpar sig alltså bäst för att automatisera rutinuppgifter. I kombination med andra program, som till exempel FileMaker Pro, så kan det bli mycket kraftfullt. En nackdel med språket är att om slutanvändaren inte har AppleScript installerat på sin dator, så kan hon inte använda de tillämpningar du skapar. Naturligtvis behöver hon också de program som ditt AppleScript-program använder sig av.

Utvecklingsmiljöer
De flesta "riktiga" program kompileras i ett språk på relativt låg nivå, som Pascal, C eller C++ med användande av en integrerad utvecklingsmiljö. Den beskrivning som följer här är i stort sett generell, men för specifika exempel har C valts.

Fig. Integrerad utveckling i programmet CodeWarrior.

Det som slutligen skall bli ett program består från början av en mängd filer, som tillsammans kallas för ett "projekt". Ett projekt betsår av källkodsfiler (.c, .p, .c++) som innehåller de instruktioner som bygger upp programmet, headerfiler (.h) som tillåter funktionerna i en fil att anropa funktioner som definierats i en annan fil, resursfiler (.rsrc) som innehåller data som projektet använder sig av, till exempel fönsterdefinitioner, dialogrutor, bilder, strängar, med mera och bibliotek (.lib) som tillåter programmet att använda funktioner från Macintoshsystemet eller ANSI C-standarden.

Om du använder ett integrerat utvecklingsverktyg så håller det automatiskt reda på alla dessa filer åt dig och ser till att de behandlas på rätt sätt. Traditionellt är programmeringsverktygen uppdelade i en kompilator, som omvandlar källkoden till objektkod (.o) som datorn kan förstå bättre, en länkare, som sätter ihop objektkoden från olika filer till ett färdigt program och en avlusare, som används för testning av programmet. De integrerade programmeringsmiljöerna innehåller dock alla dessa verktyg kombinerade. Väljer du att köra ett projekt från ett sådant program så kompileras först de källkodsfiler som har blivit ändrade sedan den senaste kompileringen, sedan länkas de ihop med de övriga objektfilerna och slutligen så startar programmet under debuggerns överinseende, allt med en enda knapptryckning från din sida.

De populäraste utvecklingsmiljöerna har länge varit Symantecs produkter. Nu på senare tid har Metrowerks CodeWarrior, tagit över den ledande rollen. Ett annat alternativ är MPW (Macintosh Programmer's Workshop). Det är ett textbaserat skal för programutveckling som kan använda sig av kompilatorer från andra utvecklare och har stöd för bland annat versionshantering.

Andra programmeringsmöjligheter
Det finns även möjlighet att använda sig av mer udda programmeringsspråk för att programmera Macintoshen. Dessa finns ofta att tillgå som shareware. Här är en lista över några programmeringsspråk och det shareware/freeware program som stödjer det. Listan gör inga anspråk på att vara komplett. Enklaste sättet att hitta programmen är att söka efter namnen på Internet. Du kan också söka efter själva programmeringsspråket.

Språk Freeware/shareware program
Logo LogoMotion.
Dylan Marlais, Mindy, Thomas
Perl MacPerl
Prolog Open Prolog
Forth Pocket Forth
Fortran Axo Calculator
Basic Future Basic, ZBasic
Lisp Lisp, PowerLisp
Java MacJDK

Författat av Niklas Frykholm


Bakåt , Framåt , Upp, Huvudsida
Denna sida ändrades sist av handbok den 26/05 1996 12:37:21.
Last modified Sunday, 26-May-1996 12:37:21 CEST