Što je COBOL? Objašnjeno programiranje COBOL-a

Neke tehnologije nikada ne umiru - one jednostavno nestanu u drvenoj industriji. 

Pitajte prosječnog programera softvera o COBOL-u (Common Business Oriented Language) i oni će vas gledati kao da ste spomenuli karbonski papir, olovni benzin ili rekord od 78 o / min. U usporedbi s modernim jezicima poput Go ili Pythona - ili čak Pascala ili C! - COBOL djeluje rječito, nezgrapno, passé.

Ali COBOL je izdržao. Daleko od zastarjele tehnologije s kojom smo se sretno rastali, COBOL je postao institucija. Masivne baze kodova COBOL i dalje se koriste širom svijeta, a mnoge od njih rade gotovo točno onako kako su bile kad su prvi put stvorene. U holivudskom jeziku, jezik COBOL ima "noge".

Dakle, da, COBOL je i dalje relevantan i pravodoban - zapravo bolno. Posljednjih mjeseci COBOL je ponovno ušao u javnu svijest, jer su države poput New Jerseya uputile poziv programerima da pomognu premjestiti svoje aplikacije COBOL u 21. stoljeće.

U ovom ćemo dijelu pogledati podrijetlo COBOL-a, kako se dizajn programskog jezika ističe i danas i što COBOL čini i tako trajnim i tako nerazrješivim.

Povijest COBOL-a

COBOL je nastao krajem 1950-ih i početkom 1960-ih. Razvoj jezika bio je projekt sponzoriran od Ministarstva obrane Sjedinjenih Država (DoD) koji je uključivao konzorcij računalnih tvrtki, uključujući IBM, Honeywell, Sperry Rand i Burroughs. Cilj je bio stvoriti programski jezik sa sljedećim atributima:

  • Prenosivost između računalnih sustava, što olakšava migraciju softvera i među generacijama hardvera i između proizvođača hardvera.
  • Sintaksa nalik engleskoj poput ostalih jezika tog vremena (npr. FORTRAN) kao način poticanja programiranja od šire publike, čak i ako to ide na štetu neke operativne brzine.
  • Sposobnost prilagodbe budućim promjenama jezika.

Prve službene specifikacije COBOL-a izašle su 1960. Tijekom sljedećeg desetljeća, i na zaprepaštenje svojih kritičara, COBOL je postao zadani izbor za pisanje poslovnih aplikacija. Jedan od razloga brzog širenja bili su mrežni učinci: IBM, jedan od izvornih suradnika na tom jeziku, postao je agresivni ranoprimjeljivač, a IBM-ova dominantna prisutnost u računalnom svijetu pomogla je pridonijeti usvajanju COBOL-a.

Zbog svojih dizajnerskih prednosti i teške industrijske podloge, COBOL se zadržao, nadživjevši originalne sustave za koje je dizajniran s velikom marginom. Prema raznim procjenama, COBOL je do 1970. godine bio najčešće korišten programski jezik na svijetu. Do 1997. godine vjerovalo se da COBOL pokreće oko 80 posto poslovnih aplikacija.

Jezik COBOL

Dizajneri COBOL-a prekinuli su s kratkom sintaksom drugih programskih jezika u to vrijeme (opet, poput FORTRAN-a). Ideja je bila stvoriti programski jezik koji bi mogli čitati i razumjeti ne-programeri, posebno računovodstvo, financije, osiguranje i drugi poslovni profesionalci.

Razmotrite program "pozdrav svijetu" napisan na ranom dijalektu COBOL-a:

IDENTIFIKACIJSKI PODJEL.

PROGRAM-ID. POZDRAV SVIJETE.

PODJELA POSTUPKA.

ZASLON "Hello World!".

KRAJ-PRIKAZ.

STOP RUNU.

Za suvremene programere softvera koji se bave kratkoćom jezika poput Pythona, ovaj je kôd opširan. Ali opširnost COBOL-a (ako ne i njegovo izvršavanje) izvire iz iste uobraženosti koja informira moderne jezike poput Pythona - taj se kôd čita puno više puta nego što je napisan, pa bi ga trebalo napisati da bude čitljiv.

Sličan program u modernijoj verziji COBOL-a mogao bi izgledati otprilike ovako:

program-id. zdravo.

podjela postupka.

prikaz "Pozdrav svijetu!".

zaustaviti trčanje.

Iako je ovaj primjer sažetiji, primjenjuju se isti osnovni principi: kôd nastoji biti jasan o tome što se događa u svakom koraku.

COBOL ima stroga pravila u pogledu sintakse i unutarnje organizacije programa. Program COBOL izričito je podijeljen na odjeljke ili odjele koji olakšavaju brz pronalazak i razumijevanje njegovih komponenata:

  • Podjela identifikacije: U osnovi odjeljak s metapodacima, koji sadrži detalje o programu, njegovom autoru i tako dalje.
  • Podjela na okoliš: Sadrži detalje o runtime okruženju, na primjer pseudonime za vanjske uređaje, koji će možda trebati urediti kada se program izvodi na različitom hardveru. To je pomoglo prenosivosti programa između sustava, gdje bi se, na primjer, I / O moglo postupati potpuno drugačije.
  • Podjela podataka: Sadrži  datoteke i radne odjeljke za pohranu , Podjela podataka opisuje datoteke i varijable (odnosno) koje se koriste u programu.
  • Podjela postupka: Stvarni programski kod ovdje živi, ​​podijeljen u logičke cjeline koje se nazivaju odjeljci, odlomci, rečenice i iskazi . Primamljivo je analizirati ove strukture s modulima ili funkcijama, jer one služe približno istim funkcijama (dijeleći kôd u blokove, s ograničenim ulazima i izlazima), ali su daleko manje fleksibilne.

COBOL također ima izuzetno stroga pravila oblikovanja koda, sve do broja razmaka koji prethode naredbi. (Korisnici Pythona to će smatrati poznatim!) Neka od ovih ograničenja nusproizvod su COBOL-ove punoljetnosti tijekom ere glavnog računala 1960-ih, kada su programi kodirani na bušenim karticama i bilo je važno točno oblikovanje redaka od 80 stupaca . Ali druga ograničenja oblikovanja nameću čitljivost.

Ideja stroge regulacije programa COBOL je učiniti ih što je više moguće samo-dokumentiranjem. Napokon, programi COBOL-a uglavnom su postojali godinama ili desetljećima. Namjera (ako ne i uvijek krajnji rezultat) bila je od svakog programa COBOL napraviti artefakt koji bi svaki programer COBOL-a mogao razumjeti, čak i godinama kasnije, bez pomoći programera koji ga je stvorio. 

Izazovi COBOL-a

Većina kontinuirane prevalencije COBOL-a - i inertnosti - proizlazi iz činjenice da su se aplikacije COBOL-a, jednom napisane, uglavnom ostavljale na neodređeno vrijeme, uz samo manje izmjene. Što je aplikacija veća i kritičnija, to je manje vjerojatno da će biti uznemirena. Mainframe-ovi, poput IBM-ove ponude, igrali su ključnu ulogu: izgrađeni su tako da budu vrlo kompatibilni s unatrag i da pokreću naslijeđeni softver - poput aplikacija COBOL - kroz generacije hardvera s minimalnim izmjenama. Rezultat: Milijarde redaka COBOL koda rade u osnovi nepromijenjene desetljećima.

Tijekom godina COBOL je evoluirao, iako polako. Čak i sada ima objektno orijentiranu varijantu, OO-COBOL, koja uključuje podršku za moderne značajke poput Unicodea, lokalizacije i naprednije vrste podataka izvan nizova i cijelih brojeva. No COBOL agresivno zadržava povratnu kompatibilnost, pa se čak i ta poboljšanja i proširenja pridržavaju naloga da postojeće aplikacije COBOL moraju i dalje raditi.

Nisu svi odabiri COBOL-ovog dizajna jezika popularni među programerima COBOL-a. Neki su doveli do pretjerano složenih programa za koje se pokazalo da ih je teško razumjeti ili otkloniti pogreške, obeshrabrujući prepravke ili poboljšanja. GO TONaredba COBOL- a, poput svog kolege u C-u, omogućila je programerima da slobodno skaču oko programa i tako pišu moćnije aplikacije. Ali nedisciplinirana upotreba GO TOprograma COBOL mogla bi pretvoriti u gnijezdo štakora teško uhodljivih unakrsnih referenci.

COBOL programiranje danas

COBOL danas preživljava u nekoliko inkarnacija. IBM aktivno održava vlastite implementacije COBOL-a i održava mnoge postojeće aplikacije COBOL tamo gdje se izvode. Micro Focus COBOL komercijalno je izdanje COBOL-a koje radi na Microsoftovom sustavu Windows, kompilira COBOL programe na Javi i .NET-u, pa čak i postavlja u oblačna okruženja poput Azurea. Pronaći ćete i implementacije COBOL-a s otvorenim kodom, poput GnuCOBOL-a, koje su slobodno dostupne i kompajliraju se u izvorni strojni kod. Međutim, možda će im nedostajati neke naprednije značajke postavljanja ili uklanjanja pogrešaka komercijalnih COBOL-ova.

Iako COBOL ostaje u širokoj upotrebi, duboka stručnost COBOL-a postaje sve teže dostupna svake godine. Kao rezultat toga, mnogi bivši programeri COBOL-a moraju biti primorani napustiti mirovinu da bi prebacili starije programe u 21. stoljeće. Često nije najbolje znanje programiranja COBOL, već intimno razumijevanje glavnih računala u kojima COBOL radi. Mnoge aplikacije COBOL rade ruku pod ruku sa naslijeđenom tehnologijom poput IBM-ovih IMS i CICS sustava za upravljanje transakcijama i bazama podataka, a sve to zahtijeva stručnost koja je sve rjeđa.

Stoga, koliko god se stara škola činila COBOL, potreba za jezikom i stručnošću za razvojno okruženje COBOL-a rasla je svake godine. Popisa poslova za COBOL i srodnu stručnost ima na pretek. U ožujku 2020. New Jersey uputio je hitni poziv programerima COBOL-a da pomognu nadograditi državne sustave naknada za nezaposlenost nakon sloma COVID-19.

Naučite COBOL

Resursi za učenje za COBOL ponovno se šire, s obzirom na sve veću potražnju za jezikom. Suvremeni programeri koji žele ubrzati ovaj najizdržljiviji jezik imaju nekoliko mogućnosti:

  • Sveučilište Limerick u Irskoj nudi cjeloviti tečaj programiranja COBOL putem interneta, zahvaljujući Odjelu za računalne znanosti i informacijske sustave. Nije toliko ažuran kao neki drugi resursi, ali s obzirom na to koliko se COBOL mijenja s vremenom, to nije nužno nedostatak.
  • Otvoreni glavni projekt (dio Linux Foundation-a) također nudi COBOL resurse. Jedan je cjeloviti tečaj programiranja COBOL, kojeg sponzorira IBM. Moderniji je od tečaja Sveučilišta u Limericku i prilagođen je IBM-ovoj zOS implementaciji COBOL-a, što je široko rasprostranjena verzija jezika.

COBOL je desetljećima glavna poslovna računalnost, a potražnja za programskim talentima COBOL-a samo raste. Ako vas zanima održavanje ili modernizacija programa COBOL, čini se da je vrijeme sazrelo više nego ikad prije nego što biste zaronili.