Ohjelmointi

Mikä on COBOL? COBOL-ohjelmointi on selitetty

Jotkut tekniikat eivät koskaan kuole - ne vain haalistuvat puutöihin.

Kysy keskimääräiseltä ohjelmistokehittäjältä COBOL-kielestä (Common Business Oriented Language), ja he tarkastelevat sinua ikään kuin mainitsit hiilipaperin, lyijypitoisen bensiinin tai 78 kierrosta minuutissa. Verrattuna nykyaikaisiin kieliin, kuten Go tai Python - tai jopa Pascal tai C! -, COBOL näyttää sanalliselta, kömpelöltä, passiiviselta.

Mutta COBOL on kestänyt. COBOLista on tullut laitos, joka ei ole vanhentunut tekniikka, jonka kanssa olemme olleet onnellisesti erossa. Massiiviset COBOL-koodikannat ovat edelleen käytössä ympäri maailmaa, monet niistä toimivat melkein täsmälleen samalla tavalla kuin ne perustettiin ensimmäisen kerran. Hollywoodin kielellä COBOL-kielellä on "jalat".

Joten kyllä, COBOL on edelleen merkityksellinen ja ajankohtainen - tosiasiallisesti tuskallista. Viime kuukausina COBOL on palannut yleiseen tietoisuuteen, kun New Jerseyn kaltaiset osavaltiot ovat pyytäneet ohjelmoijia auttamaan siirtämään COBOL-sovelluksensa 2000-luvulle.

Tässä kappaleessa tarkastelemme COBOLin alkuperää, miten ohjelmointikielen muotoilu erottuu nykyäänkin ja mikä tekee COBOLista sekä niin kestävän että niin hankalan.

COBOL-historia

COBOL syntyi 1950-luvun lopulla ja 1960-luvun alussa. Kielen kehitys oli Yhdysvaltain puolustusministeriön (DoD) tukema projekti, johon kuului konsortio tietokoneyrityksiä, kuten IBM, Honeywell, Sperry Rand ja Burroughs. Tavoitteena oli luoda ohjelmointikieli seuraavilla ominaisuuksilla:

  • Siirrettävyys tietokonejärjestelmien välillä, mikä helpottaa ohjelmistojen siirtämistä sekä laitteistosukupolvien välillä että laitteistovalmistajien välillä.
  • Enemmän englanninkielistä syntaksia kuin muilla aikakausilla (esim. FORTRAN) keinona rohkaista ohjelmointia laajemmalle yleisölle, vaikka jonkin nopeuden kustannuksella.
  • Kyky ottaa huomioon kielen tulevat muutokset.

Ensimmäiset viralliset COBOL-spesifikaatiot ilmestyivät vuonna 1960. Seuraavan vuosikymmenen aikana ja kriitikoidensa hämmennykseksi COBOLista tuli oletusvalinta liiketoimintasovellusten kirjoittamisessa. Yksi syy sen nopeaan leviämiseen oli verkkovaikutukset: IBM: stä, joka oli yksi kielen alkuperäisistä yhteistyökumppaneista, tuli aggressiivinen varhainen käyttöönottaja, ja IBM: n hallitseva läsnäolo tietokonemaailmassa auttoi osaltaan COBOL-käyttöönottoa.

Suunnittelun etujensa ja raskaan teollisuuden tukemansa ansiosta COBOL on juuttunut ympärilleen ja ylittänyt suunnitellut alkuperäiset järjestelmät huomattavasti. Eri arvioiden mukaan vuoteen 1970 mennessä COBOL oli käytetyin ohjelmointikieli maailmassa. Vuoteen 1997 mennessä COBOLin uskottiin käyttävän noin 80 prosenttia yrityssovelluksista.

COBOL-kieli

COBOLin suunnittelijat irtisanoutuivat muiden ohjelmointikielien sanallisesta syntaksista tuolloin (jälleen, kuten FORTRAN). Ajatuksena oli luoda ohjelmointikieli, jonka muut ohjelmoijat, erityisesti kirjanpito-, rahoitus-, vakuutus- ja muut liike-elämän ammattilaiset, lukisivat ja ymmärtäisivät.

Harkitse "hei maailma" -ohjelmaa, joka on kirjoitettu COBOLin varhaisessa murteessa:

TUNNISTETIEDOT.

OHJELMAN TUNNUS. HEI MAAILMA.

MENETTELYJAKELU.

NÄYTÄ "Hei maailma!".

LOPPU-NÄYTTÖ.

PYSÄYTÄ AJOITUS.

Nykyaikaisille ohjelmistokehittäjille, jotka ovat kasvaneet Pythonin kaltaisten kielten keskellä, tämä koodi on monipuolinen. Mutta COBOLin sanamuoto (ellei sen suorittaminen) johtuu samasta itsevarmuudesta, joka ilmoittaa nykyaikaisille kielille, kuten Pythonille - että koodi luetaan monta kertaa enemmän kuin kirjoitetaan, joten se on kirjoitettava luettavaksi.

Vastaava ohjelma COBOLin nykyaikaisemmassa versiossa saattaa näyttää tältä:

ohjelman tunnus. Hei.

menettelyjako.

näyttö "Hei maailma!".

lopeta juoksu.

Vaikka tämä esimerkki on ytimekkäämpi, sovelletaan samoja perusperiaatteita: Koodi pyrkii olemaan selvä siitä, mitä kussakin vaiheessa tapahtuu.

COBOLilla on tiukat säännöt syntaksista ja ohjelmien sisäisestä organisaatiosta. COBOL-ohjelma on nimenomaisesti jaettu osioihin tai jakoihin, jotka helpottavat komponenttien löytämistä ja ymmärtämistä yhdellä silmäyksellä:

  • Tunnistusjako: Pohjimmiltaan metatieto-osio, joka sisältää tietoja ohjelmasta, sen kirjoittajasta ja niin edelleen.
  • Ympäristöjako: Sisältää tietoja ajonaikaisesta ympäristöstä, esimerkiksi aliaksia ulkoisille laitteille, joita on ehkä muokattava suoritettaessa ohjelmaa eri laitteistoilla. Tämä helpottaa ohjelman siirrettävyyttä järjestelmien välillä, joissa esimerkiksi I / O: ta voidaan käsitellä täysin eri tavalla.
  • Tiedonjako: Sisältävättiedosto ja toimiva varastointi osioissa, Datajako kuvaa ohjelmassa käytetyt tiedostot ja muuttujat (vastaavasti).
  • Menettelyjako: Varsinainen ohjelmakoodi asuu täällä, jaettuna loogisiin yksiköihin, joita kutsutaan jaksot, kappaleet, lauseetja lausunnot. On houkuttelevaa analysoida nämä rakenteet moduuleiksi tai toiminnoiksi, koska ne palvelevat suunnilleen samoja toimintoja (koodin jakaminen lohkoiksi, rajoitetuilla tuloilla ja lähdöillä), mutta ne ovat paljon vähemmän joustavia.

COBOLilla on myös erittäin tiukat koodin muotoilusäännöt komentoa edeltävien välilyöntien määrään saakka. (Python-käyttäjät löytävät tämän tutuksi!) Jotkut näistä rajoituksista ovat sivutuote COBOLin ikääntymisestä 1960-luvun keskusyksikön aikakaudella, jolloin ohjelmat koodattiin rei'itettyihin kortteihin ja 80 sarakkeen rivien tarkka muotoilu oli merkitystä. . Mutta muut muotoilurajoitukset pakottavat luettavuuden.

COBOL-ohjelmien tiukan rykmentoinnin idea on tehdä niistä mahdollisimman itsedokumentoivat. Loppujen lopuksi COBOL-ohjelmilla oli tapana pysyä paikallaan vuosien tai vuosikymmenien ajan. Tarkoitus (ellei aina lopputulos) oli tehdä jokaisesta COBOL-ohjelmasta esine, jonka kuka tahansa COBOL-ohjelmoija voisi ymmärtää jopa vuosia myöhemmin, ilman sen luoneen ohjelmoijan apua.

COBOL-haasteet

Suuri osa COBOLin jatkuvasta esiintyvyydestä - ja inertiasta - johtuu siitä, että kerran kirjoitetut COBOL-sovellukset yleensä jättivät paikoilleen loputtomiin, vain pienin muutoksin. Mitä isompi ja kriittisempi sovellus on, sitä vähemmän todennäköistä, että sitä häiritään. Keskusyksiköillä, kuten IBM: n tarjonnalla, oli keskeinen rooli: Ne on rakennettu erittäin taaksepäin yhteensopiviksi ja käyttämään vanhoja ohjelmistoja - kuten COBOL-sovelluksia - useiden sukupolvien laitteistoissa minimaalisilla muutoksilla. Tulos: Miljardit rivit COBOL-koodia, jotka ovat olennaisesti muuttumattomia vuosikymmenien ajan.

Vuosien varrella COBOL on kehittynyt, joskin hitaasti. Siinä on nyt myös olio-suuntautunut muunnos, OO-COBOL, joka sisältää tuen moderneille ominaisuuksille, kuten Unicode, lokalit ja edistyneemmille tietotyypeille merkkijonojen ja kokonaislukujen ulkopuolella. Mutta COBOL säilyttää aggressiivisesti taaksepäin yhteensopivuuden, joten jopa nämä parannukset ja laajennukset noudattavat mandaattia, jonka mukaan nykyisten COBOL-sovellusten on jatkettava käyttöä.

Kaikki COBOLin kielen suunnitteluvaihtoehdot eivät ole olleet suosittuja COBOL-ohjelmoijien keskuudessa. Jotkut ovat johtaneet liian monimutkaisiin ohjelmiin, jotka ovat osoittautuneet vaikeasti ymmärrettäviksi tai virheenkorjauksiksi, lannistavat uudelleenkirjoittamista tai parannuksia. COBOL MENE komento, samoin kuin vastaava C: ssä, antoi ohjelmoijille mahdollisuuden hypätä vapaasti ohjelman ympärille ja kirjoittaa siten tehokkaampia sovelluksia. Mutta kurinalaista käyttöä MENE voisi muuttaa COBOL-ohjelman rotan vaikeasti jäljitettävien ristiviittausten pesäksi.

COBOL-ohjelmointi tänään

COBOL selviää tänään muutamassa inkarnaatiossa. IBM ylläpitää aktiivisesti omia COBOL-toteutuksiaan ja ylläpitää monia olemassa olevia COBOL-sovelluksia, joissa ne toimivat. Micro Focus COBOL on kaupallinen COBOL-versio, joka toimii Microsoft Windowsissa, kokoaa COBOL-sovellukset Java- ja .NET-sovelluksiin ja jopa pilviympäristöihin, kuten Azure. Löydät myös avoimen lähdekoodin COBOL-sovellukset, kuten GnuCOBOL, jotka ovat vapaasti saatavilla ja käännettävissä alkuperäiseen konekoodiin. Niistä saattaa kuitenkin puuttua joitain kaupallisten COBOLien edistyneempiä käyttöönotto- tai virheenkorjausominaisuuksia.

Vaikka COBOL on edelleen laajalti käytössä, COBOLin syvällistä asiantuntemusta on yhä vaikeampaa saada joka vuosi. Tämän seurauksena monet entiset COBOL-ohjelmoijat on houkuteltava eläkkeelle vanhempien sovellusten houkuttelemiseksi 2000-luvulle. Usein COBOL-ohjelmointitieto ei ole eniten, mutta läheinen käsitys COBOLin käyttämistä keskusyksikköympäristöistä. Monet COBOL-sovellukset toimivat käsi kädessä vanhojen tekniikoiden kanssa, kuten IBM: n IMS- ja CICS-tapahtumien hallinta ja tietokantajärjestelmät, jotka kaikki edellyttävät yhä harvinaisempaa asiantuntemusta.

Niinpä niin vanhanaikaisena kuin COBOL saattaa tuntua, tarve COBOL-kieli- ja kehitysympäristöosaamiseen on kasvanut joka vuosi. COBOLin työpaikkailmoitukset ja niihin liittyvä asiantuntemus ovat runsaat. Maaliskuussa 2020 New Jersey esitti hätäpuhelun COBOL-ohjelmoijille auttaakseen päivittämään valtion työttömyysetuusjärjestelmiä COVID-19-kriisin seurauksena.

Opi COBOL

COBOL-oppimisresurssit lisääntyvät jälleen, kun otetaan huomioon kielen kasvava kysyntä. Nykyaikaisilla kehittäjillä, jotka haluavat päästä vauhtiin tällä kestävimmällä kielellä, on muutama vaihtoehto:

  • Limerickin yliopisto, Irlanti, tarjoaa täydellisen COBOL-ohjelmointikurssin verkossa tietotekniikan ja tietojärjestelmien laitoksen luvalla. Se ei ole yhtä ajan tasalla kuin jotkut muut resurssit, mutta kun otetaan huomioon, kuinka vähän COBOL muuttuu ajan myötä, se ei välttämättä ole vika.
  • Open Mainframe -projekti (osa Linux-säätiötä) tarjoaa myös COBOL-resursseja. Yksi on kokonainen COBOL-ohjelmoinnin kurssi, jota IBM tukee. Se on nykyaikaisempi kuin Limerickin yliopiston kurssi ja räätälöity IBM: n zOS-käyttöönotolle COBOL, joka on kielen laajasti käytetty versio.

COBOL on ollut liiketoiminnan laskennan päätuote vuosikymmenien ajan, ja COBOL-ohjelmointikykyjen kysyntä vain jatkaa kasvuaan. Jos COBOL-ohjelmien ylläpito tai nykyaikaistaminen kiinnostaa sinua, aika näyttää olevan kypsempi kuin koskaan ennen.

$config[zx-auto] not found$config[zx-overlay] not found