Dabar populiarios įvairios programavimo paradigmos ir programavimo šablonai. Turbūt labiausiai pasitvirtinęs (tačiau ir nemažai pastangų reikalaujantis) yra Test Driven Development (TDD). Bet ar kas nors esate girdėję apie Literatūrinį Programavimą? Jo esmė yra rašyti kodą, kaip rašytojai rašo knygas, t.y. pagrindinis tikslas - skaitomumas ir suprantamumas.
Iš kur aš čia ištraukiau tokią keistenybę? Radau per čia. Ten pat yra ir nuoroda į interviu su Donaldu Knutu (Donald Knuth), kuriame jis TDD vadina laiko gaišimu (išskyrus tam tikrus atvejus) ir šiek tiek užsimena apie šį negirdėtą nematytą literatūrinį programavimą. Įdomu, apie jį gal filologijos fakultete dėsto, kad negirdėjau nieko…
Šiaip ar taip rekomenduoju pasiskaityti šį interviu, kadangi D. Knutas yra viena įžymesnių asmenybių programavimo istorijoje (jis parašė (jei neklystu) trijų dalių knygą “Art of Computer Programming”), o studijuojantys Programų Sistemų specialybę (ar šiaip kam klius Matematinė Analizė) tai turės realų šansą pasieškoti autoriaus knygos pavadinimu “Concrete Mathematics”. Pažodžiui: betoninė matematika
o iš tikrųjų gana neblogas (labai didelis) matematinės analizės konspektas, kurį skaitant įdėmiai, galima kažką net ir suprasti, o supratus ir galvą palaužyti, kadangi prie kiekvieno skyriaus yra keletas uždavinių, nuo lengvų/apšilimo ir sudėtingesnių/egzamininių iki pat tokių, kurių dar niekas neišsprendė.
Gale yra užuominos kaip spręsti. O visai gale - kai kurių uždavinių atsakymai. Bet aš čia jau į lankas…



27 Bal 08
03:47
Che che tai gal „Concrete Mathematics“ ir matano kolį/egzą padėtų išlaikyt? ^_^
27 Bal 08
10:11
primena python ir ruby filosofijas

iš esmės jei code is the poetry tai kodėl ne?
beje <? ko gero būtų once a pona time
27 Bal 08
10:48
Andriau, kuomet mokėmės skaičių eilutes, tai mums dėstytojas ir davė visą skyrių iš “Concrete Matchematics” skaityti.
27 Bal 08
15:25
Apie TDD - kažin ar taip galima teigti, kad tai yra “labiausiai pasitvirtinęs”. Dabar tiesiog TDD mada, ir tiek (kaip kad ir visokių Agile metodų mada, ruby, python ir t.t.). Prieš N metų buvo “let’s make it all complex!” mada (Enterprise Java Beans kas nors pamenat?).
Visose madose yra kažkokia gera idėja, bet ne ką daugiau. Geriausia yra pamatyti tą gerą idėją ir ją taikyt kur reikia, o nesigriebti visko daryti pagal tą patį kurpalių. TDD atveju, mano galva, idėja yra tokia: “kai kuriose situacijose geri testai yra labai svarbu” ir “kai kuriais atvejais pradėti verta nuo testų”. Tik tiek.
Panašiai su literatūriniu programavimu, code poetry ir t.t. - kodo skaitomumas ir gražumas kartais yra gana svarbu. Bet nereikia užmiršt, kad programos rašomos vartotojams - o jiems yra giliai “dzin”, ar kodas buvo gražus ar ne, su kokia technologija parašytas, ar naudoja paskutines programavimo madas, ar tiesiog sukurptas su Fortranu (tarkim). Bet vėlgi - viskas nuo situacijos priklauso.
There’s no silver bullet.
27 Bal 08
17:14
Yra toks python editorius Leo (literate editor …). Kol nenaudojau VIM’o tai buvau visai pamėgęs jį, nes kodo skaitomumą padidina tikrai neblogai. Bet kodo skaitomumo taip pat sėkmingai padidina švari sintaksė (kaip kad python’o) ir tinkamų priemonių naudojimas (ctags ir idutils).
27 Bal 08
17:19
Na, The Art of Computer Programming yra jau keturių dalių, ir tooookių neskrumnių dalių. Žr. http://en.wikipedia.org/wiki/T.....rogramming
27 Bal 08
17:27
O TDD yra sunkiai užkrečiama nepagydoma liga. Aš asmeniškai tik prototipus rašau be TDD.
27 Bal 08
23:14
Sakyčiau tas, kas teigia kad BDD (behaviour-driven development) ar TDD yra nesąmonė ir laiko gaišimas, tas nedarė sudėtingų, daug tarpusavio sąryšių turinčių sistemų ir vėliau jų netobulino ir nekeitė.
28 Bal 08
07:47
Vidmantai: jei čia apie mane, tai aš nesakau kad TDD yra laiko gaišimas. Tiesiog mano galva, jo taikymas visur yra perdėtas. Taip, yra situacijų, kur TDD yra labai gerai, bet yra (ir nemažai) situacijų, kur TDD yra “overkill”.
Darbe šiuo metu mūsų codebase yra apie pusė milijono C++/C/ObjC eilučių. Seniausio kodo amžius - apie penki metai; ir man teko prižiūrėti, taisyti ir refaktorinti jo dalis, kurias rašė visiškai kiti žmonės. Nemanau, kad tai yra “nesudėtinga sistema”, bet aišku čia reliatyvu.
Kiek aš esu susidūręs, tai blogiausios ir daugiausiai laiko suėdančios problemos yra būtent tokios, kurias su TDD išsiaiškinti yra sunku.
Na, bet YMMV. Aš tik noriu pasakyt, kad “there’s no silver bullet”, ir tas taipogi galioja TDD.
29 Bal 08
12:04
Arai, neturėjau jūsų konkrečiai omenyje
Ir taip, jūs teisus - “there’s no silver bullet”
29 Bal 08
22:14
Pateik nuoroda i slashdot’a
29 Bal 08
22:16
Atsiprašau !!!
Tik dabar pamačiau, kad yra nuoroda !!!