Programspråk
Innehåll- 1. Generellt om programspråk - 1.1 Olika typer av språk - 2. Programspråkens historia och indelning - 2.1 Förhistoria - 2.2 Den första och andra generationens programspråk - 2.3 Tredje generationens programspråk - 2.4 Funktionella programspråk - 2.5 Problemorienterade programspråk - 2.6 Kommandospråk, skalspråk - 2.7 Fjärde generationens programspråk - 2.8 Constraint-programmering - 2.9 Objektorienterade programspråk - 2.10 Deklarativa programspråk - 2.11 Server Page-språk - 3. Att välja programspråk - 4. Några vanliga och ovanliga programspråk - 5. Se även - 6. Länkar1. Generellt om programspråk
Ett programspråkär ett konstgjort språk som används för programmering av datorer.Det finns många programspråk och flera sätt att dela in dem i grupper: efter ålder, generationer, paradigm (tankemodell), standardisering, o.s.v.
Teoretiskt definieras ett programspråk som en mängd av program. Dessa program är exakt de texter som en grammatik för programspråket kan generera, eller en kompilator för programspråket kan acceptera, varken fler eller färre. Vanligtvist ett oändlig antal. /PT
1.1 Olika typer av språk
Generellt gäller att de som skapar ett nytt programspråk betonar det som skiljer språket från sina föregångare, men att de som starkast förespråkar enhetlig anslutning till en enda, renodlad, teoretisk tankemodell (Algol-68, ML, Smalltalk, Erlang) får färre efterföljare än de som lyckas skapa pragmatiska blandmodeller (C, C++, Java, Perl). Utvecklingen av nya programspråk går hand i hand med utvecklingen av ny programutvecklingsmetodik. De flesta är modevågor som varar i högst fem år, med några få undantag.
2. Programspråkens historia och indelning
2.1 Förhistoria
Ada Byron räknas som den första programmeraren. Hennes datorprogram för beräkning av Bernoullinummer var en algoritm som beskrev hur olika register i den analytiska maskinen skulle flyttas och laddas med olika mellanresultat. Det var skrivet i det vi idag skulle kalla assemblerspråk. Programmet kunde dock aldrig köras, eftersom maskinen aldrig färdigställdes, men programmet fungerar helt korrekt i en simulator.
På senare tid har det upptäckts att nästan alla program Ada Byron skulle ha skrivit var kopierade verbatim från brev av Charles Babbage.
2.2 Den första och andra generationens programspråk
De första datorprogrammen för moderna datorer skrevs direkt för hårdvaran och instruktionerna kallades för maskinspråk. Dessa kallas ibland "första generationens programspråk".
Genom att tillföra enklare variabelsubstitutioner och makron fick man assemblerspråk. Dessa kallas "andra generationens programspråk.
2.3 Tredje generationens programspråk
De första egentliga programspråken (som ibland benämns "tredje generationens programspråk") utvecklades under sent 1940- och tidigt 1950-tal.Det första som fick egentligt genomslag var Fortran (IBM 1954), strax följt av Cobol (1959) och Algol (1960). Denna "traditionella" skola har sin fortsättning i Basic, PL-1, Algol-68 (1968), Pascal (Niklaus Wirth, 1970-tal), C (AT&T, 1973) och Visual Basic (Microsoft).
2.4 Funktionella programspråk
Ett annat mycket tidigt programspråk var Lisp (sent 1950-tal), vars tankemodell avviker från de föregående genom att alla program är matematiska funktioner eller beräkningsuttryck, som körs genom beräkning (evaluering) av uttryckens värde. Denna tankemodell (eller paradigm) kallas för funktionell programmering och Lisp kallas för ett funktionellt programspråk.Andra funktionella språk är Scheme, ML, SML, Caml, OCaml och Haskell. För att markera avstampet benämns de traditionella språken för imperativa. I sin mest utvecklade form kallas de "rent" funktionella språk, där beräkningsuttrycken inte tillåts ha några sidoeffekter utöver beräkningsresultatet, vilket emellertid omöjliggör tilldelning av variabler och försvårar in- och utmatning. Haskell är ett försök i denna riktning.
2.5 Problemorienterade programspråk
I Sverige och i synnerhet på Datasaab förespråkade man under en period på 1960-talet termen problemorienterade språk. Tanken med detta var att programspråken (högnivåspråken) skulle utformas efter problemet man ville lösa med dem, snarare än att man skulle skapa generella språk som löser allt.
2.6 Kommandospråk, skalspråk
För den enklare hanteringen av dagliga rutiner i operativsystemet, körning av program med mera, utvecklades tidigt enkla kommandospråk eller skalspråk som i en del fall vuxit ut till tämligen avancerade skriptspråk.Dessa är mer eller mindre interaktiva och tillhör familjen interpreterande programspråk.
2.7 Fjärde generationens programspråk
Med RPG som utveckaldes av IBM för System 3-serien av datorer, infördes en förenklad modell för administrativa tillämpningar som omväxlande kallas formulärbaserad programmering eller fjärde generationens programspråk. Det räknas numera knappast som något större framsteg i programspråkens historia, sitt namn till trots.
2.8 Constraint-programmering
Utvecklingen av relationsdatabaser ledde till skapandet av SQL (och dess föregångare Sequel), som är i en klass för sig. Det är centrerat runt en databas och skulle därför kunna kallas objekt- eller dataorienterat, och programsatsernas form gör att språket även kallas deklarativt. En fråga i SQL implicerar i sig inte en specifik algoritm för beräkning av svaret, utan man anger vilken form svaret ska ha. Därför är det ett constraint-baserat programspråk.
2.9 Objektorienterade programspråk
Ännu en ny tankemodell är objektorienterad programmering, representerat av språket Simula (1967), som grundades på Algol-60.Ett annat tidigt objektorienterat programspråk är Smalltalk.Det är dock först med C++ (AT&T, 1980-talet) och Java (Sun Microsystems, 1995) som detta tankesätt slagit igenom på allvar. Idag är C# (Microsoft) ett vanligt objektorienterat språk. Kritiserat för att vara "lite väl likt Java".
En högre nivå av OO-programering finns i t.ex. Self från SunLabs, som inte har indelning av klasser och instanser, utan bara objekt och är därmed ett superset för alla andra OO-språk som t.ex. small-talk. Denna kategri kallas ofta Prototyporienterad-programmering. En särart för vanliga program är aspektprogrammering som vill nå några av prototypprogrammeringens fördelar av extrem återanvändbarhet.
2.10 Deklarativa programspråk
Den matematiska logiken har inspirerat Prolog där programmen skrivs i form av logiska regler. Körning av programmet består sedan i att dra slutsatser ur reglerna. Prolog kallas ett deklarativt programspråk.
Donald E. Knuths språk META som används i hans egna typsnittsbeskrivningsspråk METAFONT och i John D. Hobbys utvidgning MetaPost är delvis deklarativt för att kunna uttrycka geometri på ett matematiskt praktiskt sätt.
Telefonivärldens fokus på signalering och händelser har färgat programspråket Erlang som under några år utvecklades inom Ericsson. Det är väsentligen ett funktionellt programspråk (se ovan).
2.11 Server Page-språk
Med Internet och WWWs populära genomslag under 1990-talet har ett antal programspråk tillkommit för att skapa webbtillämpningar, till exempel Perl, Pike, Python.En del av dessa blandar instruktioner från programspråk med dokumentationsformat eller sidbeskrivningsspråk, till exempel Cold Fusion, RXML, ASP, JavaServer Pages och PHP.
3. Att välja programspråk
En avgörande faktor vid valet av programspråk är tillgången på personer som är kunniga i eller villiga att lära sig det aktuella språket. Ofta talar detta argument till fördel för de allra vanligaste programspråken (C++, Java, Visual Basic), men det kan också löna sig att låta ett litet team av programmerare välja eller rentav konstruera sitt eget språk, eftersom detta drastiskt kan höja motivationen och därmed effektiviteten.
4. Några vanliga och ovanliga programspråk
- ABAP
- ActionScript
- Ada
- Adapt
- AIML
- Algol
- Algol-68
- Algol-genius
- APL
- ARexx
- assembler
- awk
- B
- Basic
- BCPL
- BLISS
- Brainfuck
- C
- C++
- C#
- Caml
- Chef
- Cobol
- Concurrent C
- Delphi
- E
- EPSILON
- Erlang
- Euphoria
- Forth
- Fortran
- Goedel
- Haskell
- HyperTalk
- INTERCAL
- Java
- Javascript/ECMAscript
- LabVIEW
- Linoleum
- Lisp
- LPC
- Lua
- META, kan ses som delmängd av METAFONT och MetaPost
- ML
- Modula
- Modula-II
- Modula-3
- Musil
- Oberon
- Objective C
- OCaml
- OHaskell
- Pascal
- Perl
- PHP
- Pike
- PL/I
- Plankalkül
- Prolog
- Prosim
- Python
- RPGIV
- Ruby
- Scheme
- SDL
- Self
- Simula
- Smalltalk
- SML
- Snobol
- Squeak
- TeX
- Visual Basic
5. Se även
- Programbibliotek
- Hello world
- 99 bottles of beer
6. Länkar
En längre lista med programspråk, med programexempel, hittar du på http://internet.ls-la.net/mirrors/99bottles/.
Artikeln skriven 2009-01-17 av Learning4sharing
Inga kategorier för denna artikel än...Intresserad av fler artiklar?
Josef StalinFri programvara
Gratisprogram
GPL
Joosa Riekkinen
Datorspel/Quake
FRACTiLE Games
Fornnordisk mytologi
Midgård