Какво е COBOL? Обяснено програмирането на COBOL

Някои технологии никога не умират - те просто избледняват в дограмата. 

Попитайте средния разработчик на софтуер за COBOL (Common Business Oriented Language) и той ще ви погледне така, сякаш сте споменали карбонова хартия, оловен бензин или запис от 78 оборота в минута. В сравнение със съвременните езици като Go или Python - или дори Pascal или C! - COBOL изглежда многословен, тромав, passé.

Но COBOL издържа. Далеч от остаряла технология, с която с радост се разделихме, COBOL се превърна в институция. Масивни кодови бази COBOL все още се използват по целия свят, много от тях работят почти точно както преди създаването си. На холивудски език езикът COBOL има „крака“.

Така че, да, COBOL все още е актуален и навременен - ​​в действителност болезнено. През последните месеци COBOL отново навлезе в общественото съзнание, тъй като държави като Ню Джърси отправят призив към програмистите да помогнат да преместят своите приложения COBOL в 21-ви век.

В тази статия ще разгледаме произхода на COBOL, как дизайнът на езика за програмиране се откроява дори и днес и какво прави COBOL едновременно толкова траен и толкова неразрешим.

История на COBOL

COBOL възниква в края на 50-те и началото на 60-те години. Разработването на езика беше проект, спонсориран от Министерството на отбраната на САЩ (DoD), който включваше консорциум от компютърни компании, включително IBM, Honeywell, Sperry Rand и Burroughs. Целта беше да се създаде език за програмиране със следните атрибути:

  • Преносимост между компютърни системи, като по този начин улеснява мигрирането на софтуер както между поколения хардуер, така и между производителите на хардуер.
  • По-синтаксис, подобен на английски, от другите езици по това време (например FORTRAN) като начин за насърчаване на програмирането от по-широка аудитория, дори и за сметка на известна оперативна скорост.
  • Способността да се приспособяват бъдещите промени в езика.

Първите официални спецификации на COBOL излязоха през 1960 г. През следващото десетилетие и за ужас на критиците си, COBOL се превърна в избор по подразбиране за писане на бизнес приложения. Една от причините за бързото му разпространение бяха мрежовите ефекти: IBM, един от първоначалните сътрудници на езика, се превърна в агресивен ранен възприемач и доминиращото присъствие на IBM в компютърния свят допринесе за приемането на COBOL.

Благодарение на своите дизайнерски предимства и тежка индустриална подкрепа, COBOL се задържа, надживявайки оригиналните системи, за които е проектиран, с голям марж. Според различни оценки към 1970 г. COBOL е най-използваният език за програмиране в света. До 1997 г. се смяташе, че COBOL работи с около 80% от бизнес приложенията.

Език COBOL

Дизайнерите на COBOL скъсаха със скробения синтаксис на други програмни езици по това време (отново като FORTRAN). Идеята беше да се създаде език за програмиране, който да може да се чете и разбира от непрограмисти, особено счетоводители, финанси, застраховки и други бизнес специалисти.

Помислете за програма „здравей, свят“, написана на ранен диалект на COBOL:

ИДЕНТИФИКАЦИОННО РАЗДЕЛ.

ПРОГРАМА-ИД. ЗДРАВЕЙ СВЯТ.

РАЗДЕЛ НА ПРОЦЕДУРАТА.

ДИСПЛЕЙ „Здравей, свят!“.

END-DISPLAY.

СПРЕТЕ РАБОТА.

За съвременните разработчици на софтуер, възпитани на лаконичността на езици като Python, този код е многословен. Но многословието на COBOL (ако не и неговото изпълнение) произтича от същата надутост, която информира съвременни езици като Python - този код се чете много повече пъти, отколкото е написан, така че трябва да бъде написан за четене.

Подобна програма в по-модерна версия на COBOL може да изглежда по следния начин:

идентификатор на програмата. Здравейте.

разделяне на процедурата.

дисплей "Здравей, свят!".

спрете да бягате.

Докато този пример е по-кратък, важат същите основни принципи: Кодът се стреми да бъде изрично за това, което се случва на всяка стъпка.

COBOL има строги правила по отношение на синтаксиса и вътрешната организация на програмите. Програмата COBOL е изрично разделена на секции или подразделения , които улесняват намирането и разбирането на нейните компоненти с един поглед:

  • Раздел за идентификация: По същество раздел с метаданни, съдържащ подробности за програмата, нейния автор и т.н.
  • Разделяне на околната среда: Съдържа подробности за средата на изпълнение, например псевдоними за външни устройства, които може да се нуждаят от редактиране при изпълнение на програмата на различен хардуер. Това подпомогна преносимостта на програма между системите, където например I / O може да се обработва напълно различно.
  • Разделяне на данни: Съдържа  файл и работни секции за съхранение , разделението на данни описва използваните в програмата файлове и променливи (съответно).
  • Разделяне на процедурата: Тук живее действителният програмен код, разбит на логически единици, наречени раздели, параграфи, изречения и твърдения . Изкушаващо е да се анализират тези структури с модули или функции, защото те обслужват приблизително същите функции (разделяне на кода на блокове, с ограничени входове и изходи), но те са далеч по-малко гъвкави.

COBOL също има изключително строги правила за форматиране на кода, до броя интервали, предхождащи команда. (Потребителите на Python ще намерят това за познато!) Някои от тези ограничения са страничен продукт от настъпването на пълнолетие на COBOL по време на основната ера от 60-те години, когато програмите са кодирани на перфокарти и е важно точното форматиране на редове от 80 колони . Но други ограничения за форматиране налагат четливост.

Идеята на стриктното регламентиране на програмите COBOL е да ги направят възможно най-самодокументиращи се. В края на краищата програмите COBOL имаха тенденция да останат в сила години наред или десетилетия. Целта (ако не винаги крайният резултат) беше да превърне всяка програма COBOL в артефакт, който всеки програмист на COBOL би могъл да разбере, дори години по-късно, без помощта на програмиста, който я е създал. 

Предизвикателства на COBOL

Голяма част от продължаващото разпространение на COBOL - и инерция - идва от факта, че приложенията на COBOL, веднъж написани, обикновено се оставят на място за неопределено време, само с незначителни изменения. Колкото по-голямо и критично е приложението, толкова по-малко вероятно е то да бъде нарушено. Mainframes, подобно на предложенията на IBM, изиграха ключова роля: те бяха създадени, за да бъдат силно съвместими с обратна връзка и да изпълняват стар софтуер - като приложения COBOL - през поколения хардуер с минимални модификации. Резултатът: Милиарди редове код на COBOL работят по същество непроменени в продължение на десетилетия.

През годините COBOL се развива, макар и бавно. Дори сега има обектно-ориентиран вариант, OO-COBOL, който включва поддръжка за модерни функции като Unicode, локали и по-усъвършенствани типове данни извън низове и цели числа. Но COBOL агресивно запазва обратна съвместимост, така че дори тези подобрения и разширения се придържат към мандата, че съществуващите приложения на COBOL трябва да продължат да се изпълняват.

Не всички избори за езиков дизайн на COBOL са популярни сред програмистите на COBOL. Някои са довели до прекалено сложни програми, които се оказват трудни за разбиране или отстраняване на грешки, обезсърчавайки пренаписванията или подобренията. GO TOКомандата на COBOL , подобно на колегата си в C, позволява на програмистите да скачат свободно около програма и по този начин да пишат по-мощни приложения. Но недисциплинираното използване на GO TOможе да превърне програма COBOL в гнездо на плъх с трудно проследими кръстосани препратки.

Програмиране COBOL днес

COBOL оцелява днес в няколко въплъщения. IBM активно поддържа собствени внедрения на COBOL и поддържа много съществуващи приложения на COBOL там, където те работят. Micro Focus COBOL е търговско издание на COBOL, което работи на Microsoft Windows, компилира приложения COBOL в Java и .NET и дори се разгръща в облачни среди като Azure. Ще намерите и реализации с отворен код на COBOL, като GnuCOBOL, които са свободно достъпни и се компилират в родния машинен код. Възможно е обаче да им липсват някои от по-усъвършенстваните функции за внедряване или отстраняване на грешки на търговските COBOL.

Докато COBOL продължава да се използва широко, задълбоченият опит на COBOL става все по-труден за намиране с всяка изминала година. В резултат на това много бивши програмисти на COBOL трябва да бъдат принудени да излязат от пенсия, за да променят по-старите приложения в 21-ви век. Често не знанията за програмиране на COBOL са най-важните, а интимното разбиране на основните среди, в които работи COBOL. Много приложения на COBOL работят ръка за ръка с наследени технологии като IBM IMS и CICS управление на транзакции и системи за бази данни, като всички те изискват експертиза, която е все по-рядка.

По този начин, колкото и старо училище да изглежда COBOL, необходимостта от COBOL език и опит в областта на средата за развитие нараства с всяка изминала година. Обявите за работа за COBOL и свързаните с тях експертизи са в изобилие. През март 2020 г. Ню Джърси изпрати спешен призив към програмистите на COBOL, за да подпомогнат модернизирането на държавните системи за обезщетения за безработица след кризата на COVID-19.

Научете COBOL

Учебните ресурси за COBOL отново се разрастват, предвид нарастващото търсене на езика. Съвременните разработчици, които искат да се ускорят с този най-траен език, имат няколко възможности:

  • Университетът в Лимерик, Ирландия, предлага пълен курс за програмиране COBOL онлайн, с любезното съдействие на своя департамент по компютърни науки и информационни системи. Той не е толкова актуален, колкото някои други ресурси, но като се има предвид колко малко COBOL се променя с времето, това не е непременно дефект.
  • Проектът Open Mainframe (част от Linux Foundation) също предлага ресурси на COBOL. Единият е пълен курс по програмиране на COBOL, съфинансиран от IBM. Той е по-модерен от курса на Университета в Лимерик и е съобразен с внедряването на COBOL от zOS на IBM, което е широко разпространена версия на езика.

COBOL е основна част от бизнес изчисленията от десетилетия и търсенето на таланти за програмиране на COBOL само продължава да расте. Ако поддържането или модернизирането на програмите COBOL ви интересува, времето изглежда по-зряло от всякога да се потопите.