@@@ novinky & komentáře | autor: Vlastimil Čevela
Na více než 30 ročnících seminářů Prog-Tsw v Ostravě jsem se vždy prezentoval jako veliký fanda Cobolu, po roce 1989 jsem dokonce na jeho profesionální podporu měl 13 let i vlastní firmu. Takže se ani nedivím, že mi kolega Josef Prause s lakonickou otázkou "co na to říkáš?" poslal odkaz na článek se stovkou diskutujících:
stackoverflow.blog/2020/04/20/brush-up-your-cobol-why-is-a-60-year-old-language-suddenly-in-demand/ !!!
Začnu tím, že aktuální informace, z dubna 2020, kdy v některých státech USA mají problémy se získáním specialistů, kteří by uměli Cobol, je asi překvapením pro příslušné šéfy a trošku senzace pro širší programátorskou komunitu. Pokud ale člověk podrobněji sleduje celosvětové trendy, konkretně měsíčně aktualizovaný www.tiobe.com/tiobe-index tak ví, že v roce 2015 se zájem o Cobol po několik měsíců objevoval dokonce v první dvacítce programovacích jazyků. Letos se držel na 26. místě a současný zvýšený zájem se na začátku května projevil postupem na pozici 25.
Moje vlastní mezinárodní zkušenost představuje nějakou stovku zájemců o Cevela MX COBOL - free compiler: cev.cemotel.cz/cobol. Počet bezvýznamný, ale globální rozsah je zajímavý: od vytvoření portálu v roce 2006 do r. 2014 si kompilátor zaregistrovali uživatelé ve 43 zemích světa: Argentina, Australia, Bangladesh, Belgium, Brasil, Canada, Cesko, China, Colombia, Dominican Republic, England, France, Germany, Hungary, India, Indonesia, Israel, Italy, Japan, Madagascar, Mauritius, Mexico, Morocco, Nederland, New Zealand, Nigeria, Pakistan, Philippines, Polska, Portugal, Puerto Rico, Republic of Moldova, Romania, Scotland, Slovakia, Slovenija, South Africa, Spain, Sweden, Thailand, Ukraine, United Kingdom, USA. V dalších letech již registrace skončily, protože kompilátor z MX Cobolu do ".c" s navazujícím překladačem Turbo C 2.0 do ".exe", byly původně určeny pro 16-bitové prostředí MS DOS a běžely ještě ve 32-bitových Windows-XP, ale s přechodem na Windows 7 a další už nejsou funkční.
Z kontaktů kolem jazyka Cobol v rámci Česka a Slovenska (cev.cemotel.cz/cobol/n2006-06.htm) jsem vybral příklady z poloviny 90-tých let, které ukazují tři varianty u nás tehdy konkretně realizovaného řešení, které odpovídá na některé otázky, položené v článku o nyní diskutovaném US-problému s jazykem COBOL:
Siemens BS2000
Byla potřeba inovace velkého, obsahově přímo kriticky důležitého projektu s několikamiliónovou datovou kartotékou a zadavatel předpokládal, že se přeprogramuje z Cobolu do jazyka C. Ukázalo se však, že potřebný počet kvalifikovaných C-programátorů není možné zajistit a také, že by je nedokázal zaplatit. Specialisté od Siemense navíc vyjádřili údiv nad úvahami o zbytečně náročném přeprogramování, když je k dispozici moderní kompilátor Cobol ANSI 85.
Zadavatel proto zvolil cestu zvýšení kvalifikace svého existujícího programátorského týmu, kterou jsem pro něj realizoval formou specializovaného rozdílového školení. A tak jsem v dubnu 1994 v Praze týden po nocích studoval detaily originální dokumentace Siemens v němčině a přes den učil sedmadvacet programátorek příkaz "evaluate", klausule "end-if, end-perform, end-read, ..." a další nové možnosti Cobolu pro uplatňování principů strukturovaného programování.
Pointou tohoto příkladu je, že na základě dotazu mi zadavatel potvrdil, že sice v důsledku potřebných změn byla aplikace doplněna dalším programovým vybavením, vytvořeným v různých jazycích, ale zmiňovaná hlavní datová kartotéka i nyní v dubnu 2020 stále běží na programech v Cobolu.
EC-1026-DOS-4 >>> PC-MS-DOS - mzdy
Jednou ze zakázek, s realizací říjen 1994 až březen 1995, byl převod agendy mezd a personalistiky velkého průmyslového podniku ze sálového počítače, který hodlali zrušit, na běžné PC. Programátorsky jsem na to byl sám a s oblastí mezd ani personalistiky jsem nikdy nepracoval. Metodicky se mnou spolupracovala manželka, profesí zkušená účetní, ale tuto oblast také neznala.
Velikou výhodou bylo, že jsem v té době od autorů a jejich zaměstnavatele Kancelářské stroje Brno zakoupil všechna práva k výhradnímu šíření kompilátoru MX Cobol, který byl v zásadních vlastnostech kompatibilní PC verzí Cobolu na EC 1026. Problémem bylo, že programátoři většiny z více než dvou stovek původních programů ještě neznali strukturované programování, takže často šlo o typický "spagheti code" s velkým množstvím příkazů "goto" skoku, takže algoritmus programů s rozsahem i několik tisíc řádků zdrojového textu bylo velice obtížné vysledovat. Naštěstí nám byla schopna užitečně pomáhat autorka některých z nich, která si jako provozní programátorka řadu věcí pamatovala a především věděla, jak mají vypadat výsledky.
Po zvážení situace jsme převod vyřešili tzv. "překlopením", tj. překopírováním zdrojových textů na cílovou platformu a pouze formální úpravou nekompatibilních úseků, s vytvořením nově potřebných programů. Kromě několika málo podprogramů to byla emulace atypického generátoru strukturovaného psedotextu "DOGA". K úspěšnému převodu také zásadně napomohly moje vlastní nástroje - především vývojové prostředí s objektovým generováním zdrojových textů, využívající hypertextové odkazy a provozní prostředí ke spouštění dávkových úloh.
EC-1026-DOS-4 >>> PC-MS-DOS a síť Novell - materiál
Dalšími zakázkami pro stejný podnik, s postupnou realizací listopad 1965 až červen 1996 byl převod agendy materiál. Díky dlouholetým osobním zkušenostem s analýzou a programováním této oblasti jsem však mohl zákazníkovi tentokrát nabídnout zásadní programovou inovaci. Konkretně totiž stačilo vzít existující vstupní doklady s výstupními sestavami, starými programy se vůbec nezabývat a nové vytvořit dle moderních zásad úplně znovu.
Inovace pak znamenala nejen pružnější provozní zpracování a různá drobnější vylepšení, ale především vytvořila podmínky pro další rozvoj A tak bylo v I. etapě realizováno nové dávkové zpracování a hned následně umožněna práce odborných útvarů z více pracovních stanic v rámci podnikové sítě. Posledni III. etapou pak bylo doplnění o interaktivní likvidaci materiálových faktur. Celkem to bylo několik stovek nových programů a řídících programových prvků.
V úvodu zmíněný článek na internetu jsem si přečetl i s obsáhlou dikusí, která z různých pozic jazyk COBOL oceňuje i zatracuje. Řekl bych, že autor článku v kapitole "Why Cobol is still dominant" přesně a jasně říká podstatu věci. Cobol je prostě pro svoji "nativní" třídu úloh navržen tak dobře, že je schopen bez problémů fungovat desítky let a jeho srozumitelnost běžnému způsobu myšlení umožňuje drobné aktualizace bez nutnosti drahého přechodu na jinou platformu.
Určitě je pravda, že staré programy v Cobolu jsou obtížně srozumitelné, ale to není chyba Cobolu a ani těch, co je kdysi psali - on nám totiž tehdy před 50 lety na počátku nikdo neřekl, že je lepší "perform ..." než "go to ...". Neřekl nám to proto, že to ještě nikdo nevěděl, no a taky asi byla obecná představa, že s příslušně srozumitelným jazykem si už každý poradí sám. On totiž ani pan Dijkstra, který to článkem Go To Statement Considered Harmful v březnu 1968 začal, neuměl bez matematického mudrování jednoduše říct, že "struktura programu by měla odpovídat struktuře řešeného problému".
Taky jsme si tehdy neuvědomovali (a mnozí si to nepřipouští do dneška), že "náklady na program se rovnají součtu všech nákladů za celou dobu jeho životnosti". Když jsme někdy v roce 1974 začínali experimentovat, jednomu z mých spolupracovníků náš šéf rozčileně shodil ze stolu program, protože v něm namísto "read VSTUP at end go KONEC." uviděl "read VSTUP at end move 1 to K." a tím pádem nadřízené volání "perform CTENI until K = 1." se muselo 1x (!) navíc opakovat. On totiž díky začátkům na Minsku-22 šetřil milisekundy strojového času při výpočtu. K jeho cti musím uvést, že mu brzy došlo, co vlastně strukturované programování přináší a tak se naše typové algoritmy (dnes "patterns") staly v rámci VS pro konverze a slučování povinnou strukturou.
Ty nekonečné kritiky Cobolu mají dle mého názoru jeden společný základ - on je totiž svým prvoplánově srozumitelným vyjadřováním úplně jiný, než jazyky, založené na matematických výrocích a zkratkách. A když je něco "jiné než ostatní", tak to provokuje. Navíc je pro řadu "velkých odborníků" příliš "plebejský" a jak známo, to se též v jejich kruzích nenosí. Docela výstižně to charakterizuje teta Wiki.
Abych rozumování nad celým tématem nějak jednoduše uzavřel, tak citát z diskuze - kolega Alvin Sanusi:
"... In Chinese there is a saying, black cat or white cat, as long as the cat can catch a mouse is a good cat."
Vlastimil Čevela - Modřice 4. května 2020