3 May 2008 cactus   » (Master)

Structure and Interpretation of Computer Programs

<summary type="xhtml">

Az egyik dolog, amit nagyon szeretek a progmaton a Simon-f&#xE9;le anal&#xED;zis kurzusban, az az, ahogyan gyakorlatilag a semmib&#x151;l, vagyis a ZF-b&#x151;l &#xE9;s a val&#xF3;s sz&#xE1;mok axi&#xF3;m&#xE1;ib&#xF3;l &#xE9;p&#xED;tkez&#xFC;nk, &#xE9;s ha n&#xE9;ha ki is hagyunk egy-egy bizony&#xED;t&#xE1;st, akkor arra k&#xFC;l&#xF6;n fel van h&#xED;vva a figyelm&#xFC;nk. Ennek az a csod&#xE1;latos eredm&#xE9;nye, hogy m&#xE9;g &#xED;gy a hatodik f&#xE9;l&#xE9;v k&#xF6;zep&#xE9;n is b&#xE1;rmilyen bonyolult t&#xE9;tel bizony&#xED;t&#xE1;sa eset&#xE9;n elvileg rekonstru&#xE1;lhat&#xF3; a teljes &#xFA;t az axi&#xF3;m&#xE1;kt&#xF3;l.

Structure and Interpretation of Computer Programs

A SICP, mint alant kifejtem, ugyanilyen el&#x151;ad&#xE1;ssorozat illetve k&#xF6;nyv, a programoz&#xE1;sr&#xF3;l. &#xC9;n egy-k&#xE9;t &#xE9;vvel ezel&#x151;tt el&#x151;sz&#xF6;r az el&#x151;ad&#xE1;ssal tal&#xE1;lkoztam, ma m&#xE1;r nem tudom, mi&#xE9;rt hagytam abba akkoriban a 6. el&#x151;ad&#xE1;s k&#xF6;rny&#xE9;k&#xE9;n. Most viszont el&#xE9;mker&#xFC;lt a k&#xF6;nyv is, nekiugrottam, &#xE9;s kider&#xFC;lt, hogy a l&#xE9;nyeg pont a m&#xE1;sodik fel&#xE9;ben van.

Hal Abelson Az els&#x151; h&#xE1;rom fejezet ugyanis b&#xE1;rmelyik, hasonl&#xF3; t&#xE9;m&#xE1;j&#xFA; k&#xF6;nyvben el&#x151;fordulna: az absztrakci&#xF3; k&#xFC;l&#xF6;nb&#xF6;z&#x151;, egym&#xE1;sra &#xE9;p&#xFC;l&#x151; vagy &#xE9;ppen ortogon&#xE1;lis szintjei, mint pl. (magasabbrend&#x171;) f&#xFC;ggv&#xE9;nyek, adatok &#xE9;s m&#x171;veleteik egy&#xFC;ttes kezel&#xE9;se (hadd ne mondjam t&#xED;pus), az imperat&#xED;v megk&#xF6;zel&#xED;t&#xE9;s a maga &#xE9;rt&#xE9;kad&#xE1;sos-mell&#xE9;khat&#xE1;sos fek&#xE9;lyeivel, Haskell-szer&#x171; lazy evalu&#xE1;ci&#xF3;. Az &#xF6;sszes illusztr&#xE1;ci&#xF3; Scheme-ben, egy Lisp dialektusban &#xED;r&#xF3;dott, val&#xF3;j&#xE1;ban az els&#x151; h&#xE1;rom fejezet &#xE9;ppen arr&#xF3;l sz&#xF3;l, ahogyan a fenti absztrakci&#xF3;s eszk&#xF6;z&#xF6;k c&#xE9;ljainak megvizsg&#xE1;l&#xE1;s&#xE1;val fel&#xE9;p&#xFC;l a nyelv szemantik&#xE1;ja.

Az &#xE9;rdekess&#xE9;gek a negyedik fejezetben kezd&#x151;dnek. El&#x151;sz&#xF6;r, egyfajta baseline-k&#xE9;nt bemutat egy Scheme-ben &#xED;rt Scheme interpretert, ennek ugye Lispben eleve komoly hagyom&#xE1;nyai vannak (&#xF6;sszehasonl&#xED;thatatlanul olvashat&#xF3;bb a mai szemnek ugyanennek a cikknek a Paul Graham &#xE1;ltal fel&#xFA;j&#xED;tott v&#xE1;ltozata). Ezzel m&#xE1;r sokkal val&#xF3;s&#xE1;gosabb&#xE1; v&#xE1;lnak az eddigi programok, hiszen b&#xE1;r a k&#xED;gy&#xF3; m&#xE9;g a saj&#xE1;t fark&#xE1;ba harap, de m&#xE1;r kez&#xFC;nkben van az axi&#xF3;m&#xE1;knak az a v&#xE9;ges halmaza, amikb&#x151;l a konkr&#xE9;t Scheme programok szemantik&#xE1;ja levezethet&#x151;.

Gerald Jay Sussman Ezekut&#xE1;n bemutatja a Scheme p&#xE1;r le&#xE1;gaz&#xE1;s&#xE1;t, &#xE9;s persze hogy itt v&#xE1;lik &#xE9;rdekeltt&#xE9; az intencion&#xE1;lis programoz&#xF3;. A Lispben ugye r&#xE9;g&#xF3;ta kult&#xFA;r&#xE1;ja van annak, hogy a probl&#xE9;m&#xE1;kat a hozz&#xE1;juk illesztett nyelven oldjuk meg, &#xE9;s ut&#xE1;na vagy &#xED;rjuk meg ennek a nyelvnek az &#xE9;rtelmez&#xE9;s&#xE9;t, vagy &#xE1;gyazzuk be a nyelvet a Lispbe. &#xCD;gy azt&#xE1;n a tipikus Lisp programoz&#xF3; a legritk&#xE1;bb esetben programozik Lispben, sokkal gyakrabban mindenf&#xE9;le ad-hoc Lisp' meg Lisp'' nyelvekben. A negyedik fejezet ilyen Scheme' nyelveket mutat be a lazy evalu&#xE1;ci&#xF3;hoz &#xE9;s a nemdeterminisztikus fut&#xE1;si szemantik&#xE1;hoz (ez ut&#xF3;bbi egy&#xE9;bk&#xE9;nt val&#xF3;sz&#xED;n&#x171;leg k&#xF6;zel &#xE1;ll ahhoz, ahogyan a kvantumsz&#xE1;m&#xED;t&#xF3;g&#xE9;peket fogjuk magasszinten programozni); illetve egy interpret&#xE1;lt constraint-nyelvet.

&#xC9;s v&#xE9;g&#xFC;l az utols&#xF3; fejezet az, ami odav&#xE1;g. Nem az&#xE9;rt, mintha nem l&#xE1;ttunk volna m&#xE9;g a bootstrap-probl&#xE9;ma megold&#xE1;s&#xE1;ra g&#xE9;pi k&#xF3;dban &#xED;rt compilert, hanem az&#xE9;rt, ahogyan kerekk&#xE9; teszi a k&#xF6;nyvet. Itt j&#xF6;n be ugyanis a kor&#xE1;bban eml&#xED;tett p&#xE1;rhuzam az anal-kurzussal. Bebizony&#xED;tjuk, hogy l&#xE9;tezik rendezett teljestest: a val&#xF3;di, fizikai sz&#xE1;m&#xED;t&#xF3;g&#xE9;peket le&#xED;r&#xF3; regiszterg&#xE9;p-modellen az utols&#xF3; bitig egy&#xE9;rtelm&#x171;v&#xE9; v&#xE1;lik minden marad&#xE9;k k&#xE9;rd&#xE9;sre a v&#xE1;lasz, a bemutatott, g&#xE9;pi k&#xF3;d&#xFA; Scheme interpreter &#xE9;s ford&#xED;t&#xF3; pedig hirtelen megfoghat&#xF3;v&#xE1; tesz minden, a k&#xF6;nvyben megel&#x151;z&#x151; p&#xE9;ld&#xE1;t. Handwaving-nek nyoma sem marad. Ahogy az utols&#xF3; el&#x151;tti el&#x151;ad&#xE1;son Abelson mondja: az utols&#xF3;, legnagyobb var&#xE1;zslat, hogy ki&#xED;rtjuk a rendszerb&#x151;l a m&#xE1;gi&#xE1;t.

</summary>

Syndicated 2008-04-16 20:17:00 from cactus.rulez.org

Latest blog entries     Older blog entries

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!