ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

初めてのRubyを読む その30 6.2

2011-10-17 23:59:53 | Ruby
「初めてのRuby」を読むの続き

6章 変数と式
6.2 演算子
から





■6.2 演算子
 いっぱいある。省略


■6.2.1 再定義可能な演算子
・演算子の大部分は、実際にはメソッド呼び出しを読みやすくするための
 シンタックスシュガー
  →再定義可能

 意味
  再定義可能な演算の場合、同じ演算子でもメソッド呼び出しを受ける
  オブジェクトによって意味は異なる

 自己代入演算子
  2項演算子と代入を組み合わせたもの(+=とか)
  →自己代入演算は再定義できない

 否定演算子
  != 比較演算子==の否定
  !~ パターンマッチ演算子=~の否定
 →Ruby1.8では否定演算子は再定義できない
  Ruby1.9では再定義可能

 インクリメント演算子、デクリメント演算子は、ない。




■6.2.2 再定義不能な演算子
・一部の演算子は言語本体の仕様で意味が決まっている
  →再定義不能

  代入
   = オブジェクトの参照を代入
     →a = b = c = 1のようにつなげて代入できる

  多重代入
   複数の式を並行して代入できる
    a,b,c = 1,2,3
   両辺の項目が合わない場合、あまったら捨てられ、足らないとnil

  多値と配列展開
   *が左辺に出ると、多値を配列にまとめてくれる
     a,*b=1,2,3,4,5
     p b   => [2,3,4,5]

   *が右辺に出ると、配列を多値に展開
     array=[1,2,3]
     a,b,c=*array
     p a => 1

   括弧を展開してくれる
     (a,(b,(c,d)),e) = [1,[2,[3,4]],5]
p [a,b,c,d,e]  => [1,2,3,4,5]
 
  要素への代入
   配列要素やハッシュ要素への代入
     →[]=メソッドの呼び出し



■6.2.3 論理演算子
・論理演算子は真偽判断を扱うための再定義不能な演算子
  →! not , && and, || orという意味は同じで優先順位だけ
   違う相方を持っている

・否定論理演算し
  !,!=,!~
   →Ruby1.9では再定義できるが、真偽値は変わらない
      →フックするために再定義できる

・論理和、論理積演算子
  オペランドのいずれかを返す
   例 nil || 50 → 50とかえる(trueでもfalseでもない)

・短絡評価
  論理和、論理積の評価は短絡する
   →副作用が発生しない場合がある

・初期化イディオム
  @a ||= b
    @aが真のとき、何もしない
    @aが偽のとき、bメソッドを読んで、戻り値でaを初期化




■6.2.4 範囲演算子
・ a..b aからb(bが含まれる)
・ a...b aからbの前まで(bは含まれない)




■6.2.5 条件演算子
・条件によって値を振り分ける a ? b : c
 if文と同じ
 空白を省略してa?b:c とかくと、構文エラー


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「モデルベース開発の基本的な考え方」のメモメモ

2011-10-17 19:35:05 | Twitter
【SEC特別セミナー】
ディペンダブルシステムのためのモデルベース開発技術の最新動向

に言ってきたときのメモメモ。
まずは、「モデルベース開発の基本的な考え方」(羽生田 栄一 氏)のお話から




・組み込みシステムの品質問題の原因
  →ソフトウエアの不具合
  →エラーの大半は、要求/仕様の不完全さ
  →近年、組み込み系でも、単独で動いているわけではない
     →SUICA:かなり複雑なシステムSystem-of-systems

・開発の大規模化・複雑化に対する問題
  →利害関係者の錯綜・突合せ
    →コミュニケーションを円滑に行うための見える化
       →アーキテクチャ

・人はなぜ、モデルを見ると喜ぶのか?
  →認識過程の逆転が快感になる(レビューストロース「野生の思考」)
   モデルは全体像が真っ先に到来、次に細部
   抽象化


・モデルとは何か

 →モデルとは、
   関心のある世界を目的に敵記した視点で捉えて
   抽象化、形式化し、理解・操作しやすく記述したもの

 →モデリングとは、
   対象世界を分析し、対応するモデルを作成する過程

 →モデルベース開発とは
   開発対象に関係するモデルをお中心に、すべての開発プロセスを進めて
   いくこと

・システム開発とモデル
 →システム対象の本質を抽象化→抽象的に解決(設計)→具体化
 →従来の自然言語・フローチャート
    →全体が見えにくい
 →モデルを仲介して、見える化

・モデルの過去
’(1)UML
 ダイアグラムの連関性が明確でない。有機的になっていない
 →有機的にする方法:ロバストネス分析など
   ユースケースからオブジェクト:ロバストネス分析
 これはこれで、第一段階

・モデリングの現在
 SysML
  →汎用モデリング言語
   ソフトウエア、ハードウエアを含む「システム全体」をモデリング
     要求図
     パラメトリック図
   統合的に扱って、モデルベース開発
    静的:クラス図
    動的:ステートマシン図
    機能的:アクティビティ図、数式
    検証:トレース(シナリオベース)

 1枚のダイアグラムを描いているのでは、意味がない
   →システム開発地図

 モデルを使う=トレーサビリティを確保する
         →シナリオ検証

 モデルベース開発=見える化+管理可能な状況で維持

・モデリングの未来
 ソフトウエアプロダクトラインへ
   アーキテクチャと経営の融合
 形式手法
  役割1:ダイヤグラムやモデル要素間の制約の正確な記述
  役割2:モデル実効による制約の検証・要求シュミレーション

 LFM:ライトウェイト・フォーマル・メソッド
   ツールを使って行う
   LFMとアジャイルの融合

 アジャイルなプロセスと形式手法の融合
 業務やサービスの環境オントロジー駆動
 プロダクトライン・エンジニアリングへの統合
  →DDD(ドメイン駆動開発)の進化形

 DSLを定義、アプリケーション作成

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PMBOKのお勉強 その31 - 6.2

2011-10-17 15:05:36 | そのほか
今、

プロジェクトマネジメント 知識体系ガイド(PMBOKガイド)第4版
http://www.amazon.co.jp/dp/1933890681

のお勉強をしています。

前回は6.1章だったので、今回は6.2章です




■6.2 アクティビティ順序設定

<<インプット>>
・アクティビティリスト
   6.1より

・アクティビティ属性
   6.1より

・マイルストーンリスト
   6.1より

・組織のプロセス資産


<<ツールと技法>>
・プレシデンス・ダイアグラム法(PDM)
  →クリティカルパス法(CPM)で使用される方法
 以下の依存関係あるいは論理的順序関係
   ・終了-開始関係(FS関係)
   ・終了-終了関係(FF関係)
   ・開始-開始関係(SS関係)
   ・開始-終了関係(SF関係)
 多いのはFS、まれなのはSF


・依存関係の決定
 アクティビティ間の順序の定義には、3種類の依存関係を使う
   ・強制依存関係
   ・任意依存関係
   ・外部依存関係


・リードとラグの適用


・スケジュール・ネットワーク・テンプレート


<<アウトプット>>

・プロジェクト・スケジュール・ネットワーク図

・プロジェクト文書更新版
  以下のものがあるが、これらに限定されない
   ・アクティビティ・リスト
   ・アクティビティ属性
   ・リスク登録簿


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

IQ150のクイズって、人工知能の探索問題の手法で解けるのかしら?

2011-10-17 11:40:43 | Weblog
これが解けたらIQ150っていう問題があるそうだけど・・・

ある家族「父・母・娘が二人・息子が二人・召使い・犬」が大きな川を渡ろうとしています。船は一つしかありません。しかも乗れるのは二人だけで一人は運転手がいります!運転できるのは父と母と召使いだけで父は母がいないと娘を折檻してしまい母は父がいないと息子を折檻し、犬は召使がいないと家族に噛み付いしてしまいます!どういけば誰も傷つかずに川を渡れるでしょう。何回往復してもかまいません。犬も一人とします。ヒッカケではありません。必ず解けます。

http://www.usn.co.jp/imode/iq150.htmより

これって、人工知能のときに習う、

「宣教師と人食い人種」問題 (MC問題)
http://www.kki.yamanashi.ac.jp/~ohbuchi/courses/AI.old/lect1/tsld019.htm

と同じようにして解けばいいのかしら?

つまり

1.<父、母、娘、息子、召使、犬、ボート>で定式化して

2.初期状態
   <1,1,2,2,1,1,こっち側>
  ゴール状態
   <0,0,0,0,0,0,むこう岸>
  とおき、

3.取れるオペレーションを全て列挙し、
  禁止状態にならないかチェックしながら
  探索する(クローズドリスト使って)

と、

人工知能-探索のお勉強
http://ameblo.jp/smeokano/entry-11049372291.html

を見て思ったけど、今時間がないので、やれない・・・

P.S MC問題で、それっぽいの・・・

人工知能 宣教師と人食い人種 055706E 上里盛真
http://www.ie.u-ryukyu.ac.jp/~e055706/reports/AI/AImini.pdf

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする