Vad menas med abstraktionsnivå
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. Sedan programmeringens barndom på och talet har många olika idéer och läror om programmering och hur man bäst organiserar och strukturerar framför allt stora program framförts. Parallellt med detta har hela tiden nya programspråk konstruerats för att ge stöd för dessa olika programmeringsparadigm. De problem med programmering som man försökt lösa har bland annat varit:. Huvudartikel: Strukturerad programmering. Dijkstra hävdade att ett oreglerat användande av hopp-satser i ett program ledde till oöverblickbara och ohanterliga program. Resultatet blev lätt vad man brukade kalla spagettiprogrammering med hopp fram och tillbaka och fel som var svåra att spåra.
Lösningen var att endast använda strukturerade satser som if-then-else och do-while istället för explicita hoppsatser. Man visade också att det alltid går att omforma ett ostrukturerat program till ett strukturerat program med samma funktion.
Dessa idéer är numera allmänt accepterade och de flesta moderna programspråk saknar till och med explicita hoppsatser. Man kan nog säga de problem som strukturerad programmering försökte lösa mycket hängde ihop med de tidiga programspråken som Fortran och COBOL och de möjligheter till spagettikodning som fanns i dessa. Många idéer uppstod också om på vilket sätt stora program skulle delas upp i mindre bitar, modulariseras , och hur dessa delar skulle tillåtas påverka varandra. En ståndpunkt representeras av funktionell programmering där bitarna, funktionerna , inte kan påverka andra bitar över huvud taget. Många språk räknas dock som funktionella trots att de inte har denna egenskap.
Abstraktionsnivå och vaga ord by Elin Örn
Funktionell programmering bygger på en matematisk grund, lambdakalkyl , vilket kan leda till ökade möjligheter till automatisk analys av funktionella program, till exempel i syfte att bevisa att programmet har en viss egenskap eller att en viss optimering är giltig. 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å 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. Idéerna bakom objektorienterad programmering har, i likhet med den tidigare strukturerade programmeringen, fått en mycket stor acceptans och stöd för detta 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 eller 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 procedurell programmering för det traditionella sättet.
Navigeringsmeny
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 idéer om designmönster som utvecklades under senare delen av 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 Ett annat spår inom programmering är logikprogrammering. Här ligger tyngdpunkten på att samla fakta och regler. Genom deduktion eller induktion kan sedan olika resultat automatiskt härledas. Logikprogrammering är nära besläktad med Artificiell intelligens AI. Det mest kända programspråket för logikprogrammering är Prolog.
Äran som den första programmeraren brukar tilldelas Ada Lovelace , dotter till Lord Byron. Hon hjälpte Charles Babbage i dennes arbete med den analytiska maskinen som brukar betraktas som det första exemplet på en dator , trots att den aldrig blev färdigställd. Hur man väljer beror på vilket syfte man har med abstraktionen. Människan bildar allmängiltiga begrepp genom abstraktion för att erfarenheter av ett föremål eller en företeelse ska kunna återanvändas vid kontakt med andra liknande föremål eller företeelser. Ordet "bil" är exempel på ett abstrakt begrepp. Man kan träffa på ett föremål som man aldrig sett förut och ändå känna igen det som en bil med alla egenskaper som brukar förknippas med bilar i allmänhet. Lagar som skrevs för 40 år sedan kan tillämpas på bilar som designas och tillverkas idag, därför att lagarna uttrycktes med abstrakta begrepp som kan fånga in även okända och framtida företeelser.
Högnivåspråk – Wikipedia
Begreppen utgör grunden för hela vår verklighetsuppfattning, och de ger oss också möjlighet att utveckla egna tankar om verkligheten. Ibland kallas begreppen i sig för abstraktioner eftersom de är resultat av en abstraktionsprocess. Om flera människor delar samma begrepp, och dessutom använder samma termer för dem, kan de utbyta erfarenheter genom samtal, planera arbete tillsammans eller berätta historier för varandra. Att lära sig något genom exempel eller liknelser kräver att man kan bortse från oväsentligheterna, att man på egen hand kan skapa en användbar abstraktion, och sedan känna igen andra situationer där den kan användas. Det har tidigare ansetts Platonism , Logisk positivism att abstraktioner är inneboende hos tingen i sig, men idag anser de flesta att de bara existerar som begrepp i hjärnan hos intelligenta betraktare såsom människor och djur [ källa behövs ]. Människor kan visserligen skapa abstraktioner genom medvetet tankearbete, men det är troligt att abstraktion i allmänhet sker i omedvetna tankeprocesser.
Vid verksamhetsanalys eller verksamhetsutveckling, är det alltsomoftast processer som vi tänker på. Det som förädlas i ett flöde, med hjälp av processer, är dock instanser av begrepp! Det är ofta mycket relevant vid verksamhetsanalys, att inventera och definiera verksamhetens centrala begrepp. Begreppen ordnas i en begreppsmodell, där begreppen definieras utifrån sin relation till andra begrepp. Det är vid denna begreppsanalys som en verksamhets logik och verksamhetens regler kan skördas. Begreppen är troligen det mest stabila som kan modelleras och beskrivas utifrån en verksamhet, och som sedan kan tillämpas i många olika verksamhetsperspektiv, i många olika processer, och kanske under olika namn termer.