Re:Start

いまはディレクターやってます

『Erlangプログラミング』を始めました。

1章 イントロダクション

Erlangの利点

  • 大規模なプロセス拡張性を備えている
  • OS費依存の軽量並列モデル > 他に類を見ない
  • 共有データを持たない -> マルチコアプロセッサに完璧にフィット
  • Erlangを徐々にシステムに持ち込み、能力的に劣る既存の言語と置き換えるというようなことが普通にできる
  • 独立したVM上で動作する

Erlangの向いてる開発

  • ターゲットがハイレベルで、堅牢なソフトリアルタイムシステムであって、要求の応じて線形にスケールアップ可能なシステム
  • マルチコアプロセッサを完全に使いこなしたい
  • 他の言語で書かれたソフトウェア部品と統合したい
  • 大規模なメッセージ処理システムを一度もダウンせずに常に動作させたいときはErlangを選ぶ(Tim Bray)
  • AmazonのSimpleDB
  • Yahoo!のDelicious
  • facebookのチャットサービスのバックエンドの一部
  • CouchDB, MochiWeb, RabbitMQ
  • agileアプローチと相性がいい

2. Erlangの基礎

文法など

  • bignumというか、最大値は存在しない
  • GCは自動、メモリリークも基本的に無い
  • 全部小文字がアトム、頭大文字が変数
area({square, Side}) ->
  Side * Side;
area({circle, Radius}) ->
  math:pi() * Radius * Radius;
area({triangle, A, B, C}) ->
  S = (A + B + C)/2,
  math:sqrt(S*(S-A)*(S-B)*(S-C));
area(Other) ->
  {error, invalid_objedt}.
% 呼び出す時は、area(square,4). で最初の式にヒット
  • importを極力書かないのがマナー
  • ifとcaseの使い分けがkey
  • exportに入れるのは、[関数名/項数]
  • フォーマットにはチルダ
  • 末尾再帰が絶対的に早かったのは過去の話なので厳密に行いたい場合は計測する

この本

Erlangプログラミング
Francesco Cesarini Simon Thompson 佐藤 嘉一
4873114659