Programmering

Hvad er COBOL? COBOL-programmering forklaret

Nogle teknologier dør aldrig - de falmer bare ind i træværket.

Spørg den gennemsnitlige softwareudvikler om COBOL (Common Business Oriented Language), og de ser på dig som om du nævnte kulstofpapir, blyholdig benzin eller 78 omdrejninger pr. Minut. Sammenlignet med moderne sprog som Go eller Python - eller endda Pascal eller C! —COBOL virker ordrig, klodset, passé.

Men COBOL har holdt ud. Langt fra en forældet teknologi, som vi med glæde har skilt os fra, er COBOL blevet en institution. Massive COBOL-kodebaser er stadig i brug rundt om i verden, hvoraf mange kører næsten nøjagtigt som de var, da de blev oprettet. På Hollywood-sprog har COBOL-sproget "ben".

Så ja, COBOL er stadig relevant og rettidigt - faktisk smertefuldt. I de seneste måneder er COBOL igen kommet ind i offentlighedens bevidsthed, da stater som New Jersey har fremsat et opfordring til programmører om at hjælpe med at flytte deres COBOL-applikationer ind i det 21. århundrede.

I dette stykke vil vi se på COBOLs oprindelse, hvordan designet af programmeringssprog skiller sig ud i dag, og hvad der gør COBOL både så varig og så uhåndterlig.

COBOL historie

COBOL opstod i slutningen af ​​1950'erne og begyndelsen af ​​1960'erne. Udviklingen af ​​sproget var et projekt sponsoreret af det amerikanske forsvarsministerium (DoD), der omfattede et konsortium af computerselskaber, herunder IBM, Honeywell, Sperry Rand og Burroughs. Målet var at oprette et programmeringssprog med følgende attributter:

  • Bærbarhed mellem computersystemer, hvilket gør det lettere at migrere software både på tværs af generationer af hardware og mellem hardwareproducenter.
  • Mere engelsklignende syntaks end andre tidssprog (f.eks. FORTRAN) som en måde at tilskynde til programmering af et bredere publikum, selvom det koster en vis operationel hastighed.
  • Evnen til at imødekomme fremtidige ændringer i sproget.

De første officielle COBOL-specifikationer kom ud i 1960. I løbet af det næste årti og til kritikens foruroligelse blev COBOL standardvalget til at skrive forretningsapplikationer. En af grundene til dens hurtige spredning var netværkseffekter: IBM, en af ​​de oprindelige samarbejdspartnere på sproget, blev en aggressiv tidlig adopter, og IBMs dominerende tilstedeværelse i computerverdenen hjalp med til at bidrage til COBOL-adoption.

På grund af dets designfordele og tunge industristøtte har COBOL sat sig fast og overlever de originale systemer, den var designet til med en bred margin. Ifølge forskellige skøn var COBOL i 1970 det mest anvendte programmeringssprog i verden. I 1997 blev COBOL antaget at køre omkring 80 procent af forretningsapps.

COBOL sprog

Designerne af COBOL brød med den kortfattede syntaks for andre programmeringssprog på det tidspunkt (igen, såsom FORTRAN). Ideen var at skabe et programmeringssprog, der kunne læses og forstås af ikke-programmører, især regnskab, økonomi, forsikring og andre forretningsfolk.

Overvej et “hej verden” -program skrevet i en tidlig dialekt af COBOL:

IDENTIFIKATION AFDELING.

PROGRAM-ID. HEJ VERDEN.

PROCEDUREOPDELING.

VIS 'Hello World!'.

SLUTDISPLAY.

STOP KØR.

For moderne softwareudviklere, der er opdrættet på sparsommelighed for sprog som Python, er denne kode uddybet. Men ordligheden i COBOL (hvis ikke dens udførelse) stammer fra den samme indbildskhed, der informerer moderne sprog som Python - den kode læses mange flere gange, end den er skrevet, så den skal skrives for at være læsbar.

Et lignende program i en mere moderne version af COBOL kan se sådan ud:

program-id. Hej.

procedure opdeling.

vis "Hej verden!".

stop løb.

Mens dette eksempel er mere kortfattet, gælder de samme grundlæggende principper: Koden stræber efter at være eksplicit om, hvad der foregår ved hvert trin.

COBOL har strenge regler for syntaks og den interne organisering af programmer. Et COBOL-program er eksplicit opdelt i sektioner, eller divisioner, der gør det nemmere at finde og forstå dets komponenter på et øjeblik:

  • Identifikationsafdeling: I det væsentlige en metadata sektion, der indeholder detaljer om programmet, dets forfatter osv.
  • Miljøafdeling: Indeholder detaljer om runtime-miljøet, for eksempel aliaser for eksterne enheder, som muligvis skal redigeres, når programmet køres på anden hardware. Dette understøttede bærbarheden af ​​et program mellem systemer, hvor for eksempel I / O muligvis håndteres helt anderledes.
  • Datadeling: Indeholderfil og arbejder opbevaring sektioner, beskriver datadivisionen henholdsvis de filer og variabler, der bruges i programmet.
  • Procedureinddeling: Den aktuelle programkode bor her, opdelt i logiske enheder kaldet sektioner, afsnit, sætningerog udsagn. Det er fristende at analogisere disse strukturer til moduler eller funktioner, fordi de tjener nogenlunde de samme funktioner (opdeling af kode i blokke med begrænsede input og output), men de er langt mindre fleksible.

COBOL har også ekstremt strenge formateringsregler for koden ned til antallet af mellemrum, der går forud for en kommando. (Python-brugere finder dette velkendt!) Nogle af disse begrænsninger er et biprodukt af COBOLs kommende alder i 1960'ernes mainframe-æra, hvor programmer blev kodet på stansede kort og den nøjagtige formatering af 80-søjlelinjer var vigtige . Men andre formateringsbegrænsninger håndhæver læsbarhed.

Ideen bag den strenge regimentering af COBOL-programmer er at gøre dem så selvdokumenterende som muligt. Når alt kommer til alt, havde COBOL-programmer tendens til at forblive på plads i år eller årtier. Hensigten (hvis ikke altid slutresultatet) var at gøre hvert COBOL-program til en artefakt, som enhver COBOL-programmør kunne forstå, selv år senere, uden hjælp fra programmøren, der oprettede det.

COBOL udfordringer

En stor del af COBOLs fortsatte prævalens - og inerti - stammer fra det faktum, at COBOL-applikationer, når de først er skrevet, havde tendens til at være på plads på ubestemt tid med kun mindre ændringer. Jo større og mere missionskritisk appen er, desto mindre sandsynligt var den at blive forstyrret. Mainframes, ligesom IBMs tilbud, spillede en nøglerolle: De blev bygget til at være meget bagudkompatible og til at køre ældre software - som COBOL-apps - på tværs af generationer af hardware med minimale ændringer. Resultatet: Milliarder linjer med COBOL-kode, der kører stort set uændret i årtier.

I årenes løb har COBOL har udviklet sig, hvis langsomt. Det har endda en objektorienteret variant, OO-COBOL, som inkluderer understøttelse af moderne funktioner som Unicode, lokaliteter og mere avancerede datatyper ud over strenge og heltal. Men COBOL bevarer aggressivt bagudkompatibilitet, så selv disse forbedringer og udvidelser overholder mandatet om, at eksisterende COBOL-applikationer skal fortsætte med at køre.

Ikke alle COBOLs valg af sprogdesign har været populære hos COBOL-programmører. Nogle har ført til alt for komplekse programmer, der viste sig vanskelige at forstå eller fejle, hvilket afskrækker omskrivninger eller forbedringer. COBOL'er GÅ TIL kommando, ligesom sin modstykke i C, tillod programmører at hoppe frit rundt i et program og dermed skrive mere kraftfulde applikationer. Men udisciplineret brug af GÅ TIL kunne gøre et COBOL-program til en rotte rede af svært at spore krydsreferencer.

COBOL programmering i dag

COBOL overlever i dag i nogle få inkarnationer. IBM vedligeholder aktivt sine egne COBOL-implementeringer og opretholder mange eksisterende COBOL-applikationer, hvor de kører. Micro Focus COBOL er en kommerciel COBOL-udgave, der kører på Microsoft Windows, samler COBOL-applikationer til Java og .NET og endda implementeres i skymiljøer som Azure. Du finder også open source-implementeringer af COBOL, såsom GnuCOBOL, som er frit tilgængelige og kompileres til native maskinkode. De mangler dog muligvis nogle af de mere avancerede implementerings- eller fejlretningsfunktioner i de kommercielle COBOL'er.

Mens COBOL stadig er i bred anvendelse, bliver dyb COBOL-ekspertise sværere at få med hvert år, der går. Som et resultat skal mange tidligere COBOL-programmerere lokkes ud af pension for at kvæle ældre applikationer ind i det 21. århundrede. Ofte er det ikke COBOL-programmeringsviden, der er mest til en præmie, men intim forståelse af mainframe-miljøer, hvor COBOL kører. Mange COBOL-applikationer arbejder hånd i hånd med ældre teknologi såsom IBMs IMS- og CICS-transaktionsstyrings- og databasesystemer, som alle kræver ekspertise, der bliver mere og mere sjælden.

Således som old-school som COBOL kan synes, er behovet for COBOL sprog- og udviklingsmiljøekspertise vokset med hvert år der går. Joblister for COBOL og relateret ekspertise findes i overflod. I marts 2020 fremsatte New Jersey et nødopkald til COBOL-programmører for at hjælpe med at opgradere statslige dagpengesystemer i kølvandet på COVID-19-krisen.

Lær COBOL

Læringsressourcer til COBOL spreder sig igen i betragtning af den stigende efterspørgsel efter sproget. Moderne udviklere, der ønsker at komme op i hastighed med denne mest vedholdende sprog, har et par muligheder:

  • University of Limerick, i Irland, tilbyder et komplet COBOL programmeringskursus online med tilladelse til dets Institut for Computervidenskab og Informationssystemer. Det er ikke så opdateret som nogle andre ressourcer, men i betragtning af hvor lidt COBOL ændrer sig med tiden, er det ikke nødvendigvis en fejl.
  • Open Mainframe Project (en del af Linux Foundation) tilbyder også COBOL-ressourcer. Den ene er et fuldt kursus i COBOL programmering, co-sponsoreret af IBM. Det er mere moderne end University of Limerick-kurset og skræddersyet til IBMs zOS-implementering af COBOL, som er en udbredt version af sproget.

COBOL har været en fast bestanddel af forretningscomputering i årtier, og efterspørgslen efter COBOL-programmeringstalent fortsætter kun med at vokse. Hvis vedligeholdelse eller modernisering af COBOL-programmer interesserer dig, ser tiden ud til at være mere moden end nogensinde før.