Programmeringsspråk
Fra Wikipedia, den frie encyklopedi
Programmeringsspråk er et kunstig språk som brukes for å kontrollere en datamaskin. Akkurat som menneskelige språk har programmeringsspråk syntaks og semantiske regler for å definere mening. Til motsetning fra mennesker så har en datamaskin behov for å få instruksjoner beskrevet 100% komplett, det vil si uten noen som helst tolkning. Dette stiller spesielle krav til programmeringsspråkene på entydighet og kompletthet.
Man deler gjerne programmeringsspråk opp i høynivå- og lavnivåspråk, avhengig av hvor ulikt programmeringsspråket er i forhold til maskinkoden kompilatoren vil generere. Assembler er et typisk lavnivåspråk der man nærmest skriver kommandoer direkte til prosessoren. Basic er på den andre siden et høynivåspråk hvor en kommando i programmeringsspråket ofte blir til flere, og mer sammensatte kommandoer, i maskinkoden.
For høynivå programmeringsspråk skiller man gjerne mellom kompilerte språk – hvor en kompilator oversetter programteksten til direkte kjørbar maskinkode – og tolkede språk – hvor en programtolk leser programmet og utfører det fortløpende. Etterhvert har det kommet til ulike mellomstadier, spesielt språk hvor programteksten oversettes til en plattformuavhengig bytekode som deretter eksekveres av en programtolk/et kjøretidsmiljø. Typiske eksempler på det siste er Java, Python og noen Lisp-dialekter. Skillet mellom kompilerte og interpreterte programmeringsspråk er flytende - to forskjellige implementasjoner av samme språk kan godt være henholdsvis det ene og det andre.
Det har blitt tradisjon å demonstrere et programmeringsspråk ved at teksten hello, world blir produsert.
[rediger] Hensikten med programmeringsspråk
Alle dataprogrammer som en datamaskin kjører foreligger i maskinkode. Da det er upraktisk for et menneske å programmere direkte i maskinkode, er det laget flere ulike programmeringsspråk som gjør det enklere for programmereren å skrive et dataprogram. For å kunne nyttegjøre seg av programmet man skriver i et visst programmeringsspråk (kildekoden), må man ha en kompilator som oversetter kildekoden til maskinkode, som da maskinen kan bruke til å kjøre programmet.
Mange programmeringsspråk har blitt tatt fram, endret for å møte nye utfordringer, blitt kombinert med andre språk og til slutt falt ut av bruk. Flere forsøk på å ta fram universelle programmeringsspråk har blitt gjort, men disse har alltid blitt utkonkurrert av mer spesialiserte varianter. Behovet for forskjellige språk kommer av de forskjellige sammenhengene språket skal brukes i:
- Programmer utgjør alt fra bittesmå skript skrevet av amatører til enorme systemer skrevet av hundrevis av utviklere.
- Programmerere har forskjellige ferdighetsnivåer, alt fra nybegynnere til eksperter. Kompleksiteten de forskjellige kan håndtere er ulik.
- Programmene må finne en balanse mellom størrelse, hastighet, vedlikeholdbarhet og andre parametre. Systemene de skal kjøre på er alt fra enkle mikrokontrollere til superdatamaskiner.
- Programmer som er «ferdigskrevet» kan være under nesten konstant modifikasjon, eller de kan være statiske gjennom hele sin levetid over flere tiår.
- Programmererens kompetanse i et bestemt språk kan også være utslagsgivende.
En generell trend innenfor utviklingen av programmeringsspråk er at nivået på abstraksjonene har blitt høyere med tiden. De tidligste programmeringsspråkene var veldig nær datamaskinens egne, innebygde konsepter. Etter hvert ble det bygget på mer abstrakste konsepter som lot programmeren uttrykke idéer på et høyere nivå. Dette lot programmererene skrive mer kode på kortere tid..[1]
Idéen om at naturlige språk vil overta for programmeringsspråkene ble tidlig lansert i denne prosessen. Dette målet er fremdeles langt unna, og om det egentlig er noen fordel er åpent for debatt. Edsger Dijkstra hevdet at for å unngå meningsløse konstruksjoner er det viktig å nytte et formelt språk, og var helt avvisende til konseptet.[2] Alan Perlis var også avvisende til konseptet. .[3]
[rediger] Kilder
- ^ Frederick P. Brooks, Jr.: The Mythical Man-Month, Addison-Wesley, 1982, pp. 93-94
- ^ Dijkstra, Edsger W. On the foolishness of "natural language programming." EWD667.
- ^ Perlis, Alan, Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9, September 1982, pp. 7-13
[rediger] Se også
Ada | Algol60 | Algol-68 | APL | Assembler | awk | BASIC | BETA | BLISS | C | C++ | C# | Caml | Cobol | Concurrent C | Delphi | Erlang | Forth | Fortran | Haskell | HyperTalk | INTERCAL | Java | Lisp | ML | Modula | Objective-C | OCaml | O'Haskell | Pascal | Perl | PHP | Pike | PL/I | Plankalkül | Prolog | Python | Ruby | Scheme | Simula | SML | Visual Basic