孟岩谈Erlang:并行计算和云计算

探讨Erlang语言如何适应多核与云计算时代,强调其在并行计算领域的独特优势。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="ProgId" content="Word.Document"> <meta name="Generator" content="Microsoft Word 12"> <meta name="Originator" content="Microsoft Word 12"> <link rel="File-List" href="file:///C:%5CUsers%5Cerway%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"> <link rel="Preview" href="file:///C:%5CUsers%5Cerway%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_preview.wmf"> <!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Version>12.00</o:Version> </o:DocumentProperties> </xml><![endif]--><link rel="themeData" href="file:///C:%5CUsers%5Cerway%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"> <link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cerway%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--><smallfrac m:val="off"><dispdef><lmargin m:val="0"><rmargin m:val="0"><defjc m:val="centerGroup"><wrapindent m:val="1440"><intlim m:val="subSup"><narylim m:val="undOvr"></narylim></intlim></wrapindent><!--[endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="0" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="0" Name="Hyperlink"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><style> <!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face {font-family:楷体_GB2312; mso-font-alt:"Arial Unicode MS"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135135232 16 0 262144 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 680460288 22 0 262145 0;} @font-face {font-family:楷体; panose-1:2 1 6 9 6 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482945 953122042 22 0 262145 0;} @font-face {font-family:"/@楷体"; panose-1:2 1 6 9 6 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482945 953122042 22 0 262145 0;} @font-face {font-family:"/@楷体_GB2312"; mso-font-charset:134; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:0 135135232 16 0 262144 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; text-indent:10.0pt; mso-char-indent-count:2.0; mso-pagination:none; mso-layout-grid-align:none; punctuation-trim:leading; text-autospace:none; font-size:10.0pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman","serif"; mso-fareast-font-family:宋体; mso-font-kerning:10.0pt;} h1 {mso-style-unhide:no; mso-style-qformat:yes; mso-style-link:"标题 1 Char"; mso-style-next:正文; margin-top:6.0pt; margin-right:0cm; margin-bottom:6.0pt; margin-left:0cm; text-align:justify; text-justify:inter-ideograph; text-indent:0cm; line-height:240%; mso-pagination:lines-together; page-break-after:avoid; mso-outline-level:1; mso-list:l0 level1 lfo1; text-autospace:none; font-size:16.0pt; mso-bidi-font-size:22.0pt; font-family:"Times New Roman","serif"; mso-font-kerning:0pt;} a:link, span.MsoHyperlink {mso-style-noshow:yes; mso-style-unhide:no; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} span.1Char {mso-style-name:"标题 1 Char"; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"标题 1"; mso-ansi-font-size:16.0pt; mso-bidi-font-size:22.0pt; font-weight:bold;} span.5K {mso-style-name:5号楷体K; mso-style-unhide:no; mso-ansi-font-size:10.0pt; font-family:"Times New Roman","serif"; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:楷体_GB2312; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt; mso-ansi-language:ZH-CN;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-hansi-font-family:"Times New Roman"; mso-font-kerning:0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:115605943; mso-list-template-ids:-1407131002;} @list l0:level1 {mso-level-style-link:"标题 1"; mso-level-suffix:none; mso-level-text:第%1章 ; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm; mso-ansi-language:EN-US;} @list l0:level2 {mso-level-suffix:none; mso-level-text:"%1/.%2 "; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level3 {mso-level-suffix:none; mso-level-text:"%1/.%2/.%3 "; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level4 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level5 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level6 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level7 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level8 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} @list l0:level9 {mso-level-number-format:none; mso-level-suffix:none; mso-level-text:""; mso-level-tab-stop:none; mso-level-number-position:left; margin-left:0cm; text-indent:0cm;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman","serif";} </style> <![endif]--><h1 style="text-align: center;" align="center"> <span style="font-family: 宋体;">孟岩谈</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">:并行计算和云计算</span> </h1> <p class="MsoNormal" style="margin-bottom: 12pt; text-align: right; text-indent: 20pt;" align="right"><span style="font-family: 楷体; color: red;">——写在</span><span style="color: red;" lang="EN-US"><a href="http://www.china-pub.com/301677"><span style="font-family: 楷体; color: red;" lang="EN-US"><span lang="EN-US">《</span></span><span style="color: red;">Erlang</span><span style="font-family: 楷体; color: red;" lang="EN-US"><span lang="EN-US">程序设计<span lang="EN-US">》</span></span></span></a></span><span style="font-family: 楷体; color: red;">出版之际</span><span style="color: red;" lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">算不上是一种“大众流行”的程序设计语言,而且即使是</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">的支持者,大多数也对于</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">成为“主流语言”并不持乐观态度。然而,自从</span><span lang="EN-US">2006</span><span style="font-family: 宋体;">年以来,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">语言确实在国内外一批精英程序员中暗流涌动,光我所认识和听说的,就有不少于一打技术高手像着了魔一样迷上了这种已经有二十多年历史的老牌语言。这是一件相当奇怪的事情。因为就年龄而言,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">大约与</span><span lang="EN-US">Perl</span><span style="font-family: 宋体;">同年,比</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">年轻四岁,长</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">差不多十岁,但</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">早已经是工业主流语言,</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">和</span><span lang="EN-US">Perl</span><span style="font-family: 宋体;">甚至已经进入其生命周期的下降阶段。照理说,一个被扔在角落里二十多载无人理睬的老家伙合理的命运就是坐以待毙,没想到</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">却像是突然吃了返老还童丹似的在二十多岁的“高龄”又火了一把,不但对它感兴趣的人数量激增,而且还成立了一些组织,开发实施了一些非常有影响力的软件项目。这是怎么回事呢?</span><span lang="EN-US"> </span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">根本原因在于</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">天赋异禀恰好适应了计算环境变革的大趋势:</span><span lang="EN-US">CPU</span><span style="font-family: 宋体;">的多核化与云计算。</span><span lang="EN-US"> </span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">自</span><span lang="EN-US">2005</span><span style="font-family: 宋体;">年</span><span lang="EN-US">C++</span><span style="font-family: 宋体;">标准委员会</span><span lang="EN-US">Herb Sutter</span><span style="font-family: 宋体;">在</span><i style=""><span lang="EN-US">Dr. Dobb’s Journal</span></i><span style="font-family: 宋体;">上发表《免费午餐已经结束》一文以来,人们已经确凿无疑地认识到,如果未来不能有效地以并行化的软件充分利用并行化的硬件资源,我们的计算效率就会永远停滞在仅仅略高于当前的水平上,而不得动弹。因此,未来的计算必然是并行的。</span><span lang="EN-US">Herb Sutter</span><span style="font-family: 宋体;">本人曾表示,如果一个语言不能够以优雅可靠的方式处理并行计算的问题,那它就失去了在</span><span lang="EN-US">21</span><span style="font-family: 宋体;">世纪的生存权。“主流语言”当然不想真的丧失掉这个生存权,于是纷纷以不同的方式解决并行计算的问题。就</span><span lang="EN-US">C/C++</span><span style="font-family: 宋体;">而言,除了标准委员会致力于以标准库的方式来提供并行计算库之外,标准化的</span><span lang="EN-US">OpenMP</span><span style="font-family: 宋体;">和</span><span lang="EN-US">MPI</span><span style="font-family: 宋体;">,以及</span><span lang="EN-US">Intel</span><span style="font-family: 宋体;">的</span><span lang="EN-US">Threading Building Blocks</span><span style="font-family: 宋体;">库也都是可信赖的解决方案;</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">在</span><span lang="EN-US">5.0</span><span style="font-family: 宋体;">版中引入了意义重大的</span><span lang="EN-US">concurrency</span><span style="font-family: 宋体;">库,得到</span><span lang="EN-US">Java</span><span style="font-family: 宋体;">社区的一致推崇;而微软更是采用了多种手段来应对这一问题:先是在</span><span lang="EN-US">.NET</span><span style="font-family: 宋体;">中引入</span><span lang="EN-US">APM</span><span style="font-family: 宋体;">,随后又在</span><span lang="EN-US">Robotics Studio</span><span style="font-family: 宋体;">中提供了</span><span lang="EN-US">CCR</span><span style="font-family: 宋体;">库,最近又发布了</span><span lang="EN-US">Parrallel FX</span><span style="font-family: 宋体;">和</span><span lang="EN-US">MPI.NET</span><span style="font-family: 宋体;">,可谓不遗余力。然而,这些手法都可以视为亡羊补牢,因为这些语言和基础设施在创造时都没有把并行化的问题放到优先的位置来考虑。与它们相反,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">从其构思的时候起,就把“并行”放到了中心位置,其语言机制和细节的设计无不从并行角度出发和考虑,并且在长达二十年的发展完善中不断成熟。今天,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">可以说是为数不多的天然适应多核的可靠计算环境,这不能不说是一种历史的机缘。</span><span lang="EN-US"> <br></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;" align="center"><span lang="EN-US"><br></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;" align="center"><span lang="EN-US"><p><img alt="" src="http://album.hi.youkuaiyun.com/app_uploads/turingbooks/20081023/150450828.p.jpg?d=20081023150930312" align=""></p></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span lang="EN-US"><p><br></p></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">中国互动出版网首发:</span><span lang="EN-US"><a href="http://www.china-pub.com/301677">http://www.china-pub.com/301677</a></span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span lang="EN-US"><a href="http://www.china-pub.com/301677"><br></a> </span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">另一个可能更加迫切的变革,就是云计算。</span><span lang="EN-US">Google</span><span style="font-family: 宋体;">的实践表明,用廉价服务器组成的服务器集群,在计算能力、可靠性等方面能够达到价格昂贵的大型计算机的水准,毫无疑问,这是大型、超大型网站和网络应用梦寐以求的境界。然而,要到达这个境界并不容易。目前一般的网站为了达成较好的可延展性和运行效率,需要聘请有经验的架构师和系统管理人员,手工配置网络服务端架构,并且常备一个高水准的系统运维部门,随时准备处理各种意外情况。可以说,虽然大多数</span><span lang="EN-US">Web</span><span style="font-family: 宋体;">企业只不过是想在这些基础设施上运行应用而已,但仅仅为了让基础设施正常运转,企业就必须投入巨大的资源和精力。现在甚至可以说,这方面的能力成了大型和超大型网站的核心竞争力。这与操作系统成熟之前人们自己动手设置硬件并且编写驱动程序的情形类似——做应用的人要精通底层细节。这种格局的不合理性一望便知,而解决的思路也是一目了然——建立网络服务端计算的操作系统,也就是类似</span><span lang="EN-US">Google</span><span style="font-family: 宋体;">已经建立起来的“云计算”那样的平台。所谓“云计算”,指的是结果,而当前的关键不是这个结果,而是作为手段的“计算云”。计算云实际上就是控制大型网络服务器集群计算资源的操作系统,它不但可以自动将计算任务并行化,充分调动大型服务器集群的计算能力,而且还可以自动应对大多数系统故障,实现高水平的自主管理。计算云技术是网络计算时代的操作系统,是绝对的核心技术,也正因此,很多赫赫有名的中外大型</span><span lang="EN-US">IT</span><span style="font-family: 宋体;">企业都在不惜投入巨资研发计算云。包括我在内的很多人都相信,云计算将不仅从根本上改变我们的计算环境,而且将从根本上改变</span><span lang="EN-US">IT</span><span style="font-family: 宋体;">产业的盈利模式,是真正几十年一遇的重大变革,对于一些企业和技术人员来说是重大的历史机遇。恰恰在这个主题上,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">又具有先天的优势,这当然也是归结于其与生俱来的并行计算能力,使得开发计算云系统对于</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">来说格外轻松容易。现在</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">社区已经开发了一些在实践中被证明非常有效的云计算系统,学习</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">和这些系统是迅速进入这个领域并且提高水平的捷径。</span><span lang="EN-US"> </span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">由此可见,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">虽然目前还不是主流语言,但是有可能会在未来一段时间发挥重要的作用,因此,对于那些愿意领略技术前沿风景的“先锋派”程序员来说,了解和学习</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">可能是非常有价值的投资。即使你未来不打算使用</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">,也非常有可能从</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">的设计和</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">社区的智慧中得到启发,从而能够在其他语言的项目中更好地完成并行计算和云计算相关的设计和实现任务。再退一步说,就算只是从开启思路、全面认识计算本质和并行计算特性的角度出发,</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">也值得了解。所以,我很希望这本书在中国程序员社区中不要遭到冷遇。</span><span lang="EN-US"> </span></p> <p class="MsoNormal" style="text-indent: 20pt; line-height: 150%;"><span style="font-family: 宋体;">本书是由</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">创造者</span><span lang="EN-US">Joe Armstrong</span><span style="font-family: 宋体;">亲自执笔撰写的</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">语言权威参考书,原作以轻松引<span style="letter-spacing: 0.2pt;">导的方式帮助读者在实践中理解</span></span><span style="letter-spacing: 0.2pt;" lang="EN-US">Erlang</span><span style="font-family: 宋体; letter-spacing: 0.2pt;">的深刻设计思路,并掌握以</span><span style="letter-spacing: 0.2pt;" lang="EN-US">Erlang</span><span style="font-family: 宋体; letter-spacing: 0.2pt;">开发并行程序的技术,</span><span style="font-family: 宋体;">在技术图书中属于难得的佳作。两位译者我都认识,他们都是技术精湛而思想深刻的“先锋派”,对</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">有着极高的热情,因此翻译质量相当高,阅读起来流畅通顺,为此书中译本添色不少。有兴趣的读者集中一段时间按图索骥,完全有可能就此踏上理解</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">、应用</span><span lang="EN-US">Erlang</span><span style="font-family: 宋体;">的大路。</span></p> <p class="MsoNormal" style="text-indent: 25pt; line-height: 150%;"><span lang="EN-US"><p></p></span></p> <p class="MsoNormal" style="text-align: right; text-indent: 25pt; line-height: 150%;" align="right"><span class="5K"><span style=""> </span></span><span class="5K"><span style="font-family: 楷体_GB2312;">孟岩</span><p></p></span></p> <p class="MsoNormal" style="text-align: right; text-indent: 155pt; line-height: 150%;" align="right"><span class="5K">优快云</span><span class="5K"><span style="font-family: 楷体_GB2312;">首席分析师兼《程序员》杂志技术主编</span><p></p></span></p> <p class="MsoNormal" style="text-align: right; text-indent: 25pt; line-height: 150%;" align="right"><span class="5K"><span style=""> </span><span style=""></span>2008</span><span class="5K"><span style="font-family: 楷体_GB2312;">年</span>10</span><span class="5K"><span style="font-family: 楷体_GB2312;">月</span><p></p></span></p></defjc></rmargin></lmargin></dispdef></smallfrac>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值