Programiranje vođeno podacima

U programiranju, programiranje vođeno podacima je paradigma programiranja u kojoj se program izjave opisuje kao podatak koji je uparen i potrebna je obrada pre definisanja niza koraka koje treba preduzeti.[1] Standardni primeri pokretnih podataka jezika su jezički tekst prerade sed i AVK,[1] gde su podaci niz linija u ulaznom potoku - oni su time takođe poznati kao resorni-orijentisani jezik - i obrazac podudaranja se, pre svega, vrši preko regularnih izraza ili brojeva linija.

Povezane paradigme uredi

Programiranje vođeno podacima je slično programiranju vođeno događajima, u kojoj su oba strukturirana kao uzor podudaranja i rezultat prerade, i obično sprovode glavne petlje, i obično se primenjuju na različitim domenima. Uslov / akcija modela je takođe sličan aspektu orijentisanog programiranja, gde kada se dostigne pridružena tačka (uslov), pointcut (akcija) se pogubi. Slična paradigma se koristi u nekim paus okvirima kao što su DTrace, gde se navode sonde (merni poena) i prateće radnje koje se vrše kada je uslov zadovoljen.

Prilagođavanje apstraktnom tipu podataka metode projektovanja za objektno orijentisane programe daju rezultate u dizajnu pokretnih podataka.[2] Ovaj tip dizajna se ponekad koristi u objektno orijentisanom programiranju za definisanje klasa u koncepciji delova softvera.

Aplikacije uredi

Programiranje pokretnih podataka se obično primenjuje na tokove strukturiranih podataka, za filtriranje, pretvarajući, sakupljajući (kao što su računarske statistiku), ili pozivajući druge programe. Tipični potoci uključuju datoteke evidencije, graničnik razdvojenih vrednosti ili e-mail poruke, a posebno za filtriranje e-pošte. Na primer, AVK program može uzeti kao ulaz tok log izjava, i na primer poslati sve u konzolu, piše za one koje počinju sa UPOZORENjE na "UPOZORENjE" fajl, i šalje mejl administratoru u slučaju da svaka linija počinje sa "GREŠKA". To takođe može snimiti koliko upozorenja je prijavljeno dnevno. Alternativno, može da obradi tokove graničnik razdvojenih vrednosti, obradi svaku liniju ili ukupno linijea, kao što su sume ili mak. U e-mailu, jezik kao procmail može odrediti uslove da odgovara na neke mailove, i koje radnje da preduzme (isporučiti, bounce, odbacite napred, itd).

Neki pokretni podaci jezika su Tjuringova potpunost, kao što su AVK, pa čak i sed, dok su drugi namerno veoma ograničeni, posebno za filtriranje. Ekstreman primer ovog drugog je pcap, koji se sastoji samo od filtriranja, sa jedinim akcijom "hvatanje". Manje izuzetno, sito ima filtere i radnje, ali u bazi standarda nema promenljive ili petlje, samo dozvoljavajući stanja za filtriranje izjave: svaki ulazni element se obrađuje nezavisno. Promenljive dozvoljavaju stanju, koje dozvoljavaju operacije koje zavise od više od jednog ulaznog elementa, kao što su agregacije (Sumirajući ulaza) ili gušenje (dozvoljavaju najviše 5 mailova po satu od svakog pošiljaoca ili ograničavanje ponavljaju poruke dnevnika).

Jezici pokretnih podataka često imaju podrazumevanu radnju: ako nema uslov mečeva, linijsko-orijentisani jezici mogu odštampati linije (kao u SED), ili dostaviti poruku (kao u sito). U nekim aplikacijama, kao što su filtriranje, odgovaranje se može obaviti isključivo (tako samo prva odgovarajuća izjava), dok u drugim slučajevima primenjuju sve podudarne izjave. U svakom slučaju, neuspeh da odgovari bilo obrazac može biti "uobičajeno ponašanje" ili se može posmatrati kao greška, da bude uhvaćena od strane catch-all izjave na kraju.

Prednosti i pitanja uredi

Dok prednosti i pitanja mogu da variraju između implementacije, postoji nekoliko velikih potencijalnih prednosti i problema sa ove paradigme. Funkcionalnost jednostavno zahteva da se zna apstraktna vrsta podataka varijabli koje se rade. Funkcije i interfejsi mogu se koristiti na svim objektima sa istim poljima podataka, na primer objekat "pozicija". Podaci se mogu grupisati u objekte ili "entitete" prema želji uz malo ili nimalo posledica.

Iako dizajn pokretnih podataka ne sprečava sprege podataka i funkcionalnost, u nekim slučajevima, programiranje pokretnih podataka se tvrdo dovodi do lošeg objektno orijentisanog dizajna, posebno kada se radi o više apstraktnih podataka. To je zato što su čisti pokretni podataci objekti ili subjekti definisani na način na koji su predstavljeni. Svaki pokušaj da se promeni struktura objekta bi odmah prekinula funkcije koje se oslanjaju na njega.

Kao primer, mogla bi predstavljati vožnja kao niz raskrsnica (dve ulice se seku), gde vozač mora okrenuti levo ili desno. Ako je raskrsnica (u SAD) zastupljena u podacima od strane poštanskog broja (5 dvocifreni broj) i dva imena ulica (Strings teksta), bube se mogu pojaviti kada prođu kroz grad u kojem se ulice ukrštaju više puta. Ovaj primer može biti pojednostavljen, restrukturiranje podataka je prilično čest problem u softverskom inženjerstvu, bilo da se eliminišu greške, poveća efikasnost ili podrže nove funkcije. U ovim slučajevima dizajn pokretnih odgovornosti može da bude promovisan kao bolji pristup, gde se funkcionalnost i podaci spajaju, tako da funkcijom ne moraju da se bave same reprezentacije podataka.[2]

Pokretni podaci programskih jezika uredi

  • AVK
  • Oz
  • Perl - programiranje pokretnih podataka kao u AVK i sed je jedna paradigma koju podržava Perl
  • sed
Filtriranje mail jezika

Reference uredi

  1. ^ a b Stutz, Michael (19. 09. 2006). „Get started with GAWK: AWK language fundamentals”. developerWorks. IBM. Pristupljeno 23. 10. 2010. „[AWK is] often called a data-driven language -- the program statements describe the input data to match and process rather than a sequence of program steps 
  2. ^ a b Wirfs-Brock, R.; Wilkerson, B. (1989). „Object-oriented design: a responsibility-driven approach”. Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications. New York: ACM: 71—75. doi:10.1145/74877.74885.