Table Of Contentни иразеЧФ.
он спмоТС.
Программирование в
•
Программирование в Несмотря на то, что я уже несколько
лет программирую на Erlang, рецензи
Erlang
руя эту книгу, я всё время держал главы
открытыми, заглядывая в них при
программировании. В ней программи
сты Erlang любого уровня найдут
бесценную информацию, которая
касается как общих концепций языка,
так и справочного материала.
Чезарини Ф. ив тки СсониВ(Steve Vinoski),
Томпсон С. ст инмулокла анруж«ый ньланоицкнуФ
»беВ. IEEE и.ет ингролеотннхИеТ
Франческо Чезарини на протяжении 14 ет лал чубоErIang/OTP в,отнедутс арзар
ботчиков, тестировщиков, их щюялварпу разработкой О.П Он ал гомоп в ии надзос
центров разработки на Erlang в Ирландии, Америке и Великобритании.
он мйаСон спмоТ- ор ссефорплогики и информатики в ой ньлетилсичывотаробал
рии Кентского а,тетисревинУ ль етавадоперпки итамрофнис 25-им нтелм.ежатс
та Э книга познакомит ас вс Erlang, языком программирования, который но ьлаеди
ит дохдопля дия надзосх,ыньлелларап ых вичйотсуозакто приложений, нечанзандерп
ых нля дты обарв ме ижерго оньлаери.немерв С ем инелвяопых нредяогонмоссецорп
ров, их щюялватсодерпые вонва тсдерия снавых онринбаетлшсеалмларапсарежолирп
ний, Erlang ся тивонатссё вее лобпопулярным. мо исивазеНот уровня ой ньлетиравдерп
подготовки, вы те ежомсся ьтичуанию насипаных нжоых лсньлелларапприложений.
га инКна асипанми аредилго ондорануджемва тсещбоосErlang, в ей нвы те ёдйанбордоп
ое ние насипоия нелватсопосс м,оцзарбо но ьливарпых ннеортсопсписков, рекурсии,
и,кдалто го оветеси го оньлеллараппрограммирования и многих других ов ткепсакатнис
са иси ки итнамеска ызяErlang.
та Эга инкет жомопм:ав
ть яноПые ньлисстороны Erlang и логику организации их ксечифицепсей тсоннебосо
а.кызя
ть ичузИое ньлеллараппрограммирование и как Erlang ся теялварпсс им н
ся ьтичуаНе,ыть ансвиипткеффэ но в то же мя ервые нтнагелэи ые ндялганмы маргорп
ть анзУкак ть иортсые ннёледерпсарприложения с ью щомопErlang
ез Бых босоий лисуть авишеваные тсорпие ксечифаргоболочки на ши авприложения.
ся ьтичых унанНке едлаелтлоларапсари ых ннёледерпсарприложений.
ть янемирПую ннеортсвзу абых ннад Mnesia и другие ва тсдерсго ончилбатия ненарх
ых ннад
та Эга инкся теялвым мяелмеътоенисточником ии цамрофнипо Erlang как ля да,кчивон
ак ти ля допытного а.тсиммаргорп
Internet-магазин;
www.abook.ru
Книга - й:отчоп
я,иссоР 123242, Москва, а/я 20
e-mail: [email protected]
ая вотпОпродажа:
«-сняьлАа»гинк
Тел./факс: (495) 258-9195
e-mail: [email protected]
Франческо Чезарини, он мйаСон спмоТ
ие навориммаргорП
в Erlang
Ш fr»
Москва, 2012
ДК У004.438Erlang
БК Б 32.973.26-018.2
5Т 6
он спмоС,Т ни иразеЧФ.
ие навориммарв горПErlang/ р.еП с л.гнава ё ьмолоХА. О. - .М: МК Дс,серП
2012. - 488 с: л.и (ия реС ""ое ениьнлаанвооицркинмуФмарго)рп
ISBN 978-5-94074-617-1
та Эга инит кмоканзопас в с Erlang,я, инавоом ркиызмямый аррогтооркп
но ьит лдаоых ехвдедиижочопйля лдоитых рия нспньуалодеззлаолскатроап
ых й,ниннечля ты адони. бзнго ааеонрмв ндеме ьерилр вжапееррем инС елвяоп
аворибаих ва тщтшюсые в,ясдволароевмонраых стснссре оецддоерярпопгонм
й,иных енжноелли ерлплария наEпсар rlangся тм.иыв носе рнавее ятллс уопбоп
и,квотой он ьгмо лидся сеоьитптвиате от ирзавы аеня ченввжНуодоареумнрпс
й.иных енжьоллеых и ию лрннлпжааорслаиспп
га инКго на ва аотснсидепми оаащррнбеаодниоулсдEжем rlang. В ей нвы
те ое ение дбых нйонано арв,нсьнодилекиоповсопраитрпи,псс иоспрук ерто
и,кя,даилнаго воо вр го иеомвнмтьаелри сеглолра апраже пких их аггтоурндм
са исов ктактки ении питсснака аымзяесErlang.
ДК У004.438Erlang
ББК 32.973.26-018.2
се Вва арпзащищены. ая бюЛть сачой тэкниги не ет жомть ыбна едевзиорпсовв ой как
бы то ни ло ыбме рофи какими бы то ни ло ыбми автсдерсез бго оннемьсипия нешерзар
ев цьледалвих ксротваправ.
л,аиретаМ ый ннежолзив ой ннаде,гинк но таркогонмн.ереворп Но ку ьлоксоптяорев
ть соних ксечинхеток бишосе вно варт,еувтсещус издательство не ет жомть аворитнараг
ую нтюлосбать сончоти ть соньливарпых мидовирпй.инедевс В зи явсс им тэво тсьлетадзи
не ет сенти сонневтстевтоза ые нжомзови,кбишо связанные с ем инавозьлопсии.гинк
ISBN 978-0-596-51818-9 (анг.) Copyright © 2009 Francesco Cesarini and
Simon Thompson. All rights reserved
ISBN 978-5-94074-617-1 (рус.) © Перевод на русский язык, оформление,
ДМК Пресс, 2012
ие нелвалгО
Предисловие к му окссурию надзи 14
Вступительное во олс 15
Предисловие 16
о:ксечнарФ му ечоПErlang? ' 16
н:омйаС му ечоПErlang? 17
Для го окта эа?гинк 17
ак Кть атичту эгу инк 17
ые нволсУия нечанзобо 19
ие навозьлопсИда окиз ов ремирп 20
Safari Books Online 20
ак Кся ьтазявсс ми ан 20
ти сонрадогалБ 21
ти сонрадогалБот го оксйиссорва тсьлетадзи 22
1 ие недевВ 23
1.1 му ечоПErlang? 23
1.2 ия ротсИErlang 25
1.3 ти соннебосОErlang 26
ые венвоии цркууртоскнооксыВ 26
ые ньлеллараПия нелсичыви ча адерепий нещбоос 27
е,ымеурибатшс аМые нсапозеби ые нвиткеффые нэьлелслариапчыв
ления 28
ие ненемирПв ах метсисго оньлаерни емерв 29
ть сонжёдаН 29
ые ннёледерпсаРия нелсичыв 30
ия царгетнИи ть сотыркто 31
1.4 Erlang и ые нредяогры оонмссецорп 31
1.5 Erlang на ке иткарп 32
ор татуммоКATM AXD301 33
CouchDB 34
Erlang и С+ + 35
1.6 ак Кть янемирпErlang? 36
Основы Erlang 38
2.1 ые леЦла сич 38
2.2 ор татерпретнИErlang 39
2.3 ые ньлетивтсйеДла сич 39
ие ксечитемфирАии царепо 40
2.4 мы отА 41
2.5 ие ксечигоЛия нечанз 43
2.6 жи етроК 44
2.7 ки сипС 45
лы овмиСи ки ортс 46
мы отАи ки ортс 46
ие надзоСи ка тобарбоов ксипс 47
ии цкнуФи и,ицарепо ые ннёледерпона ах ксипс 48
2.8 ие ненварСов мрет 51
2.9 ые ннемереП 53
2.10 ые нжоры лутСкуртсых ннад 55
2.11 ие нелватсопоСс ом цзарбо 57
2.12 ии цкнуФ 62
2.13 ли удоМ 65
ия цялипмоКи ая ньлаутривна ишамErlang 66
вы иткериДей лудом 66
2.14 ия ненжарпУ 68
Последовательное программирование в Erlang 70
3.1 ые нволсия Унежарыв 71
case-ие нежарыв 71
ть салбОти сомидивых ннемереп 74
if-ие нежарыв 75
3.2 ые ннархия Онежарыв 76
3.3 ые ннеортсии Вцкнуф 78
ие нечелвзИов тнемелэта кеъбои ие наворимрофов сорпазк ам ткеъбо 79
ие навозарбоерПов пит 80
рь аволСов ссецорп 81
ие навориммаргорпатеМ 81
ы,ссецорП ы,троп ые ннёледерпсармы маргорпи ая нметсисрофни
ия цам 82
-довВод выв 83
3.4 ия срукеР 85
ая вотсовХия срукер 90
ия цазимитпОой вотсовхии срукер 93
ые нноицаретИии цкнуфив торпых нвисрукер 94
3.5 ки бишОни емервия ненлопыв 95
3.6 ка тобарбОок бишо 98
С ью щомопtry ... catch 98
С ью щомопcatch 102
3.7 ые нчетоилбиБли удом 106
ия цатнемукоД 106
ые нзелоПли удом 107
3.8 ик чдалтО 109
3.9 ия ненжарпУ 111
Параллельное программирование 117
4.1 ие надзоСов ссецорп 118
4.2 ча адереПий нещбоос 120
4.3 ём ирПий нещбоос 122
4.4 ый нчоробём ыирпВий нещбоос 124
4.5 ер мирП-охэса сецорп 128
4.6 ые ннавориртсигерсы аЗсецорп 130
4.7 мя ерВки жредаз 133
4.8 из ланАти соньлетидовзиорп 135
4.9 ас краКов ссецорп 136
4.10 ая вотсовХия срукери ки четути ямап 137
4.11 ин дОай чулсиз ки иткарпго оньлелларапия навориммаргорп . . .. 138
4.12 ие няотсоСи,кног ая нмиазва,квориколб ие надологов ссецорп ... 140
4.13 ер жденов есМсецорп 142
4.14 ия ненжарпУ 143
ны олбаШпроектирования ов ссецорп 145
5.1 ль едоМклиент/сервер 146
ер мирПли едом клиент/сервер 147
5.2 ер мирПна олбашов ссецорп 152
5.3 ый нченоКат мотва 154
ер мирПго онченокта амотва 154
ый нтсемондОор фамес 157
5.4 ер жденеМи ик чтобарбоий тыбос 159
ер мирПго оннёщбора беожденемий тыбос 160
ки ичтобарбий Отыбос 163
5.5 ия ненжарпУ 165
Обработка ошибок в ах ссецорп 167
6.1 ие ненидеоов Сссецорпи лы ангисда охыв 167
ат вхереПов лангисда охыв 170
ии цкнуФия недюлбанза ми ассецорп 172
7
ии цкнуФва онатсо 174
ые ннеортсВии цкнуфи ия голонимрет 175
ка итнамеСия ненартсорпсаров лангисда охыв 176
6.2 ие неортсоПых нжёданем тсис 177
ие недюлбаНза ми атнеилк 178
ер мирП-ассецорпля етадюлбан 181
6.3 ия ненжарпУ 183
7 Записи и сы оркам 186
7.1 си ипаЗ 186
и,сипаЗ ое врепво тсмоканз 187
ие ненемирПей сипаз 188
ии цкнуФи ие нелватсопосс ом цзарбо 189
си ипаЗв ре отатерпретни 190
ия цазилаеРей сипаз 191
ые ннеортсии Вцкнуфдля ты обарс ми ясипаз 192
7.2 сы оркаМ 193
ые тсорПсы оркам 193
ые ннавозиртемараПсы оркам 194
ка далтОи сы оркам 195
ые нчовологаЗлы йаф 196
7.3 ия ненжарпУ 197
8 Обновление ий нежолирп 200
8.1 ие нелвонбОей лудом . 200
8.2 За ми асилук 203
ка зургаЗда ок 206
ер вреСда ок 207
ие нещичОей лудом 209
8.3 ие нелвонбОов ссецорп 209
8.4 йл аФ .erlang 214
8.5 ия ненжарпУ 214
9 ые воНпы итданных и ые венворуокосыв ия нежарыв 216
9.1 ое ньланоицкнуФие навориммаргорп 216
9.2 ип Тfun и ии цкнуфго ешсывка дяроп 217
ия цкнуФак кнт емугра 217
ие неледерпОий цкнуфна у:тел fun-ия нежарыв 219
ия цкнуФак кат тьлузер 220
ие навозьлых онпнсёИледерпоий цкнуф 221
ии цкнуФи ые ннемереп 222
ые нтраднатСии цкнуфго ешсывка дяроп 223
8
ые винеЛия нелсичыви ки сипс 224
9.3 ры отаренеГов ксипс 225
ый вреПер мирп 225
ые ннёщбры оотбарОенегов ксипс 225
ко ьлоксеНов ротаренег 227
ые нтраднатСии цкнуф 227
9.4 ые нчиовДые ннади ия цазилаирес 228
ые нчиовДые ннад 228
ый вотиБис скатнис 230
ое вотиБие нелватсопосс ом цзарбо 232
ры отареных енГчиовдых ннад 233
р:емирП ие наворидокедов тнемгесTCP 234
ые вотиБии царепо 235
ия цазилаиреС 236
9.5 ки лысС . 238
9.6 ия ненжарпУ 239
10 ETS- и Dets-таблицы 241
10.1 ETS-цы илбат 241
ия цазилаеРи ый ньламитпоор бывпа итиц лбат 242
ие надзоСиц лбат 244
та обаРс ей цилбат 245
р:емирП ие неортсопго онтемдерпя,летазаку ая врепть сач 246
од хбОцы илбат 249
р:емирП ие неортсопго онтемдерпя,летазаку ая ротвть сач 249
ие нечелвзИх:ыннад match 251
ие нечелвзИх:ыннад select 253
ие гурДии царепос ми ацилбат 254
си ипаЗи ETS-цы илбат 255
ия цазилаузиВиц лбат 256
10.2 Dets-цы илбат 256
10.3 р:емирП за абых ннадов тненобаой ньлибомзи явс 259
йс ефретнИзы абых ннад 260
ер вреСзы абых ннад 266
10.4 ия ненжарпУ 271
11 Распределённое программирование 273
11.1 ые ннёледерпсаРия нежолирпв Erlang 273
11.2 ые ннёледерпсаРия нежолирпв Erlang: вы онсо 275
на емИов лзуи ть салботи сомидив 277
ие втсйедомиазВи ть сонсапозеб 278
ие втсйедомиазВи ия нещбоос 280
9
ие ненидеоСов лзу 281
ый ннёладУов зывур децорп 284
ль удоМрс г 286
ые вечюлКли удомдля го оннёледерпсария навориммаргорп . . .. 287
11.3 сс ецорПepmd 288
ый ннёледерпсаРErlang за ым ветесжемом наркэ 289
11.4 ия ненжарпУ 290
12 ия недевоПТР О 291
12.1 ие недевВв ия недевопТР О 291
12.2 ый ннёщбобОер врес 294
ск упаЗра еврес 294
ча адереПий нещбоос 296
ие нешреваЗра еврес 298
ый нлоПст кетра емирп 299
ие наворитсеТgen_server 302
12.3 ль етадюлбаН 305
ия цакифицепСля етадюлбан 306
ия цакифицепСих нречодов ссецорп 306
ер мирП 308
ие ксечиманиДие нречодсы сецорп 309
12.4 ия нежолирП 309
ра уткуртСий роткерид 310
Resource-йл аф 312
ск упаЗи ие нешревазий нежолирп 313
ер жденеМий нежолирп 316
12.5 ие нелварпУми азилер 316
12.6 ие гурДия недевопи ки инчотсидля го оньлетяотсомасия нечузи . . 319
12.7 ия ненжарпУ 320
13 ла ачаНты обарс Mnesia 322
13.1 ля Дго ечит дохдопMnesia 322
13.2 ка йортсаНMnesia 324
ие надаЗмы ехс 324
ск упаЗMnesia 325
цы илбаТMnesia 325
13.3 ии цказнарТ 328
сь ипаЗ 329
ие нетЧие и неладу 329
ия цаскеднИ 330
ии цые анрзеяпроГ 332
13.4ия н еныв ирдзеаоРс 334
10