Paráda! Na (Fortranu a) Cobolu (a Basicu na Wangu) jsem začínal na gymplu za totáče - byli jsme jako jedna z pouhých dvou tříd vzniklých přímo s předmětem Programování od prvního ročníku na gymnáziích na Slovensku - od první hodiny jsem tomu propadl a držím se toho dodnes - přes 35 let - to je hrůza :-D :-D :-D
Nevím, jestli to byla 2020, kazeťák to nemělo, mělo to integrovaný ROM Basic nebo tak něco, možná mechaniku, to už si nepamatuju, v rámci soukromé studijní praxe ve fabrice, kde pracovali rodiče, jsem na tom naučil Basic a hrál sestřelování raketek v realtimu - studium zdrojáku této hry pro mně bylo neuvěřitelnou zkušeností a čučel jsem na to nejprve jako puk, než jsem začal chápat, co a jak. Vzhledem k tomu, že ve fabrice měli ADT, na elektroprůmce, kam jsme chodili sjíždět programy z děrných štítků, měli EC 1021, tak ten Wang bylo takové zjevení - s monitorem, klávesnicí a možností přímo psát kód a hned ho spouštět, ladit a tak. Jó, to byly časy :-D
Dalo se v osmdesátých letech v ČSSR setkat s operačním systémem DEMOS? https://en.wikipedia.org/wiki/DEMOS. Údajně se jednalo o sovětský klon (možná fork?) BSD Unixu. Pokud vím, zdrojové kódy BSD Unixu byly nějaký čas volně dostupné. Moc informací jsem o tom nenašel. Asi to běželo jen na v té době hodně drahém HW.
17. 9. 2019, 20:09 editováno autorem komentáře
Ak by EU mala navrhnut programovaci jazyk, tipnem si, ze by vzniklo nieco podobne ako COBOL, len miesto anglictiny by sa pouzivali klucove slova zo vsetkych 24 oficialnych jazykov EU.
A este jedna politicky nekorektna poznamka - COBOL je vraj preto tak "ukecany", lebo ho navrhla zena :-)
17. 9. 2019, 08:26 editováno autorem komentáře
A ta komise (no přece to nenechají na odborníky z oboru) by taky měla sledovat další kritéria, takže možná skončí u https://www.root.cz/clanky/programovaci-jazyky-z-vyvojarskeho-pekla-2/#k07
Ja jsem zacinal uplne presne jak je popsano v clanku - vyvojove diagramy a psani programu primo v hexa kodech. Assembler, lepe receno "jazyk symbolickych adres" nebyl k dispozici. Nastesti byl k dispozici aspon disassembler. Timto zpusobem jsme s kolegou napsali funkcni kompilator forthu podle toho, jak postupne vychazel v Amaterskem radiu. To byly casy. Bylo to na TNS (ale ve verzi s kazetakem a s dernou paskou) v roce 83 nebo 84.
Od te doby umim hexa kody Z80 zpameti.
To presne pocitani Cobolu je skvela zalezitost. A pritom by stacilo, aby bezne programovaci jazyky mely fixed point datovy typ a umely by to taky.
Presne desiatkove pocitanie je nutne tam, kde sa COBOL casto pouziva. V banke nie je akceptovatelny miesto 3 vysledok 2,999999999999999. Kniznice na desiatkovu aritmetiku su ale dnes k dispozicii vo vacsine beznych jazykov a existuju aj CPU, ktore dokazu desiatkovo pocitat priamo v HW (napr POWER od IBM).
Jasně, knihovny jsou pro asi každý jazyk, ale skutečná podpora v jazyku docela chybí. A to by stačilo málo, prostě namísto obecných typů int, float umožnit int s rozsahem (to měl už Pascal a staví na tom Ada) a decimal(x, y), které má prakticky každá databáze (takže to programátoři znají, akorát to nemůžou namapovat na primitivní datové typy jazyka).
Tak tak. Ono je ostatně zajímavé, že už stará (no "stará" - z pohledu COBOLu spíš ne) 8087 uměla datový typ packed decimal s osmnácti desítkovými číslicemi, takže se na tyto problémy myslelo. Myslí se na ně i v IEEE 754-2008 s typy decimal32, decimal64 a decimal128 (ty jsou s plovoucí čárkou, ale desítkovou, ne binární). V jazycích to podporováno moc není, jen Visual Basic má typ decimal, ale ten je (IMHO) jen softwarový.
Tak vidím, že (nepřekvapivě) problematické datové struktury nejsou nijak závislé na jazyku.
03 CISLO_DOMU; SIZE IS 3 DIGITS.
Něco takového má/měla naše spisová služba s fatálními následky:
číslo domu pouze třímístné? Narazili jsme na adresu s 5 místným číslem domu.
číslo domu pouze číslice? Někde se celkem běžně používají čísla orientační a pak adresa ulice Tábor 33c je zcela legitimní, leč nezpracovatelná.
V obou případech v adrese chybí číslo domu a tím je zásilka takřka nedoručitelná jen proto, že programátor nemá dost bujnou fantazii a není dost ostražitý.
Asi tak nějak, strávil jsem dětství v cca 3k městě a domě se 4 místným číslem domu.
Tady ale taktéž záleží na tom, jak je toto zpracováno ve vnějším API/GUI. To, že se mění struktury je asi přeci jen něco, co se dá očekávat v některých případech, ale pokud uživatel zapíše „12345“, do databáze se uloží „123“ a všechno je OK, tak je to o něčem jiném, než když ona hodna nejde zapsat, nebo po potvrzení formuláře vyskočí chyba. Protože to aspoň upozorní na problém, který by byl jinak časovanou bombou. (To, že uživatelé hodně chyb ignorují, částečně protože jsou pro ně kryptické, je zase na jinou diskuzi...)
To byl jen příklad na způsob zápisu datové struktury, ale máte samozřejmě plnou pravdu, že by to v praxi velmi rychle skončilo špatně, a to už i u relativně malého městysu. Popravdě ani nevím, jestli je číslo domu nějak omezené, ale možná ne, protože by se nemělo znovu používat, takže to může růst teoreticky kamkoli.
Ono tohle končí špatně dnes a denně, stačí, když musíte evidovat trvalé bydliště cizinců - třeba indická adresa je leckdy jako odstavec knihy. Bývalá kolegyně říkala, že je chodícím testem informačních systémů - místo narození: Staré Město pod Králickým Sněžníkem. A teď se ukažte, kdo má tuto položku dostatečně dimenzovanou.
Tohle se dá upravit (proto mají pořád programátoři v COBOLu o práci postaráno), ale kvůli dlouhému životu aplikací leckde možná číhá reinkarnace problému Y2K - tam, kde problém vyřešili konstrukcí:
IF YEAR > 50 MOVE 19 TO CENTURY
Jeden z pěkných seznamů problémů s adresami:
https://www.mjt.me.uk/posts/falsehoods-programmers-believe-about-addresses/
Ad Indicka adresa,
5th Floor, "B" Block, Divyasree Omega,
Hitech City Road, Kondapur,
Hyderabad-500081. Andhra Pradesh, India.
nejzabavnejsi je zkusit to zadat do zadosti o indicke e-visum (napriklad jako firmu, kterou pracovne navstevujete). Mission impossible, tak sem sem tam vynechaval blok mezi carkami a doufal, v chapavost indickeho urednika.
Velmi pekny clanok, ale kedze COBOL pouzivam profesionalne, mam par poznamok k tomuto tvrdeniu autora: "V programovacím jazyku COBOL lze samozřejmě zapisovat i programové smyčky, ovšem tělo smyčky neobsahuje blok kódu, ale pouze volání nějaké procedury. Pro tento účel se používá fráze PERFORM"
Prikaz PERFORM sluzi na zavolanie procedury, t.j.
PERFORM moja-procedura
kde procedura sa nazyva v COBOLe paragraf a je deklarovana ako:
moja-procedura prikazy .
Dalej sa PERFORM pouziva aj na cykly, ktore v tele cyklu mozu obsahovat nielen volanie nejakej procedury, ale normalny blok prikazov, tak ako je to bezne v inych jazykoch -napr::
for-cyklus:
for(i=1; i<=n; i++) { prikazy }
je v COBOLe
perform varying i from 1 by 1 until i<=n prikazy end-perform
while cyklus:
while (!podmienka) { prikazy }
je v COBOLe:
perform with test before until podmienka prikazy end-perform
do-while cyklus:
do { prikazy } while (!podmienka)
je v COBOLe:
perform with test after until podmienka prikazy end-perform
Zaujimave, ze ste pracoval s RPG, ja pouzivam COBOL na IBM iSeries, kde kraluje prave jazyk RPG (= Report Program Generator). COBOL je oproti RPG uplne normalny a intuitivny jazyk. RPG je snad jediny programovaci jazyk, ktory som nechapal az kym som sa nezucastnil skolenia. Dovtedy mi to pripadalo horsie ako assembler. IBM pridava s kazdym novym releasom operacneho systemu OS/400 aka i5 OS nove featury prave do RPG. Najprv to bolo RPG III potom RPG IV a teraz je free form RPG. RPG je de facto systemovy jazyk na IBM iSeries.
Tak zase byvala AS/400 (teraz iSeries) je system, ktory je zvlastny sam o sebe. Uz som s nim dost dlho nerobil (naposledy asi pred 20 rokmi) ale co si spominam, tak nativne tam nebol ani filesystem, ten sa len emuloval kvoli vzdialenemu pristupu z ostatnych "normalnych" pocitacov. Ako nativne datove ulozisko sa pouzivala databaza.
Na druhej strane sprava systemu cez terminalove menu sa dala robit aj bez predchadzajucich skusenosti a prikazy mali jednotny format, napriklad WRKUSRPRF (work with user profile) bola editacia atributov uzivatela.
Dekuji za super clanek. To my SAPiste na COBOL urcite nezapomeneme. Koreny ABAPu asi nebudou vzdalene. A ja vždy proklinal tu ukecanost a ty tecky na konci ;-) Ještě, ze uz to alespoň umi doplnovat klicova slova samo...
Ještě mám doma diplomku, ve které je uloženo vytišěných cca 20 COBOLských programů, kterými se řídila termináová síť pro sběr dat :-). Následně jsem jak Assembler tak COBOL používal v praxi na spoustu věcí - včetně třeba fotosazby a tištění časopisu (věstníku). V češtině a přes EBCDIC - rozšíření pro češtinu, takže EBCDIC COSY. Co jen času zabraly znakové konverze (už tehdy :-)) - tam bylo mimochodem nutné volat z COBOLu assemblerovské podprogramy, jinak by znakové konverze trvaly moc dlouho. Krásné vzpomínání.
18. 9. 2019, 19:55 editováno autorem komentáře