fbpx
-4.2 C
София

Първи стъпки в COBOL: търсенето на специалисти за този 60-годишен програмен език рязко нарасна

Оригиналът е на Charles R. Martin

Най-четени

Даниел Десподовhttps://www.kaldata.com/
Ежедневен автор на новини. Увличам се от съвременни технологии, оръжие, информационна безопасност, спорт, наука и концепцията Internet of Things.

Много много отдавна, когато светът беше млад и компютрите бяха нещо съвсем ново, аз изучавах обработване на данните, понеже тогава компютърните науки още не съществуваха. В рамките на този курс ни преподаваха счетоводство, математика, статистика, както и три езика за програмиране: асемблер IBM/360, FORTRAN и COBOL. А през 80-те години на миналия век на студентите се казваше, че COBOL е мъртъв език, който никъде повече не се изучава и няма да се изучава.

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

Лора Кели, губернатор на Канзас заяви съвсем ясно:

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

Губернаторът на Ню Джърси Фил Мърфи се появи по телевизията, молейки малкото останали програмисти на COBOL, да помагат.

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

COBOL? Какво пък е това COBOL?

COBOL означава  COmmon Business Oriented Language (бизнес-ориентиран програмен език с общо предназначение). Това е един от първите езици за програмиране от високо ниво, който е проектиран от екип, финансиран от Министерството на отбраната на САЩ. Задачата на този екип е била да се създаде един общ език за решаване на бизнес задачи. Тази група от специалисти е получила името CODASYL (комитет по езиците за системи за обработка на данни) и е подготвила спецификацията на новия език, базирайки се на идеите на езика за програмиране FLOW-MATIC, създаден от Грейс Хопър, както и на други програмни езици.

COBOL се използва от много компании, включително и от IBM, UPS и Cigna. Синтаксисът на този програмен език нарочно е оставен съвсем опростен, за да могат непрограмистите – тоест, бизнеса, да могат да го четат и да го разбират. В COBOL всичко се изразява явно, за да няма никакво място за двусмислици и допускания.

Сега се оказа, че да се намерят специалисти, които познават COBOL е твърде сложно. За изучаването на този език е необходимо познаването на мейнфреймите, което е твърде сложно и твърде скъпо. Един обикновен самотен програмист няма пари да наеме мейнфрейм и да изучи COBOL. В съвсем малко институти има курсове по мейнфрейми и COBOL. Нещо повече, след като IBM започна да използва отдалечена работа, бе прекратено стимулирането на американските висши учебни заведения да преподават въпросните курсове по мейнфрейми и COBOL. Започна масово търсене на специалисти по COBOL от чужбина. Защо от чужбина? Защото всеки по-талантлив американец с познания по COBOL излиза твърде скъпо. Не само в програмирането, но и неговите консултации по COBOL са изключително скъпи.

Защо всъщност COBOL стана още по-ценен отпреди?

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

Тук се допуска едно основна грешка. Всъщност COBOL е предметно ориентиран език, специфичен за една точно определена област на бизнес програмирането. Той е изключително подходящ за бизнеса в сравнение със съвременните програмни езици.

Има много спорове, дали COBOL е изобщо необходим, но е факт – към днешен ден има над 100 милиарда реда код на COBOL. Досега всички опити да се извърши миграция от COBOL към друг програмен език бяха неуспешни.

Първата програма на COBOL

Сорс кодът – това са просто текстови файлове. В COBOL, както и всеки друг език за програмиране, е изключително важно наличието на удобен редактор с поддръжката на този език. Начинаещите ще се чувстват най-удобно с помощта на Visual Studio Code,  единственият редактор от времената на EMACS, който наистина ми хареса. Необходими са и няколко разширения за този редактор – за оцветяване на синтаксиса и други полезни допълнения.

Ето какво е необходимо, за да започнат експериментите с COBOL:

  • Изтеглете и инсталирайте редактора Visual Studio Code
  • Инсталирайте разширенията bitlang.cobol и Broadcom COBOL Language Support
  • Инсталирайте GnuCOBOL, но имайте предвид, че това разширение съм го пробвал само при MacOS. За Windows е налична програмата MicroFocus с безплатен пробен период за Visual Studio COBOL плюс поддръжката на Azure за най-различни експерименти

Ето че инсталирахме всичко, което ни е необходимо и сме готови да напишем нашата първа програма на COBOL. По традиция ще започнем от нулата – тоест, с програмата “Hello, world”.

 

Именно тук всеки един програмист навярно силно ще се учуди, понеже в COBOL е изключително важно в коя колона се намира вашият код. В сорс кода на една традиционна COBOL програма има няколко основни компонента:

Колоните от 1 до 6 са за номера по ред. Колоната 7 се счита за индикатор на област и ако там има звездичка (*), то това е коментар. След това в колоните от 8 до 72 се пише сорс-кода, а колоните от 73 до 80 програмистът може да ги използва както си иска.

Ако се питате защо е необходимо това, то тази структура идва от времената, когато сорс кодът се пробиваше в перфокарти с 80 колони.

Днешните интерпретатори за COBOL приемат и по-свободен формат, при който не се налага кодът да се вмъква в тези 80 колони. Само че значителна част от съществуващия към днешен ден код е написан именно в подобна форма, позната от перфокартите.

Сега внимание: COBOL няма блокова структура, както почти всички други програмни езици. Още от самото начало основната цел при проектирането на COBOL е била той да изглежда като документ и затова неговият синтаксис прилича на английския език. Тук няма никакви функции, процедури, подпрограми и блокове. Използват се раздели, секции, абзаци и твърдения. Една почти пълна процедура е глаголът PERFORM, който ще срещнем малко по-късно. И да, има глаголи за различните оператори на COBOL.

Ето как изглежда програмата Hello, World на COBOL:

       IDENTIFICATION DIVISION. 
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY "Hello, world".
       END PROGRAM HELLO.

Тя е доста по-многословна в сравнение с програмите на другите езици, но всъщност не е чак толкова лоша. Да я сравним с една лесна версия на Java:

public class Hello {
	public static void main(String[] args){
		System.out.println("Hello, world!");
	}
}

Както всички Hello, World програми, и тази почти нищо не прави. Но ако някой ви е казвал, че за създаването на най-опростената програма на COBOL е необходимо да се напишат 90 реда, то явно са ви заблудили.

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

Първи ред:

IDENTIFICATION DIVISION.

В COBOL програмите винаги има като минимум един идентификационен раздел, както и процедурен раздел. В идентификационния раздел присъства важен абзац – PROGRAM-ID. Тук програмистът трябва да даде име на програмата. Това име не е задължително да съответства на името на файла или на каквото и да било друго, освен ако вашата програма на COBOL не се извиква от друга програма на COBOL. Това става с помощта на глагола CALL, на който тук няма да се спираме.

Задължително ще ни трябва ID на програмата и затова ще добавим:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.

Има още много неща, които обикновено присъстват в идентификационния раздел. Ето няколко типични примера:

IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
AUTHOR. CHARLES R MARTIN.
DATE-WRITTEN. 2020-APR-11

В съвременните среди за програмиране всичко това обикновено са коментари.

И когато става дума за съвременни програми среди, вече не е необходимо всичко да се пише с главни букви, както бе досега. GnuCOBOL позволява следното:

       identification division.
       program-id. tut2.
       author. charlie martin.
       procedure division.
           display "hello, world".
       end program tut2.

Просто ми беше малко тъжно и носталгично.

И така, нека да приключим с нашата първа Hello, World. Частта на програмата, в която се изпълнява кода на COBOL, се нарича процедурен раздел.

IDENTIFICATION DIVISION. 
       PROGRAM-ID. HELLO.
       PROCEDURE DIVISION.
           DISPLAY "Hello, world".
       END PROGRAM HELLO.

Тук виждаме още един отзвук от формата на перфокартите. Обърнете внимание, че редът с DISPLAY “Hello, world“ е с четири колони по-навътре. Причината за това е, че диапазонът от 8 до 72 е разделен на две части: разделът А от 8 до 11 и разделът В – от 12 и нататък. Според правилата на COBOL, разделите, секциите и абзаците трябва да започват в зона А, а твърденията в кода трябва да започват в зона В.

Малко по-сложен пример на COBOL

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

Да се направи това, може и да не се окаже толкова лесно, понеже данъчните правила и таблици са сложни и тайнствени. Ето защо ще зададем федералната данъчна ставка в размер на 16,5%, щатският данък на 7% и ще фиксираме данъка FICA ( Federal Insurance Contributions Act) на 6,2%, като същевременно внимателно ще подберем ставката на заплащането и броя на отработените часове, за да не прехвърлим прага на FICA. Ще отчитаме само работниците, на които се плаща почасов труд, а ако работните часове прехвърлят 40 на седмица, то тях ще изчисляваме като извънреден труд и ще ги заплащаме с коефициент 1,5.


Край на първа част. Във втората част ще продължим с втория пример и ще разгледаме още някои моменти на COBOL. Информацията може да се окаже полезна за немалко хора.

Абонирай се
Извести ме за
guest
6 Коментара
стари
нови
Отзиви
Всички коментари
dioib
dioib
1 месец

Браво! Предимството на „мъртвите“ програмни езици е в това, че програмния код по-лесно се чете от потребителя на програмата и му става понятно какво прави тя. По този начин могат по-лесно да се намерят грешки в логиката на оператор-програмиста и без изричното му присъствие да се направят съответните корекции. Принципно програмата не е нещо друго, освен алгоритъм написан на някакъв език, той или е понятен на потребителя или не. … Инициативата Ви е добра. Да се надяваме, че след COBOL ще има статии и за FORTRAN. Познанията на въпросните езици ще позволи по-лесно да се преведат на съвременен програмен език… Виж още »

Иван Михайлов
Иван Михайлов
1 месец

Миналата година са търсили един специалист, тази – двама. Ето ти 100% увеличение на търсенето

saentist
saentist
1 месец

Само хамерите ползват този мъртъв продукт от миналото.
Ами те ползват и Фаренхаит да мерят температурата и инч за измервания, трябва ли някой друг да се мъчи с тази им поредна глупост?

Михаил
Михаил
Отговор на  saentist
1 месец

Всъщност доста отдавна се търсят програмисти на КОБОЛ, поне от 5-6 години

who
who
Отговор на  saentist
29 дни

Всички банки (дори в БГ) имат Мейнфрейми. Мейнфреймите работят на Кобол. Реално ИБМ притежава банките чрез този език. Причината е, че един мейнфрейм може да струва 1-2 милиона, но не спира по 30-40 години. За такива периоди от време тези 1-2 милиона са се избили стократно.

Никола Панайотов
Никола Панайотов
29 дни

На Сibol работиха всички компютри Зит 151 които се внедриха през 1972 у нас почти във всички ТИ Ц и някои заводи Кремиковци Пристанище Бургас . ПЖИ при тях процесорите бяха Факом и наши.ленти чешки четец немски принтер,Предполагам че има стари програмисти които могат да бъдат използвани за работа и да убочавт .

Нови ревюта

Подобни новини