Programmeerimisega seotud raamatud

Enamus ajast kui ma õpin midagi uut, siis tahan , et selle kohta oleks võimalikult palju materjali. Materjal võib olla internetileheküljed, raamatud, inimesed. Kuid mõnikord loen ka terve raamatu läbi, või vähemalt pool, ja seda siis kui tunnen, et selline seletus mulle sobib. Või on mul lihtsalt kirg antud teema vastu. Selliselt avastan vahest, et olen terve raamatu läbi lugenud, kuigi otsisin ühte sõnaseletust. Olen lugenud mitut programmeerimisega seotud raamatut ja kirjutan siia mõned paremad, mis on parimad.

Object-Oriented Construction Handbook

Selle raamatu originaal on muide saksakeelne. Nagu autorid selgitavad, ei ole raamat mõeldud algajale programmeerijale, st. vähemalt ühe objektorienteeritud keele tundmine on vajalik. Autorid kirjeldavad alguses, et see raamat räägib objektorienteeritud programmerimisest, mis on seotud suurte süsteemidega. Suureks peetakse 1000 klassiga projekti. Üldiselt kirjutades ise 1000 realisi projekte, siis olen aru saanud, et OO ongi pigem suurte projektidega seotud. Siiski kasutades OO-d panen kirja mingi mentaalse visiooni oma projektist, kasutades klasse ja muid OO konstruktsioone. Raamat algabki suhteliselt lihtsate konstruktsioonidega, nagu interface vs class, application domain vs software system jne. Iseenesest ei ole raamat seotud mitte ühegi programmeerimiskeelega, pigem luuakse ühtne keel, millega saab rääkida objektorienteeritusest ja programmeerimisest üldse. Selle raamatu võib vabalt läbi lugeda nädalavahetusega. Samas on see käsiraamat, kuhu võib alati tagasi pöörduda. Näiteks kui keegi küsib, et mis vahe on tüübil ja klassil, siis võib seda raamatud viidata, samuti API vs SDK, open and closed API jne. küsimused. Autorid on selgelt ise palju lugenud ja viiteid on palju, seega kui antud küsimusele pole vastust selles raamatus, on vastus kusagil viidetes. Olulisemad definitsioonid ja nö. õiged vastused on välja toodud ja tundub, et palju nendega vaielda ei saa.

Kritiseerivalt võib öelda, et minnakse selle materjalide ja tööriistade filosoofiaga liiga kaugele, või lihtsalt, et seda on liiga palju. Kuid ilmselt on see liim, mis seda raamatut koos hoiab.

 

Data Compression The Complete Reference

Räägib teksti-, piltide-, video-, exe failide- ja audio tihendusest. Siit võib leida tervete algoritmide seletused ja üldised lähenemised erinevate pakkimise probleemide lahendamiseks. GIF, LZ77, LZ78, LZX, LZX, LZY, MPEG ja paljud teised meetodid. Igat meetodit on seletatud niipalju, et vähemalt üldine arusaam asjast saada. Mina lugesin tekstiliste andmete pakkimise kohta ja seda on küll palju seletatud selles raamatus.

 

Disappearing Cryptography

See on üks neist lõbusatest raamatutest, mis tegeleb andmete peitmisega. Minuarust ei ole tegemist militaarse kvaliteediga tõsiste algoritmidega, kuid olen näinud sarnaseid algoritme kirjeldavaid pabereid, mis on päriselt kasutusel. Krüpto huvilistele java programmeerijatele mõeldud raamat, kuid huvitav lugada ka ilma Javat sügavalt tundmata. Näiteks kuidas abstract syntax tree-sse andmeid peita, kasutades LR parsereid mingis domeenis inimest meenutavat teksti genereerides . Palju põnevaid ideid.

 

Numerical Methods

Tõenäoliselt on olemas rohkem kui üks raamat sellise nimega, kuid ma mõtlen neid kõiki. Koos koodinäidetega c keeles, c# keeles jne. Matemaatika probleemide lahendamiseks.

 

Matrix Computations

Veel üks lähemalt matemaatikaga tegelev raamat. Lineaaralgebra ja maatriksid, natuke algebralist geomeetriat.

 

Artificial Intelligence- A Systems Approach

Evolutsioonilised meetodid ja otsinguruum, minimax, tehisnärvivõrgud. Kõik võimalikult lihtsalt ja vähese matemaatikaga. Seega ei pea osatuletiste ja imelike matemaatilise analüüsi elementidega tegelema, millest mõnda ei oska mina lugedagi. Koodinäidised c keeles on ka võimalikult lihtsad ja arusaadavad. Samas võiks kõrval olla veel mõni materjal rohkema teooriaga, kuid sissejuhatuslikult on võimas raamat. Tegin peale selle lugemist male AI, mis mind võidab, kui ma just minimaxi otsingu sügavust väga madalale ei pane. Ei oska muidu üldse malet mängida ise.

 

Combinatorial Algorithms, Generation, Enumeration, and Search

Graafid, kombinatoorika, branch & bound, divide & conquer, bruteforce, varasta ja tapa(nali). Väga hea seletusvõimega autorid, selle raamatu kõrvale pole üldjuhul midagi vaja. Üldiselt olen tähele pannud, et nii kipub olema nende Bell Labs-is töötanud inimeste raamatutega. Või ka näiteks Yahoo R&D-s töötanud inimeste raamatutega. Nad peavad oskama asju seletada.

 

Cormen Leiserson Rivest Stein – Introduction to Algorithms

Kui ma ei eksi, siis oli see MIT cs101 kursuse raamat kunagi, aga enam ei ole. The CLRS raamat! Peab ju sellest kuulnud olema. Kõikvõimalikke algoritme segamini. Ei oska midagi positiivset öelda selle raamatu kohta, peale selle, et see on kuulus. Vaatamata sellele sain sealt priority queue ehitamise kohta olulist infot ja seletused olid ka head. Nüüd olen kuulnud, et PQ-d ehitatakse skiplistidega MIT-is, et multithreaded lockide arvu vähendada. See on küll vist viimase võtmine sellelt andmestruktuurilt.

 

Brass – Advanced DataStructures

Üks väheseid andmestruktuuride raamatuid, mis ma leidnud olen. Muuhulgas räägib nö. relaxed mäluhaldamisest, mida autor kasutab kõigi andmestruktuuride juures. Andmestruktuurid on RAM-is kõik, diski põhiseid struktuure ei puudutata. Andmestruktuuride loend on suur: skip lists, segment trees, range trees, kd-trees, igasuguseid heap-e, union find, tries, hashtables, height-balanced trees, weight-balanced trees, finger trees. Joonised ja keerukuse analüüs on olemas, samuti seletused, ja tegemist on tõesti advanced teemadega. Ma ei ütle:”aga tegemist on tõesti advanced teemadega”, sest kõik “aga-d” saab “ja”-deks kirjutada. Üldiselt pro raamat.

 

Computer Vision – Linda Shapiro

Erinevad masinnägemise meetodid. Kahendpiltide analüüs, confusion matrix, neural nets, histograms, edge detection, segmentation, virtual reality jne. Tahaks, et poodides köögiviljade äratundmine töötaks, ja ei tööta(kõik aga-d ja-deks). Mõned head näited selles raamatus. Hea kaaslane näiteks Learning OpenCv raamatule, kus räägib peamiselt API kasutamisest.

 

Computational Intelligence in Manufacturing – Jun Wang

Räägib evolutsiooniliste meetodite rakendamisest tööstuses. Tahaks, et poodides köögiviljade äratundmine töötakse, ja ei tööta. Raamat räägib väga konkreetsete mudelite rakendamisest erinevate probleemide lahendamiseks. Huvitav on näha, kuidas näiteks ART1 mudelit proovitakse kasutada. Palju analüüsi ja võrdluseid.

Advertisements