Programmering handlar om att instruera en maskin eller del av en maskin, till exempel en mikrodator, dator, robot eller NC-maskin att utföra visst arbete. När man programmerar skriver man ett program och man använder ett programmeringsspråk. Olika delar av ett program kan vara skrivet i olika programspråk. Maskinen förstår normalt inte programspråket direkt. Detta måste översättas till den maskinkod som maskinen är konstruerad att direkt förstå. Programmering direkt i maskinkod förekommer praktiskt taget inte alls eftersom det är för arbetskrävande. Olika typer av maskiner har helt olika uppsättningar instruktioner i sin maskinkod. Begrepp förknippade med programmering är bland annat slingor och arrayer.
På nästa nivå kommer allmänna programmeringsspråk (engelska: general purpose computer languages) som till exempel C, Java och Pascal. I ett sådant språk motsvarar en sats eller instruktion normalt många instruktioner i maskinspråket. Till exempel kan satsen "saldo = tidigaresaldo - uttag;" motsvara maskininstruktioner för att hämta data från minnet till register, subtrahera innehållet i register och skriva tillbaka resultatet till minnet. Ett sådant program översätts, kompileras, till maskinkod av en kompilator eller interpreteras av en tolk.
Ytterligera en abstraktionsnivå uppnås när man inte längre direkt beskriver hur något ska utföras utan snarare vad som ska utföras. Detta förutsätter att man begränsat problemområdet på något sätt så att tolkaren eller kompilatorn kan använda färdiga dellösningar som sätts ihop till en totallösning för det aktuella problemet. Exempel på sådana språk är RPG för rapportgenerering, SQL för databassökningar och HTML för beskrivning av utseendet på en webbsida.
Programmering kan också delas in efter vad programmet utför. Närmast hårdvaran kommer här styrning av hårdvarukomponenter genom mikroprogrammering, till exempel BIOS i en persondator eller drivrutiner för olika utrustningar. Nästa nivå är operativsystemet som fördelar och administrerar datorns resurser och gör datorn almänt tillgänglig för människan genom ett användargränssnitt. Slutligen kommer nivån med alla olika användarprogram som ordbehandlare, webbläsare och datorspel. De första typerna av programmering görs av hårdvaruleverantörer, men operativsystem programmeras numera också av fristående programvaruleverantörer, som Microsoft, Apple Computer, Sun Microsystems, eller i distribuerade frivilligprojekt med öppen källkod.
Ibland använder man benämningen programvara (även det mer felaktiga mjukvara) för en samling program och deras tillhörande data.
Huvudartikel: Objektorienterad programmering
Andra tidiga idéer för modularisering av program handlade om att dela in koden efter de begrepp eller data som programmet hanterade. För vissa typer av problem är detta en mycket naturlig och intuitiv indelningsgrund. Ska man till exempel göra ett program för en bank är det naturligt att det finns en modul för konto och en för kontoinnehavare och så vidare. När dessa idéer kopplades till idéer om att information i en modul skulle inkapslas eller döljas i så stor utsträckning som möjligt för de andra modulerna så fick man effekten att förändringar av programmet ofta kunde begränsas till enstaka moduler och mindre ofta fick förändringarna oförutsedda effekter i andra delar av programmet.
På 1980-talet tillkom idén att begreppen bakom modulerna inte var oberoende av varandra utan kunde ses som förfiningar eller specialiseringar av ett grundbegrepp i olika nivåer så att man fick en hierarki av relaterade objekt där egenskaper kunde ärvas från överordnat till underordnat objekt. Exempelvis kunde ett bankkonto förfinas i sparkonto och kreditkonto med något olika egenskaper. De allra första ursprungen till denna objektorienterade programmering hade kommit redan i slutet på 1960-talet med språket Simula 67 men det var först med programspråket Smalltalk från Xerox omkring 1980 och C++ i slutet av 1980-talet som idéerna fick större spridning. Idéerna bakom objektorienterad programmering har, i likhet med den tidigare strukturerade programmeringen, fått en mycket stor acceptans och stöd för denna paradigm finns i en eller annan form i de flesta av de nyare programspråken. Fördelar som brukar framhållas är att funktioner som är gemensamma för många olika slags objekt/begrepp bara behöver kodas en gång och kan återanvändas av alla de objekt som behöver dem. Endast de funktioner som verkligen är olika mellan olika underordnade objekt behöver programmeras om. För att skilja mellan objektorienterad programmering och det "gamla" sättet att programmera myntades begreppet proceduriell programmering för det traditionella sättet. En omdebatterad fråga har varit om multipelt arv är nödvändigt eller inte. Med detta menas att ett begrepp ibland kan ses som en specialisering av flera olika överordnade begrepp. Till exempel kan objektet Lejon betraktas både som ett däggdjur och som ett rovdjur. Multipelt arv innebär vissa komplikationer som av vissa anses vara allvarligare än de fördelar som möjligheten ger.
Starkt knutet till objektorientering är också de de idéer om designmönster som utvecklades under senare delen av 1990-talet, med bland annat den epokgörande boken Design patterns, Elements of Reusable Object-Oriented Software av Erich Gamma, Richard Helm, Ralph Johnson och John Vlissides från 1995.
Ett konsollapplikationsexempel i C/C++ för Windows. Skriver som ovan ut "Klockan är nu hh:mm:ss" och inväntar en knapptryckning före avslut.
#include
Rekenaarprogrammering | Programazión | برمجة | Programación | কম্পিউটার প্রোগ্রামিং | Programiranje | Programování | Computerprogrammering | Programmierung | Computer programming | Programación | Programmeerimine | برنامهنویسی | Ohjelmistotuotanto | Génie logiciel | Innealtóireacht bogearraí | Enxeñaría de software | תכנות מחשבים | Számítógép-programozás | Pemrograman komputer | プログラミング (コンピュータ) | 컴퓨터 프로그래밍 | Programų inžinerija | Programminženierija | Programmeren | Programmering | Programowanie | Programação de computadores | Programare | Программирование | Softvérové inžinierstvo | Računalniško programiranje | மென்பொருள் பொறியியல் | วิศวกรรมซอฟต์แวร์ | Software engineering | Yazılım Mühendisliği | Програмування | Lập trình | קאמפיוטער פראגראמירונג | 程序设计
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Programmering".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world