Stohastični procesni meji: Kratek opis

Ta knjiga predstavlja uvod v stroške stohastičnega procesa za čakalne vrste, s posebnim poudarkom na nestandardnih skaliranju in nestandardnih mejnih procesih. Poleg mejnih procesov, povezanih s Brownijskim gibanjem, knjiga razpravlja o mejnih procesih, povezanih s stabilnim gibanjem Levy in frakcijskim brownijskim gibanjem, ki se pojavljajo pri porazdeljenih verjetnostnih porazdelitvah in močni odvisnosti.

Za nastavitev odra, prva štiri poglavja predstavljajo neformalni uvod v stohastične procesne meje. Ta poglavja prenašajo združevalno moč stohastičnih procesnih meja brez potopitve v matematične podrobnosti. Simulacija se uporablja za gradnjo intuicije. V celotni knjigi je poudarjena uporabna pomembnost in osnovna matematika. Zato bi se morala knjiga pritožiti na široko občinstvo, vključno z raziskovalci in diplomanti iz operativnih raziskav, industrijskega inženirstva, elektrotehnike, računalništva, poslovanja, ekonomije in statistike ter strokovnjakov teorije verjetnosti.

Oglejte si izbrana poglavja, ki so na voljo tukaj na internetu, da si ogledate knjigo. Za podrobnejši opis si oglejte Predgovor in vsebino. Glej poglavja 1, 2 in 5 za uvodno usmeritev. Glej poglavje 6, da bi videli motivacijo za upoštevanje omejitve stohastičnih procesov z neprekinjenim vzorčnim potekom. Glej poglavji 12 in 13 za študijo funkcijskega prostora D, ki je opremljen s topologijo Skorohod (1956) M1. V teh bolj teoretičnih poglavjih knjiga razširja in dopolnjuje temeljni papir: A. V. Skorohod, Mejne teoreme za stohastične procese, Teorija verjetnosti in njegove uporabe 1 (1956) 261-290. Obstaja tudi internetni dodatek k knjigi, ki je na voljo na spletu ali v tiskani obliki.

Tukaj so nedavni dokumenti tesno povezani z knjigo:

  • Pregled brownićnih in nebrojevskih FCLT za enostranske strežnike. Queuing Systems, vol. 36, 2000, str. 39-70. [objavljen PDF]
  • Omejitve za kumulativne vhodne procese v čakalne vrste. Verjetnost v inženirskih in informacijskih znanostih, vol. 14, 2000, str. 123-150. [objavljen PDF]
  • Refleksna karta s prekinitvami. Matematika operacijskih raziskav, vol. 26, št. 3, 2001, str. 447-484. [PDF]

Tukaj so še drugi nedavni prispevki, ki so nekoliko povezani z knjigo:

  • Nestvarni model ponujanja za paketna omrežja. Telekomunikacijski sistemi vol. 13, št. 3,4, marec-april 2001, str. 271-296 (z Nicholas G. Duffield in William A. Massey). [PDF] [objavljen PDF]
  • Oblikovanje in krmiljenje omrežja z uporabo modulov za vklop in izklop in več nivojskih prometnih modelov s težkimi delitvami. Poglavje v samozaposlenem omrežnem prometu in ocenjevanju uspešnosti, Park Kihong in Walter Willinger, ur., Wiley, New York, 2000, str. 421-445. (z Nicholas G. Duffield). [PDF]
  • Vpliv porazdelitve težkih časov med servisiranjem in časom razporeditve čakalne dobe M / GI / s. Queuing Systems, vol. 36, november 2000, str. 71-87. [objavljen PDF]

Vir: http://www.columbia.edu/~ww2040/back.html

Uvod v BRugs, programska oprema za klic OpenBUGS iz R

Tukaj so koraki za namestitev BRugs (ki jih je prvotno napisal Andrew Thomas, kasneje podaljšan in sedaj vzdrževan na spletni strani “CRAN extras”, ki so jih postavili Uwe Ligges in Brian Ripley) in izvedli nekaj primerov naraščajočih težav:

  • Navodila za starejše različice R, ki ste jih prej namestili na cran.r-project.org: Preprosto zaženite R in prenesite paket BRugs tako, da vnesete: install.packages (“BRugs”)
  • Navodila za tiste, ki se šele začenjajo v R: Upoštevajte ta navodila, ki zahtevajo, da prenesete R različico 2.11 (* ne * najnovejšo različico)
  • Morda boste želeli prenesti datoteke pomoči R za BRugs, BRugs.pdf
  • Prenesite datoteke za primer 1: Hierarhični beta-binomni model za metanalizo deležev uspeha. Podatki so rezultati 9 študij o učinkovitosti (da ali ne) medicinskega pripomočka; študije imajo med 6 in 46 bolniki. Naš cilj je pridobiti boljše ocene verjetnosti uspeha v vsaki študiji z zadolževanjem moči med študijami in ocenimo napovedno verjetnost uspeha za pacienta v novi, 10. študiji, ki se še ni zgodila.

OPOZORILO: teh datotek ne shranjujte z desnim klikom v Raziskovalcu; namesto tega odprite datoteko in storite »File-Save As«, * OR * (še bolje) odprite datoteko in jo kopirajte-prilepite v datoteko .txt, da zagotovite pravilno dekodiranje voznih vrat!

Podatki in prihajajoče datoteke, ki jih potrebujejo BUGS, so v tem primeru dovolj preproste, da jih ustvarja kodo BRugs.

Iz R, kliknite “File” in potegnite navzdol do “Change dir”, da spremenite delovni imenik v tisto, kjer ste shranili zgornji datoteki (videli boste, da sem shranil moje datoteke v K: \ book3). Prav tako boste morali urediti ukaz “setwd” na vrhu datoteke BRugs ali preprosto komentirati to vrstico (na začetku vrstice postavite »#«).

Ko že govorimo o komentarjih, da shranite kopije parcel, ki so ustvarjeni, boste morda želeli un-komentarje ukazov “postcript” in “dev.off”. Dejansko, ko prvič zaganjate to, boste morda želeli preprosto izrezati in prilepiti ukaze v R eno vrstico hkrati, tako da lahko vidite, kaj vsakdo počne.

  • Prenesite datoteke za primer 2: Računanje natančnih standardiziranih preostalih odjemalskih enot in CPO vrednosti za podatke o izgubi stackov.
    (V tej različici sem datoteke shranil v K: \ book \ CL3 \ BRugs).

Od znotraj R izdajte datoteko stacks_BRugs.txt. To naj bi poklicali OpenBUGS 21-krat (enkrat za vsako podatkovno točko) in na koncu pridobiti ploskev dveh diagnostic.

Ta primer temelji na delu dr. Haijun Ma in sledi preostalim delom analize (str. 33-38) mojih vmesnih Bayesovih diapozitivov za kratke programe, ki sledijo oddelku 2.5 (str. 79-86) in vajah 22 (str. 104) knjige Carlin in Louis, Bayesove metode za analizo podatkov, ki sta jih objavila Chapman in Hall / CRC Press / Taylor in Francis.

  • Prenesite datoteke za primer 3: ocena moči za hipotetično klinično preskušanje na podlagi modela preživetja Weibull.
    (V tej različici sem datoteke shranil v C: \ BRugs \ PowerCalcs)

Iz R vnesite datoteko Power.BRugs (ali Power.R2WinBUGS). Ta datoteka ustvari podatke (kar je vse tukaj ponaredek, saj je to problem oblikovanja) in tudi začetne vrednosti.

Ta primer sledi delu kliničnega preskušanja (str. 39-44) mojih vmesnih diapozitivov za kratke programe za analizo Bayesovih podatkov, ki temeljijo na projektu Bayesovega razreda, ki ga je napisal Joe Koopmeiners. Klasična referenca na tem področju je:

  • Spiegelhalter, D.J., Freedman, L.S. in Parmar, M.K.B. (1994). Bayesovi pristopi k randomiziranim preskusom (z razpravo). J. Roy. Statist. Soc., Ser. A, 157, 357-416.

 

  • Prenesite datoteke za primer 4: ocena moči za klinično preskušanje zdravila na podlagi modela binomskega odziva (živ / mrtev).

Ta gradiva se nahajajo na ločeni spletni strani, ki jo je ustvaril Brian Hobbs, sedanji doktorat iz oddelka za biostatistiko Univerze v Minnesoti. Delo temelji na 3. poglavju časopisa Hobbs in Carlin, ki je bil predložen v Journal of Biopharmaceutical Statistics.

  • Prenesite datoteke za primer 5: Ocenitev moči za klinični preskus naprave na podlagi modela Cox preživetja.

Ta material je tudi na spletni strani Brian Hobbs in opisan v oddelku 4 knjige Hobbs in Carlin.


Nazaj na stran poučevanja Brad Carlin
Nazaj na stran programske opreme Brad Carlin
Nazaj na domačo stran Brad Carlin

Originalna povezava: http://www.biostat.umn.edu/~brad/software/BRugs/

 

 

Nested Besede

Vzdržuje Rajeev Alur

aka vidno potisni jeziki

Kaj so ugnezdene besede?

 

What are nested words?

Vgnezdene besede so model za predstavitev podatkov tako z linearnim naročanjem kot s hierarhično ugnezdenim ujemanjem elementov. Primeri podatkov s takšno dvojno linearno-hierarhično strukturo vključujejo izvrševanje strukturiranih programov, jezikovnih podatkov, označenih z jezikom, in HTML / XML dokumentov. Vgnezdena beseda je sestavljena iz zaporedja linearno urejenih pozicij, povečanih z gnezdilnimi robovi, ki povezujejo klice z vračili (ali odprte oznake za bližnje oznake). Robovi ne prečkajo ustvarjanja pravilno ugnezdene hierarhične strukture in dovoljujemo, da se nekateri robovi čakajo na čakanje. To gnezdilno strukturo lahko edinstveno predstavlja zaporedje, ki določa vrste položajev (klici, vračila in notranji podatki). Vgnezdene besede posplošujejo obe besedi in urejena drevesa ter omogočata operacije besed in dreves.

Avtomatizacija ugnezdanih besed — akceptorji končnih držav za ugnezdene besede, določite razred rednih jezikov ugnezdenih besed. Ta razred ima vse privlačne teoretične lastnosti, ki jih uživajo klasični navadni besedni jeziki: deterministični gnezdeni avtomatski izrazi so izraziti kot njihovi nedeterministični nasprotniki; razred je zaprt pod sindikatom, presečišče, komplementiranje, združevanje, Kleene- *, predpone in jezikovni homomorfizmi; članstvo, praznina, jezikovna vključenost in jezikovna enakovrednost so vse odločne; definicija v monadni logiki drugega reda natančno ustreza prepoznavnosti končnega stanja. Ti rezultati se posplošujejo tudi v neskončne ugnezdene besede.

Kako se nanašajo na kontekstne jezike besed?

Glede na jezik L ugnezdenih besed nad abecedo, linearno kodiranje ugnezdenih besed daje jezik L ‘nad označeno abecedo, sestavljeno iz simbolov, označenih s tipom položaja. Če je L pravilen jezik ugnezdenih besed, potem je L ‘brez konteksta. Dejansko avtomat za potiskanje, ki sprejema L ‘, ima posebno strukturo: pri branju klica mora avtomat pritisniti en simbol, medtem ko odčita simbol za vračanje, mora popiti en simbol (če je snop prazen) in med branjem notranji simbol, lahko samo posodobi svoje stanje nadzora. To avtomatsko imenujemo vidno potisni avtomat in razred besednih jezikov, ki jih sprejemajo vidno potisni jeziki (VPL). Ker so lahko naši avtomati določeni, VPL ustrezajo podrazredi determinističnih kontekstnih jezikov (DCFL). VPLs generalizirajo jezike za jezike, jezike z zaklepanjem in uravnotežene jezike, in imajo boljše lastnosti zapiranja kot CFL, DCFL ali parantezni jeziki.

Trdimo, da je za algoritemsko preverjanje strukturiranih programov, namesto da bi program gledali kot na jezik brez konteksta nad besedami, bi ga morali gledati kot reden jezik ugnezdenih besed (ali enakovredno vidno potisni jezik), kar bi omogočilo model preverjanje številnih lastnosti (kot so pregled stackov, pred-post pogoji), ki niso izrecni v obstoječi logiki specifikacij.

Na splošno avtomat za potiskanje služi za dva različna namena: odkrivanje hierarhičnega ujemanja in obdelava / poizvedovanje ujemanja. V aplikacijah, pri katerih je pomemben le drugi namen (kot pri programski analizi), lahko nadomestite avtomatizacijo z avtomatizacijo s pomočjo NWA s številnimi koristmi.

Kako se nanašajo na naročena drevesa?

Podatki z dvojno linearno-hierarhično strukturo se tradicionalno oblikujejo z binarno in bolj splošno z uporabo urejenih neoviranih dreves in z uporabo avtomatov dreves. Pri naročenih drevesih so vozlišča z istim staršem linearno urejena, klasični prehodi dreves, kot je infix (ali globina-levo-desno), se lahko uporabijo za določitev implicitnega naročanja vseh vozlišč. Izkazalo se je, da so ograje, kjer je varovanje zaporedje urejenih dreves, poseben razred ugnezdenih besed, in sicer tisti, ki ustrezajo besedam Dyck, in redni jeziki hedge ustrezajo uravnoteženim jezikom.

Za obdelavo dokumentov imajo vgnezdene besede veliko več prednosti glede na naročena drevesa. Predstavitev na podlagi drevesa implicitno predvideva, da se lahko vhodni linearni podatki razčlenijo v drevo, zato ne moremo predstaviti in obdelati podatkov, ki se morda ne razčlenijo pravilno. Operacije z besedami, kot so predpone, pripone in združitve, medtem ko so naravni za obdelavo dokumentov, nimajo podobnih drevesnih operacij. Drugič, avtomati dreves lahko naravno izrazijo omejitve glede zaporedja oznak vzdolž hierarhične poti in tudi po levi-desni brati in sestri, vendar imajo težave pri zajemanju omejitev, ki se nanašajo na svetovni linearni vrstni red. Na primer, poizvedba, da se vzorci p1, … pk pojavijo v dokumentu v tem vrstnem redu, se prevedejo v deterministični besedni avtomat (in s tem deterministični NWA) linearne velikosti, vendar mora standardno deterministično avtomat za drevo navzgor za to poizvedbo velikostni eksponent v k. NWA je mogoče obravnavati kot nekakšen drevesni avtomat, tako da sta avtomatska drevesa od spodaj navzgor in avtomatska drevesa od zgoraj navzdol posebni primeri. Ti rezultati kažejo, da je poizvedba lahko bolj jedrnato kodirana v pogledu ugnezdenih besed s prednostmi kompleksnosti. Avtentičnost v besedi ustvari besedo od leve proti desni, obdeluje robove za gnezdenje, ko in ko pridejo. To se ujema z SAX API za XML, zato ima naravno uporabo v pretočnih algoritmih.

Reference

Model ugnezdenih besed je potekal skozi nekaj iteracij: Glej vidno potisne jezike; Alur in Madhusudan; STOC 2004; in dodajanje gnezdilne strukture besedam; Alur in Madhusudan; DLT 2006. Priporočamo, da preberete to enotno polno različico (Journal of ACM, 2009). Povabljeni pogovor na CSR 2007 je tudi dobro izhodišče.

Namen te strani je spremljati obsežne nadaljnje raziskave o tej temi. Pošljite mi e-pošto s komentarji in / ali predlaganimi dodatki.

Orodja

Dodatne težave pri odločanju o VPA / NWA

  • Vidno potisne igre; Loding, Madhusudan in Serre; FSTTCS 2004.
  • Vidno potisni avtomati: od jezikovne ekvivalence do simulacije in bisimulacije; Srba; CSL 2006.
  • Težave z zakonitostjo za vidno potisne jezike; Barany, Loding in Serre; STACS 2006.
  • O problemu članstva za vidno potisne jezike; La Torre, Napoli in Parente; ATVA 2006.
  • Simbolno vidno potisni avtomat; D’Antoni in Alur; CAV 2014.

Sestavine in minimiziranje

  • Dogodki za vidno potisne jezike; Alur, Kumar, Madhusudan in Viswanathan; ICALP 2005.
  • Minimiziranje, učenje in preverjanje skladnosti za Boolove programe; Kumar, Madhusudan in Viswanathan; CONCUR 2006.
  • Minimiziranje variant vidno avtomatov potiskanja; Chervet in Walukiewicz; MFCS 2007.
  • Minimizacija vidno avtomatov za pišanje z delnim maksimalnim SAT-om; Heizmann, Schilling in Tischner; TACAS 2017.

Logika časovne in fiksne točke; Izrazitost

  • Temeljna logika ugnezdenih klicev in vračil; Alur, Etessami in Madhusudan; TACAS 2004.
  • Redni jeziki ugnezdenih besed: fiksne točke, avtomatizacija in sinhronizacija; Arenas, Barcelo in Libkin; ICALP 2007.
  • Logika prvega reda in časovne logike za ugnezdene besede, Alur, Arenas, Barcelo, Etessami, Immerman in Libkin; LICS 2007.
  • Nadomestni avtomati in časovni pritrditveni izračun za vidne jezike; Bozzelli; CONCUR 2007.
  • Slovnična predstavitev vidno potisnih jezikov; Baran in Barringer; WoLLIC 2007.
  • Utežene logike za ugnezdene besede in algebraične formalne serije moči; Matissen; ICALP 2008.
  • Vidno racionalni izrazi; Bozzelli in Sanchez; FSTTCS 2012.
  • Vidno linearna časovna logika; Bozzelli in Sanchez; IJCAR 2014.

Specifikacije za analizo programa

  • Vidiki na podlagi VPA: boljša podpora za protokole AOP; Nguyen in Sudholt; SEFM 2006.
  • Programi za instrumentiranje C z vgrajenimi besednimi monitorji; Chaudhuri in Alur; SPIN 2007.
  • Sintetiziranje monitorjev za varnostne lastnosti – tokrat s klici in vračili; Rosu, Chen in Ball; RV 2008.
  • Časovna razlaga postopkovnih programov; Alur in Chaudhuri; VMCAI 2010.
  • Vgnezdeni interpolanti; Heizmann, Hoenicke in Podelski; POPL 2010.
  • Preverjanje združljivosti proizvajalca in potrošnika; Drscoll, Burton in Reps; FSE 2011.
  • Varno programiranje z vidno varnostnimi igrami; Harris, Jha in Reps; CAV 2012.

Obdelava XML in Avtomatizacija dreves

  • Vidno utišanje izraznih učinkov za obdelavo toka XML; Vrč; PLAN-X 2005.
  • Vidno potisni jeziki za pretakanje XML; Kumar, Madhusudan in Viswanathan; WWW 2007.
  • Srečanje z besedami in drevesi; Alur; PODS 2007.
  • Prepisovanje vidno potiskanih jezikov za integracijo podatkov XML; Thomo in Venkatesh; CIKM 2008.
  • Avtomatski tokovi dreves; Gauwin, Niehren in Roos; Pisma za obdelavo informacij 2009.
  • Najstarejša poizvedba, ki se odziva na deterministične avtomatizirane besede v besedilu; Gauwin, Niehren in Tison; FCT 2009.
  • Avtomat za poizvedbo za ugnezdene besede; Madhusudan in Viswanathan; MFCS 2009.
  • Od navadnih izrazov do ugnezdenih besed: Unifying languages ​​in izvrševanje poizvedb za relacijske in XML sekvence; Mozafari, Zeng, Zaniolo; VLDB 2010.
  • Visoko zmogljiva kompleksna obdelava dogodkov prek tokov XML; Mozafari, Zeng, Zaniolo; SIGMOD 2012.
  • Pretočni fragmenti naprej XPath; Gauwin in Niehren; CIAA 2012.
  • Zgodnje izbiranje vozlišča XPath na tokovih XML; Debarbieux, Gauwin, Niehren, Sebastian in Zergaoui; 2012.

Pretvorniki

  • Vidno potisni pretvorniki za približno validacijo pretakanja XML; Thomo, Venkatesh in Ye; FoIKS 2008.
  • Vidno pretočni pretvorniki; Raskin in Servais; ICALP 2008.
  • Enakovrednost determinističnih gnezdenih besed v Wordove pretvornike; Staworko, Laurence, Lemay, Niehren; FCT 2009.
  • Lastnosti Visible Pushdown pretvornikov; E. Filiot, J.-F. Raskin, P.-A. Reynier, F. Servais in J.-M. Talbot; MFCS 2010.
  • XEvolve: okvir za razvoj sheme XML; F. Picalausa, F. Servais in E. Zimànyi; SACSVT 2011.
  • Pretočnost prenosnih besednih transdukcij; E. Filiot, O. Gauwin, P.-A. Reynier, F. Servais. FSTTCS 2011.
  • Pretočni drevesni pretvorniki; R. Alur in L. D’Antoni; ICALP 2012.
  • Visible Pushdown pretvorniki z Look-Ahead. E. Filiot in F. Servais. SOFSEM 2012.

Ugnezdena drevesa

  • Izračun točke za lokalni in globalni programski tok; Alur, Chaudhuri in Madhusudan; POPL 2006.
  • Jeziki vgrajenih dreves; Alur, Chaudhuri in Madhusudan; CAV 2006.
  • Vidno potisni jeziki in prepis terminov; Chabin in Rety; FroCos 2007.
  • Vidno avtomatov dreves s pomnilnikom in omejitvami; Comon-Lundh, Jacquemard, Perrin; Logične metode v računalništvu 2008.

Besede z več gnezdami

  • Beležka o ugnezdenih besedah; Blass in Gurevich; Microsoft Research TR; 2006.
  • Robusten razred kontekstno občutljivih jezikov; La Torre, Madhusudan in Parlato; LICS 2007.
    2-vidno potisni avtomat; Carotenuto, Murano in Peron; DLT 2007.
  • Uresničljivost sočasnih rekurzivnih programov; Bollig, Grindei in Habermehl; FoSSaCS 2009.

Novi rezultati z vidljivostjo klicev / povračil

  • Idealiziran Algol tretjega reda z ponovitvijo je odločen; Murawski in Walukiewicz; FoSSaCS 2005.
  • Sinhronizacija avtomatov za potiskanje; Božič; DLT 2006.
  • Procesna dinamična logika z rekurzivnimi programi; Loding in Serre; FoSSaCS 2006.
  • Višinsko-deterministični avtomat za utripanje; Nowotka in Srba; MFCS 2007.
  • Neskončna avtomatska karakterizacija dvojnega eksponentnega časa; La Torre, Madhusudan in Parlato; CSL 2008.

Izzivalna odprta težava (zdaj rešena!)

Razmislite o naslednjem problemu odločanja: če sta oba dva redna jezika L1 in L2 ugnezdenih besed, ali obstaja pravilen jezik R besed preko označene abecede, tako da je presečišče (R, L1) enako L2? To ni znano, da je odločilno, tudi v posebnem primeru, da je L1 niz vseh dobro ujemajočih besed. Motivacija je naslednja: na splošno je za preverjanje, ali vhod spada v L2, procesorju potrebuje sklad. Predpostavimo pa, da imamo že kakšno dodatno znanje o vložku, da spada v niz L1 (na primer, morda vemo, da je vnos dobro ujemanje), ali se lahko to znanje uporabi za konstrukcijo DFA A, tako da za vhodne podatke v L1, A je sposoben odločati o članstvu v L2. To težavo navdihuje dokument “Potrjevanje pretočnih XML dokumentov” Segoufin in Vianu, PODS 2002, ki predstavlja tudi delno rešitev.

Nedavno je Eryk Kopczynski dokazal neodločljivost te težave: glej nevidne jezike, LICS 2016.

Vir: https://www.cis.upenn.edu/~alur/nw.html

ORACLE 10g PROGRAMIRANJE

ORACLE 10g PROGRAMIRANJE
A Primer

Rajshekhar Sunderraman
Georgia State University

ISBN-10 0-321-46304-3
ISBN-13 978-0-321-46304-8
Knjiga (2008)
544 strani

Več informacij

 

“… je dobro napisana, tehnično zdrava in do točke. Ni nobenih meanderingnih pojasnil, ki bi šle po glavi bralca.” – LAURIAN M. CHIRICA, Kalifornijska Politehnična državna univerza.

Skratka in racionalizirana, Oracle10g Programming: Primer nudi študentom in strokovnjakom idealni uvod v programiranje Oracle. Posodobljen za vključitev Oracle10g, je ta lahko dostopen primer primerjal na tri dele, ki delujejo kot podroben vodnik za nove uporabnike te aplikacije. Prvi del ponuja bralcem pregled relacijskega modela in uvod v Oracle SQL in PL / SQL. Drugi del gradi na tem temelju z uvedbo povezanih tehnologij, ki olajšajo funkcionalnost Oracle Web. V zadnjem delu so zajeti podatkovni model XML in jeziki poizvedb, ki jih podpira Oracle. Poleg tega zadnje poglavje prikazuje bralce s številnimi vzorčnimi projekti in programskimi aplikacijami, ki utrjujejo Oracleove koncepte, ki so se jih naučili

Vrhunci

  • Popolnoma potreben vodnik za Oracle10g za študente v svojem prvem tečaju baze podatkov ali strokovnjakom, ki SQL dodajajo v svoje znanje.
  • Vključuje kratko pokritost osnovnega SQL programiranja in spletne povezave.
  • Zajema napredne teme, kot so JDBC, SQLJ, PL / SQL Web Toolkit, PL / SQL Server Pages, Javascript, Java Servlets, JSP, Oracle XML, XMLSchema, XPath, XQuery in XSLT.
  • Pristop pristopa študija, ki bralcem omogoča, da preizkusijo svoje znanje s tremi ponazoritvenimi bazami podatkov: knjigo razredov, poštnim naročilom / nakupovalno košarico in portfeljem.
  • Obsežen nabor projektov, ki vključujejo dostop do podatkov iz spleta.

 

O AVTORJU

 

Rajshekhar Sunderraman je profesor računalništva na državni univerzi Georgia v Atlanti v Džordžiji. Profesor Sunderraman je prejel doktorat znanosti. v računalništvu na državni univerzi Iowa in poučuje že več kot 18 let. Objavil je številne članke o številnih temah, vključno z deduktivnimi bazami podatkov in logičnim programiranjem; nepopolnost, nedoslednost in negiranje v podatkovnih bazah; deduktivne in objektno usmerjene podatkovne baze; spletni dostop do podatkovnih baz; pol strukturirani podatki na spletu; in modeliranje podatkov za bioinformatiko.

Koristna spletna stran: http://tinman.cs.gsu.edu/~raj/books/oracle10-primer.html

 

Koda za razdaljo odseljevalcev zemlje (EMD)

Uvod

To je izvedba razdalje med kmeti, kot je opisano v [1]. EMD izračuna razdaljo med dvema distribucijama, ki jih predstavljajo podpisi. Podpisi so nabori ponderiranih funkcij, ki zajemajo porazdelitve. Funkcije so lahko poljubne vrste in v poljubnem številu dimenzij ter jih definira uporabnik.

EMD je opredeljen kot najmanjši znesek dela, potrebnega za spremembo enega podpisa v drugega. Pojem “delo” temelji na uporabniško določeni razdalji tal, ki je razdalja med dvema funkcijama. Velikost obeh podpisov je lahko drugačna. Tudi vsota uteži enega podpisa se lahko razlikuje od vsote uteži druge (delne tekme). Zaradi tega se EMD normalizira z manjšo vsoto.

Koda se izvaja v C in temelji na rešitvi za težavo Transport, kot je opisano v [2]

Prosim, povejte me o morebitnih napakah, ki jih najdete, ali o morebitnih vprašanjih, komentarjih, predlogih in kritikah. Če boste našli to kodo koristno za vaše delo, bi rad zelo slišal od vas. Ko boste to storili, vas bom obvestil o kakršnih koli izboljšavah itd. Poleg tega bi bilo v vseh publikacijah, ki opisujejo delo, ki uporablja to kodo, zelo cenjeno potrdilo.

Uporaba

Če želite uporabiti kodo, storite naslednje:

  1. prenesite datoteke emd.h in emd.c (preverite dnevnik sprememb za zadnje spremembe).
    V emd.h spremenite vrstico
  2. typedef int function_t;
    da odraža vašo podatkovno značilnost. Tudi na primer lahko uporabite strukture

typedef struct {
int X, Y, Z;
} funkcija_t;

3. Če želite izračunati EMD, pokličite:

float emd (signature_t * Podpis1, signature_t * podpis2,
float (* func) (funkcija_t *, funkcija_t *),
flow_t * Flow, int * FlowSize);

kje

Podpis1, podpis2:

Pokažite dvema podpisoma, da želimo izračunati njihovo razdaljo.

Dist:

Kazalec na funkcijo razdalje tal. to je funkcija, ki izračuna razdaljo med dvema funkcijama.

Tok:

(Neobvezno) Kazalec na vektor flow_t (opredeljen v emd.h), kjer se bo shranil nastali tok. Tok mora imeti n1 + n2-1 elemente, pri čemer sta n1 in n2 velikosti obeh podpisov. Če je NULL, se tok ne vrne.

FlowSize:

(Neobvezno) Če Flow ni NULL, mora FlowSize kazati na celo število, kjer bo zapisano število elementov pretoka (vedno manj ali enako n1 + n2-1).

4. Compile emd.c in jo povežite s svojo kodo.

Podatek podatkov tipa signature_t je definiran v emd.h kot:

typedef struct
{
int n; / * Število funkcij v distribuciji * /
feature_t * Funkcije; / * Kazalec na vektorske funkcije * /
float * uteži; / * Kazalec na uteži funkcij * /
} signature_t;

Vrsta podatkovne funkcije funkcija_t je definirana v emd.h in jo mora uporabnik spremeniti, tako da odraža njegovo vrsto funkcije.

V posebnih primerih lahko uporabnik morda želi spremeniti nekatere vrednosti v definicijah v emd.h:

#define MAX_SIG_SIZE 100
Največje dovoljeno število funkcij v podpisu

#define MAX_ITERATIONS 100
Največje število ponovitev. Za navadne probleme mora biti 100 več kot dovolj.

#define INFINITY 1e20
INFINITY mora biti veliko večja od katere koli druge vrednosti v težavah

#define EPSILON 1e-6
EPSILON določa točnost rešitve.

Primeri

1. primer1.c

V tem primeru so funkcije v tridimenzionalnem prostoru, zemeljska razdalja pa je evklidska razdalja.

Če želite preizkusiti ta primer, morate spremeniti funkcijo_t v emd.h

typedef struct {int X, Y, Z; } funkcija_t;
2. primer2.c
Tukaj namesto da bi zagotovili funkcijo za izračun zemeljskih razdalj, so podane v vnaprej določeni matrici. To naredite tako, da določite funkcijo_t kot int (privzeto) in nastavite funkcije v vsakem podpisu za zaporedne številke. Funkcija razdalj na tleh te številke uporablja kot indekse vnaprej definirane stroškovne matrike.
Dobljeni tok se vrne iz funkcije emd tako, da kot zadnje parametre prenese vektor flow_t in kazalec na int, kjer bo zapisano dejansko število tokovnih elementov.
Tudi v tem primeru so skupne teže obeh podpisov drugačne. Prvi podpis ima skupno težo 1, medtem ko ima drugi podpis skupno težo 0,9.

Dnevnik sprememb
Datum Razkritje
05/10/98 Sprememba je bila od absolutnega preverjanja napak do relativnega preverjanja napak + Popravljena napaka, ki je povzročila sporočilo o napaki »Nepričakovana napaka pri iskanju najdenih« (zahvaljujoč Marku Ruzonu)
03/04/98 Popravila napako, ki je nekoč povzročila nesrečo, ko je drugi podpis imel samo eno funkcijo (zahvaljujoč Marku Ruzonu)

 

Reference
[1] Y. Rubner, C. Tomasi in L. J. Guibas. Metrika za porazdelitve z aplikacijami na slikovne podatkovne baze. Zbornik IEEE mednarodne konference 1998 Computer Vision, Bombay, Indija, januar 1998, str. 59-66.

[2] F. S. Hillier in G. J. Lieberman. Uvod v matematično programiranje McGraw-Hill, 1990.

Vir: https://users.cs.duke.edu/~tomasi/software/emd.htm

Taksonomija sistemov meta-programiranja.

V meta-programskem sistemu meta-programi manipulirajo z objektnimi programi. Meta programi lahko konstruirajo objektne programe, kombinirajo fragmente predmeta programa v večje objekte, opazujejo strukturo in druge lastnosti predmetnih programov ter izvajajo predmetne programe za pridobivanje njihovih vrednosti.

Obstajajo dve pomembni vrsti scenarijev meta-programiranja: generatorji programov in analize programov. Vsak od teh scenarijev ima številne značilnosti

  1. Generator
    1. Zastopanje: Strings vs. Algebraic datatype vs. Quasi-quote
    2. Samodejno in Ročno označevanje
    3. Statični Generator vs. Runtime Generator
    4. Homogena in heterogena
    5. Izpisano v primerjavi z neizpisano
    1. Statično izpisano in dinamično uničeno
    6. Dve stopnji v primerjavi z N-stopnjo
  2. Analiza
    1. Homogena in heterogena
    2. Povzetek sintakse višjega reda proti sintaksi prvega reda
    3. Izpisano v primerjavi z neizpisano

Generatorji proti analizam

Generator programa (meta-program) rešuje posebno težavo z izgradnjo drugega programa (predmetnega programa), ki rešuje problem pri roki. Običajno je ustvarjeni (predmetni) program “specializiran” za določen problem in uporablja manj virov kot splošni namen, ki ni generatorja.
Programska analiza (meta-program) upošteva strukturo in okolje predmetnega programa in izračuna nekaj vrednosti kot rezultat. Rezultati so lahko grafični prikazi podatkov ali kontrolni tok ali celo drugi objektni program s svojimi lastnostmi, ki temeljijo na lastnostih izvornega objekta. Primeri teh vrst meta-sistemov so: programski transformatorji, optimizatorji in delni sistemi vrednotenja.

Zastopanje: Strings vs. Algebraic datatype vs. Quasi-quote

Sistem meta-programiranja uporablja pripombe programa (imenovane opombe zapisov), da bi razlikovali med metaprogramom iz predmetnega programa. Objektni program mora biti prvovrstna vrednost. O tem bi morali razmišljati kot datastrukturo, ki jo je mogoče manipulirati kot katerakoli druga. Številni meta-sistemi predstavljajo objektne programe z uporabo nizov, grafov ali algebrskih podatkovnih struktur.
Z kodiranjem nizov kodo fragment f (x, y) predstavljamo preprosto kot “f (x, y)”. Medtem ko je gradnja in združevanje fragmentov, ki jih predstavljajo strune, lahko zgoščeno, njihovo dekonstruiranje je precej verbalno. Bolj resno, ni samodejno preverljivega jamstva, da so tako zgrajeni programi sintaktično pravilni. Na primer: “f (, y)” ima statični niz vrstic, vendar to očitno ne pomeni, da ta niz predstavlja sintaktično pravilen program.

Z kodiranjem podatkovnega tipa lahko odpravimo težavo sintaktične korektnosti. Kodiranje podatkovnega tipa je v bistvu enako, kot se imenuje abstraktna sintaksa ali razčleniti drevesa. Kodiranje fragmenta “f (x, y)” v podatkovnem tipu SML je lahko: Uporabi (spremenljivka “f”, tuple [spremenljivka “x”, spremenljivka “y”]) z uporabo podatkovnega tipa, ki se deklarira na naslednji način:

datatype exp = Spremenljiv niz
| Uporabi (exp * exp)
| Tuple exp list

Uporaba kodiranja podatkovnega tipa ima takojšnjo korist: pravilen tipkanje za meta-program zagotavlja pravilno sintakso za vse objektne programe. Ker SML podpira ujemanje vzorcev nad tipi datotestov, dekonstruiranje programov postane lažje kot z nizom predstavitev. Vendar je gradnja programov bolj poglobljena, ker moramo uporabiti okorne konstruktorje, kot sta Variable, Apply in Tuple.

Predstavitev Quasi-quote je poskus, da se ta omejitev zgodi. Tu je dejanska predstavitev objektne kode skrita od uporabnika s pomočjo mehanizma kotacije. Objektna koda je sestavljena tako, da dajo oznake »citat« okoli običajnih kodnih fragmentov.

V preostalem delu tega dokumenta bomo uporabili kvazitacijsko notacijo sistema meta-programiranja MetaML. V kvazi citati MetaML je le ena od večih opomb o zaporedju. V MetaML-u so zapisi zapisov Brackets <>, Escape ~, dviganje in zagon. Izraz <e> gradi kodno predstavitev e; črta kodo, ki jo dobimo z vrednotenjem e v telo bližnjega izraza Bracketed; in zaženite e, ocenjuje e, da pridobi kos kode, nato pa oceni ta del kode. Pomembno je omeniti, da je ~ e le zakonito v oklepajih z lexico.

Kot pri predstavitvi programov v datotečnem prikazu, z uporabo označevalnih zapisov zagotavlja sintaktično pravilnost predmetnih programov z uporabo pravilnosti meta-programov, vendar ohranja enostavnost gradnje objektnih programov. S postopnim sistemom tipa (glej spodaj) lahko pravilnost meta-programov prav tako zagotavlja pravilnost (in sintaktično pravilnost) predmetnih programov.

Samodejno vs. Ročno

Kličemo sistem meta-programiranja, pri katerem programer postavlja pripombe v zaporedje neposredno v sistem ročnega nastavljanja. Če so opombe za zaporedje postavljene s samodejnim procesom, je sistem za meta-programiranje samodejni strežniški sistem.
Off-line delno ovrednotenje je meta-sistem za samodejno uprizoritev. Razmislite o preprosti delni funkciji vrednotenja PE s tipom <s -> d -> a> -> (s -> <d -> a>)

PE predstavlja predstavitev programa z enim statičnim parametrom in enim dinamičnim parametrom ter vrne odgovor. Analizira ta program in samodejno izdela priglašeni program, ki pri dodeljevanju statičnega parametra kot vhod producira predstavitev funkcije iz dinamičnega parametra za odgovor. Na primer:

PE <fn s => fn d => d + (s + 3)>

vrednoti

fn s => <fn d => d + ~ (dvigalo (s + 3))>

Samodejni sistemi meta-programiranja shranjujejo uporabnika, da se trudi postavljati opombe, toda uporabnik samodejnega sistema izgubi nadzor nad strukturo proizvodnje.

Trdilo se je, da je programe, ki se izvajajo ročno, težko pisati in so precej večji od njihovih neizpostavljenih kolegov, ki bi jih lahko vnesli v sistem PE, kar bi prihranilo uporabniku veliko dela. S prihodom sodobnih meta-programskih sistemov s pripisi navajanja kvazitomov je še vedno videti, ali ta argument še vedno velja. Naše izkušnje so bile, da so ročno pripisani programi (v nekaj odstotkih) enake velikosti kot njihovi nepredvideni kolegi.

Statični Generator vs. Runtime Generator

Programski generatorji so na voljo v dveh okvirih: statični generatorji, ki ustvarjajo kodo, ki je nato “zapisana na disk”, obdelana z običajnimi prevajalniki itd. In generatorji kode, ki so programi, ki napišeta ali izdelujejo druge programe, nato pa takoj izvedejo programe so jih ustvarili. Primeri programskih generatorjev so sistemi za generiranje kode, kot sta sintezno jedro, in statični programski generatorji, kot je Yacc.

Homogena in heterogena

Obstajata dve vrsti meta-programskih sistemov: homogeni sistemi, kjer sta meta-jezik in predmetni jezik enaka, in heterogeni sistemi, kjer se meta-jezik razlikuje od predmetnega jezika.

Obe vrsti sistemov sta uporabni za predstavitev programov za avtomatizirano programsko analizo in manipulacijo. Vendar pa obstajajo pomembne prednosti za homogene sisteme. Samo homogeni sistemi so lahko večplastni, pri čemer je lahko predmetni program sam metapodatkov, ki manipulira z objektno programsko opremo druge stopnje. Samo v homogenem meta-sistemu lahko enotni tip tipa vnaša tako meta-jezik kot tudi predmetni jezik. Samo homogeni meta-sistemi lahko podpirajo refleksijo (kjer je meta-jezik dovolj bogat, da se lahko vsak primitiv na objektnih programih izrazi kot meta-program). Samo homogeni meta-sistemi lahko enotno podpirajo operacijo “run” ali “eval”. To je tisto, zaradi česar je možna generacija kode. Homogeni sistemi imajo tudi pomembno pedagoško in uporabnostno lastnost, ki jo uporabnik potrebuje le za učenje enega samega jezika.

Izpisano v primerjavi z neizpisano

Za avtomatiziranje procesa meta-programiranja in zmanjšanje napak je treba omogočiti, da nekatere lastnosti predmetnih programov statično sklepamo iz meta-programov, ki jih manipulirajo. Pomemben napredek, ki ga zagotavlja sistem meta-programiranja MetaML, je sistem, ki je vgrajen v sistem. Sistem s postopnim tipom združuje pomembne informacije o meta-programiranju postavljanja in tipov v en sistem.
Sistem s postopnim tipom natančno določa nastavitvene omejitve sistema, kot tudi zahteve za tipizacijo posamezne stopnje. Ena prednost sistema s postopnim tipom je, da so meta-programi, ki manipulirajo z zlorabljenimi predmeti, sami vneseni. To daje odlične povratne informacije pisateljem meta-programov.

Sistemi zaporednih tipov so še posebej primerni za homogene sisteme, saj je potreben samo en sistem tipa. Takšni sistemi zajemajo statično in dinamično ločevanje parametrov delne ocene. Tako program f s tipom: f :: a -> <d> -> <b -> <c>> nam pove kar precej o programu.

Piše, da je f funkcija z dvema parametroma. prvi je statični (poznan zdaj) parameter vrste “a”, drugi pa je dinamičen (ni znan do druge stopnje) parameter tipa “d”. Ta program ustvari predmetni program, ki je tudi meta-program (drugostopenjski), z enim (drugostopenjskim) statičnim parametrom tipa “b”, ki proizvaja (tretji korak) predmetski program tipa “c” .

Pomembni so tudi tipični heterogeni meta-sistemi. Tukaj vrsta meta-programa nekako vključuje vrste predmetnega jezika. To omogoča, da meta-programi šifrirajo samo vrste, ki so skladne (na ravni objekta) transformacije predmetne kode, ali pa vnašajo prevode iz enega predmeta v drugega. V tem primeru obstajata trije tipski sistemi, ki morajo delovati usklajeno (sistem meta-ravni in dva sistema objektnega nivoja).

Statično izpisano in dinamično uničeno

Dve stopnji v primerjavi z N-stopnjo

Dvostopenjski meta-programski sistem omogoča samo eno meta-stopnjo in eno samo fazo objekta. V metapodirnem sistemu N-stopenj je lahko vsak predmetni program tudi meta-program.

Vmesnik človek-stroj

Poleg teh operativnih lastnosti mora meta-sistem imeti tudi dober vmesnik med človekom in sistemom. Naše izkušnje s sistemi meta-programiranja so nas pripeljale do oblikovanja naslednjega meta-programiranja vmesnika humanega sistema desiderata:

  1. Gradnja. Ustvariti bi bilo treba kodo z uporabo nekakšnih vzorčnih predlog objektnih kod. Predloge morajo “izgledati” kot jezik predmeta, ki ga predstavljajo.
  2. Splicing. Programske fragmente bi bilo treba enostavno združiti v večje programske fragmente, kar najbolje doseže parameterizabilni mehanizem spajanja, kot je “predloge z luknjami”.
  3. Tipkanje. V homogenem sistemu ima objektna koda parametrično vrsto, to je koda s tipom Int, kodo s tipom Float itd. Pravilnost tipov meta-programa mora zagotavljati pravilnost objektnih programov, ki jih gradi.
  4. Higiena. Obvezne spremenljivke v predlogah je treba obravnavati na prefinjen način, ki ne zagotavlja nobenega imena in se drži pravil statičnega obsevanja. Proste spremenljivke v programskih predlogah se morajo nanašati na vrednost spremenljivke na statični lokaciji, kjer je predloga definirana, ne pa na kraju, kjer je bila izvedena.
  5. Run. Objektne programe je mogoče zagnati. Ustvarjena koda se lahko “testira” znotraj meta-sistema.
  6. Tiskanje. Objektne programe lahko natisnete. To je bistveno za razhroščevanje meta-programov. Objektni programi morajo biti precej natisnjeni na način, ki ga običajno napiše programer. Ne smejo jih predstavljati nekatere abstraktne predstavitve, ki niso znane programerju.
  7. Opazovanje. Objektni programi imajo strukturo. Treba bi bilo omogočiti analizo predmetnih programov, jih ločiti, itd.

Vir: http://web.cecs.pdx.edu/~sheard/staged.html

 

Razno Odprtokodno Programska oprema od Randall O’Reilly

Randall C. O’Reilly

Programska oprema:


Različna koda obdelave BibTeX: samodejno ustvari prenos datotek iz vnosov .bib!

Ta programska oprema, napisana v CSS (skriptni program C ++, ki je del programske opreme PDP ++), naredi napačno obdelavo referenčnih datotek bibtexa.

bibtex_lib.css To je osnovna knjižnica za predstavitev vpisa bibtexa in nekaj osnovnih I / O: bibtex_lib.css

bibtex_to_www.css Ta program bo vpisal seznam vnosov bibtex v določeni datoteki in ustvaril spletno stran (html) za prenos dokumentov, navedenih v datoteki bibtex. Ima samo en slog, vendar lahko preprosto spremenite kodo, da naredite, kar želite. Vnos bibtex-ov url označuje povezavo do papirja, v vnosu ključnih besed pa je naveden kateri od nizov (teme s kodami v skripti), v katere želite organizirati prenos. Abstraktni vnos se uporablja za ustvarjanje dodatne strani, ki vsebuje abstrakcije. bibtex_to_www.css

ingenta_to_bibtex.css Na tej strani se prikažejo reference iz storitve incentive email table of contents (ingenta web page) in vam omogočajo, da izberete tiste, ki jih želite shraniti v eno od vaših datotek bibtex. ingenta_to_bibtex.css


xdvik za powerpoint-style predstavitve pod LaTeX

Jaz uporabljam xdvi (dejansko xdvik), da naredim vse moje predstavitve v slogu Powerpoint, pri čemer uporabim LaTeX za generiranje diapozitivov. Allin Cottrell ima lepo stran, ki opisuje, kako je to mogoče storiti. Nedavne različice teh programov zdaj podpirajo barvne posebnosti, ki delno delujejo na mojih popravkih, opisanih spodaj.

Na eni točki xdvi ni podprla barvnih posebnosti pod LaTeXom, ki jih ponuja barvni paket pod 2e, kar bi xdvi omogočilo skoraj popolno predstavitev. Torej, sem spremenil nekaj prejšnjih kodo, ki ga Fred Hucht za podporo barvne posebnosti pod xdvik. Dodal sem tudi nekaj novih posebnosti, ki podpirajo spreminjanje barve ospredja in ozadja za proces ghostscript (gs), ki prikazuje slike postscripta pod xdvi (vključeni so v novejše programe xdvi? Nisem jih še preizkusil).

Navodila za uporabo: uporabite barvne ukaze za barvne pisave, tako kot je dokumentirano v paketu color.sty v grafični zbirki paketov LaTeX2e. Uporabiti morate možnost [dvips] za graphicx: \ usepackage [dvips] {graphicx}, da se prikažejo ustrezne barvne posebnosti. Za specifikacije ghostscript-ja sem napisal ukaze \ gsforecolor {color} in \ gsbackcolor {color} za nastavitev teh posebnih datotek in so vključeni v spodnjo datoteko sshow.sty.

John Smith john.smith@arrows.demon.co.uk je prispeval spremembe, ki so barvne pisave protizdelovale! Obrnjena stran te spremembe je, da se za osnovne znake lahko uporabijo samo primarne barve (vsaka barva se lahko uporablja v ozadju pagecolor). Pri primarnih barvah mislim bodisi 1 ali 0 v vsako od komponent r, g, b. Vse, kar je manj kot 1, se zaokroži navzdol do 0 in bo tako prikazano kot črno.

Prikaz slike v JPEG-u: Hacked xdvik sem prikazal tudi za prikaz slik jpeg bitmap. Moja motivacija za to je bila, da je prikaz ghostscript slik bitma na mojem sistemu grozljivo slab (izgledal je, kot da je izhod tiskalnika povečal, tako da si lahko ogledate vse pike in dithering in sranje, namesto da bi prikazali preklete rgb vrednosti.). Vendar sem pravkar prenesel ghostscript 6.50 in ugotovil, da v resnici prikaže bitmap slike precej lepo zdaj! Oh, dobro, jpeg zaslon je hitrejši, kaj je vredno, in bi lahko bil kdo kdo zanima nekje. Obstajata dva vmesnika za prikazovanje jpeg:

  • Vključite posebno z imenom datoteke (v narekovajih), ki ji sledi parameter višine ali širine opcije. V texu je to doseženo z naslednjo funkcijo: \ def \ jpegimage # 1 {\ special {jpegimage “# 1”} \ ignorespaces}.
  • Koda, ki prikazuje podatke o PS-ju, zdaj preverja, ali obstaja datoteka z enakim imenom kot datoteka .eps (OPOMBA: razširitev * MUST * je .eps), vendar z razširitvijo .jpg, če je tako, potem to prikaže Namesto datoteke .jpg! Torej, lahko začnete z .jpg, uporabite jpeg2ps za pretvorbo .jpg v datoteko .sps level 2. posts, ki je zelo kompaktna (vendar zahteva tiskalnike, združljive z drugo stopnjo, itd.) In nato uporabite grafik pod LaTeXom za \ includegraphics .eps, tako da bo dvips itd. ustvaril ustrezen izhod tiskalnika, medtem ko bo xdvi prikazal sliko v svoji prvotni sliki rgb.

Tukaj so različne datoteke za to delo:

  • Popravek za xdvik (izdelan iz različice 22.15): xdvik-22.15color.patch.
  • Zbirna binarna datoteka za Red Hat Linux 6.2 (morda dela z drugimi različicami – dinamično povezana s knjižnicami XF86 4.0.2 X) – to kopirajte v /usr/bin/xdvi.bin (naredite varnostno kopijo obstoječe, da je varna ): xdvi-22.15color.bin. Če dinamično povezana različica ne deluje, poskusite to statično povezano binarno datoteko: xdvi-22.15color.bin.static.
  • Lupinski skript za klicanje xdvi z ustreznimi argumenti za izvedbo diaprojekcije: sshowxdvi (za ločljivost 1024×768, ločljivost XGA) ali: sshowxdvi800 (za 800 x 600, SVGA ločljivost).
  • A .sty datoteka, da nastavite kup stvari za diapozitive (predpostavlja uporabo color.sty in slides.cls): sshow.sty.
  • Demo datoteka .tex, ki prikazuje, kako deluje vse: sshow_demo.tex, prav tako potrebujete to številko, da prikažete, kako delovne številke zaslona delujejo: sshow_demo_fig.ps in za eps / jpg trik: sshow_demo_mona.eps. sshow_demo_mona.jpg.
  • Nekatere skriptne datoteke za ustvarjanje datotek PDF iz pogovorov:

rormail: nekaj izboljšav v rmailu za emacs

Sem napisal nekaj kod pod emacs, da bralec rmail pošte dela bolj kot mislim, da bi morala. Predvsem to pomeni, da je povzetek vedno prikazan v odbojniku s splitskim oknom, tako da delate predvsem na povzetku, vendar si lahko vedno ogledate izbrano pošto v drugem oknu. Obstajajo številne druge manjše popravke, vključno z revizijo kode mime-compose.el, ki se zdi, da deluje bolje za sestavljanje mime e-poštnih sporočil, in poseben kramp za samodejno pretvorbo informacij o vsebini iz Uncover-Reveal v vnos BibTeX.


rmtcmd, rmtcp, rmtget: skripte za zagon istega ukaza na več sistemih

Za upravljanje številnih podobno konfiguriranih sistemov je zelo koristno, da lahko iste ukaze izvajate v istem imeniku na teh različnih sistemih. Ti skripti lupine naredijo to, poleg kopiranja datotek v oddaljeni sistem in iz njega z uporabo neverjetnega ukaza, rsync (znova, v / iz istega imenika kot na trenutnem gostitelju). Verjetno Beowulf in drugi takšni sistemi imajo takšno funkcionalnost, vendar so ti skripti hitro in umazani in naredijo trik. Vsi so zasnovani na ssh. Upoštevajte, da vsebujejo posebno prevajalsko kodo za situacijo, v kateri imate različne domače imenike na različnih napravah – to so imena mojih gostiteljev v njem in jih je treba spremeniti za vašo namestitev ali pa jih samo odstraniti, če jih ne uporabljate.

Uporaba: 1. arg je en izraz za ukaz, ki ga želite zagnati, ali seznam datotek, ki jih želite kopirati. Preostali argumenti so stroji za delovanje. Tako je uporabno za uporabo ukazne vrstice za ustvarjanje vzdevkov za sisteme, kot v:

alias rmtcu “rmtcmd” \! * “tekoči neo eon šepet eho zod neuro bey santa”

ki mi dovoljuje stvari, kot so:

rmtcu ls -ltr / etc / *

in to deluje na vseh mojih sistemih.

Tukaj so datoteke:

  • Za zagon ukaza v drugih sistemih: rmtcmd.
  • Kopiranje datotek v druge sisteme: rmtcp.
  • Datoteke dobite iz drugega sistema: rmtget.

Orodja za pretvorbo LaTeX datotek v formatu APA v MSWord

Žal večina revij želi prejemati elektronske prispevke v obliki zapisa M $ Word. Obstajajo številni pretvorniki za odhod iz LaTeX v format RTF, ki jih lahko nato preberete v Wordu (glej Pretvorniki iz LaTeX v PC Textprocessors). Vendar nobeden od njih nima pravilnih referenc in drugih oblik oblikovanja (npr. Podnaslovov slik na koncu) (glej prejšnji razdelek za kodo, ki te stvari lepo izvaja v LaTeXu). Napisal sem program, imenovan ltxapa2rtf, da predobdelam datoteko LaTeX, preden sem ga predal enemu od teh LaTeX-jev v RTF-pretvornike (za najboljše delo sem našel latex2rtf), da bi se obrnili na te omejitve. Za razliko od mojega prejšnjega poskusa, je zdaj popolnoma samodejen proces! (čeprav lahko pozabljeni zadnji zidovi še vedno prikažejo svojo datoteko – o tem ne morem storiti ničesar). Obstaja tudi program, ki bo po svoji vrstici (z uporabo simbolnih povezav) samodejno poimenoval datoteke s slikami, da jih bo preprosto kopirati na disketo ali karkoli. Ti utilties so bili napisani s programom CSS, ki je del Programski paket PDP ++, za platforme, ki niso Linux, je to potrebno (za linux je na voljo statično povezana binarna enota).

Tukaj je obvestilo o pomoči iz programa:

ltxapa2rtf [debug] file.tex: pretvori datoteko lateksa s pomočjo referenčnih slogov APA in številk, oblikovanih za oddajo (na koncu, s sporočilom, kjer naj se pojavijo), v ustrezno rtf datoteko, pri čemer uporabite ltx2rtf kot pretvornik datoteke lateksa, ki ga proizvaja ta program.

Natančneje, ta program nadomešča vse primere \ cite, \ incite itd. Iz apa.bst, apa.sty lateks formatov z njihovim ustreznim citiranim besedilom. Datoteka lateksa mora biti vse v eni datoteki (ne \ input, \ include) in datoteka .bbl iz BibTex’ing dokumenta (imenovana file.bbl) mora biti prisotna – prebrala je. Zamenja tudi številke in tabele s »Vstavi sliko X o tem tukaj« in na koncu natisne podnaslove in tabele slike, skladne s slogom psypub.sty, ki ga pretvorniki ne obdelujejo pravilno.

Nastala datoteka je imenovana file_cvt.tex, kjer je datoteka.tex izvirni vir. Ta .tex datoteka se nato prenese na latex2rtf (ki jo je treba namestiti, pridobiti od zgornje povezave) za izdelavo file_cvt.rtf, ki se nato lahko uvozi v Word ali karkoli. Ker latex2rtf včasih težko obravnava enačbe in različne druge konstrukte, boste morda morali urediti datoteko _cvt.tex in ročno poklicati pozno 2xx2 na sebi. Bodite pozorni na zadnjo vrstico postopka konverzije: če piše “Program preklican”, se dobljena datoteka file_cvt.rtf ne bo naložila pravilno. Moral bi dobiti nekaj takega: »Končni iEnvCount = 0« ali »konverzija končana«, če gre skozi vse.

Dva dva argumenta s prvim argumentom (z imenom datoteke kot drugi argument) se lotita veliko grdih sporočil za razhroščevanje.

  • Izvorna koda za ltxapa2rtf (datoteko .css, ki bo, če boste odjavili prvo vrstico, samodejno pokliče css kot skripta lupine): ltxapa2rtf.css.
  • Zbirana različica kode za linux (statično povezana): ltxapa2rtf.linux (kopirajte to v / usr / local / bin ali karkoli kot ltxapa2rtf).
  • Ukaz, ki ustvarja simbolne povezave z imeni, kot je fig_xx.eps, ki temeljijo na ukazih \ includegraphics v datoteki: number_figs.css.
  • Datoteka predlog, ki se uporablja v programu Word (2000) za nastavitev ustreznega oblikovanja APA datoteke RTF: apa.dot. Kopirajte to v okna \ Application Data \ Microsoft \ Templates \. Nato, ko naložite datoteko RTF, pojdite v meni Orodja / Predloge in dodatki .. in kliknite na Pripni in nato izberite apa.dot, nato izberite »Samodejno posodabljanje slogov dokumentov«, nato pa OK in vaša datoteka naj bo videti precej dobro! Lahko greste in označite besedilo »Vstavi sliko ..« in storite Alt-I in jih nastavite na slog Vstavi, ki izgleda nekoliko boljši in jih preprečuje, da bi šli po straneh. Izberete lahko tudi bibliografijo in jo nastavite na slog Bibliografije.
  • Predloga datoteke za uporabo v OpenOffice za nastavitev ustreznega oblikovanja APA datoteke RTF: apa_paper.stw. Odprite ta dokument, izrežite celotno besedilo in nato kopirajte / prilepite vaše .rtf besedilo (odprte v ločenem oknu) v to datoteko. Nato povlecite format / stilist in v spodnjem meniju izberite »Slogi po meri« (privzeto je »samodejno«).
    Pojdite skozi doc in izberite dele, ki se ne zdijo pravilno formatirani in dvokliknete ustrezen slog v slogu (npr. InsertFigure, reference, itd.).
    Zdi se, da naslovna stran povzroči crash pri izvozu v .doc. To lahko povzroči nevidna doodad na samem vrhu strani; izbrišite to. Preden poskušate shraniti .doc, shranite svoje delo kot datoteko Oowriter. Upoštevajte, da format .rtf morda ne podpira veliko simbolov iz enačb.

Različna elisp koda za emacs

Odvzet od : http://psych.colorado.edu/~oreilly/misc_software.html

Modcomp mini računalniki

Douglas W. Jones
UNIVERZA V IOWA Oddelek za računalništvo

Reklamni plakat Modcomp iz leta 1980 (avtorjeva zbirka). Zelo majhno besedilo na dnu plakata daje poslovne naslove podjetja Modcomp in ne vsebuje obvestila o avtorskih pravicah.


 [photo of Simpler terminal]

Modcomp, Fort Lauderdale Florida, je v začetku sedemdesetih let začel izdelovati 16-bitne mini računalnike, namenjene tekmovanju s stroji, kot sta DEC PDP-11 in HP 2115. Leta 1974 so prišli z mini-računalnikom Modcomp IV, vključuje podporo za 32-bitna cela števila, 64-bitno enoto s plavajočo vejico in enoto za upravljanje pomnilnika. Modcomp IV je prišel na trg rahlo pred Dec Vax 11-780 in je bil na nek način dostojen konkurent. Modcomp IV je sledil okoli leta 1980 z Modcomp Classic, ki je dodal podporo za 32-bitno naslavljanje arhitekture.

Ironično, na sliki, ki je prikazana tukaj, ni izdelkov Modcomp. Inteligentni terminal Plato V je iz CDC-ja (to je IST-II) in izhod, prikazan na tem terminalu, je iz sistema Simpler, kmalu po tem, ko je Univerza v Illinoisu odprla tehnologijo Global Information Systems za trženje te programske opreme. Poenostavljeno je bilo izvajanje programskega jezika Tutor iz sistema Platon IV v Illinoisu. Modcomp se je zanimal za trženje Simpler, ker je tekel na Modcomp IV ali Minicompompu Modcomp Classic. Kasneje se bo Simpler preimenoval v ACCORD.


Programski referenčni material

Programska žepna referenčna kartica za Modcomp IV avtorsko pravo 1976 na Univerzi v Kaliforniji v San Franciscu. To je skeniranje fotokopije izvirnika. Kopije te kartice so bile pogosto uporabljene, saj ni bilo nobene uradne jedrnate referenčne kartice za stroj.


Strojna oprema

Lyle Bickley je na spletu objavil lepo zbirko fotografij, ki prikazuje sistem Modcomp II. Kot je razvidno iz teh fotografij, so bili mincomputerji podjetja Modcomp iz leta 1970 izdelani iz žičnih vlaken, ki so bili povezani s tečaji vzdolž enega roba in urejeni tako, da so odprli kot strani knjige. Medsebojno povezavo med ploščami so potekali s trakovi kablov vzdolž roba hrbtenice knjige, tako da se je lahko odprla katera koli plošča med delovanjem stroja. Minimalni računalnik Modcomp II je zahteval 4 plošče, dva za CPU in eno 32-kanalno pomnilniško jedro. Stroj, prikazan v tej zbirki fotografij, ima 64K besed pomnilnika, zato ima 2 jedra.

Medtem ko so bili manjši računalniki Modcomp pakirani s hrbtenico knjige vodoravno in odpiranje navzgor, so računalniki, ki so zahtevali več plošč, pakirani z navpično hrbtenico, tako da so se stranice odprle navzven od sprednje strani releja. To je mogoče videti v zbirki fotografij pri DVQ; se pomaknite navzdol do dna strani, da si ogledate fotografije Modcomp II. Ta stroj je večji zaradi dveh razlogov: ima enoto s plavajočo vejico in glavni pomnilnik je zgrajen iz 4 16K pomnilniških modulov namesto dveh 32K modulov. To pomeni, da je starejši, vendar na fotografijah ni nobenega datuma izdelave.


Koristna spletna stran: http://homepage.divms.uiowa.edu/~jones/modcomp/

Nekatera vprašanja in odgovori o uporabi programa Java v računalniških znanjih

Doug Lea

[Večinoma napisana zima 1996 in v zadnjem času ni posodobljena.]

Mi smo v oddelku za računalništvo na Državni univerzi v New Yorku pri Oswego od septembra 1995 uporabljali Java v osnovnem uvajalskem programskem tečaju (“ CS1 ”), in drugem (programski tečaj za novinarstvo / drugo leto) (“ CS2 ”) od januarja 1996.

V zadnjem času me je veliko ljudi iz drugih računalniških oddelkov vprašalo, kako se dogaja. Nikoli ne vem, kaj naj rečem “do sedaj, tako dobro”. Namesto tega zbira nekaj posebnih vprašanj in odgovorov tukaj. Posodabljam in dodam predmete, ko dobim priložnost.

Prvič, tukaj je nekaj hitro ozadje: to so 13-tedenski semester-dolgi 3-kreditni tečaji predavanj z programskimi laboratoriji. CS1 (in nekateri CS2) laboratoriji vključujejo strukturirane, nadzorovane vaje. Craig Graci poučuje CS1. Sem učitelj CS2 tega semestra študentom, ki (z nekaj izjemami) naučijo Java v CS1. Prav tako smo uporabili Java v nekaj drugih tečajih CS, mnogi naši mladi / višji študenti pa se odločijo za uporabo Java za projekte na naprednih tečajih. Toda CS1 in CS2 (in do neke mere obseg CS3 in sorodnih tečajev) predstavljata naša glavna trenutna prizadevanja pri razvijanju našega večinoma ACM-jevega programa BA / BS Computer Science s podiplomskim programom s splošnim poudarkom na sistemih in programskem inženiringu. CS1 in CS2 prav tako prevzamejo glavarji informacijskih znanosti, mladoletniki CS, nekateri matematiki in znanstveniki ter drugi zainteresirani dijaki. Poleg programskega zaporedja CS1 / 2/3 zahtevamo tudi, da se predavatelji izvajajo tečaje v (1) računalniški arhitekturi in programiranju na nižjih nivojih, (2) uvod v formalne metode, (3) primerjalni programski jezik, kjer študenti (4) uvod v programsko inženirstvo, ki temelji na PSP-u Wattsa Humphreyja (ki se je pred kratkim naučil z uporabo Java). Pred uporabo Java v CS1 / 2/3 smo uporabili (najnovejši prvi vrstni red) C ++, Modula2, Pascal in Fortran za osnovne tečaje. Standardiziramo na jezikih samo za sekvenco CS1 / 2/3. Poleg tega učitelji zahtevajo ali predlagajo uporabo katerega koli jezika, ki je smiseln za njihove tečaje, ali pa ga pustite na voljo študentom. Še nikoli ne uporabljamo Java na noben od naših tečajev za »storitve« za nemedicinske delavce.

  1. Ali naj uporabljamo Javo v našem programu CS?
  • Resnično ne morem misliti na noben dober pedagoški razlog, da ne. Nekatere očitne prednosti so:

    • Je majhen, objektno usmerjen in ga je lažje naučiti kot večina drugih verjetnih uvodnih programskih jezikov.
    • Večina študentov meni, da je prijetno; včasih celo zabavno.
    • Študenti (skoraj gotovo upravičeno) verjamejo, da je učenje dragoceno resnično znanje sama po sebi.
    • Ker je enostavno naučiti osnov, lahko predstavite več o programiranju, oblikovanju in reševanju problemov, kot pa pri uporabi jezikov, kot je C + +.
    • Če nič drugega, je študentje znatno preprostejše, da se seznanijo z nekaterimi konvencijami jezikov v sintaktični tradiciji C (C + +, Obj-C, CORBA-IDL itd.).

Obstaja seveda nekaj različnih mnenj tam zunaj. Ni težko najti člankov, spletnih strani in pošte, da bi morala biti Java bolj kot Ada ali Eiffel ali Smalltalk ali ML ali … verjetno tudi Cobol.

2. Ali to ni samo očarljiv odziv na priljubljene trende?

Ne mislimo tako. Na primer, ne poskušamo naučiti Visual Basic, čeprav je to verjetno najbolj razširjen programski jezik na svetu.

Ampak Java je drugačna. Java podpira minimalen niz konstruktov, ki skupaj odražajo večino tehničnega napredka v metodologiji programiranja, ki se je zgodila v zadnjih petnajstih letih. Njegov status je v mnogih pogledih podoben kot pri Pascalu in Unixu v zgodnjih sedemdesetih letih. Pascal, Unix in Java so nastali kot preprostejše, razumljivejše in bolj praktične alternative obstoječim tehnologijam (Algol68, itd, itd.). Poleg tega je vsak prispeval nove ideje in na koncu služil kot tehnični substrat za nadaljnji teoretični in tehnični napredek.

Tako ni toliko jezik Java, temveč programski koncepti in veščine, ki so neločljivo povezani z jezikom, ki vpliva na kurikulume CS. (V tem smislu je dejstvo, da je Java sorazmerno enostaven za učenje in da postaja izjemno priljubljen v komercialni in drugi vsakodnevni rabi, večinoma samo dodali spodbude za ponovni premislek o kurikulumih.) Te vključujejo:

Izdelava kompozicijske programske opreme
Skoraj vsi programi so izdelani iz delov, od katerih jih večina avtor ne zapisuje. Iskanje, razumevanje in uporaba zunanjih komponent sta dragocena in zahtevna tehnična znanja, v katerih študentje CS potrebujejo usposabljanje in izkušnje. Java poudarja pomen takšnih veščin, saj se programatorji zdaj morajo spoprijeti z komponentami, ki jih je mogoče enkrat uporabiti (Java “ .class ” datoteke), ki jih lahko najdete na celotnem spletu.

Object-Oriented Design in programiranje
Večina programov CS je v zadnjih desetih letih vse bolj integrirala koncept OO v svoj kurikulum. Toda jezikovna vprašanja so bila delno krivda za težko zagovarjano težnjo, da bi poučevali programiranje OO po tradicionalnem procesnem načrtovanju, namesto prej – pojav, ki je podoben učenju strukturiranih zank šele po poučevanju surovih skokov. Vidiki OO v Javi so tesno povezani in dovolj enostavni, da se naučijo, da ni razloga, da jih ne bi najprej naučili. Hkrati je za razliko od drugih temeljito predmetno usmerjenih jezikov Java (vsaj sintaktično) dovolj podobna surove C, da bi učenci imeli manj težav kasneje, ko se učijo C v tečajih za programiranje na nizki ravni in sistemih.

Reaktivno programiranje
Na vseh ravneh obsega je večina programske opreme, ki jo ljudje uporabljajo, reaktivno – programi, ki se odzivajo na dogodke UI, dohodne telefonske klice, zunanje dražljaje vseh vrst. Študenti, ki se učijo samo za načrtovanje in izvajanje samostojnih enopredmetnih programov, niso pripravljeni graditi celih kategorij uporabne programske opreme. Java zagotavlja preprosto in zabavno vstopno točko v reaktivno programiranje preko programov Applets – UI, ki se lahko izvajajo iz strani HTML. Nadalje, ker Java neposredno integrira vzporedne konstrukte v sam jezik, se lahko večnacionalne večnitne reaktivne tehnike programiranja uvedejo sorazmerno zgodaj in seveda brez potrebe po preklopu na druge jezike ali orodja.

Širša vloga programiranja in programerjev
Nemogoče je napovedati, kako široko ali kako dolgo bo Java uporabljen v aplikacijah WWW, multimedia in aplikacijskih naprav ter podobno. Vendar pa je varno stava, da se bo vrsta integracije programiranja v vsakdanje življenje, ki jo vidimo z Javo, kmalu umirila. Programiranje apetov, ki je dostopen WWW, ki ga vodijo ljudje na pol poti po vsem svetu, daje nežen uvod v nekatere standardne inženirske probleme: vpliv programske opreme na družbo, potrebo po sodelovanju z drugimi strokovnjaki (če le kolega študent, ki pozna bitno o grafičnem oblikovanju) pri izdelavi artefakatov ter odgovornosti in etike v inženirstvu.

Ena podobnost med temi pojmi je, da se “običajno” programiranje poleg tistih, ki obkrožajo algoritmike in računanje, vse bolj zanašajo na načela načrtovanja in inženiringa. Potreba po razumevanju klasičnih podatkovnih struktur, algoritmov, formalizmov in analitičnih tehnik sploh ni izginila. Vendar takšnih tem ni mogoče obravnavati ločeno ali izključiti druge. Morda je bilo nekoč res, da je bila izvedba dobre podatkovne strukture enaka izvedbi koristnega programa. Ker pa se je aplikacija, obseg in razširjenost programske opreme povečala, je treba tudi zajeti, strukturirati in uskladiti takšne implementacije kot komponente večjih sistemov.

Skratka, verjamemo, da bi bilo nerodno, da bi te programe uvedli že prej kot razumni, koncepti in spretnosti, ki se v Java dobro podpirajo. Uvedba Jave zagotavlja pravočasno sredstvo za ponovno preučevanje teh vidikov standardnega učnega načrta, podobnega ACM.

3. Ali ni težava, da ni nobenih dobrih učbenikov CS1 / 2/3 na osnovi Java?

To ni bilo velik problem; samo manjša neprijetnost. (Navedite Jim Waldo, ki citira nekoga drugega: Jezik prav tako ni tako težak!) Trenutno v besedilu CS1 trenutno ne uporabljamo besedila. V CS2 uporabljam jezikovno neodvisno strukturo podatkovnih struktur, predvsem kot referenco, ne da bi se predolgo uskladili s predavanji. Od tega pisanja ni mogoče priporočiti nobenih knjig iz Jave, ki sem jih videl (kar nikakor ni vse), kot besedilo tečaja. Vendar pa lahko knjige, kot sta Arnold in Goslingov jezikovni program Java, služita kot koristna pomožna besedila.

4. Imate študentke, ki v celoti uporabljajo program Applets?

Ne za CS1; da za CS2. V CS1 uporabljamo Java v standardnem besedilnem okolju, ki ureja prevajalnik, in piše programe s samostojnim omrežjem. V CS2 so vse naloge napisane kot Applets. To je bilo prvotno storjeno predvsem zaradi logističnih razlogov – v našem kampusu ni dovolj SparcStations ali Windows95 osebnih računalnikov, da bi zagotovili zadosten dostop za 70-100 CS1 študentov na semester.

Vendar pa se zdi, da se je izkazalo za zelo dober dogovor. Zelo težko je opisati gradbene mehanike Applet za dokončanje novic, dokler niso imeli nekaj izkušenj z izrazi Java, spremenljivkami, metodami, razredi in tako naprej. Toda, ko vedo te stvari, je enostavno in zabavno uvesti Applets. (Vse to bo zagotovo spremenilo, ko bodo na voljo boljša orodja za razvoj orodij in okolje. Tudi če bodo ti na voljo, bi lahko še vedno zagotavljali boljšo podlago za odložitev njihovega uvajanja, dokler učenci ne bodo imeli boljše ideje o tem, kaj se dogaja pod njim ali morda ne. Ker ustreznih orodij ni na voljo, nimam mnenja.)

5. CS1: Ali začnete pokrivati razrede?

Precej. Pravzaprav začnemo govoriti o reševanju problemov na splošno in računati na splošno. Toda predmeti in razredi so uvedeni skoraj istočasno z izrazi in izjavami.

6. CS2: ne zajema stvari, kot je Applets, oddaljiti od razrednega časa, ki bi se lahko bolje porabili za podatkovne strukture in druge standardne CS2 materiale?

  • Da, potreben je čas. Ne, mislim, da ni zapravljen čas. Pravzaprav se zelo dobro prilega načinu, na katerega (na podlagi mojega modela) je izdelana vsaj moja OOish različica) CS2:
    • Applet in AWT mehanika sta nujni deli uvajanja pojma modelov stvari z vizualnim videzom.
    • Študentom nudi izkušnje z razvojem na podlagi komponent. Študenti morajo vedeti, kako najti in razumeti vnaprej zgrajene razrede, ki so dovolj dobri, da jih uporabljajo z lastnimi razredi.

Poudarjanje teh stvari pred in med napadom na klasične podatkovne strukture in algoritme je zelo dobro delovalo.

Po drugi strani pa obstaja nekaj režijskih stroškov, ki se ne ujemajo tako dobro. Preveč časa v zvezi s logistiko je povezano z uporabo Netscape, Solaris in Win95 in tako naprej. Plus, poučevanje dovolj HTML in povezanih WWW mehanike za preživetje.

7. Ali pokrivate celoten jezik v CS1? CS2?

Ne; to ni niti cilj. Naučimo koncepte in spretnosti, primerne za tečaj, in kako jih izrazimo v Java, ne obratno.

8. Ali od študentov zahtevate, da delajo skozi Sun Java Tutorials?

Št Sun (in drugi WWW) vaje niso vse, kar je koristno za učence, ki se učijo Java v kontekstu učenja računalništva.

9. Kakšen je vpliv na opremo in naprave?

Boste želeli več računalniške moči in boljše povezanosti. Ampak potem, vedno delaš. Prav tako boste morali živeti z namestitvijo rednih posodobitev JDK, HotJava itd.

10. Kakšna je največja napaka, ki ste jo naredili?

V prvem letu smo verjetno preveč izkoristili, kako enostavno se je naučiti osnov; včasih pozablja, da še vedno potrebuje čas, da pridobi minimalno “programsko zrelost” v katerem koli jeziku.

11. Kaj je najbolj presenetljivo?

Zame se način, na katerega se študentje CS2 tako hitro prilagajajo pojmu izgradnje reaktivnih, porazdeljenih programov na internetu in kako to, toliko ali bolj kot objektno usmerjeni vidiki programiranja Java, tako temeljito ureja njihov odnos do tega, kaj programiranje je vse okoli.

12. Ali pokrivate istočasno (Java niti itd.) Ali porazdeljeno programiranje (na primer z uporabo Java RMI) v CS1? CS2?

Ne, predvsem zato, ker še nismo ugotovili, kako ravnati v zvezi s temi vidiki programiranja v okviru teh tečajev. Ampak glej Lynn Andrea Stein’s Rethinking CS101 projekt (MIT), ki poskuša to storiti.

13. Imate načrt dolgoročnega kurikula?

Nič uradnega. (Čeprav se nekateri moji kolegi iz oddelkov močno ne strinjajo, menim, da je kontraproduktivno narediti kakršno koli dolgoročno načrtovanje računalniških učnih načrtov, ne da bi zagotovili dovolj strukturne svobode, da bi se lahko prilagajali, razvijali in eksperimentirali s tečaji. Glavna nezaželena posledica je da imajo učenci na naprednih predmetih neenakomerno ozadje. Torej, kaj.)

14. Imate kakšno gradivo za tečaj?

Večina zapiskov, obrisov, primerov, laboratorijskih vaj, podporne kode itd. Se piše, ko gremo skupaj. Nekatera gradbena gradiva so na voljo na moji domači strani, domači strani Craig Graci in domači strani Rameen Mohammadi.

15. Ali lahko podate kvantitativne rezultate o razlikah med tečaji na osnovi Java ali C ++ / Modula /…?

Nič več, kot smo že videli, da smo do sedaj videli manjšo izgubo kot pri uporabi C + +.

16. Katere druge šole, univerze ali srednje šole uporabljajo Java v CS tečajih?

Sonce je na spletu vzdrževalo seznam, vendar se je zdelo, da je izginilo. Spletna stran ACM SIGCSE vsebuje tudi nekatere povezane povezave.

Prav tako si oglejte nekaj izmenjav o uporabi Java v ETS AP CS izpitu.

Dodatna vprašanja in pripombe so dobrodošli! Pošljite jih na dl@cs.oswego.edu.

Vir: http://gee.oswego.edu/dl/html/javaInCS.html

 

 

 

 

Modul PODs

Dokumentacija za module Perl je napisana v preprostem označevalnem jeziku, ki se imenuje POD (Plain Old Documentation).
Na tej strani je prikazano, kako napisati POD za modul Perl. Če se držite tega sloga, bodo drugim lažje prebrali in razumeli vašo dokumentacijo.

h2xs postavlja skelet POD na koncu datoteke .pm, ki jo piše. Za dodatne primere preberite PODs v obstoječih modulih.

= glavo1 NAME

Geometrija :: Krog - upravlja krog


V razdelku NAME se navede ime modula v opisni liniji.
Ime in opis sta ločena s pomišljajem. Pomembno je, da držite te oblike, tako da lahko POD spremenite na ustrezno stran človeka.
= glava 1 SYNOPSIS

   uporabite Geometry :: Krog

   $ circle = nova geometrija :: krog $ x, $ y, $ r

   ($ x, $ y) = $ circle-> središče;
   $ radius = $ circle-> polmer;
   $ area = $ circle-> območje

   $ pi = $ Geometrija :: Krog :: PI;
V oddelku SYNOPSIS so prikazani bistveni koraki pri uporabi modula: uporabniška izjava, vsa podprograma, metode razreda ali spremenljivke in vse metode objektov. Klici metode morajo navajati njihove parametre in povratne vrednosti.

Vsaka vrstica v povzetku se odstrani. Zaradi tega je dobesedni odstavek in zagotavlja, da bo vaša uskladitev ohranjena.

= glava1 ZAHTEVA

Perl5.8.8, Izvoznik, Geometrija :: Točka
Oddelek REQUIRES pove uporabniku, kaj bodo potrebovali za uporabo modula.
= head1 IZVOZ

Nič
Razdelek EXPORTS pove uporabniku, kaj bo modul naredil v svojem imenskem prostoru, če ga bo uporabil.
= head1 OPIS

Geometrija :: Krog upravlja krogi.
Za ustvarjanje so predvidene metode
kroge in računanje njihovih območij.

To je opis modula.

Treba je napisati v izrazih, ki so pomembni za uporabnika, ne pa za programerja.

  • Kaj to naredi za uporabnika?
  • Kako jo uporabite?
  • Katere predmete podpira?
  • Katere metode zagotavlja?

 

 

= glave1 METODE

= glava2 ustvarjanje

= več kot 4

= element nova geometrija :: krog $ x, $ y, $ radij

Ustvari in vrne a
novi Geometry :: Krog predmet
s središčem ($ x, $ y) in polmerom radia $.

= nazaj

= head2 Access

= več kot 4

= element $ circle-> center

Vrne seznam koordinat x, y
središča kroga.

V skalarnem kontekstu,
vrne referenčno polje matrike.

= element $ circle-> polmer

Vrne polmer kroga.

= element $ circle-> območje

Vrne območje kroga.

= nazaj

Oddelek METHODS navaja in opisuje vsako metodo v razredu.

Nadalje lahko organizirate metode pod postavkami ravni 2, kot so ustvarjanje, dostop in uporabnost.

= head1 RAZLIČNE SPREMENLJIVKE

= več kot 4

= element $ Geometrija :: krog :: PI

Razmerje oboda
kroga premera.

= nazaj

V razdelku RAZRED VARIABLES so naštete vse spremenljivke paketa v API-ju.
= glava1 DIAGNOSTIKA

= več kot 4

= element Negativni polmer

(F) Krog se ne sme ustvariti z negativnim polmerom.

= nazaj

Oddelek DIAGNOSTICS daje besedilo vsakega sporočila o napaki, ki ga modul lahko generira, in razloži njegov pomen.

Sporočila o napakah so razvrščena na naslednji način:

(W)

Opozorilo (neobvezno)

(D)

Opustitev (neobvezno)

(S)

Resno opozorilo (obvezno)

(F)

Fatalna napaka (trappable)

(X)

Zelo fatalna napaka (neuporabna)

= glava1 AUTHOR

A. U. Thor, a.u.thor@a.galaxy.far.far.away

Vključiti morate svoje ime in e-poštni naslov, če vas bo kdo moral kontaktirati glede modula.
= glava1 GLEJ TUDI

perl (1), Geometrija :: Trg
To je običajen seznam povezanih programov in modulov.
= razrez
Linija = rezka označuje konec POD-besedila.

Nekateri ljudje distribuirajo POD-razdelke po njihovi izvorni kodi. Perl prepozna dele POD in jih ignorira.

Odvzet od : http://world.std.com/~swmcd/steven/perl/module_pod.html