UNIX filosofijos galia

UNIX operacinė sistema ir jai skirtos programos (kad ir sort, join ir t.t.) buvo kuriamos remiantis tam tikromis taisyklėmis. Šios taisyklės apibrėžia kaip kurti ne tik švarų ir paprastą programos kodą, tačiau ir programos sąsają, bei išlaikyti kūrinio efektyvumą. Didžiausi UNIX guru, kaip Doug McIlroy, Eric Raymond ar Rob Pike skelbė savuosius taisyklių rinkinius “kaip rašyti patogų kodą”, tačiau jie skiriasi nedaug - pati esmė išlaikoma visuose rinkiniuose. Žemiau pateikiu Mike Gancarz’o suformuluotas devynias pagrindines taisykles, kurios ir yra vadinamos UNIX filosofija:

  • Mažas reiškia gražus.
  • Rašyk kiekvieną programą taip, kad ji gerai atliktų vieną darbą.
  • Susikurk programos prototipą kuo anksčiau.
  • Rinkis mobilumą vietoj efektyvumo.
  • Saugok skaitinius duomenis tekstiniuose failiuose.
  • Naudok pakartotinį kodo panaudojimą (nebūtinai savo :-P).
  • Naudokis shell skriptais veiksmingumui ir mobilumui užtikrinti.
  • Venk sudėtingos vartotojo sąsajos.
  • Kiekvieną programą rašyk kaip filtrą, kad jos išvedamus duomenis galėtų panaudoti kitos programos.

Jei apie šias išvardintas dogmas norisi paskaityti daugiau, tai galite padaryti čia: “The Unix Philosophy”. Žinoma, nereikia visko priimti kaip šventos tiesos ir girežtai pulti laikytis, rašant betkokias programas be išimties. Taip pat nereikia pamiršti, kad pagrindinė UNIX veikimo sąsaja buvo komandinė eilutė, tad nuo tų laikų daug kas pasikeitę. Tačiau ir šiais laikais šiuose žodžiuose galima rasti daug tiesos. Kaikurios taisyklės labiau linksta link inžinerijos ar struktūrinių šablonų, o kitos labiau susijusios su pačiu programavimu. Manau ne vienas jūsų laikotęs panašių principų.

Neseniai pačiam teko susidurti rašant vieną klientinę aplikaciją. Aplikacija parsisiunčia duomenis iš serverio, vykdo tam tikrus veiksmus (atsižvelgiant į duomenis ir atskirai), registruoja informaciją serveryje, yra valdoma per grafinę vartotojo sąsają. Visų pirma visus vykdomus išorinius veikmus (vaizdo grotuvo paleidimas, raportavimas, garso reguliavimas ir t.t.) aprašiau shell skriptais. Tai leidžia nesunkiai ir greitai atlikti pakeitimus ir pritaikyti programą skirtingiems kompiuteriams. Tam netgi nereikia žinoti programos kodo - užtenka žinoti kokie parametrai paduodami konkrečiam skriptui. Nereikia programos perkompiliuoti. Duomenų parsiuntimui ar išsiuntimui paprastai reiktų pasirašyti kokią klasę. Bet kam, jei yra wget arba fetch? Wget programos iškvietimą taip pat įrašiau į skirptą ir nesuku galvos. Duomenų registravimui nutolusiame serveryje irgi panaudojau tą patį wget, nes man tiesiog užtenka kreiptis į URL nurodžius tam tikrus parametrus. Esant reikalui, galima patogiai pasiimti betkokią sistemos informaciją, ją išsifiltruoti ir susirikiuoti prieš paduodant jūsų programai. Vieną iš rikiavimo pavyzdžių buvau pateikęs įraše Jūsų TOP 10 dažniausiai naudojamų konsolės komandų. Čia ir slypi programavimo UNIX aplinkoje galia, palengvinanti darbą mums - programuotojams. Norėdami plačiau apsišviesti galite paskaityti Basics of the Unix Philosophy.

4 Responses to “UNIX filosofijos galia”


  1. 1 Evil

    tokioje galioje poto du wordiniai lapai eina dependencies :))

  2. 2 Pawka

    Evil, linkstam į kraštutinumus? ;-)

  3. 3 Evil

    na ne.. tiesiog kai klientine aplikacija neskirta masiniam vartojimui tai viskas ciki :) ash ne programeris, bet manau kuriant programa publikai, reikia visa tai kazkaip aprasyti kad koks apt-get pasigautu tuos dependencies ir kartu atsiustu, o ce jau turetbu buti hemarojus?

  4. 4 Neoman

    Na del tu dependencies Evil dalinai teisus… Kartais atsibosta ju ieskot :) kartais viska ir pats apt-get pagauna :) Neturiu dar daug praktikos kuriant unixo softa, todel ne ka daugiau ir tegaliu pasakyt :) Tikiuosi kai atsiras laiko ir daugiau kaika galesiu pridurt, nes planuose yra paeksperimentavimas unixo softo kurime.

Leave a Reply