Programmering A   C/C++

Hög- och lågnivåspråk

 

När man väljer programmeringsspråk är det två aspekter som är viktiga. Språket bör helst kommunicera så direkt som möjligt med datorn för att få så snabba och små program som möjligt. Problemet med detta är att källkoden blir processorspecifik och måste i stort sett skrivas om för varje ny generation datorer. Å andra sidan så vill man att programmeringsspråket ska möjliggöra skapandet av program som fungerar på olika processortyper och plattformar. Det är ganska uppenbart att dessa två aspekter inte är så lätta att förena. Programmeringsspråk som kommunicerar mer eller mindre direkt med processorn brukar man kalla för lågnivå-språk. Motsatsen, dvs högnivå-språk kännetecknas av att det är portabelt (fungerar på olika maskiner och plattformar) samt att språket har en högre abstraktionsgrad. Det sistnämnda innebär bl.a. att man i sin källkod uttrycker sig mer "mänskligt" än vad man gör i lågnivåspråk. Källkoden kan ofta bli mer konkret och begriplig för betraktaren, men betydligt mer abstrakt för datorn. Som programmerare har du då mindre kontroll över de exakta instruktionerna till datorn. När man skriver t.ex. cout<<"Hej"; i C++ vet programmeraren att Hej kommer upp på skärmen, men de exakta instruktionerna för att åstadkomma detta är förmodligen okända. Ofta är det ointressant att känna till detta, men i vissa fall kan det vara värdefullt. Om man t.ex. gör avancerade grafiska program kan det vara mycket viktigt att känna till de exakta grafik-instruktionerna samt ha möjlighet att manipulera dessa.

Nedan finns små exempelprogram i språken Assembly (lågnivå-språk), C++, Pascal och Basic (högnivå-språk). För den oinvigde går det ganska väl att gissa vad Pascal och Basic-programmen gör. Lite svårare är det att gissa resultatet av C++ programmet och Assembly-programmet är förmodligen helt obegripligt.
 

ASSEMBLY-PROGRAM som skriver ordet ASSEMBLY till skärmen.
C++ PROGRAM som skriver ordet C++ till skärmen
model small
.stack
.data

Message db "ASSEMBLY$"
.code

mov dx,OFFSET Message
mov ax,SEG Message
mov ds,ax

mov ah,9
int 21h
mov ax,4c00h
int 21h

END start

#include <iostream.h>
int main()
{
cout<<"C++";
return 0;
}

 

 

 

 

PASCAL-PROGRAM som skriver ordet PASCAL till skärmen
BASIC-PROGRAM som skriver ordet BASIC till skärmen

program pascal;

BEGIN
write ('PASCAL')
END.

10 PRINT "BASIC"
20 END

 

 

C/C++ är alltså ett högnivå-språk och är portabelt, dvs källkod som du skrivit kan kompileras på en Mac, PC, UNIX etc. Koden är densamma, enbart olika kompilatorer krävs (förutsatt att du inte skriver hårdvaruspecifika program). Språket ger även goda möjlighet att kommunicera mer direkt med datorn och det går rent av att infoga assambler-kod i C++ koden.

Ett viktigt skäl för att välja C++ som sitt programmeringsspråk är dess spridning. De allra flesta applikationer som skapas skrivs i C eller C++. Detta medför att det finns en stark utveckling kopplad till språket, samt gott om intressant kod att laborera med. Du kan t.o.m. ladda hem källkoden till Netscape och göra egna modifieringar¹.


¹ Fullt möjligt men knappast att rekommendera än på ett tag. Att jobba med så stora och invecklade program kräver mycket kunskap och erfarenhet. Den dag du känner dig mogen kan du hämta koden hos Mozilla.org.
 

 
© Stockholms Stad 2001