Struktura in interpretacija računalniških programov pdf. Struktura in interpretacija računalniških programov

Zgradba in interpretacija računalniških programov

Zgradba in interpretacija računalniških programov

Harold Abelson, Gerald Sussman

Izvirni jezik:
Izvirnik objavljen:
serija:

Serija MIT za elektrotehniko in računalništvo

Založnik:
Strani:
Nosilec:
ISBN:

"Zgradba in interpretacija računalniških programov"(Angleščina) Struktura in interpretacija računalniških programov - SICP poslušaj)) je klasična knjiga o programiranju Harolda Abelsona in Geralda Sussmana, ki jo je izdal založnik leta 1985. Na inštitutu so ga uporabljali kot učbenik za začetni tečaj programiranja. 6.001 z istim imenom ( 6.001 je nadomestil tečaj 6.01 z uporabo Pythona). Poleg tega se knjiga uporablja v številnih ameriških izobraževalnih ustanovah, ki imajo tečaje, tako ali drugače povezane z jezikom Scheme.

Z uporabo Scheme (narečje jezika LISP) so avtorji opisali osnovne koncepte programiranja, vključno z abstrakcijo (podatki in izvajanje), rekurzijo in metajezikovno abstrakcijo.

Knjiga opisuje tudi praktično implementacijo konceptov registrskega stroja in metacikličnega tolmača.

Besedilo druge izdaje knjige se distribuira pod licenco Creative Commons (CC-BY-NC različica 3.0).

Opombe

Povezave

  • Uradna stran knjige na spletni strani MIT Press (angleščina)
  • SICP Wiki - rešitve in razprava o nalogah iz knjige (angleščina)
  • Predavanja avtorjev knjige na tečaju SICP (angleščina)

Fundacija Wikimedia. 2010.

  • Struktura podatkov za disjunktne množice
  • Struktura kataloške številke ruskih kovancev

Poglejte, kaj je "Zgradba in razlaga računalniških programov" v drugih slovarjih:

    GOST R 54136-2010 Sistemi industrijske avtomatizacije in integracija. Vodnik po standardih, struktura in besedišče- Terminologija GOST R 54136 2010: Sistemi industrijske avtomatizacije in integracija. Smernice za standarde, struktura in besednjak izvirni dokument: 4.1 abstraktni del: del, ki je opredeljen samo s svojim... ... Slovar-priročnik izrazov normativne in tehnične dokumentacije

    SICP

    Struktura in interpretacija računalniških programov- Struktura in interpretacija računalniških programov Avtor: Harold Abelson, Gerald Sussman Izvirni jezik: Angleščina Izvirnik izdan: 1985 Serija: MIT za elektrotehniko in računalništvo ... Wikipedia

    Programski jeziki- Programski jezik je formalni znakovni sistem, namenjen pisanju programov. Program običajno predstavlja nek algoritem v obliki, ki je razumljiva izvajalcu (na primer računalniku). Programski jezik določa nabor... ... Wikipedia

    Lisp- Semantika: multi-paradigma: objektno usmerjeno, funkcionalno, proceduralno programiranje Datum nastanka: 1958 Avtor(ji): John McCarthy Tipkanje podatkov ... Wikipedia

    Lisp- Semantika Lisp: multi-paradigma: objektno usmerjeno, funkcionalno, proceduralno programiranje Uvedeno leta: 1958 Avtor(ji): John McCarthy Tipkanje podatkov: močno, dinamično... Wikipedia

    LISP- Semantika: multi-paradigma: objektno usmerjeno, funkcionalno, proceduralno programiranje Datum nastanka: 1958 Avtor(ji): John McCarthy Tipkanje podatkov: močno, dinamično Narečja: Splošno ... Wikipedia

    STO je mednarodna finančna organizacija WTO: pristop k WTO, Rusija v WTO, sestava WTO Vsebina >>>>>>>>>>>>>> ... Enciklopedija vlagateljev

    Umetna inteligenca- Zahteva "AI" je preusmerjena sem; glej tudi druge pomene. Umetna inteligenca (AI) je znanost in tehnologija ustvarjanja inteligentnih strojev, zlasti inteligentnih računalniških programov. AI... ...Wikipedia

    ANALIZA DRUŽBENIH OMREŽIJ- metodologija in metode preučevanja povezav med družbenimi akterji. Pojav te metodologije pripisujemo bodisi letu 1930, ko se je v psihologiji oblikoval sociometrični pristop, bodisi letu 1950, ko je za analizo zgodnjih deskriptivnih študij... ... Sociologija: Enciklopedija

knjige

  • Struktura in interpretacija računalniških programov, Harold Abelson, Gerald Jay Sussman. Knjiga je posvečena opisu različnih sistemov programske sintakse, analizi prehoda iz nabora algoritmov v programsko kodo. Precej prostora je namenjenega razpravi o nizu osnovnih...
5. maj 2016 ob 12.09

Zakaj na MIT ne preučujejo več SICP

  • Programiranje

Pred dnevi je veliko pozornost pritegnil govor Geralda Jaya Sussmana, enega od avtorjev velikega in mogočnega SICP, pa tudi botra Scheme, ki je potekal na NYC Lisp srečanju v začetku leta. Vse zaradi odgovora na vprašanje, zakaj je MIT prenehal poučevati zdaj že legendarni predmet 6.001, ki temelji na knjigi Sussmana in Abelsona “Struktura in interpretacija računalniških programov” (vprašanje je bilo zastavljeno v 59. minuti).

Sussman je navedel dva razloga; vendar bom takoj opozoril, da v prvem ni nič posebnega. Do leta 1997 sta se Abelson in Sussman že naveličala pripovedovanja praktično istih stvari od 80. let prejšnjega stoletja, zato sta se odločila zapustiti poučevanje in prosila vodjo oddelka, da se samostojno odloči, kaj bo s samim tečajem. Tu pravzaprav ni nič presenetljivega - vse lahko postane dolgočasno, če se s tem ukvarjate dovolj dolgo.

Vendar je drugi razlog veliko resnejši. Po besedah ​​Sussmana sta on in Abelson spoznala, da kurikulum SICP ne more več pripraviti inženirjev na to, kar je "inženiring" danes. V 80. in 90. letih so inženirji gradili zapletene sisteme s kombiniranjem preprostih in dobro razumljivih "delov". Cilj SICP je bil zagotoviti jezik abstrakcij za sklepanje o takih sistemih.

Danes so stvari drugačne. Dandanes inženirji običajno pišejo kodo za zapleteno strojno opremo, ki je ne razumejo popolnoma (in to je pogosto zaradi poslovnih skrivnosti in ne zaradi lenobe ali pomanjkanja časa - vzemite isti Apple in njegove tehnologije). Enako velja za programsko opremo, saj so programska okolja sestavljena iz velikanskih knjižnic z najširšo funkcionalnostjo. Po besedah ​​Sussmana njegovi učenci danes večino svojega časa preživijo ob branju priročnikov za te knjižnice, da bi ugotovili, kako jih povezati s preprostim ciljem, da vse deluje in naredijo, kar potrebujejo.

Po Sussmanovih besedah ​​je »programiranje danes bolj podobno znanosti: vzamete kos knjižnice in ga pokukate – poglejte, kaj počne. Nato se vprašate: "Ali lahko to konfiguriram tako, da dela tisto, kar potrebujem?" Pristop analize s sintezo, ki se uporablja v SICP, kjer zgradite velik sistem iz preprostih, majhnih delov, je postal zastarel. Danes programiramo naključno.

Končno je bil Python izbran kot alternativa Lispu na MIT. Učitelje je v prid jeziku prepričalo dejstvo, da je za Python na voljo precejšnje število knjižnic, ki omogočajo njegovo uporabo za reševanje vaj v najrazličnejših projektih (na primer za pisanje programske opreme za krmiljenje robotov). .

Vendar pa se je sam Sussman pošalil, da je bila uporaba Pythona "pozno zavezujoča" odločitev - saj je bil načrt usposabljanja SICP bolj "koherenten" od tistega, kar ga je nadomestilo. Priznal je, da s sodelavci še nimajo pojma, kakšen naj bi bil optimalen načrt treninga.

Mnenja o sodobnem izobraževanju nasploh in o tem, kaj bi se morali bodoči programski inženirji še naučiti, so radikalno različna – zato je iz novosti nemogoče podati nedvoumen sklep. Po eni izmed njih je temeljni cilj učenja CS razumevanje delovanja računalnikov in ne učenje posebnih programskih jezikov, še manj pa knjižnic. Mnenje soavtorja tečaja Abelsona o koncu obdobja SICP na MIT lahko najdete tukaj.

Sodobno gospodarstvo nujno potrebuje veliko število aplikacijskih programerjev na trgu in univerze izpolnjujejo svojo odgovornost pri pripravi študentov na prihodnost. Seveda se zdi nemogoče naučiti se vsega, sploh na začetku kariere; hkrati pa resna študija CS zmanjša količino slabe kode in trpljenje kolegov razvijalcev.

Ena od zgodb MIT je vedno bila, da je "učenje SICP in Lisp točka, kjer bruci začnejo puščati večino sveta za seboj v smislu sposobnosti reševanja problemov in sposobnosti opravljanja svojega dela"; Poleg tega mnogi diplomanti MIT nadaljujejo s pisanjem knjižnic sami, namesto da uporabljajo knjižnice nekoga drugega. Zdi se, da so kljub kruti realnosti poslovanja med nami tisti, ki (na skrivaj) uživajo v procesu učenja programiranja iz nič, učinkovite rabe virov in izdelave lastnih koles veliko bolj kot vsakodnevno spopadanje z API-ji drugih ljudi in povezovanje že pripravljene odprtokodne komponente v prizadevanju, da naredijo tisto, kar je potrebno – prav tisto »opraviti delo«, o katerem je govoril Sussman (čeprav je nov pristop v tem pogledu res bližje produkcijskim nalogam). Vendar pa bodo časi, ko so študentje morali izdelovati prevajalnike/tolmače kot del svojega izobraževanja, morda stvar preteklosti prej, kot si mislimo.

Vse to seveda ni razlog, da zavrnete seznanitev s SICP. Po ustaljeni tradiciji povezave do

Knjiga z naslovom " Struktura in interpretacija računalniških programov"je bila izdana leta 1979. Prej je bila uporabljena za poučevanje začetnega tečaja programiranja med študenti MIT. Zdaj je knjiga brezplačno dostopna na internetu in vsakdo si jo lahko prenese in preučuje za zabavo. Poleg knjige obstaja je tudi video serija v omrežju - predavanja avtorjev, nahajajo se na viru MIT OpenCourseware, zdi se mi, da se med študijem gradiva lahko dobro dopolnjujejo.

Kaj je pri tej knjigi izjemnega? Da, vsaj z ocenami na Amazonu :) Med recenzenti so osebnosti, kot sta Peter Norvig in Paul Graham. Mimogrede, knjiga ima zdaj oceno 3,8 od 5, zato so nekatere znane osebnosti zmedene. Ampak resno, to je temeljno klasično delo na področju programiranja (ni slabše od dobro znane knjige Umetnost programiranja D. Knuta, ki je ni nihče prebral). Edina nerazumljiva točka zame je dejstvo poučevanja tečaja programiranja za začetnike s pomočjo te knjige. Lahko si predstavljam, kako lahko z njeno vsebino prestrašite novopečene študente. Zanima me, ali na spletu obstajajo statistični podatki, s katerimi bi lahko ugotovili, koliko ljudi, ki so obiskovali ta "peklenski" tečaj, se je v prihodnosti odločilo zamenjati smer :) Če bi organizatorji Code.org promovirali programiranje s to knjigo, bi bilo velik epski neuspeh.

Torej, po mojem mnenju knjiga očitno ni za začetnike v programiranju, saj so koncepti v njej težko razumljivi ljudem, ki še niso povohali smodnika; poleg tega boste potrebovali izjemno zalogo motivacije in potrpežljivosti, saj sledijo vaje vsak razdelek je zapleten in zahteva, da se bo bralec pošteno "potil". Ampak nagrada je vredna. Prebrala sem samo prvo poglavje te knjige (samo 5 jih je), opravila nekaj vaj in, priznam, začutila sem, da sem nekatere stvari začela bolje razumeti (dobila sem neke temelje).

Na splošno, zakaj vse to pišem na blogu? In poleg tega bom prebral celotno knjigo in opravil čim več vaj (še posebej težkih).

Načrt je:

  • Preberi knjigo.
  • Med branjem preglejte tudi predavanja, saj v knjigi včasih ni mogoče vedno razumeti snovi od 1. ali celo 10. časa.
  • Izvedite vaje v vsakem delu. Branje je seveda dobro, vendar se snov najbolje nauči le z vajo.

Prebral bom rusko izdajo ("Dobrosvet"), imam papirnato različico. V primeru težav s prevodom nihče ni prepovedal obračanja na izvirnik. Ko bo moj poskus napredoval, bom pisal opombe na tem blogu. Upam, da bo reklama nekaj motivacije (v povprečju blog obišče 120 ljudi na dan).

Druga izdaja. - M.: Dobrosvet, 2004. - 596 str. Struktura in interpretacija računalniških programov je uvodni tečaj v računalništvo na Massachusetts Institute of Technology (MIT). Zahteva se za vse smeri elektrotehnike in računalništva MIT kot enega od štirih delov celotnega osnovnega učnega načrta, ki vključuje dva dodatna tečaja o električnih vezjih in linearnih sistemih ter tečaj o načrtovanju digitalnih sistemov. Pri razvoju tega tečaja sodelujemo od leta 1978 in od jeseni 1980 to snov v sedanji obliki poučujemo šest do sedemsto študentov na leto. Večina teh študentov je imela malo ali nič formalnega usposabljanja iz računalništva, čeprav so bili mnogi izpostavljeni računalnikom, nekateri pa so imeli precej izkušenj s programiranjem ali oblikovanjem strojne opreme.
Predgovor k drugi izdaji.
Predgovor k prvi izdaji.
Zahvala
Gradnja abstrakcij z uporabo postopkov.
Elementi programiranja.
Izrazi.
Imena in okolica.
Izračun kombinacij.
Sestavljeni postopki.
Nadomestni model uporabe postopka.
Pogojni izrazi in predikati.
Primer: izračun kvadratnega korena po Newtonovi metodi.
Postopki kot abstrakcije črne skrinjice.
Postopki in procesi, ki jih ustvarjajo.
Linearna rekurzija in iteracija.
Drevesna rekurzija.
Naročila rasti.
Potencevanje.
Iskanje največjega skupnega delitelja.
Primer: test primarilnosti.
Oblikovanje abstrakcij z uporabo postopkov višjega reda.
Postopki kot argumenti.
Postopki gradnje z uporabo lambda.
Postopki kot posplošene metode.
Postopki kot povratne vrednosti.
Gradnja abstrakcij z uporabo podatkov.
Uvod v abstrakcijo podatkov.
Primer: aritmetične operacije na racionalnih številih.
Ovire za abstrakcijo.
Kaj pomeni beseda "podatki"?
Razširjen primer: intervalna aritmetika.
Hierarhični podatki in lastnost zapiranja.
Predstavitev zaporedij.
Hierarhične strukture.
Zaporedja kot standardni vmesniki.
Primer: opisni jezik slike.
Znakovni podatki.
Citati.
Primer: simbolna diferenciacija.
Primer: predstavitev množic.
Primer: Huffmanova kodirna drevesa.
Več predstavitev za abstraktne podatke.
Predstavitve kompleksnih števil.
Označeni podatki.
Podatkovno vodeno programiranje in aditivnost.
Sistemi s posplošenimi operacijami.
Posplošene aritmetične operacije.
Kombinacija različnih vrst podatkov.
Primer: simbolna algebra.
Modularnost, objekti in stanje.
Dodelitev in notranje stanje objektov.
Spremenljivke notranjega stanja.
Prednosti dodelitve.
Stroški, povezani z uvedbo dodelitve.
Model računalništva z okolji.
Pravila izračuna.
Uporaba preprostih postopkov.
Okvirji kot repozitorij notranjega stanja.
Interne definicije.
Modeliranje s spremenljivimi podatki.
Prilagodljiva struktura seznama.
Pogled čakalne vrste.
Pogled tabele.
Simulacija digitalnih vezij.
Širjenje omejitev.
Sočasnost: čas je pomemben.
Narava časa v vzporednih sistemih.
Mehanizmi za nadzor sočasnosti.
Tokovi.
Tokovi kot odloženi seznami.
Neskončni tokovi.
Uporaba paradigme niti.
Niti in zakasnjeno računanje.
Modularnost funkcijskih programov in modularnost objektov.
Metalingvistična abstrakcija.
Metaciklični tolmač.
Jedro tolmača.
Predstavitev izrazov.
Podatkovne strukture tolmača.
Izvajanje tolmača kot programa.
Podatki kot programi.
Interne definicije.
Ločevanje razčlenjevanja od izvajanja.
Shema z različicami: leni tolmač.
Običajni vrstni red izračunov in aplikativni vrstni red izračunov.
Tolmač z leno oceno.
Niti so kot leni seznami.
Shema z variacijami je nedeterministični izračun.
Amb in iskanje.
Primeri nedeterminističnih programov.
Implementacija tolmača amb.
Logično programiranje.
Deduktivno iskanje informacij.
Kako deluje sistem za obdelavo zahtev.
Ali je logično programiranje matematična logika?
Implementacija poizvedovalnega sistema.
Računanje na registrskih strojih.
Oblikovanje registrskih strojev.
Jezik za opis registrskih strojev.
Abstrakcija v oblikovanju strojev.
Podprogrami.
Izvajanje rekurzije z uporabo sklada.
Pregled komandnega sistema.
Program za modeliranje registrskih strojev.
Model avtomobila.
Sestavljalec.
Generiranje izvedbenih postopkov za ekipe.
Spremljajte delovanje stroja.
Dodeljevanje pomnilnika in zbiranje smeti.
Spomin kot vektorji.
Iluzija neskončnega spomina.
Računalnik z eksplicitnim nadzorom.
Računalniško jedro z eksplicitnim nadzorom.
Računanje zaporedja in repna rekurzija.
Pogojni izrazi, prirejanja in definicije.
Zagon računalnika.
Kompilacija.
Struktura prevajalnika.
Sestavljanje izrazov.
Sestavljanje kombinacij.
Kombinacija zaporedij ukazov.
Primer prevedene kode.
Leksikalno naslavljanje.
Komunikacija prevedene kode z računalnikom.
Literatura.
Predmetno kazalo.



Vam je bil članek všeč? Delite s prijatelji!