Skriv en gång, kompilera var som helst
Skriv en gång, kompilera var som helst ( WOCA ) är en filosofi som tas av en kompilator och dess tillhörande mjukvarubibliotek eller av ett mjukvarubibliotek/ mjukvaruramverk som hänvisar till en förmåga att skriva ett datorprogram som kan kompileras på alla plattformar utan att behöva modifiera dess källkod . I motsats till Suns skriv en gång, kör slogan var som helst, implementeras plattformsoberoende kompatibilitet endast på källkodsnivå, snarare än också på den kompilerade binära kodnivån .
Introduktion
Det finns många språk som följer WOCA-filosofin, som C++ , Pascal (se Free Pascal ), Ada , Cobol eller C , under förutsättning att de inte använder funktioner utöver de som tillhandahålls av standardbiblioteket . Språk som Go går ännu längre såtillvida att inga systemspecifika saker används, det ska bara fungera, och för systemspecifika element används ett system med plattformsspecifika filer. Ett datorprogram kan också använda plattformsoberoende bibliotek, som tillhandahåller ett abstraktionslager som döljer skillnaderna mellan olika plattformar, för saker som sockets och GUI , vilket säkerställer portabiliteten för den skrivna källkoden. Detta stöds till exempel av Qt (C++) eller Lazarus (Pascal) IDE via dess LCL och motsvarande widgetset .
Idag har vi mycket kraftfulla stationära datorer såväl som datorer i våra telefoner, som ofta har sofistikerade applikationer som ordbehandling , databashantering och kalkylblad , som kan tillåta personer utan programmeringserfarenhet att, sortera, extrahera och manipulera sina data . och skapa dokument (som PDF- filer) som visar deras nu organiserade information, eller skriv ut den. Före 2000 var några av dessa inte tillgängliga, och före 1980 var nästan ingen av dem tillgängliga.
Från starten av datorautomatisering i början av 1960-talet, om du ville ha en rapport från data du hade eller behövde skriva ut fakturor , lönekontroller, inköpsorder och andra pappersarbete som genererades av företag, skolor och myndigheter, skrev du upp dem på en fysisk skrivmaskin, eventuellt med förtryckta blanketter. Annars, om du hade information lagrad i en dator och ville ha den sorterad, manipulerad eller utskriven, krävde det att någon skrev ett program för att göra det. I vissa fall behövde personen information om att professionella programmerare antingen inte kunde förstå hur man tillhandahåller ett program för att göra vad de ville; de tillgängliga programmerarna kunde inte producera något inom rimlig tid; eller att det inte fanns några programmerare de kunde använda, fick vissa icke-programmerande proffs att lära sig vissa programmeringsfärdigheter, åtminstone för att veta hur man manipulerar och skriver ut information de behövde från sina data.
Oavsett om arbetet utfördes av en professionell programmerare, eller en slutanvändare som skrev ett program för att ge dem information för eget bruk, är sättet att göra detta i båda fallen desamma. Skriv ett program, skicka in det till en kompilator (ett annat program som omvandlar skrivna program till instruktioner som datorn kan förstå), fixa eventuella fel och upprepa sedan tills programmet fungerade.
Även om detta hjälpte till att lösa en del av problemet skapade det ett nytt. Människor som skrev program, eller anlitade någon att skriva dem (köpa mjukvara var inget förrän på 1970- eller 1980-talen), upptäckte när deras arbetsgivare eller skola köpte en ny dator, deras program fungerade inte längre.
Historia
Ursprungligen gjordes programmering på skriftnivå genom att skriva program på assemblerspråk . Problemen med detta är att
- Det är den ultimata leverantörslåsningen eftersom dina program inte bara är knutna till den leverantörens hårdvara, utan till den specifika modellen av den tillverkarens hårdvara.
- Om du vill flytta till en mer kapabel eller kraftfullare maskin kanske din kod inte fungerar, vilket kräver att allt görs om.
- Om din leverantör går i konkurs, eller inte tillhandahåller en bättre modell, när du vill uppgradera måste du flytta till en annan leverantörs utrustning, och hela din investering går förlorad, av samma anledning som i föregående exempel.
- Monteringsspråket utvecklas långsamt. [ citat behövs ] Ett program på ett högnivåspråk idag (som C++ , Python , PHP eller Go ) kan ha en kodrad som skulle kräva dussintals assembly-språk-satser.
- Många människor som vill utveckla lösningar för ett visst problem och vill skapa ett program för att göra det, kanske inte vill ta sig tid att lära sig maskinspråket på en dator, men skulle vara villiga att lära sig att lära sig att skriva program för att lösa deras problem med att använda något mindre komplicerat.
Utveckling av programmeringsspråk på hög nivå
Dessa inkluderar:
- BASIC , ett förenklat programmeringsspråk som kunde användas för att bygga "verkliga" komplexa applikationer, såväl som enkla program för att lösa ett problem, och var mycket tillgängligt för amatörprogrammerare. Dess användarvänlighet gjorde BASIC väl lämpad som en inledande datorprogrammeringskurs på många högskolor.
- C , ett allmänt programmeringsspråk som ofta är lämpligt för att skriva program som annars skulle kräva assemblerspråk.
- Cobol , ett allmänt programmeringsspråk som tenderade att användas för att utveckla affärsapplikationer.
- Fortran , ett allmänt programmeringsspråk som är väl lämpat för vetenskapliga och tekniska problem.
- Pascal , ett allmänt programmeringsspråk, som tenderade att vara inriktat på användning i skolor som en introduktionsklass för att lära ut programmering som ett alternativ till BASIC. Pascal blev vanligt förekommande för hobbyprogrammerare på 1970- och 1980-talen på grund av att de var en del av en integrerad utvecklingsmiljö som tillåter en person att redigera, kompilera och köra sina program, vilket ger omedelbara resultat. Program som UCSD Pascal och Turbo Pascal öppnade upp programmeringsvärlden för miljontals människor,
- RPG , ett domänspecifikt programmeringsspråk utformat för att ta innehållet i datafiler, manipulera data och göra beräkningar, och sedan producera utskrivna rapporter, liknande det sätt som en person kan använda ett kalkylblad för att organisera data och skapa PDF- filer idag.
Medan kompilatorer och tolkar av alla dessa språk, och dussintals andra, fanns tillgängliga för olika maskiner och olika leverantörer, utvecklade ofta varje tillverkare proprietära förbättringar som gjorde programmering på den maskinen enklare, men återigen gjorde det svårt att porta programmen (flytta program till en annan typ av dator eller en annan leverantörs datorer), och ökad leverantörslåsning. Något måste ändras.
Standardisering
Med början i slutet av 1960-talet och början av 1970-talet började ansträngningar att skapa standarder och specifikationer för hur maskinoberoende program kunde skrivas med hjälp av kompilatorer från vilken leverantör som helst. Standardskapande organisationer, som International Standards Organization (ISO) och ANSI , bland andra, i samarbete med stora användare av datorer och programvara (som regeringar, finansiella institutioner och tillverkare), och datortillverkare, för att skapa standardiserade specifikationer för att tillhandahålla en beskrivning av hur varje specifikt språk ska implementeras.
Datortillverkarna kunde fortfarande ha sina egna proprietära tillägg till ett programmeringsspråk, men om de ville kunna hävda att standarden följs, var de tvungna att ange skillnaderna i referensmanualen, så att ett program skrivet enligt standarden kunde kompilera och arbeta på sin maskin skulle också fungera, utan ytterligare förändring, på en annan tillverkares dator vars kompilator också följde standarden. Kraven i standarden upprätthölls av stora mjukvaruköpare, såsom militär, regering och tillverkningsföretag, genom att vägra köpa sådan datorutrustning om leverantören bara erbjöd en kompilator för de programmeringsspråk de använde som inte var kompatibel med standarden ,
Resultat
För närvarande finns det mer än ett dussin programmeringsspråk som har standarder som beskriver hur program på språket ska skrivas, inklusive Ada , APL , BASIC , C++ , COBOL , ECMAScript (det generiska namnet för JavaScript ), Forth , FORTRAN , Pascal , PL/I , Ruby och SQL . Många av dessa används fortfarande, i vissa fall, eftersom kunderna kunde ta sin källkod till en annan tillverkares dator, där den kompilerades om, ofta utan förändring, på grund av standardiseringen av programmeringsspråk.
Även om standarderna hjälpte, fungerar WOCA-filosofin bara när skaparna av kompilatorer säkerställer att de följer standarden.