Struktura dhe interpretimi i programeve kompjuterike pdf. Struktura dhe interpretimi i programeve kompjuterike

Struktura dhe interpretimi i programeve kompjuterike

Struktura dhe interpretimi i programeve kompjuterike

Harold Abelson, Gerald Sussman

Gjuha origjinale:
Origjinali i publikuar:
Seria:

Seria e inxhinierisë elektrike dhe shkencave kompjuterike të MIT

Botuesi:
Faqet:
Transportuesi:
ISBN:

"Struktura dhe interpretimi i programeve kompjuterike"(anglisht) Struktura dhe interpretimi i programeve kompjuterike - SICP dëgjo)) është një libër klasik rreth programimit nga Harold Abelson dhe Gerald Sussman, botuar nga botuesi në 1985. Në institut u përdor si një libër shkollor për një kurs programimi fillestar. 6.001 me të njëjtin emër ( 6.001 u zëvendësua nga kursi 6.01 duke përdorur Python). Përveç kësaj, libri përdoret në shumë institucione arsimore amerikane që kanë kurse në një mënyrë ose në një tjetër të lidhur me gjuhën e skemës.

Duke përdorur Scheme (një dialekt i gjuhës LISP), autorët përshkruan konceptet bazë të programimit, duke përfshirë abstraksionin (të dhënat dhe ekzekutimin), rekursionin dhe abstraksionin metagjuhësor.

Libri gjithashtu përshkruan zbatimin praktik të koncepteve të një makinerie regjistri dhe një interpretuesi metaciklik.

Teksti i botimit të dytë të librit shpërndahet nën një licencë Creative Commons (CC-BY-NC version 3.0).

Shënime

Lidhjet

  • Faqja zyrtare e librit në faqen e internetit të MIT Press (anglisht)
  • SICP Wiki - zgjidhje dhe diskutim i detyrave nga libri (anglisht)
  • Ligjërata nga autorët e librit për kursin SICP (anglisht)

Fondacioni Wikimedia. 2010.

  • Struktura e të dhënave për grupe të shkëputura
  • Struktura e numrit të katalogut të monedhave ruse

Shihni se çfarë është "Struktura dhe interpretimi i programeve kompjuterike" në fjalorë të tjerë:

    GOST R 54136-2010: Sistemet e automatizimit industrial dhe integrimi. Udhëzuesi i Standardeve, Struktura dhe Fjalori- Terminologjia GOST R 54136 2010: Sistemet e automatizimit industrial dhe integrimi. Udhëzimet e standardeve, struktura dhe fjalori dokumenti origjinal: 4.1 pjesa abstrakte: Një pjesë që përcaktohet vetëm nga... ... Fjalor-libër referues i termave të dokumentacionit normativ dhe teknik

    SICP

    Struktura dhe interpretimi i programeve kompjuterike- Struktura dhe interpretimi i programeve kompjuterike Autori: Harold Abelson, Gerald Sussman Gjuha origjinale: Anglisht Origjinali i botuar: 1985 Seria: The MIT elektrik inxhinieri dhe shkenca kompjuterike ... Wikipedia

    Gjuhët e programimit- Një gjuhë programimi është një sistem zyrtar shenjash i krijuar për të shkruar programe. Një program zakonisht përfaqëson disa algoritme në një formë të kuptueshme për zbatuesin (për shembull, një kompjuter). Gjuha e programimit përcakton grupin... ... Wikipedia

    Lisp- Semantika: multi-paradigmë: programim i orientuar nga objekti, funksional, procedural U shfaq në: 1958 Autori(ët): John McCarthy Shtypja e të dhënave ... Wikipedia

    Lisp- Lisp Semantics: multi-paradigm: programim i orientuar drejt objektit, funksional, procedural U prezantua në: 1958 Autori(ët): John McCarthy Shtypja e të dhënave: i fortë, dinamik... Wikipedia

    LISP- Semantika: multi-paradigmë: programim i orientuar drejt objektit, funksional, procedural U shfaq në: 1958 Autori(ët): John McCarthy Shtypja e të dhënave: e fortë, dinamike Dialektet: e zakonshme ... Wikipedia

    OBTështë organizata ndërkombëtare financiare OBT: anëtarësimi në OBT, Rusia në OBT, përbërja e OBT-së Përmbajtja >>>>>>>>>>>>>>>… Enciklopedia e Investitorëve

    Inteligjence artificiale- Kërkesa "AI" është ridrejtuar këtu; shih edhe kuptime të tjera. Inteligjenca artificiale (AI) është shkenca dhe teknologjia e krijimit të makinave inteligjente, veçanërisht programeve kompjuterike inteligjente. AI... ...Wikipedia

    ANALIZA E RRJETIVE SOCIALE- metodologjia dhe metodat për studimin e lidhjeve ndërmjet aktorëve shoqërorë. Shfaqja e kësaj metodologjie i atribuohet ose vitit 1930, kur qasja sociometrike mori formë në psikologji, ose 1950, kur për analizën e studimeve të hershme përshkruese... ... Sociologji: Enciklopedi

librat

  • Struktura dhe interpretimi i programeve kompjuterike, Harold Abelson, Gerald Jay Sussman. Libri i kushtohet përshkrimit të sistemeve të ndryshme të sintaksës së programit, analizës së kalimit nga një grup algoritmesh në kodin e programit. Hapësirë ​​e konsiderueshme i kushtohet diskutimit të një sërë elementesh elementare...
5 maj 2016 në orën 12:09

Pse nuk studiojnë më SICP në MIT

  • Programimi

Një ditë më parë, fjalimi i Gerald Jay Sussman, një prej autorëve të SICP-së së madhe dhe të fuqishme, si dhe kumbarit të Scheme, që u mbajt në takimin e NYC Lisp në fillim të vitit, tërhoqi vëmendjen e gjerë. E gjitha është për shkak të përgjigjes së pyetjes pse MIT ndaloi së mësuari kursin tashmë legjendar 6.001, bazuar në librin e Sussman dhe Abelson "Struktura dhe interpretimi i programeve kompjuterike" (pyetja u bë në minutën e 59-të).

Sussman dha dy arsye; megjithatë, do të vërej menjëherë se nuk ka asgjë të veçantë në të parën prej tyre. Deri në vitin 1997, Abelson dhe Sussman tashmë ishin lodhur duke thënë praktikisht të njëjtat gjëra që nga vitet '80, kështu që ata vendosën të linin mësimin dhe i kërkuan kreut të departamentit të vendoste në mënyrë të pavarur se çfarë të bënte me vetë kursin. Nuk ka asgjë për t'u habitur këtu - çdo gjë mund të bëhet e mërzitshme nëse e bëni atë mjaft gjatë.

Megjithatë, arsyeja e dytë është shumë më serioze. Sipas Sussman, ai dhe Abelson e kuptuan se kurrikula e SICP nuk mund të përgatiste më inxhinierë për atë që është "inxhinieria" sot. Në vitet '80 dhe '90, inxhinierët ndërtuan sisteme komplekse duke kombinuar "pjesë" të thjeshta dhe të kuptueshme. Qëllimi i SICP ishte të siguronte një gjuhë abstraksionesh për arsyetimin rreth sistemeve të tilla.

Sot gjërat janë ndryshe. Në ditët e sotme, inxhinierët zakonisht shkruajnë kode për pajisje komplekse që ata nuk e kuptojnë plotësisht (dhe kjo është shpesh për shkak të sekreteve tregtare, dhe jo për shkak të dembelizmit ose mungesës së kohës - merrni të njëjtën Apple dhe teknologjitë e saj). E njëjta deklaratë është e vërtetë për softuerin, pasi mjediset e softuerit përbëhen nga biblioteka gjigante me funksionalitetin më të gjerë. Sipas Sussman, studentët e tij sot kalojnë shumicën e kohës duke lexuar manualet për këto biblioteka për të kuptuar se si t'i lidhin ato së bashku me qëllimin e thjeshtë për të bërë gjithçka të funksionojë dhe të bëjnë atë që u nevojitet.

Sipas Sussman, “Programimi sot i ngjan më shumë shkencës: ju merrni një pjesë të bibliotekës dhe e goditni atë - shikoni se çfarë bën. Pastaj ju pyesni veten: "A mund ta konfiguroj këtë për të bërë atë që më duhet?" Qasja analizë-nga-sintezë e përdorur në SICP, ku ndërtoni një sistem të madh nga pjesë të thjeshta e të vogla, është vjetëruar. Sot ne programojmë në mënyrë të rastësishme.

Në fund të fundit, Python u zgjodh si një alternativë ndaj Lisp në MIT. Ajo që i bindi mësuesit në favor të gjuhës ishte fakti se një numër i konsiderueshëm bibliotekash janë në dispozicion për Python, të cilat e lejojnë atë të përdoret për të zgjidhur ushtrime në një shumëllojshmëri të gjerë të llojeve të projekteve (për shembull, për të shkruar softuer për kontrollimin e robotëve) .

Sidoqoftë, vetë Sussman bëri shaka se përdorimi i Python ishte një vendim "detyrues i vonë" - pasi plani i trajnimit SICP ishte më "koherent" sesa ai që zuri vendin e tij. Ai pranoi se ai dhe kolegët e tij ende nuk e kanë idenë se cili duhet të jetë plani optimal i trajnimit.

Opinionet rreth arsimit modern në përgjithësi dhe çfarë duhet të mësojnë ende inxhinierët e softuerit të ardhshëm ndryshojnë rrënjësisht - kështu që është e pamundur të ofrohet një përfundim i qartë nga inovacioni. Sipas njërit prej tyre, qëllimi themelor i të mësuarit CS është të kuptojmë se si funksionojnë kompjuterët dhe jo të mësojmë gjuhë programimi specifike, aq më pak biblioteka. Sigurisht, mendimi i bashkëautorit Abelson për fundin e epokës SICP në MIT mund të gjendet këtu.

Ekonomia moderne ka nevojë dëshpërimisht për një numër të madh programuesish aplikativ në treg dhe universitetet po përmbushin përgjegjësinë e tyre në përgatitjen e studentëve për të ardhmen. Natyrisht, duket e pamundur të mësosh gjithçka, veçanërisht në fillim të karrierës; dhe në të njëjtën kohë, studimi serioz i CS zvogëlon sasinë e kodit të keq dhe vuajtjet e zhvilluesve të tjerë.

Një nga historitë e MIT-it ka qenë gjithmonë se "të mësosh SICP dhe Lisp është pika ku studentët e vitit të parë fillojnë të lënë pjesën më të madhe të botës pas tyre për sa i përket aftësisë për zgjidhjen e problemeve dhe aftësisë për të bërë punën e tyre"; Për më tepër, shumë të diplomuar në MIT vazhdojnë të shkruajnë vetë bibliotekat, në vend që të përdorin bibliotekat e dikujt tjetër. Duket se, pavarësisht realiteteve të ashpra të biznesit, ka mes nesh që (fshehurazi) shijojnë procesin e të mësuarit të programimit nga e para, duke përdorur burimet në mënyrë efikase dhe duke ndërtuar biçikletat e tyre shumë më tepër sesa përballja e përditshme me API-të e njerëzve të tjerë dhe lidhjet. komponentë të gatshëm me burim të hapur në përpjekje për të bërë atë që kërkohet - e njëjta "përfundim i punës" për të cilën fliste Sussman (megjithëse qasja e re në këtë drejtim është me të vërtetë më afër detyrave të prodhimit). Megjithatë, ditët kur studentët duhej të ndërtonin përpilues/interpretues si pjesë e edukimit të tyre, mund të jenë një gjë e së kaluarës më shpejt se sa mendojmë.

Sigurisht, e gjithë kjo nuk është një arsye për të refuzuar të njiheni me SICP. Sipas traditës së vendosur, lidhjet me

Një libër i quajtur " Struktura dhe interpretimi i programeve kompjuterike"u botua në vitin 1979. Më parë, ai përdorej për të dhënë një kurs fillestar të programimit midis studentëve të MIT. Tani libri është i disponueshëm falas në internet dhe çdokush mund ta shkarkojë dhe studiojë për argëtim. Përveç librit, atje është gjithashtu një seri videosh në rrjet -leksione nga autorët, ato janë të vendosura në burimin e MIT OpenCourseware, më duket se mund të plotësojnë njëra-tjetrën mirë ndërsa studioni materialin.

Çfarë është e jashtëzakonshme për këtë libër? Po, të paktën me komente në Amazon :) Midis recensuesve ka personalitete të tilla si Peter Norvig dhe Paul Graham. Nga rruga, libri tani ka një vlerësim prej 3.8 nga 5, kjo është arsyeja pse disa personalitete të famshme janë të hutuar. Por seriozisht, kjo është një vepër klasike themelore në fushën e programimit (jo më keq se libri i njohur Arti i Programimit nga D. Knuth, të cilin askush nuk e ka lexuar). E vetmja pikë e pakuptueshme për mua është fakti i mësimdhënies së një kursi programimi për fillestarët duke përdorur këtë libër. Mund ta imagjinoj se si mund t'i trembni studentët e sapoformuar me përmbajtjen e tij. Pyes veten nëse ka statistika në internet që mund të përdoren për të gjetur se sa njerëz që ndoqën këtë kurs "djallëzor" zgjodhën të ndryshojnë drejtimin e tyre në të ardhmen :) Nëse organizatorët e Code.org do të kishin promovuar programimin duke përdorur këtë libër, do të kanë qenë një dështim i madh epik.

Pra, për mendimin tim, libri nuk është qartësisht për fillestarët në programim, pasi konceptet në të janë të vështira për t'u kuptuar nga njerëzit që nuk kanë nuhatur barut, për më tepër, do t'ju duhet një furnizim i jashtëzakonshëm motivimi dhe durimi, që nga ushtrimet pas çdo seksion është kompleks dhe kërkon që lexuesi të "djersë" paksa. Por shpërblimi ia vlen. Kam lexuar vetëm kapitullin e parë të këtij libri (janë vetëm 5 prej tyre), kam punuar disa nga ushtrimet dhe, e pranoj, ndjeva sikur fillova të kuptoja më mirë disa gjëra (fitova një lloj themeli).

Në përgjithësi, pse po i shkruaj të gjitha këto në blog? Dhe përveç kësaj, do të lexoj të gjithë librin dhe do të punoj me sa më shumë ushtrime (veçanërisht ato të vështira) të jetë e mundur.

Plani është:

  • Lexo nje liber.
  • Ndërsa lexoni, rishikoni edhe leksionet, pasi në një libër ndonjëherë nuk është gjithmonë e mundur të kuptohet materiali nga hera e parë apo edhe e 10-ta.
  • Kryeni ushtrime në çdo seksion. Leximi është i mirë, sigurisht, por materiali mësohet më së miri vetëm përmes praktikës.

Unë do të lexoj botimin rus ("Dobrosvet"), kam një version letre. Në rast të problemeve me përkthimin, askush nuk e ndaloi kthimin në origjinal. Ndërsa eksperimenti im përparon, unë do të shkruaj shënime në këtë blog. Shpresoj se publiciteti do të japë njëfarë motivimi (mesatarisht 120 njerëz vizitojnë blogun në ditë).

Edicioni i dyte. - M.: Dobrosvet, 2004. - 596 f. Struktura dhe interpretimi i programeve kompjuterike është një lëndë hyrëse në shkencën kompjuterike në Institutin e Teknologjisë në Massachusetts (MIT). Kërkohet nga të gjitha drejtimet e inxhinierisë elektrike dhe shkencave kompjuterike të MIT si një nga katër pjesët e kurrikulës bazë të përgjithshme, e cila përfshin dy kurse të tjera në qarqet elektrike dhe sistemet lineare, si dhe një kurs në dizajnimin e sistemeve dixhitale. Ne kemi qenë të përfshirë në zhvillimin e këtij kursi që nga viti 1978 dhe kemi mësuar këtë material në formën e tij aktuale për gjashtë deri në shtatëqind studentë në vit që nga vjeshta e vitit 1980. Shumica e këtyre studentëve kishin pak ose aspak trajnim formal në shkencat kompjuterike, megjithëse shumë prej tyre kishin ekspozim ndaj kompjuterëve dhe disa kishin përvojë të konsiderueshme në programim ose në dizajnimin e harduerit.
Parathënie e botimit të dytë.
Parathënie e botimit të parë.
Mirënjohje
Ndërtimi i abstraksioneve duke përdorur procedura.
Elementet e programimit.
Shprehjet.
Emrat dhe rrethinat.
Llogaritja e kombinimeve.
Procedurat e përbëra.
Modeli i zëvendësimit të aplikimit të procedurës.
Shprehje kushtore dhe kallëzues.
Shembull: llogaritja e rrënjës katrore duke përdorur metodën e Njutonit.
Procedurat si abstraksione të kutisë së zezë.
Procedurat dhe proceset që ato gjenerojnë.
Rekursioni linear dhe përsëritja.
Rekursioni i pemës.
Urdhrat e rritjes.
Përhapja.
Gjetja e pjesëtuesit më të madh të përbashkët.
Shembull: testi i parësisë.
Formulimi i abstraksioneve duke përdorur procedura të rendit më të lartë.
Procedurat si argumente.
Procedurat e ndërtimit duke përdorur lambda.
Procedurat si metoda të përgjithësuara.
Procedurat si vlera të kthimit.
Ndërtimi i abstraksioneve duke përdorur të dhëna.
Hyrje në abstraksionin e të dhënave.
Shembull: veprime aritmetike mbi numrat racional.
Barrierat për abstraksion.
Çfarë do të thotë fjala "të dhëna"?
Shembull i zgjeruar: aritmetika e intervalit.
Të dhënat hierarkike dhe vetia e mbylljes.
Paraqitja e sekuencave.
Strukturat hierarkike.
Sekuencat si ndërfaqe standarde.
Shembull: gjuha e përshkrimit të imazhit.
Të dhënat e karaktereve.
Kuotat.
Shembull: diferencim simbolik.
Shembull: paraqitje e grupeve.
Shembull: Pemët koduese të Huffman.
Paraqitje të shumëfishta për të dhëna abstrakte.
Paraqitjet e numrave kompleks.
Të dhënat e etiketuara.
Programimi dhe aditiviteti i drejtuar nga të dhënat.
Sisteme me operacione të përgjithësuara.
Veprime aritmetike të përgjithësuara.
Kombinimi i llojeve të ndryshme të të dhënave.
Shembull: algjebër simbolike.
Modulariteti, objektet dhe gjendja.
Caktimi dhe gjendja e brendshme e objekteve.
Variablat e gjendjes së brendshme.
Përfitimet e detyrës.
Kostot që lidhen me prezantimin e detyrës.
Modeli i llogaritjes me mjedise.
Rregullat e llogaritjes.
Zbatimi i procedurave të thjeshta.
Kornizat si një depo e gjendjes së brendshme.
Përkufizime të brendshme.
Modelimi me të dhëna të ndryshueshme.
Struktura e listës së modifikueshme.
Pamja e radhës.
Pamje tavoline.
Simulimi i qarqeve dixhitale.
Përhapja e kufizimeve.
Konkurrenca: koha ka rëndësi.
Natyra e kohës në sistemet paralele.
Mekanizmat e kontrollit të konkurencës.
Përrenjtë.
Transmetohet si lista të vonuara.
Rrjedhat e pafundme.
Përdorimi i paradigmës së filetimit.
Fijet dhe llogaritjet e vonuara.
Modulariteti i programeve funksionale dhe modulariteti i objekteve.
Abstragimi metallinguistik.
Përkthyes metaciklik.
Bërthama e përkthyesit.
Paraqitja e shprehjeve.
Strukturat e të dhënave të interpretuesit.
Ekzekutimi i interpretuesit si program.
Të dhënat si programe.
Përkufizime të brendshme.
Ndarja e analizës nga ekzekutimi.
Skema me variacione: një përkthyes dembel.
Rendi normal i llogaritjeve dhe renditja aplikative e llogaritjeve.
Përkthyes me vlerësim dembel.
Temat janë si lista dembele.
Skema me variacione është një llogaritje jo-përcaktuese.
Amb dhe kërko.
Shembuj të programeve jo-përcaktuese.
Zbatimi i interpretuesit amb.
Programimi logjik.
Kërkimi i informacionit deduktiv.
Si funksionon sistemi i përpunimit të kërkesave.
A është programimi logjik logjikë matematikore?
Zbatimi i një sistemi të pyetjeve.
Llogaritjet në makinat regjistër.
Projektimi i makinave regjistrash.
Një gjuhë për përshkrimin e makinave regjistrash.
Abstraksioni në dizajnin e makinerive.
Nënprogramet.
Zbatimi i rekursionit duke përdorur një pirg.
Pasqyrë e sistemit të komandës.
Program për modelimin e makinave regjistra.
Modeli i makinës.
montues.
Krijimi i procedurave ekzekutive për ekipet.
Monitoroni performancën e makinës.
Shpërndarja e memories dhe grumbullimi i mbeturinave.
Kujtesa si vektorë.
Iluzioni i kujtesës së pafund.
Kompjuter me kontroll të qartë.
Bërthama e kompjuterit me kontroll të qartë.
Llogaritja e sekuencës dhe rekursioni i bishtit.
Shprehje të kushtëzuara, detyra dhe përkufizime.
Nisja e kompjuterit.
Përpilimi.
Struktura e kompajlerit.
Përpilimi i shprehjeve.
Kompilimi i kombinimeve.
Kombinimi i sekuencave komanduese.
Shembull i kodit të përpiluar.
Trajtimi leksikor.
Komunikimi i kodit të përpiluar me kompjuterin.
Letërsia.
Indeksi i lëndës.



Ju pëlqeu artikulli? Ndani me miqtë tuaj!