Dvacet let v IT: mírný pokrok v mezích zákona

31. 1. 2019
Doba čtení: 15 minut

Sdílet

Před dvaceti lety používal autor těchto řádek na PC s procesorem 80486 distribuci Yggdrasil a jakýsi Red Hat Linux 5, v něm editor Vim 5.3. Dnes je to opět systém od firmy Red Hat, další věci se ovšem změnily diametrálně.

Obsah

1. Otevřený software

2. Programovací jazyky

3. Od nízkoúrovňových jazyků k jazykům vysokoúrovňovým

4. Akvizice společnosti Sun Microsystems

5. Komunikace a sociální sítě

6. Mikroprocesory

7. Vývoj grafických subsystémů

8. 3D akcelerátory

9. Vývoj v oblasti textových editorů z omezeného pohledu dlouhodobého uživatele Vimu

10. Několik citací na závěr

11. Odkazy na Internetu

1. Otevřený software

Poznámka a varování: tento krátký článek bude ryze subjektivní a bude zaměřen pouze na několik témat, protože pokrýt dvacetiletý vývoj IT v celé jeho šíři asi není možné bez toho, abychom sklouzli k obecným a nicneříkajícím větám typu „vize přednesené před dvaceti lety byly parciálně naplněny“ nebo „po dobu mé dvacetileté služby se nic zvláštního nestalo“.

V úvodní kapitole se pochopitelně budeme věnovat otevřenému softwaru jako celku. Otevřený software (Open source) samozřejmě existoval i před lety 1998/1999 (například nástroje POV-RayFractint oslavily dokonce třicet let), ovšem právě přibližně před dvaceti lety, kdy vznikal Root, nastala doba konsolidace open source: o rok dříve (1997) totiž byla vydána známá esej Katedrála a tržiště (The Cathedral and the Bazaar), dále byla založena skupina OSI (Open Source Initiative, ostatně i ona nedávno oslavila 20 let) a v neposlední řadě byl vydán kompletní balíček Netscape Communicator pod svobodnou licencí (i když mnozí správně kritizovali její asymetričnost). A aby toho nebylo málo, ve zhruba stejné době byla založena (taktéž firmou Netscape) i organizace Mozilla neboli Mozilla.org.

Velkým hráčům na poli IT ovšem nějakou dobu trvalo, než se na existenci open source adaptovali a více či méně ho akceptovali, popř. na něm dokonce postavili celý svůj komerční model, což souviselo i s postupným vývojem způsobů financování open source. Ostatně můžete sami posoudit, k jaké dosti radikální změně názorů u CEO jedné nejmenované významné softwarové firmy došlo:

Zakladatel společnosti a její CEO až do roku 2000:

„„There is this thing called the GPL, which we disagree with.““

Bývalý CEO (2000 až 2014):

„Most people who are putting their software under open source are doing so because it hasn't been very successful when it was sold.“

Současný CEO (od roku 2014):

„We are all in on open source.“

To samozřejmě v žádném případě neznamená, že by všechny softwarové společnosti vyvíjely otevřený software, ovšem je velmi pravděpodobné, že mají na otevřeném softwaru postavený svůj ekosystém, vývojové nástroje, webové stránky, systém pro sledování chyb, systém pro správu verzí atd.

2. Programovací jazyky

Zajímavý byl i vývoj v oblasti programovacích jazyků. Minulost vzdálená dvacet let nám totiž může připadat jako období doby kamenné, ovšem dovolím si říct, že v oblasti programovacích jazyků jsme žádný skutečně revoluční skok nezaznamenali, spíše se jednalo o postupný vývoj. V roce 1998 se samozřejmě používalo ANSI C (C89) a na spadnutí byla norma C99 (vlastně již byla ve skutečnosti prakticky napsaná, ovšem překladače ji ještě plně neimplementovaly). Dále již čtyři roky existovala Java, dokonce i specifikace servletů, ovšem JSP vznikly až v roce 1999. JavaScript byl pod tímto jménem vydán již v roce 1995 (oproti dnešnímu jazyku měl však mnohem více omezení), Python měl za sebou celých devět let vývoje a Perl dokonce více než jedenáct let (v roce 1998 už existoval i Perl 5). Haskell existoval devět let, C++ přibližně 15 let, postupně se upouštělo od TCL, apod.

Nesmíme zapomenout na jazyk, který je „živoucí zkamenělinou“ dnes a byl jí i před dvaceti lety. Jedná se samozřejmě o COBOL, který byl mezi velkými společnostmi velmi populární (v Tiobe indexu se dokonce umístil na třetím místě) a používá se dodnes, dokonce se i vyučuje. Samozřejmě, že ve dlouhém období mezi rokem 1998 a současností vzniklo mnoho zajímavých a/nebo užitečných programovacích jazyků, v nichž byly vyzkoušeny nové technologie, popř. se oprášily starší a pozapomenuté techniky. Mezi tyto jazyky patří například Rust, Clojure, Go, Groovy, Scala, Kotlin, C#, F#, ovšem k žádné zásadní změně paradigmatu nedošlo (snad jen se do větší míry prosadilo objektově orientované programování, což souvisí například s rozšiřováním C++ a Javy, současně je vidět i částečný příklon k funkcionálnímu programování).

Konzervativci na tomto místě mohou správně podotknout, že i v současnosti najdeme některé projekty psané stále v ANSI C a dosti velké množství projektů používá C99 (a nikoli novější normu C11). Je otázkou, jestli céčko bude nahrazeno například Rustem, ale osobně si to nemyslím, i když Rust považuji za povedený jazyk. Na rozdíl od céčka je však poměrně složitý a ukazuje se, že větší popularitu v současnosti získávají jazyky s velkou vyjadřovací schopností, ovšem na druhou stranu s plošší učící křivkou.

3. Od nízkoúrovňových jazyků k jazykům vysokoúrovňovým

Posun v používaní (či řekněme oblibě) programovacích jazyků ovšem za tak dlouhé období nastal, alespoň v oblasti, v níž se nasazuje Linux. Stále větší množství projektů se vytváří v některém programovacím jazyku nabízejícím větší míru abstrakce, než kterou nabízí jazyk C a podobně koncipované jazyky, například Algol, Modula nebo Pascal. Mj. i díky levnějšímu a výkonnějšímu hardware se rozšířil především Python, i přes některé problémy související se stále nedokončeným přechodem od Pythonu 2 k Pythonu 3, ovšem zapomenout nesmíme ani na JavaScript, který nejenže „přežil“ některé jeho nástupce (CoffeeScript, Dart, naopak se relativně dobře daří transpřekladači TypeScriptu) ale postupně se vrátil i na servery – protože je možná dnes již pozapomenutým faktem to, že se JavaScript na straně serverů objevil už v dávné minulosti, konkrétně v roce 1995 v placeném Netscape Enterprise Serveru (a pak, že se historie neopakuje…).

Stále větší a častější příklon k programovacím jazykům s vyšší mírou abstrakce (navíc mnohdy „jen“ interpretovaných) ovšem není novinkou posledních dvaceti let, protože s rostoucím výkonem hardware a jeho klesající cenou jsme již dávno opustili neefektivní práci ve strojovém kódu a přenechali jsme rutinní činnosti assemblerům (to byl velký myšlenkový skok kupředu: nechat počítač, aby sám prováděl překlad programu pro sebe sama). Stejně tak jsme postupně – alespoň v naprosté většině případů – přešli od assemblerů k překládaným programovacím jazykům typu Algol, C, Pascal atd. a ještě později k výše zmíněným moderním jazykům.

Velký skok jsme však mohli zaznamenat v možnostech virtuálních strojů programovacích jazyků, což do značné míry souvisí s rozšířením Javy a posléze také platformy .NET a moderních (nutno říci, že až překvapivě rychlých) virtuálních strojů JavaScriptu. Týká se to zejména novějších a kvalitních JITů, které společně s rostoucím výkonem HW umožnily nasadit aplikace vytvořené pro JVM a .NET nejenom na „velkém železe“, ale i na zcela obyčejných osobních počítačích, tj. na běžném spotřebním zboží.

4. Akvizice společnosti Sun Microsystems

Nejenom v souvislosti s Javou a jejím virtuálním strojem musíme připomenout akvizici společnosti Sun Microsystems firmou Oracle. Sun Microsystems měla na poli open source poměrně významné místo, například zveřejnila specifikaci procesorů T1 a T2 v rámci projektu OpenSPARC (což není striktně řečeno open source ale spíše open sourced hardware, koupila firmu MySQL AB za neuvěřitelnou miliardu dolarů a především, což je asi nejzajímavějším počinem, začala vydávat JVM i samotný překladač Javy pod licencí GPL.

Z dlouhodobějšího pohledu si myslím, že se jednalo o jeden z nejdůležitějších milníků v IT za posledních dvacet let, protože to ovlivnilo nejenom samotný Java ekosystém, ale i další projekty a konkurenty JVM/Javy. Trošku jinými slovy – zákazníci investující do drahých IT systémů, kteří měli neblahé zkušenosti s tím, že vypršela podpora pro jimi používaný ekosystém, se začali více zajímat o životnost samotného základu jejich aplikací. A otevřené zdrojové kódy JVM a překladače Javy jim zajistily alespoň možnost řešit případné problémy v budoucnosti.

5. Komunikace a sociální sítě

Na začátku této kapitoly budu parafrázovat slova svého kamaráda: „Je to možná neuvěřitelné, ale před dvaceti lety neexistoval Facebook a přesto to lidstvo přežilo“. I bez moderně pojatých sociálních sítí se však i v roce 1999 na Internetu čile komunikovalo, ovšem poněkud odlišnými prostředky. Poměrně populární byly klasické mail listy, ať již moderované či nemoderované. Ty byly provozovány buď na systému Majordomo naprogramovaném v Perlu, ovšem před devatenácti lety se objevil novější systém GNU Mailman vyvinutý v Pythonu (a částečně v C), který je vlastně používán dodnes.

Zhruba před dvaceti lety jsme také mohli zažít postupný ústup popularity Usenetu. Z původního nástroje, který se převážně používal pro zpravodajství a diskuze mezi relativně uzavřenými komunitami (například v rámci vysokých škol či úzce zaměřených skupin), se stal systém využívaný pro „distribuci“ binárních souborů, mnohdy prapodivného a nelegálního obsahu (cracky, celé SW instalace atd.), přestala se dodržovat pravidla diskuzí a tím pádem se ztratil původní půvab Usenetu. Nutno říci, že ústup této služby začal vlastně již v roce 1993, dokonce se vžil termín Eternal September.

Samozřejmě se používaly i aplikace pro instant messaging. Kromě dnes stále živého IRC byl v našich končinách populární klient sítě ICQ, který ovšem později prošel podobným vývojem, jako některé další aplikace: na lehkého a snadno použitelného klienta se postupně nabalovaly další (mnohdy zbytečné) funkce, reklama apod., takže se ztratila původní elegance celého ICQ.

6. Mikroprocesory

V oblasti vývoje mikroprocesorů došlo k mnoha změnám a vylepšením. Především se ve stále větší míře výrobci snažili o paralelizaci výpočtů, což je snaha, která začala (pokud zůstaneme na platformě x86) již u prvního Pentia s jeho dvojicí pipeline (což vyžadovalo ruční optimalizaci a později použití dobrého překladače). Postupně se objevily SIMD operace a později i vícejádrové mikroprocesory, které ovlivnily i způsob vývoje aplikací (podpora pro běh ve více vláknech v některých jazycích, asynchronní programování, gorutiny apod.).

Navíc vznikly zcela nové 64bitové architektury mikroprocesorů: AArch64 a x86–64. To mělo opět velké dopady, a to jak pro tvůrce aplikací, tak i pro autory operačních systémů. Tyto architektury by nám mohly vydržet dalších 20 let, pokud se ovšem neobjeví nová konkurence (možná RISC V, ale to je prozatím jen spekulace).

7. Vývoj grafických subsystémů

Mimochodem je zajímavé se podívat na to, k jakým vylepšením došlo v oblasti běžné „desktopové“ 2D grafiky. Jedna z nejkvalitnějších grafických karet pocházejících z roku 1998 je Matrox G200, která podporovala rozlišení až 1920×1200 pixelů, a taktéž bylo možné použít true color režimy. V této oblasti tedy došlo jen k poměrně malému pokroku, zvláště v porovnání se skutečně revolučním vývojem, který jsme mohli zaznamenat mezi roky 1978 až 1998 (když už se držíme 20 let jakožto základního měřítka při sledování vývoje IT).

Poznámka: ve skutečnosti jsme mohli po určité období dokonce zaznamenat i zhoršení grafického výstupu, a to u některých LCD monitorů s pouhou šestibitovou barvovou hloubkou.

Oproti očekávání některých osobností v IT se zdá, že zcela propadl původní koncept tenkých klientů popř. zařízení typu Sun Ray. Ve druhém případě se – velmi stručně a nepřesně řečeno – jednalo o klávesnici, myš a grafickou kartu umístěnou v zařízení u uživatele, zatímco ostatní moduly (paměť, pevný disk, dnes asi SSD, další rozhraní) byly umístěny v serveru.

8. 3D akcelerátory

Na druhou stranu se ovšem velké (zde skutečně revoluční) změny odehrály na poli 3D grafických akcelerátorů. Jen pro uvedení do kontextu: téměř přesně před dvaceti lety byl vydán populární 3D akcelerátor Voodoo 2, který náruživějším (a finančně zajištěným hráčům) umožňoval použít konfiguraci označovanou zkratkou SLI neboli Scan-Line Interleave, v níž paralelně běžely dva akcelerátory Voodoo 2, přičemž první karta počítala a vykreslovala sudé řádky a druhá karta řádky liché.

Mimochodem, po koupi prakticky zkrachovalé firmy 3dfx společností Nvidia jsme se v roce 1994 opět mohli setkat se zkratkou SLI, ovšem tentokrát ve významu Scalable Link Interface. Tato upravená technologie umožňovala současné použití a propojení většího množství akcelerátorů (dvou či tří), ovšem vlastní způsob renderingu byl konfigurovatelný (renderování sudých/lichých snímků, původní SLI atd.)

Stav v roce 1998: populární je knihovna Glide (později ovšem všichni výrobci přešli na standardní OpenGL s rozšířeními a samozřejmě i na Direct3D), byl vydán grafický akcelerátor Riva TNT a o rok později již známá značka GeForce.

První grafické akcelerátory dostupné pro PC měly vykreslovací pipeline pevně „zadrátovánu“, ovšem právě v posledních dvou desetiletích jsme mohli vidět postupný přechod od pevné pipeline přes částečně programovatelnou pipeline (shadery) až k prakticky univerzálnímu GPU (Graphics Processing Unit), jenž se mnohdy využívá nikoli pro zobrazení 3D scén, ale pro náročné a současně i dobře paralelizovatelné výpočty.

Naopak je možná zajímavé upozornit na některé koncepty, které byly nakonec zavrhnuty, resp. které se z různých důvodů neprosadily. Jedná se například o koncept grafického akcelerátoru určeného pro zobrazení volumetrických (objemových) dat neboli voxelů. Příkladem tohoto alternativního a neúspěšného vývoje mohou být karty VolumePro 500 a VolumePro 1000, s nimiž jsme se seznámili v článku Grafické karty a grafické akcelerátory (19).

9. Vývoj v oblasti textových editorů z omezeného pohledu dlouhodobého uživatele Vimu

Aby mělo ohlédnutí za posledními dvaceti lety v IT nádech retro stylu a abych si osvěžil vzpomínky, byl tento článek napsán na starém notebooku pocházejícího z roku 2001 nebo 2002 (s již nefunkčním displejem a akumulátorem s výdrží cca půl sekundy) ve Vimu 5.3, Vimu 6.1 a poslední úpravy byly provedeny ve Vimu 7.1 (který je již, až je to překvapivé, deset let starý). Vim verze 5.3 samozřejmě nebyl vybrán náhodou, protože se před dvaceti lety jednalo o nejnovější verzi tohoto textového editoru, o níž dokonce jeden autor referenční příručky Vimu a Emacsu napsal zhruba toto: „vlastně si neumím představit, jaké další vlastnosti by se měly do textového editoru přidat, Vim již z tohoto pohledu dosáhl dokonalosti“.

Obrázek 1: Dvacet let stará verze Vimu 5.3.

Samozřejmě později došlo k přidání mnoha nových vlastností ve Vimu 6, 7 i 8, ovšem je nutné říci, že když jsem použil svůj aktuálně používaný .vimrc, spustil Vim 5.3, přeskočil asi padesát chybových hlášení (nové vlastnosti ve .vimrc, které stará verze nezvládla, ovšem nezhroutila se z nich!), byla práce při přípravě článku prakticky stejná, jako v nejnovějším Vimu 8, který používám na pracovním notebooku (přesněji řečeno jsem se mohl více soustředit, protože onen starý notebook není možné bezpečně připojit k Internetu, takže odpadla „nutnost“ kontroly e-mailů, sledování ikony IRC a podobné rozptylování).

Obrázek 2: Jedna maličkost Vimu 5.3 chybí – podpora UTF-8.

Vim 5.3 rozeznal všechna makra, automatické příkazy volané při otevírání souborů typu HTML, použil správný font atd. Samozřejmě nebyly k dispozici novější vlastnosti, zejména skládání (folding, objevil se ve Vimu 6), taby a podpora pro kontrolu překlepů (Vim 7). Syntaxe není zvýrazněna kvůli nezpracování celého souboru .vimrc.

Obrázek 3: Úterní článek částečně vznikal právě ve Vimu 5.3…

… který se úspěšně popral s nejnovější variantou .vimrc.

Nicméně se vraťme k textovým editorům obecně. Na poli editorů spustitelných z konzole (terminálu) Linuxu se, alespoň pokud se dobře pamatuji, udály dvě hlavní změny. První změnou je, že se do mnoha distribucí rozšířil editor GNU nano vyvinutý z editoru TIP (TIP Isn't Pico), což byla GNU derivace textového editoru Pico, který si možná někteří starší zkušenější čtenáři pamatují z mailového klienta PINE. Od roku 2000, kdy GNU nano vznikl, se tento editor stal na některých distribucí výchozím editorem pro konzoli, takže se s ním setkáme například v mnoha tutoriálech, v knowledge base apod. Zajímavé je, že se naopak nepodařilo prosadit textovému editoru JOE (Joe's Own Editor), jehož prvotní vývoj skončil v roce 1995 a teprve o šest let později se o další směřování vývoje začal starat kolega Marek Grác.

Obrázek 5: Editor Joe.

V oblasti textových editorů s grafickým uživatelským rozhraním jsme mohli v posledních letech vidět mnohé vzestupy a pády. Příkladem může být JEdit, který byl po několik let velmi populární a vznikly pro něj doslova stovky pluginů (rozšiřujících modulů). Mnoho pluginů bylo určeno pro přidání funkcí, které běžně očekáváme v integrovaných vývojových prostředích (IDE). A právě tady pravděpodobně JEdit a podobně koncipované editory narazil na interní limity a nedokázal uživatelům nabídnout funkce skutečného integrovaného vývojového prostředí.

Obrázek 6: Uživatelské rozhraní editoru JEdit.

Novější generace textových editorů je již založena na novějších technologiích. Zmínit se musíme především o editoru Atom, s jehož starší verzí jsme se již na stránkách Rootu setkali. Pro Atom je taktéž nabízeno několik set různých pluginů, a to mnohdy včetně poměrně složitých nástrojů, například plugin s Git klientem apod. Tímto směrem, tj. zkombinováním možností desktopové aplikace a webových technologií, se ubírá i vývoj integrovaných vývojových prostředí. Typickým zástupcem tohoto směru vývoje je VSCode.

Obrázek 7: Plugin Ungit v editoru Atom.

V oblasti textových editorů budu osobně sledovat vývoj aplikace Kakoune, s níž se budete moci brzy seznámit v samostatném článku.

10. Několik citací na závěr

Pro odlehčení si uveďme několik citací, které pronesly osobnosti IT v posledních dvaceti letech:

„DRM is the future“

„In five years I don't think there'll be a reason to have a tablet anymore.“ (2013)

„There's no chance that the [Apple] iPhone is going to get any significant market share. No chance." "$500, fully subsidized, with a plan! That is the most expensive phone in the world and it doesn't appeal to business customers because it doesn't have a keyboard, which makes it not a very good email machine.“

bitcoin_skoleni

„Windows Phone will be No. 2 in Smartphones by 2015“

Obrázek 8: Závěrečné úpravy článku ve starém dobrém 12 let starém Vimu.

11. Odkazy na Internetu

  1. What is Usenet, Anyway?
    https://www.tldp.org/LDP/nag/no­de257.html#SECTION0018200000
  2. Usenet
    https://en.wikipedia.org/wiki/Usenet
  3. Eternal September
    https://en.wikipedia.org/wi­ki/Eternal_September
  4. Majordomo
    http://old.greatcircle.com/majordomo/
  5. Scalable Link Interface
    https://en.wikipedia.org/wi­ki/Scalable_Link_Interface
  6. Yggdrasil Linux
    https://en.wikipedia.org/wi­ki/Yggdrasil_Linux/GNU/X
  7. Vim 6
    https://www.root.cz/clanky/co-noveho-ve-vim-6/
  8. Vim sedm – první část
    https://www.root.cz/clanky/vim-sedm-prvni-cast/
  9. Grafické karty a grafické akcelerátory (18)
    https://www.root.cz/clanky/graficke-karty-a-graficke-akceleratory-18/
  10. Innovators of the net: Brendan Eich and JavaScript
    https://web.archive.org/web/20080208124612/htt­p://wp.netscape.com/comprod/co­lumns/techvision/innovator­s_be.html
  11. CoffeeScript
    https://coffeescript.org/
  12. Dart
    https://www.dartlang.org/
  13. Downloading Vim
    https://www.vim.org/download.php
  14. Nové i starodávné verze Vimu pro unixové systémy
    https://ftp.nluug.nl/pub/vim/unix/
  15. Nové i starodávné verze Vimu pro DOS a Windows
    https://ftp.nluug.nl/pub/vim/pc/
  16. Scan-Line Interleave
    https://en.wikipedia.org/wiki/Scan-Line_Interleav
  17. ICQ
    https://icq.com/
  18. TypeScript
    https://www.typescriptlang.org/
  19. ANSI C
    https://en.wikipedia.org/wiki/ANSI_C
  20. Články s nálepkou Python
    https://www.root.cz/n/python/
  21. Články s nálepkou C
    https://www.root.cz/n/c-c/
  22. Julia (programming language)
    https://en.wikipedia.org/wi­ki/Julia_%28programming_lan­guage%29
  23. Seriál Programovací jazyk Julia
    https://www.root.cz/seria­ly/programovaci-jazyk-julia/
  24. Seriál Programovací jazyk Rust
    https://www.root.cz/seria­ly/programovaci-jazyk-rust/
  25. Seriál Programovací jazyk Go
    https://www.root.cz/seria­ly/programovaci-jazyk-go/
  26. Top 10 Steve Ballmer quotes: ‚%#&@!!‘ and so much more
    https://www.theregister.co­.uk/2013/08/24/top10_steve_ba­llmer_quotes_from_microsof­t_history/
  27. Kakoune code editor
    http://kakoune.org/
  28. JOE – Joe's Own Editor
    https://joe-editor.sourceforge.io/
  29. The GNU nano homepage
    https://www.nano-editor.org/
  30. A Beginners Guide to the Nano Editor
    https://www.lifewire.com/beginners-guide-to-nano-editor-3859002
  31. Instant messaging
    https://en.wikipedia.org/wi­ki/Instant_messaging#Histo­ry
  32. The Netscape Archive
    https://web.archive.org/web/20110621060209/htt­p://archive.netscape.com:80/
  33. Netscape Public License
    https://en.wikipedia.org/wi­ki/Netscape_Public_License
  34. Netscape Public License Version 1.1
    https://website-archive.mozilla.org/www.mo­zilla.org/mpl/MPL/NPL/1.1/
  35. Open Source Initiative
    https://opensource.org/
  36. Esej Katedrála a tržiště
    http://www.catb.org/~esr/wri­tings/cathedral-bazaar/
  37. Fractint
    https://fractint.org/
  38. Stránky raytraceru POV-Ray
    http://www.povray.org/

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.