Programmering

Hva er COBOL? COBOL-programmering forklart

Noen teknologier dør aldri - de blekner bare inn i treverket.

Spør den gjennomsnittlige programvareutvikleren om COBOL (Common Business Oriented Language), så ser de på deg som om du nevnte karbonpapir, blybensin eller 78 omdreininger per minutt. Sammenlignet med moderne språk som Go eller Python — eller til og med Pascal eller C! —COBOL virker ordrik, klønete, passé.

Men COBOL har holdt ut. COBOL er langt fra en foreldet teknologi vi gjerne har gått fra, og har blitt en institusjon. Massive COBOL-kodebaser er fortsatt i bruk over hele verden, mange av dem kjører nesten akkurat som de var da de ble opprettet. På Hollywood-språk har COBOL-språket "ben".

Så, ja, COBOL er fremdeles relevant og betimelig - faktisk smertefullt. I de siste månedene har COBOL kommet inn i offentlighetens bevissthet, ettersom stater som New Jersey har uttalt en oppfordring til programmerere om å hjelpe med å flytte COBOL-applikasjonene sine inn i det 21. århundre.

I dette stykket vil vi se på COBOLs opprinnelse, hvordan utformingen av programmeringsspråket skiller seg ut også i dag, og hva som gjør COBOL både så varig og så uoppnåelig.

COBOL historie

COBOL oppsto på slutten av 1950- og begynnelsen av 1960-tallet. Utviklingen av språket var et prosjekt sponset av USAs forsvarsdepartement (DoD) som inkluderte et konsortium av dataselskaper, inkludert IBM, Honeywell, Sperry Rand og Burroughs. Målet var å lage et programmeringsspråk med følgende attributter:

  • Bærbarhet mellom datasystemer, og dermed blir det lettere å migrere programvare både på tvers av generasjoner av maskinvare og mellom maskinvareprodusenter.
  • Mer engelsklignende syntaks enn andre tiders språk (f.eks. FORTRAN) som en måte å oppmuntre til programmering av et bredere publikum, selv om det koster noe operativ hastighet.
  • Evnen til å imøtekomme fremtidige endringer i språket.

De første offisielle COBOL-spesifikasjonene kom ut i 1960. I løpet av det neste tiåret, og til forskrekkelse for sine kritikere, ble COBOL standardvalget for å skrive forretningsapplikasjoner. En årsak til den raske spredningen var nettverkseffekter: IBM, en av de opprinnelige samarbeidspartnerne på språket, ble en aggressiv tidlig adopterer, og IBMs dominerende tilstedeværelse i databehandlingen bidro til å vedta COBOL.

På grunn av designfordelene og den tunge vektstøtten i bransjen, har COBOL sittet fast og overlevet de originale systemene den ble designet for med stor margin. Ifølge forskjellige estimater var COBOL innen 1970 det mest brukte programmeringsspråket i verden. I 1997 ble COBOL antatt å kjøre rundt 80 prosent av forretningsappene.

COBOL språk

Designerne av COBOL brøt med den kortfattede syntaksen til andre programmeringsspråk på den tiden (igjen, for eksempel FORTRAN). Tanken var å lage et programmeringsspråk som kunne leses og forstås av ikke-programmerere, spesielt regnskap, økonomi, forsikring og andre forretningsfolk.

Tenk på et “hei verden” -program skrevet i en tidlig dialekt av COBOL:

IDENTIFIKASJONSDELING.

PROGRAM-ID. HEI VERDEN.

PROSEDYREDELING.

VIS 'Hello World!'.

SLUTT-DISPLAY.

STOPP KJØR.

For moderne programvareutviklere som er oppdratt på tøffheten til språk som Python, er denne koden utdypende. Men ordlighetsgraden til COBOL (hvis ikke dens utførelse) kommer fra samme innbilskhet som informerer moderne språk som Python - den koden leses mange flere ganger enn den er skrevet, så den bør skrives for å være lesbar.

Et lignende program i en mer moderne versjon av COBOL kan se ut slik:

program-id. Hallo.

prosedyredeling.

vis "Hello world!".

stopp løp.

Selv om dette eksemplet er mer kortfattet, gjelder de samme grunnleggende prinsippene: Koden prøver å være eksplisitt om hva som skjer i hvert trinn.

COBOL har strenge regler for syntaks og intern organisering av programmer. Et COBOL-program er eksplisitt delt inn i seksjoner, eller divisjoner, som gjør det lettere å finne og forstå komponentene med et øyeblikk:

  • Identifikasjonsavdeling: I hovedsak en metadata-seksjon som inneholder detaljer om programmet, dets forfatter og så videre.
  • Miljøavdeling: Inneholder detaljer om kjøretidsmiljøet, for eksempel aliaser for eksterne enheter, som kan trenge redigering når du kjører programmet på annen maskinvare. Dette hjalp med å overføre et program mellom systemer, hvor for eksempel I / O kan håndteres helt annerledes.
  • Datadeling: Inneholderfil og arbeidslagring seksjoner, beskriver datainndelingen henholdsvis filene og variablene som brukes i programmet.
  • Prosedyreinndeling: Den faktiske programkoden bor her, brutt inn i logiske enheter som kalles seksjoner, avsnitt, setninger, og uttalelser. Det er fristende å analogisere disse strukturene til moduler eller funksjoner, fordi de tjener omtrent de samme funksjonene (deling av kode i blokker, med begrensede innganger og utganger), men de er langt mindre fleksible.

COBOL har også ekstremt strenge formateringsregler for koden, ned til antall mellomrom før en kommando. (Python-brukere vil finne dette kjent!) Noen av disse begrensningene er et biprodukt av COBOLs voksen alder i hovedrammetiden på 1960-tallet, da programmene ble kodet på stansede kort og den nøyaktige formateringen av 80-kolonnelinjene gjaldt. . Men andre formateringsbegrensninger håndhever lesbarheten.

Tanken bak den strenge regimenteringen av COBOL-programmene er å gjøre dem så selvdokumenterende som mulig. Tross alt hadde COBOL-programmer en tendens til å forbli på plass i mange år eller flere tiår. Hensikten (om ikke alltid sluttresultatet) var å gjøre hvert COBOL-program til en gjenstand som enhver COBOL-programmerer kunne forstå, selv år senere, uten hjelp fra programmereren som opprettet det.

COBOL utfordringer

Mye av COBOLs fortsatte utbredelse - og treghet - kommer av det faktum at COBOL-applikasjoner, når de først er skrevet, pleide å være på plass på ubestemt tid, med bare mindre endringer. Jo større og mer oppdragskritisk appen er, desto mindre sannsynlig var det å bli forstyrret. Mainframes, som IBMs tilbud, spilte en nøkkelrolle: De ble bygget for å være svært bakoverkompatible og for å kjøre eldre programvare - som COBOL-apper - på tvers av generasjoner av maskinvare med minimale modifikasjoner. Resultatet: Milliarder linjer med COBOL-kode som kjører stort sett uendret i flere tiår.

Gjennom årene har COBOL har utviklet seg, hvis sakte. Den har til og med nå en objektorientert variant, OO-COBOL, som inkluderer støtte for moderne funksjoner som Unicode, lokaliteter og mer avanserte datatyper utover strenger og heltall. Men COBOL beholder aggressivt bakoverkompatibilitet, så selv disse forbedringene og utvidelsene overholder mandatet om at eksisterende COBOL-applikasjoner må fortsette å kjøre.

Ikke alle COBOLs språkdesignvalg har vært populære blant COBOL-programmerere. Noen har ført til altfor kompliserte programmer som viste seg å være vanskelige å forstå eller feilsøke, og motvirke omskrivninger eller forbedringer. COBOL’s GÅ TIL kommando, som sin motstykke i C, tillot programmerere å hoppe fritt rundt et program, og dermed skrive kraftigere applikasjoner. Men udisiplinert bruk av GÅ TIL kunne gjøre et COBOL-program til et rottehus av vanskelig å spore kryssreferanser.

COBOL programmering i dag

COBOL overlever i dag i noen få inkarnasjoner. IBM vedlikeholder aktivt sine egne COBOL-implementeringer og opprettholder mange eksisterende COBOL-applikasjoner der de kjører. Micro Focus COBOL er en kommersiell COBOL-utgave som kjører på Microsoft Windows, samler COBOL-applikasjoner til Java og .NET, og til og med distribueres til skymiljøer som Azure. Du finner også open source-implementeringer av COBOL, for eksempel GnuCOBOL, som er fritt tilgjengelig og kompileres til innfødt maskinkode. Imidlertid kan de mangle noen av de mer avanserte distribusjons- eller feilsøkingsfunksjonene til de kommersielle COBOL-ene.

Mens COBOL fortsatt er i vidt bruk, blir dyp COBOL-ekspertise vanskeligere å få tak i for hvert år som går. Som et resultat, må mange tidligere COBOL-programmerere bli lokket ut av pensjon for å snu eldre applikasjoner inn i det 21. århundre. Ofte er det ikke COBOL-programmeringskunnskap som har det beste, men intim forståelse av hovedrammemiljøene der COBOL kjører. Mange COBOL-applikasjoner fungerer hånd i hånd med eldre teknologi som IBMs IMS- og CICS-transaksjonsstyrings- og databasesystemer, som alle krever kompetanse som blir stadig sjeldnere.

Så gammeldags som COBOL kan synes, har behovet for COBOL språk- og utviklingsmiljøkompetanse vokst for hvert år som går. Stillinger for COBOL og beslektet ekspertise florerer. I mars 2020 ringte New Jersey ut en nødanrop for COBOL-programmerere for å oppgradere statlige dagpenger i kjølvannet av COVID-19-krisen.

Lær COBOL

Læringsressurser for COBOL sprer seg igjen, gitt den økende etterspørselen etter språket. Moderne utviklere som ønsker å komme i gang med dette mest varige språket, har noen få alternativer:

  • University of Limerick, i Irland, tilbyr et komplett COBOL programmeringskurs online, med tillatelse fra Institutt for informatikk og informasjonssystemer. Det er ikke så oppdatert som noen andre ressurser, men gitt hvor lite COBOL endres over tid, er det ikke nødvendigvis en mangel.
  • Open Mainframe Project (en del av Linux Foundation) tilbyr også COBOL-ressurser. Den ene er et fullkurs i COBOL-programmering, medsponsert av IBM. Det er mer moderne enn University of Limerick-kurset, og skreddersydd til IBMs zOS-implementering av COBOL, som er en mye distribuert versjon av språket.

COBOL har vært en stift for forretningscomputere i flere tiår, og etterspørselen etter COBOL-programmeringstalent fortsetter bare å vokse. Hvis vedlikehold eller modernisering av COBOL-programmer interesserer deg, virker tiden mer moden enn noensinne å dykke i.