В настоящей книге применяется дедуктивный подход к программированию, основанный на объединении программ с абстрактными математическими теориями, которые обеспечивают их работу. Представлены вместе описания этих теорий, алгоритмы, записанные с точки зрения этих теорий, а также теоремы и леммы, описывающие их свойства. Реализация алгоритмов на реальном языке программирования является центральной темой книги. Эта книга предназначена для тех, кто стремится глубже понять суть программирования, будь то профессиональные программисты или ученые и инженеры, для которых программирование составляет важную часть их профессиональной деятельности. Книга предназначена для чтения от начала и до конца. Читатели смогут достичь понимания материала, только изучая код, доказывая леммы и выполняя упражнения. "В книге содержатся одни из наиболее замечательных образцов кода, с которыми я когда-либо сталкивался." - Бьярне Страуструп, разработчик языка C++ Краткое содержание книги В главе 1 приведено описание значений, объектов, типов, процедур и концепций. Главы 2-5 посвящены алгоритмам на алгебраических структурах, таких как полугруппы и полностью упорядоченные множества. В главах 6-11 описываются алгоритмы на абстрактных представлениях памяти. В главе 12 рассматриваются объекты, содержащие другие объекты. В послесловии представлены общие размышения о подходе, изложенном в книге. "Как известно, инженеры-механики, строители и электрики в своей работе опираются на надежные математические основания. С другой стороны, инженеры-программисты часто практикуют свое ремесло, не имея или почти не имея представления о том, на каком математическом фундаменте зиждется то, чем они занимаются. А потом мы не можем понять, почему программное обеспечение печально известно тем, что поставляется с опозданием и содержит много ошибок, тогда как другие инженеры обычно сдают в эксплуатацию готовые мосты, автомобили, электрические приборы и пр. своевременно и с незначительными дефектами. Настоящая книга призвана устранить это неравенство. Члены моего коллектива, занимающиеся сложными разработками в компании Adobe, после прохождения курса по материалам книги получили чрезвычайно положительную отдачу от вложенных усилий. На первый взгляд книга может показаться весьма специализированной, предназначенной только для теоретиков в области компьютерных наук, но в действительности она должна быть обязательно изучена всеми инженерами-программистами, которые ставят перед собой серьезные задачи". - Мартин Ньюэлл, заслуженный исследователь Adobe "Я счастлив видеть, что содержимое курса Алекса, разработку которого я настоятельно поддерживал как технический директор Silicon Graphics, теперь доступно для всех программистов в этой изящной небольшой книге". - Форест Баскетт, главный партнер, New Enterprise Associates "Терпение и организационный опыт Пола помогли создать на базе математического подхода Алекса четко структурированное произведение, а это - впечатляющий подвиг!" - Роберт В. Тэйлор, основатель Xerox PARC SCL и DEC Systems Research Center
V nastojaschej knige primenjaetsja deduktivnyj podkhod k programmirovaniju, osnovannyj na obedinenii programm s abstraktnymi matematicheskimi teorijami, kotorye obespechivajut ikh rabotu. Predstavleny vmeste opisanija etikh teorij, algoritmy, zapisannye s tochki zrenija etikh teorij, a takzhe teoremy i lemmy, opisyvajuschie ikh svojstva. Realizatsija algoritmov na realnom jazyke programmirovanija javljaetsja tsentralnoj temoj knigi. Eta kniga prednaznachena dlja tekh, kto stremitsja glubzhe ponjat sut programmirovanija, bud to professionalnye programmisty ili uchenye i inzhenery, dlja kotorykh programmirovanie sostavljaet vazhnuju chast ikh professionalnoj dejatelnosti. Kniga prednaznachena dlja chtenija ot nachala i do kontsa. Chitateli smogut dostich ponimanija materiala, tolko izuchaja kod, dokazyvaja lemmy i vypolnjaja uprazhnenija. "V knige soderzhatsja odni iz naibolee zamechatelnykh obraztsov koda, s kotorymi ja kogda-libo stalkivalsja." - Bjarne Straustrup, razrabotchik jazyka C++ Kratkoe soderzhanie knigi V glave 1 privedeno opisanie znachenij, obektov, tipov, protsedur i kontseptsij. Glavy 2-5 posvjascheny algoritmam na algebraicheskikh strukturakh, takikh kak polugruppy i polnostju uporjadochennye mnozhestva. V glavakh 6-11 opisyvajutsja algoritmy na abstraktnykh predstavlenijakh pamjati. V glave 12 rassmatrivajutsja obekty, soderzhaschie drugie obekty. V posleslovii predstavleny obschie razmyshenija o podkhode, izlozhennom v knige. "Kak izvestno, inzhenery-mekhaniki, stroiteli i elektriki v svoej rabote opirajutsja na nadezhnye matematicheskie osnovanija. S drugoj storony, inzhenery-programmisty chasto praktikujut svoe remeslo, ne imeja ili pochti ne imeja predstavlenija o tom, na kakom matematicheskom fundamente zizhdetsja to, chem oni zanimajutsja. A potom my ne mozhem ponjat, pochemu programmnoe obespechenie pechalno izvestno tem, chto postavljaetsja s opozdaniem i soderzhit mnogo oshibok, togda kak drugie inzhenery obychno sdajut v ekspluatatsiju gotovye mosty, avtomobili, elektricheskie pribory i pr. svoevremenno i s neznachitelnymi defektami. Nastojaschaja kniga prizvana ustranit eto neravenstvo. Chleny moego kollektiva, zanimajuschiesja slozhnymi razrabotkami v kompanii Adobe, posle prokhozhdenija kursa po materialam knigi poluchili chrezvychajno polozhitelnuju otdachu ot vlozhennykh usilij. Na pervyj vzgljad kniga mozhet pokazatsja vesma spetsializirovannoj, prednaznachennoj tolko dlja teoretikov v oblasti kompjuternykh nauk, no v dejstvitelnosti ona dolzhna byt objazatelno izuchena vsemi inzhenerami-programmistami, kotorye stavjat pered soboj sereznye zadachi". - Martin Njuell, zasluzhennyj issledovatel Adobe "Ja schastliv videt, chto soderzhimoe kursa Aleksa, razrabotku kotorogo ja nastojatelno podderzhival kak tekhnicheskij direktor Silicon Graphics, teper dostupno dlja vsekh programmistov v etoj izjaschnoj nebolshoj knige". - Forest Baskett, glavnyj partner, New Enterprise Associates "Terpenie i organizatsionnyj opyt Pola pomogli sozdat na baze matematicheskogo podkhoda Aleksa chetko strukturirovannoe proizvedenie, a eto - vpechatljajuschij podvig!" - Robert V. Tejlor, osnovatel Xerox PARC SCL i DEC Systems Research Center