Programovanie je veľmi mladý odbor, ktorý vznikol v polovici minulého storočia. Jeho korene ale siahajú do skorších období, napríklad dvojková číselná sústava, ktorá je základom činnosti počítačov, bola plne vypracovaná Gottfriedom Leibnizom v 17. storočí.
Tak ako každá oblasť ľudského života aj programovanie je istým spôsobom spojené s filozofiou. V tejto práci sa pokúsim pozrieť na niektoré filozofické otázky, ktoré súvisia s programovaním.
Poznámka: Tento článok vznikol ako seminárna práca z predmetu Vybrané problémy filozofie.
Čo je to programovanie?
Na začiatok sa pokúsim stručne vysvetliť čo je to vlastne programovanie. Počítačový program je vlastne postupnosť príkazov, ktoré má vykonať počítač. V tejto postupnosti sa dajú tiež definovať podmienky, opakovanie príkazov, práca s pamäťou počítača a reakcie na rôzne udalosti, ako stlačenie klávesy. Programátor túto postupnosť zapisuje ako text v jednom z programovacích jazykov. Programovacie jazyky sa odlišujú rôznou úrovňou abstrakcie, teda či je jazyk bližší mysleniu človeka alebo tomu ako funguje počítač. Text, ktorý píše programátor sa nazýva zdrojový kód, a ten sa potom pomocou špeciálnych programov prekladá do tvaru, ktorý dokáže vykonávať počítač – do strojového kódu.
Filozofia programovania
Pojmom filozofia sa v súvislosti s programovaním často označujú určité základné princípy, ktorými sa programátori riadia. Mnohé programovacie jazyky a operačné systémy majú svoju filozofiu – princípy a hodnoty, na ktoré sa opierajú. Napríklad filozofia operačného systému UNIX sa podľa jedného z jeho autorov, Douga McIlroya, dá stručne vyjadriť tak:
Píšte programy, ktoré plnia jednu úlohu, ale ktoré ju plnia dobre. Píšte programy, ktoré budu spolupracovať s ostatnými programami. Píšte programy, ktoré spracovávajú textové prúdy, pretože tie sú univerzálnym rozhraním.
Iné technológie sa môžu opierať o iné princípy. Napríklad operačný systém Apple Macintosh stavia na prvé miesto jednoduchosť a estetickosť používateľského rozhrania, atď. Princípy, na ktorých je postavený operačný systém potom ovplyvňujú aj aplikácie, ktoré sú napísane pre tento systém. Podobne princípy programovacieho jazyka ovplyvňujú programy napísane v ňom (možno v ešte väčšej miere, keďže jazyk, v ktorom je myslenie vyjadrované, ovplyvňuje samotné myslenie).
Kultúry
Takéto princípy sú potom základom na vytváranie určitých kultúr okolo daného operačného systému, programovacieho jazyka alebo inej významnej technológie. Každá z týchto kultúr má svoje špecifické tradície a zvyky, dokonca môže mať svoj špecifický jazyk – slang, svoje legendy a hrdinov.
Jednou z takýchto programátorských kultúr je napríklad takzvaná „hackerská“ kultúra. Na chvíľu sa musím zastaviť pri slove „hacker“, ktoré sa v médiach používa v nesprávnom význame na označenie počítačového zločinca. Pôvodne, v počítačovej kultúre, toto slovo označovalo človeka, ktorého teší poznávanie detailov vnútorného fungovania programov, počítačov a počítačových sieti.
Hackerská kultúra vznikla a rozvíjala sa v 60-tých rokoch minulého storočia v laboratóriu umelej inteligencie MIT1 a na ďalších amerických univerzitách. Od vzniku počítačovej siete ARPANET (predchodca Internetu) bola táto kultúra s ňou veľmi tesne spojená. Počítačová sieť umožnila jednoduchú výmenu poznatkov a spoluprácu ľudí, ktorí sa nachádzali na vzdialených miestach.
Práve neohraničená výmena informácii sa stala jedným z hlavných princípov hackerskej kultúry. Jednou z príčin je asi to, že táto kultúra sa vyvíjala v prostredí univerzít, kde existuje tradícia pre takúto výmenu poznatkov.
Etika programovania
Tvorivosť môže byť príspevkom spoločnosti, ale len v prípade, že spoločnosť môže slobodne využívať jej výsledky.
Richard Stallman — GNU manifest
Pre niektorých ľudí sa voľna výmena informácii stala viac ako užitočným pracovným nástrojom. Pre nich možnosť študovať ako fungujú programy a upravovať ich podľa svojích potrieb je etickou otázkou. Podobne ako vo vede sú všetky poznatky verejné pre prospech celej spoločnosti aj zdrojové kódy programov by mali byť verejné a autori programov by nemalí obmedzovať používateľov. Toto je cieľom hnutia slobodného softvéru, ktorého zakladateľom je jeden z hackerov z MIT – Richard Matthew Stallman.
Príbeh tohto hnutia sa začal z jednej laserovej tlačiarne v laboratóriu umelej inteligencie MIT, v ktorej sa často zasekával papier. To spôsobovalo pracovníkom laboratória dosť veľké nepohodlie, ktoré by sa ale dalo pomerne jednoducho vyriešiť. Stačilo by upraviť program ovládajúci tlačiareň, aby upozorňoval používateľov tlačiarne na zaseknutý papier. Lenže ku tomuto programu neboli dodané zdrojové kódy, takže sa nedal upraviť. Richard Stallman našiel človeka na inej univerzite, ktorý mal zdrojové kódy. Ale ten mu ich odmietol dať, keďže podpísal so spoločnosťou vyrábajúcou tlačiarne dohodu o nezverejňovaní. Pre Richarda Stallmana to nebola len malá nepríjemnosť, toto odmietnutie bolo pre neho ako zrada nielen jeho ale celej spoločnosti. Dohoda, ktorá núti odmietnuť pomôcť kolegovi bola pre neho neetická.
Stallman potom založil hnutie slobodného softvéru a sformoval jeho filozofiu. Softvér je slobodný ak neobmedzuje slobodu jeho používateľov, konkrétnejšie, ak poskytuje štyri základné práva:
- Právo používať program na akýkoľvek účel.
- Právo študovať ako program funguje a upravovať ho podľa svojich potrieb. To vyžaduje prístup ku zdrojovým kódom.
- Právo distribuovať kópie programu a pomôcť tak svojím blížnym.
- Právo zlepšovať program a zverejniť zlepšenú verziu aby z toho mala prospech celá komunita.
Stallman založil projekt GNU, ktorého cieľom bolo vytvorenie slobodného operačného systému, a tiež napísal licenciu GNU GPL, ktorá mala chrániť slobodu používateľov. Jej základom je princíp nazývaný copyleft2, podľa ktorého, ak niekto použil kód slobodného programu, musí aj jeho upravená verzia byť pod tou istou licenciou. Tým sa má zabrániť tomu, aby niekto mohol zobrať slobodný softvér a ďalej ho šíriť už bez príslušných slobôd.
Softvérové spoločnosti sa ale snažia o čo najväčší zisk. Preto chcu čo najviac obmedziť práva používateľov. Tvrdia, že oni, ako autori, vlastnia softvér a preto majú ako jediní právo rozhodovať o jeho distribúcii a používaní.
Veľmi často počujeme o softvérovom „pirátstve“, o „krádeži“ softvéru. Softvér ale nie je hmotná vec, je to informácia v digitálnej podobe, ktorá sa dá jednoducho kopírovať a šíriť. Takže tým, že si niekto urobí kópiu niektorého programu, nikomu nič nezoberie. Zverejňované údaje o stratach spôsobovaných „pirátstvom“ sa zakladajú na predpoklade, že každý, kto si skopíroval program, by ho inak kúpil. To ale často nie je tak.
Tieto obmedzenia, ktoré sa snažia zaviesť mnohé softvérové spoločnosti sú neetické. Oni jednak zakazujú používateľovi zisťovať ako fungujú programy na jeho počítači a prispôsobovať si ich. Takže používateľ stráca kontrolu nad svojim počítačom a nad svojimi údajmi. Ale tiež zakazujú pomáhať iným ľuďom tým, že im poskytneme kópiu programu. Práva autora programu sa tu stavajú nad práva používateľov programu, nad pomoc blížnemu a nad prospech celej spoločnosti.
Stallman uvádza porovnanie programov s receptami. Podobne ako recepty aj programy predstavujú vlastne návod na vykonanie určitej činnosti. Je bežne, že ľudia si recepty medzi sebou vymieňajú, je to súčasť dobrých medziľudských vzťahov. Ľudia si tiež upravujú recepty podľa svojej chuti a vytvárajú nové recepty na základe starých. Predstavte si, keby vydavateľ knihy s receptami zakazoval povedať recept niekomu, kto si nekúpil knihu, alebo by zakazoval upravovať recept. Presne toto sa teraz deje s počítačovými programami – pomoc blížnemu sa označuje za krádež3.
Musím ešte vyvrátiť častý omyl, že hnutie slobodného softvéru je proti predaju programov. Tento omyl je spôsobený aj tým, že slovo „free“ v angličtine znamená okrem „slobodný“ aj „bezplatný“. Sloboda softvéru nie je o cene ale o právach používateľa. Aj keď zarábanie na slobodnom softvére je zložitejšie, mnohé spoločnosti ukázali, že je to možné a sú celkom úspešné.
Sloboda? Ktorá sloboda?
Niektorí ľudia nesúhlasia so Stallmanovym ponímaním slobody. Podľa nich obmedzenia, ktoré kladie licencia GNU GPL ju robia menej slobodnou ako niektoré iné licencie, ktoré umožňujú robiť s programom úplne čokoľvek, pokiaľ sa ponechá zmienka o pôvodných autoroch. V chápaní hnutia slobodného softvéru ale sloboda nie je absolútna, je obmedzená slobodou ďalších ľudí. Preto by nikto nemal právo slobodu, ktorú sam dostal, odobrať iným, teda šíriť modifikovaný slobodný program pod inou – neslobodnou licenciou. Takéto obmedzenie slobody jednotlivca je potrebné kvôli zachovaniu slobody všetkých.
Ako určitá opozícia voči hnutiu slobodného softvéru vzniklo hnutie Open Source (otvorených zdrojových kódov). Predstavitelia tohto hnutia sa snažia zdôrazňovať najmä praktické výhody slobodného softvéru, ako je vyššia kvalita a bezpečnosť programov, ktorá pramení z verejného vývoja a zapojenia množstva dobrovoľníkov, ktorí kontrolujú a zlepšujú kód programov. Hnutie open source ale nespomína etické hodnoty slobodného softvéru, keďže s nimi nie všetci súhlasia, a tak by to mohlo obmedziť rozširovanie takéhoto softvéru. Stallman ale oponuje, že na zaistenie slobody používateľov z dlhodobého hľadiska je nevyhnutné ich naučiť vážiť si svoju slobodu a bojovať za ňu.
Záver
Môže sa zdať, že témy, o ktorých som písal, sa týkajú iba programátorov a používateľov počítačov. Ale počítače sú dnes už natoľko bežnou súčasťou života, že ovplyvňujú život skoro každého. Okrem toho, otázky, ktorým sa venuje hnutie slobodného softvéru majú celospoločenský dosah. Toto hnutie sa totiž snaží postaviť dobre medziľudské vzťahy nad komerčné záujmy. V súčasnej ekonomickej situácii to môže naznačovať cestu, akou by sa malo vybrať svetové hospodárstvo – cestu, na ktorej najdôležitejší je človek, jeho sloboda a dobre medziľudské vzťahy.
Literatúra
- Eric S. Raymond: The Art of Unix Programming.
- Richard Stallman: The GNU Manifesto.
- Sam Williams: Free as in Freedom. Richard Stallman‘s Crusade for Free Software.
- The Free Software Definition.
- Richard Stallman: Why Software Should Not Have Owners.
- Richard Stallman: Why ``Open Source‘‘ misses the point of Free Software.