「GOto」を含む日記 RSS

はてなキーワード: GOtoとは

2012-07-05

http://anond.hatelabo.jp/20120705103844

読んだけどそれが何か?

gotoインラインアセンブラもある、実行速度最適型および、メモリ最適型のC言語に対して何か?

それこそ、美しい言語が書きたいならC/C++ではなく JavaでもRubyでも、LISPでもPASCALでも好きな言語を使えばいいよ。

 

道具は選べるんだから。そして、C/C++でも美しく書くこともそれは出きるだろうが、そもそも生まれとして、そう言うふうに生まれていない

用途が違う言語に対して、美しくない。というコメントは間違ってるよ。

あとvtableは歴史表現で古くからあるから、読みやすいよ。

つかvtable知らずに、ポリモルフィズムは語れないわけだし。

 

ナイフとトンカチを比べて、どっちがどうだ?とか、意味のない議論だよ。

プログラム言語宗教論争という言葉勉強するといい。

2012-06-16

http://anond.hatelabo.jp/20120615165359

最適化されちゃ一緒だが、

ここは

for(;;){

}

でしょ。

whileより評価回数が少ない、gotoより一般的で最適化が期待できる。

2012-06-15

むぅ、いろいろなことを考えるとだね

while(true){

}

label:

{

}

goto label;

どっちがいいのか、わからなくなってきた。昔はwhileだと 盲目的に信じていた。

最適化がかかっちまえば同じ事だと思うんだが、最適化を信じていいのかわからなくなってきたよ gcc

2012-05-06

http://anond.hatelabo.jp/20120506123527

goto使うといったりきたりになるから……。

素直に関数でいいじゃないか

http://anond.hatelabo.jp/20120506123527

どう考えてもgotoある方が動きとかわかりにくくなると思うが

インデント深いの嫌なら関数にすればいいと思う

goto使うなって言うけど

goto使わずに書くとソースわかりにくくならない?スパゲッティ、とは違うかもしれないがif elseの繰り返しでどんどんインデントが深くなって…。goto使えばすっきりするのに。

2011-09-15

コンピュータ基礎理論ハンドブック2 形式的モデル意味論」の目次

第1章  有限オートマトン
	D.Perrin:橋口攻三郎
1. 序論
2. 有限オートマトン認識可能集合
3. 有理表現
4. Kleeneの定理
5. 星の高さ
6. 星自由集合
7. 特殊なオートマトン
8. 数の認識可能集合


第2章  文脈自由言語
	J.Berstel and L.Boasson:富田 悦次

1. 序論
2. 言語
	2.1 記法と例
	2.2 Hotz 群
	2.3 曖昧性と超越性
3. 反復
	3.1 反復補題
	3.2 交換補題
	3.3 退化
4. 非生成元の探求
	4.1 準備
	4.2 生成元
	4.3 非生成元と代入
	4.4 非生成元と決定性
	4.5 主錐の共通部分
5. 文脈自由群
	5.1 文脈自由群
	5.2 Cayleyグラフ
	5.3 終端


第3章  形式言語とべき級数
	A.Salomaa:河原 康雄

1. 序論
2. 準備
3. 書換え系と文法
4. Post正準系
5. Markov系
6. 並列書換え系
7. 射と言語
8. 有理べき級数
9. 代数的べき級数
10. べき級数の応用


第4章  無限の対象上のオートマトン
	W.Thomas:山崎 秀記

序論
Ⅰ部  無限語上のオートマトン
	記法
1. Buchiオートマトン
2. 合同関係と補集合演算
3. 列計算
4. 決定性とMcNaughtonの定理
5. 受理条件とBorelクラス
6. スター自由ω言語と時制論理
7. 文脈自由ω言語
Ⅱ部  無限木上のオートマトン
	記法
8. 木オートマトン
9. 空問題と正則木
10. 補集合演算ゲームの決定性
11. 木の単項理論と決定問題
12. Rabin認識可能な集合の分類
	12.1 制限された単項2階論理
	12.2 Rabin木オートマトンにおける制限
	12.3 不動点計算


第5章  グラフ書換え:代数的・論理アプローチ
	B.Courcelle:會澤 邦夫

1. 序論
2. 論理言語グラフの性質
	2.1 単純有向グラフの類S
	2.2 グラフの類D(A)
	2.3 グラフの性質
	2.4 1階のグラフの性質
	2.5 単項2階のグラフの性質
	2.6 2階のグラフの性質
	2.7 定理
3. グラフ演算グラフ表現
	3.1 源点付きグラフ
	3.2 源点付き超グラフ
	3.3 超グラフ上の演算
	3.4 超グラフの幅
	3.5 導来演算
	3.6 超辺置換
	3.7 圏における書換え規則
	3.8 超グラフ書換え規則
4. 超グラフの文脈自由集合
	4.1 超辺置換文法
	4.2 HR文法に伴う正規木文法
	4.3 超グラフの等式集合
	4.4 超グラフの文脈自由集合の性質
5. 超グラフの文脈自由集合の論理的性質
	5.1 述語の帰納的集合
	5.2 論理構造としての超グラフ
	5.3 有限超グラフの可認識集合
6. 禁止小グラフ定義される有限グラフの集合
	6.1 小グラフ包含
	6.2 木幅と木分解
	6.3 比較図
7. 計算量の問題
8. 無限グラフ
	8.1 無限グラフ表現
	8.2 無限グラフの単項性質
	8.3 超グラフにおける等式系
	8.4 関手の初期不動点
	8.5 超グラフにおける等式系の初期解
	8.6 等式的超グラフの単項性質


第6章  書換え系
	N.Dershowitz and J.-P.Jouannaud:稲垣 康善,直井 徹

1. 序論
2. 構文論
	2.1 項
	2.2 等式
	2.3 書換え規則
	2.4 決定手続き
	2.5 書換え系の拡張
3. 意味論
	3.1 代数
	3.2 始代数
	3.3 計算能代数
4. Church-Rosser性
	4.1 合流性
	4.2 調和性
5. 停止性
	5.1 簡約順序
	5.2 単純化順序
	5.3 経路順序
	5.4 書換え系の組合せ
6. 充足可能性
	6.1 構文論的単一化
	6.2 意味論的単一化
	6.3 ナローイング
7. 危険対
	7.1 項書換え
	7.2 直交書換え系
	7.3 類書換え
	7.4 順序付き書換え
	7.5 既約な書換え系
8. 完備化
	8.1 抽象完備化
	8.2 公平性
	8.3 完備化の拡張
	8.4 順序付き書換え
	8.5 機能定理証明
	8.6 1階述語論理定理証明
9. 書換え概念拡張
	9.1 順序ソート書換え
	9.2 条件付き書換え
	9.3 優先度付き書換え
	9.4 グラフ書換え


第7章  関数型プログラミングラムダ計算
	H.P.Barendregt:横内 寛文

1. 関数計算モデル
2. ラムダ計算
	2.1 変換
	2.2 計算可能関数表現
3. 意味論
	3.1 操作意味論:簡約と戦略
	3.2 表示的意味論ラムモデル
4. 言語拡張
	4.1 デルタ規則
	4.2 型
5. 組合せ子論理と実装手法
	5.1 組合せ子論理
	5.2 実装の問題


第8章  プログラミング言語における型理論
	J.C.Mitchell:林 晋

1. 序論
	1.1 概論
	1.2 純粋および応用ラムダ計算
2. 関数の型をもつ型付きラムダ計算
	2.1 型
	2.2 項
	2.3 証明系
	2.4 意味論健全性
	2.5 再帰関数論的モデル
	2.6 領域理論モデル
	2.7 カルテシアン閉圏
	2.8 Kripkeラムモデル
3. 論理的関係
	3.1 はじめに
	3.2 作用構造上の論理的関係
	3.3 論理的部分関数論理同値関係
	3.4 証明論的応用
	3.5 表現独立性
	3.6 論理的関係の変種
4. 多相型入門
	4.1 引数としての型
	4.2 可述的な多相的計算系
	4.3 非可述的な多相型
	4.4 データ抽象存在型
	4.5 型推論入門
	4.6 型変数をもつλ→の型推論
	4.7 多相的宣言の型推論
	4.8 他の型概念


第9章  帰納的な関数プログラム図式
	B.Courcelle:深澤 良彰

1. 序論
2. 準備としての例
3. 基本的な定義
	3.1 多ソート代数
	3.2 帰納的な関数プログラム図式
	3.3 同値な図式
4. 離散的解釈における操作意味論
	4.1 部分関数と平板な半順序
	4.2 離散的解釈
	4.3 書換えによる評価
	4.4 意味写像
	4.5 計算規則
5. 連続解釈における操作意味論
	5.1 連続代数としての解釈
	5.2 有限の極大要素と停止した計算
6. 解釈クラス
	6.1 汎用の解釈
	6.2 代表解釈
	6.3 解釈方程式クラス
	6.4 解釈代数クラス
7. 最小不動点意味論
	7.1 最小で唯一の解を得る不動点理論
	7.2 Scottの帰納原理
	7.3 Kleeneの列と打切り帰納法
8. プログラム図式の変換
	8.1 プログラム図式における同値性の推論
	8.2 畳込み,展開,書換え
	8.3 制限された畳込み展開
9. 研究歴史,他の形式のプログラム図式,文献ガイド
	9.1 流れ図
	9.2 固定された条件をもつ一様な帰納的関数プログラム図式
	9.3 多様な帰納的関数プログラム図式
	9.4 代数理論
	9.5 プログラムの生成と検証に対する応用


第10論理プログラミング
	K.R.Apt:筧 捷彦

1. 序論
	1.1 背景
	1.2 論文の構成
2. 構文と証明論
	2.1 1階言語
	2.2 論理プログラム
	2.3 代入
	2.4 単一化子
	2.5 計算過程―SLD溶融
	2.6 例
	2.7 SLD導出の特性
	2.8 反駁手続き―SLD木
3. 意味論
	3.1 1階論理意味論
	3.2 SLD溶融の安全性
	3.3 Herbrand模型
	3.4 直接帰結演算子
	3.5 演算子とその不動点
	3.6 最小Herbrand模型
	3.7 SLD溶融の完全性
	3.8 正解代入
	3.9 SLD溶融の強安全性
	3.10 手続き的解釈と宣言的解釈
4. 計算力
	4.1 計算力と定義力
	4.2 ULの枚挙可能性
	4.3 帰納的関数
	4.4 帰納的関数計算力
	4.5 TFの閉包順序数
5. 否定情報
	5.1 非単調推論
	5.2 閉世界仮説
	5.3 失敗即否定規則
	5.4 有限的失敗の特徴付け
	5.5 プログラムの完備化
	5.6 完備化の模型
	5.7 失敗即否定規則の安全性
	5.8 失敗即否定規則の完全性
	5.9 等号公理と恒等
	5.10 まとめ
6. 一般目標
	6.1 SLDNF-溶融
	6.2 SLDNF-導出の安全性
	6.3 はまり
	6.4 SLDNF-溶融の限定的な完全性
	6.5 許容性
7. 層状プログラム
	7.1 準備
	7.2 層別
	7.3 非単調演算子とその不動点
	7.4 層状プログラム意味論
	7.5 完全模型意味論
8. 関連事項
	8.1 一般プログラム
	8.2 他の方法
	8.3 演繹データベース
	8.4 PROLOG
	8.5 論理プログラミング関数プログラミング統合
	8.6 人工知能への応用


第11章  表示的意味論
	P.D.Mosses:山田 眞市

1. 序論
2. 構文論
	2.1 具象構文論
	2.2 抽象構文
	2.3 文脈依存構文
3. 意味論
	3.1 表示的意味論
	3.2 意味関数
	3.3 記法の慣例
4. 領域
	4.1 領域の構造
	4.2 領域の記法
	4.3 記法上の約束事
5. 意味記述法
	5.1 リテラル
	5.2 式
	5.3 定数宣言
	5.4 関数抽象
	5.5 変数宣言
	5.6 文
	5.7 手続抽象
	5.8 プログラム
	5.9 非決定性
	5.10 並行性
6. 文献ノート
	6.1 発展
	6.2 解説
	6.3 変形


第12意味領域
	C.A.Gunter and D.S.Scott:山田 眞市

1. 序論
2. 関数帰納定義
	2.1 cpoと不動点定理
	2.2 不動点定理の応用
	2.3 一様性
3. エフェクティブに表現した領域
	3.1 正規部分posetと射影
	3.2 エフェクティブに表現した領域
4. 作用素関数
	4.1 積
	4.2 Churchのラム記法
	4.3 破砕積
	4.4 和と引上げ
	4.5 同形と閉包性
5. べき領域
	5.1 直観的説明
	5.2 形式的定義
	5.3 普遍性と閉包性
6. 双有限領域
	6.1 Poltkin順序
	6.2 閉包性
7. 領域の帰納定義
	7.1 閉包を使う領域方程式の解法
	7.2 無型ラム記法モデル
	7.3 射影を使う領域方程式の解法
	7.4 双有限領域上の作用素表現


第13章  代数仕様
	M.Wirsing:稲垣 康善,坂部 俊樹

1. 序論
2. 抽象データ型
	2.1 シグニチャと項
	2.2 代数計算構造
	2.3 抽象データ型
	2.4 抽象データ型の計算可能性
3. 代数仕様
	3.1 論理式と理論
	3.2 代数仕様とその意味論
	3.3 他の意味論的理解
4. 単純仕様
	4.1 束と存在定理
	4.2 単純仕様表現能力
5. 隠蔽関数と構成子をもつ仕様
	5.1 構文と意味論
	5.2 束と存在定理
	5.3 隠蔽記号と構成子をもつ仕様表現能力
	5.4 階層仕様
6. 構造仕様
	6.1 構造仕様意味論
	6.2 隠蔽関数のない構造仕様
	6.3 構成演算
	6.4 拡張
	6.5 観測的抽象化
	6.6 構造仕様代数
7. パラメータ仕様
	7.1 型付きラムダ計算によるアプローチ
	7.2 プッシュアウトアプローチ
8. 実現
	8.1 詳細化による実現
	8.2 他の実現概念
	8.3 パラメータ化された構成子実現と抽象化子実現
	8.4 実行可能仕様
9. 仕様記述言語
	9.1 CLEAR
	9.2 OBJ2
	9.3 ASL
	9.4 Larch
	9.5 その他の仕様記述言語


第14章  プログラム論理
	D.Kozen and J.Tiuryn:西村 泰一,近藤 通朗

1. 序論
	1.1 状態,入出力関係,軌跡
	1.2 外的論理,内的論理
	1.3 歴史ノート
2. 命題動的論理
	2.1 基本的定義
	2.2 PDLに対する演繹体系
	2.3 基本的性質
	2.4 有限モデル特性
	2.5 演繹的完全性
	2.6 PDLの充足可能性問題の計算量
	2.7 PDLの変形種
3. 1階の動的論理
	3.1 構文論
	3.2 意味論
	3.3 計算量
	3.4 演繹体系
	3.5 表現力
	3.6 操作的vs.公理意味論
	3.7 他のプログラミング言語
4. 他のアプローチ
	4.1 超準動的論理
	4.2 アルゴリズム論理
	4.3 有効的定義論理
	4.4 時制論理


第15章  プログラム証明のための手法論理
	P.Cousot:細野 千春,富田 康治

1. 序論
	1.1 Hoareの萌芽的な論文の解説
	1.2 C.A.R.HoareによるHoare論理のその後の研究
	1.3 プログラムに関する推論を行うための手法に関するC.A.R.Hoareによるその後の研究
	1.4 Hoare論理概観
	1.5 要約
	1.6 この概観を読むためのヒント
2. 論理的,集合論的,順序論的記法
3. プログラミング言語の構文論と意味論
	3.1 構文論
	3.2 操作意味論
	3.3 関係的意味論
4. 命令の部分正当性
5. Floyd-Naurの部分正当性証明手法とその同値な変形
	5.1 Floyd-Naurの手法による部分正当性証明の例
	5.2 段階的なFloyd-Naurの部分正当性証明手法
	5.3 合成的なFloyd-Naurの部分正当性証明手法
	5.4 Floyd-Naurの部分正当性の段階的な証明と合成的な証明同値性
	5.5 Floyd-Naurの部分正当性証明手法の変形
6. ライブネス証明手法
	6.1 実行トレース
	6.2 全正当性
	6.3 整礎関係,整列集合,順序数
	6.4 Floydの整礎集合法による停止性の証明
	6.5 ライブネス
	6.6 Floydの全正当性証明手法からライブネスへの一般化
	6.7 Burstallの全正当性証明手法とその一般化
7. Hoare論理
	7.1 意味論的な観点から見たHoare論理
	7.2 構文論的な観点から見たHoare論理
	7.3 Hoare論理意味論
	7.4 構文論と意味論の間の関係:Hoare論理健全性と完全性の問題
8. Hoare論理の補足
	8.1 データ構造
	8.2 手続き
	8.3 未定義
	8.4 別名と副作用
	8.5 ブロック構造局所変数
	8.6 goto文
	8.7 (副作用のある)関数と式
	8.8 コルーチン
	8.9 並行プログラム
	8.10正当性
	8.11 プログラム検証の例
	8.12 プログラムに対して1階論理拡張した他の論理


第16章  様相論理時間論理
	E.A.Emerson:志村 立矢

1. 序論
2. 時間論理の分類
	2.1 命題論理 対 1階述語論理
	2.2 大域的と合成的
	2.3 分岐的 対 線形
	2.4 時点と時区間
	2.5 離散 対 連続
	2.6 過去時制 対 未来時制
3. 線形時間論理技術的基礎
	3.1 タイムライン
	3.2 命題線形時間論理
	3.3 1階の線形時間論理
4. 分岐的時間論理技術的基礎
	4.1 樹状構造
	4.2 命題分岐的時間論理
	4.3 1階の分岐的時間論理
5. 並行計算:その基礎
	5.1 非決定性と公平性による並列性のモデル化
	5.2 並列計算抽象モデル
	5.3 並列計算の具体的なモデル
	5.4 並列計算の枠組みと時間論理の結び付き
6. 理論見地から時間論理
	6.1 表現可能性
	6.2 命題時間論理の決定手続き
	6.3 演繹体系
	6.4 モデル性の判定
	6.5 無限の対象の上のオートマトン
7. 時間論理プログラム検証への応用
	7.1 並行プログラム正当性に関する性質
	7.2 並行プログラム検証証明論的方法
	7.3 時間論理による仕様からの並行プログラム機械合成
	7.4 有限状態並行システム自動検証
8. 計算機科学における他の様相論理時間論理
	8.1 古典様相論理
	8.2 命題動的論理
	8.3 確率論理
	8.4 不動点論理
	8.5 知識


第17章  関係データベース理論の構成要素
	P.C.Kanellakis:鈴木 晋

1. 序論
	1.1 動機と歴史
	1.2 内容についての案内
2. 関係データモデル
	2.1 関係代数と関係従属性
	2.2 なぜ関係代数か
	2.3 なぜ関係従属性か
	2.4 超グラフデータベーススキーマの構文について
	2.5 論理データベース意味について
3. 従属性データベーススキーマ設計
	3.1 従属性の分類
	3.2 データベーススキーマ設計
4. 問合わせデータベース論理プログラム
	4.1 問合わせの分類
	4.2 データベース論理プログラム
	4.3 問合わせ言語と複合オブジェクトデータモデル
5. 議論:関係データベース理論のその他の話題
	5.1 不完全情報の問題
	5.2 データベース更新の問題
6. 結論


第18章  分散計算モデル手法
	L.Lamport and N.Lynch:山下 雅史

1. 分散計算とは何か
2. 分散システムモデル
	2.1 メッセージ伝達モデル
	2.2 それ以外のモデル
	2.3 基礎的概念
3. 分散アルゴリズムの理解
	3.1 挙動の集合としてのシステム
	3.2 安全性と活性
	3.3 システム記述
	3.4 主張に基づく理解
	3.5 アルゴリズムの導出
	3.6 仕様記述
4. 典型的な分散アルゴリズム
	4.1 共有変数アルゴリズム
	4.2 分散合意
	4.3 ネットワークアルゴリズム
	4.4 データベースにおける並行性制御


第19章  並行プロセス操作的および代数意味論
	R.Milner:稲垣 康善,結縁 祥治

1. 序論
2. 基本言語
	2.1 構文および記法
	2.2 操作意味論
	2.3 導出木と遷移グラフ
	2.4 ソート
	2.5 フローグラフ
	2.6 拡張言語
	2.7 その他の動作式の構成
3. プロセスの強合同関係
	3.1 議論
	3.2 強双模倣関係
	3.3 等式による強合同関係の性質
	3.4 強合同関係における置換え可能性
	3.5 強等価関係上での不動点の唯一性
4. プロセスの観測合同関係
	4.1 観測等価性
	4.2 双模倣関係
	4.3 観測合同関係
	4.4 プロセス等価性上での不動点の唯一性
	4.5 等式規則の完全性
	4.6 プロセス等価性に対するその他の概念
5. 双模倣等価関係の解析
	5.1 等価性の階層構造
	5.2 階層構造論理的特性化
6. 合流性をもつプロセス
	6.1 決定性
	6.2 合流性
	6.3 合流性を保存する構成子
7. 関連する重要な文献

2011-05-11

今できるかを聞いている

ある日のこと

営業「こういう仕事があるんですができますか?」

開発者A「今はできませんが、これなら時間を下さればできるようになると思いますよ」

営業「将来のことではなく、今できるかを聞いています」

開発者A「……どのくらい時間がかかるか判断するためにも検証する時間をください」

営業「聞いているのは今できるかです

開発者A「……今はできませんね」

営業「こういう仕事があるんですができますか?」

開発者B「できますよ」

開発者A「待て」

営業「今できますか?」

開発者B「これくらいなら、アレとアレで簡単にできますよ」

開発者A「待て、アレとアレで見通しが立つか検証しよう」

営業「このくらいの時間でできますか」

開発者B「それくらいならできますね」

開発者A「待て、これなら三倍くらい見積もっておこうや」

営業「でもそれだと利益がでないんですよ」

開発者B「たぶん大丈夫ですよ」

開発者A「」

( プロジェクト炎上中 )

if 開発者B.出社している?

    goto ある日のこと

2011-03-03

ブログの問題を解いてみた

http://okajima.air-nifty.com/b/2011/01/2011-ffac.html

ぷよぷよを解く問題をやってみた

かかった時間はおおよそ1時間

途中でわからないところがあったのでくぐってしまった

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            StringBuilder[] blocks = {
                new StringBuilder("**GYRR"),
                new StringBuilder("RYYGYG"),
                new StringBuilder("GYGYRR"),
                new StringBuilder("RYGYRG"),
                new StringBuilder("YGYRYG"),
                new StringBuilder("GYRYRG"),
                new StringBuilder("YGYRYR"),
                new StringBuilder("YGYRYR"),
                new StringBuilder("YRRGRG"),
                new StringBuilder("RYGYGG"),
                new StringBuilder("GRYGYR"),
                new StringBuilder("GRYGYR"),
                new StringBuilder("GRYGYR")
            };

            bool updated = true;
            while (updated)
            {
            breaked:
                DumpBlock(blocks);
                for (int i = 0; i < blocks.Length; i++)
                {
                    for (int j = 0; j < blocks[i].Length; j++)
                    {
                        char c = blocks[i][j];
                        if (c == '*')
                            continue;
                        updated = false;
                        if (KillBlocks(blocks, i, j))
                        {
                            updated = true;
                            goto breaked;
                        }
                    }
                }
            }
            DumpBlock(blocks);
            Console.Read();
        }
        struct Point
        {
            public int x, y;
            public Point(int x, int y)
            {
                this.x = x;
                this.y = y;
            }
        }
        static bool KillBlocks(StringBuilder[] blocks, int x, int y)
        {
            bool[,] visted = new bool[blocks.Length,blocks[0].Length];

            MarkBlock(visted, blocks, x, y);

            Queue<Point> queque = new Queue<Point>();
            for (int i = x; i < blocks.Length; i++)
                for (int j = y; j < blocks[i].Length; j++)
                    if(visted[i,j] == true)
                        queque.Enqueue(new Point(j,i));

            if (queque.Count < 4)
                return false;

            while (queque.Count > 0)
            {
                Point p = queque.Dequeue();
                RemoveBlock(blocks, p.x, p.y);
            }
            return true;
        }
        static void MarkBlock(bool[,] visted, StringBuilder[] blocks, int x, int y)
        {
            if (x < 0 || y < 0 || x >= blocks.Length || y >= blocks[0].Length || visted[x, y] == true)
                return;
            char c = blocks[x][y];
            visted[x, y] = true;
            if (x + 1 < blocks.Length && blocks[x + 1][y] == c) MarkBlock(visted, blocks, x + 1, y);
            if (y + 1 < blocks[0].Length && blocks[x][y + 1] == c) MarkBlock(visted, blocks, x, y + 1);
            if (x > 0 && blocks[x - 1][y] == c) MarkBlock(visted, blocks, x - 1, y);
            if (y > 0 && blocks[x][y - 1] == c) MarkBlock(visted, blocks, x, y - 1);
        }
        static void DumpBlock(StringBuilder[] blocks)
        {
            foreach (StringBuilder s in blocks)
                Console.WriteLine(s);
            Console.WriteLine();
        }
        static void RemoveBlock(StringBuilder[] blocks,int x,int y)
        {
            int i;
            if (y == 0)
            {
                blocks[y][x] = '*';
                return;
            }
            for (i = y; i > 0; i--)
            {
                blocks[i][x] = blocks[i - 1][x];
            }
            blocks[i][x] = '*';
        }
    }
}

2010-08-16

http://anond.hatelabo.jp/20100816013309

そりゃまぁ、関数コールは、本当にCall命令がコールされれば レジスタスタックへのPUSHが走るからなメモリコピー関数レジスタ文はGotoよりも重いよ。(レストンクス 元増田です。)

http://anond.hatelabo.jp/20100816013003

ポイントは剰余と関数ポインタで分岐してるところか。

昔、関数ポインタ配列みたいな連続テーブルになって条件分岐を使うより実行動作が速くなることを期待してコードを書いて速度測ったけど

inlineで展開されるコードジャンプ前提なifやgotoよりも何百倍も遅くて悲しくなった記憶がある。

if も 3項演算子も for も do whileすらもない ifなしの Fizz Buzz

だから、プログラム記法がなくても<>が無いから化けないぜ

#include "stdio.h"
#include "stdlib.h"

int cnumber=0;

void fizz(){
    printf("fizz");
    cnumber++;
};

void nonfizz(){
};

void buzz(){
    printf("buzz");
    cnumber++;
};

void nonbuzz(){
};

void number(int i){
    printf("%d",i);
    cnumber = 0;
}

void nonnumber(int i){
    cnumber = 0;
}

void myexit(void){
    printf("\n Hit return key to exit\n");
    getchar();
    exit(1);
}

void noexit(void){
}

void (*pfizz[3])() = {fizz,nonfizz,nonfizz};
void (*pbuzz[5])() = {buzz,nonbuzz,nonbuzz,nonbuzz,nonbuzz};
void (*pnumber[3])(int) = {number,nonnumber,nonnumber};
void (*pmyexit[2])() = {noexit,myexit};

int main(int argc, char* argv[])
{
    int loopmax = (111+222+333)*10;
    int i = 1;
    head:
    (*pfizz[i%3])();
    (*pbuzz[i%5])();
    (*pnumber[cnumber])(i);
    (*pmyexit[!(loopmax-i)])();
    printf(",");
    i++;
    goto head;
    return 0;
}

includeが<>を使ってないので必要ならパスは各自で通してねw

2009-11-11

http://translate.google.com/translate?hl=ja&u=http%3A%2F%2Fcode.google.com%2Fp%2Fgo%2Fissues%2Fdetail%3Fid%3D9

fmccabeで、 今日(7時間前)報告

I have been working on a programming language, also called Go, for the last 10 years.私は、プログラミング言語にも、移動と呼ばれ、過去10年間のために働いている。 There haveが存在して

been papers published on this and I have a book.された論文は、この上で公開され、私の本がある。

I would appreciate it if google changed the name of this language; as I do not want to have toもしGoogleがこの言語名前を変更私はそれをお願い申し上げます。私にはしたくない

change my language!私の言語を変更!

Comment 1 by dsymonds , Today (7 hours ago) コメント1 dsymondsで 、 今日(7時間前)

References?参考文献?

Comment 2 by fmccabe , Today (7 hours ago) コメント2 fmccabeで 、 今日(7時間前)

If you google (sic) francis mccabe go you will find some references.場合は()を原文のままGoogleフランシス、いくつかの参照を見つける行くマッケイブ

I published the book on lulu.com私lulu.com上の本を出版

Comment 3 by reidellis , Today (4 hours ago) コメント3 reidellisで 、 今日(4時間前)

I think Mr McCabe's language is called "Go!".私は氏マッケイブ言語"と呼ばれてみろ!"。 Here's the Lulu link:ここでは、ルルのリンクです:

http://www.lulu.com/content/paperback-book/lets-go/641689 http://www.lulu.com/content/paperback-book/lets-go/641689

Comment 4 by niral.n95 , Today (3 hours ago) コメント4 niral.n95で 、 今日(3時間前)

reidellis: is right! reidellis:ですね! its "Lets Go!"その"はLets Go!" or "Go!".や"ゴー!"。 This is google "go", "The Goこれは、"行くに"google、"移動されます

Programming Language" Bigg Difference.. :)プログラミング言語"Biggの違い..:)

Ps Anyone hearing the release of Google "go" would have picked up their book that psの誰""行っても本を手にしてはGoogleリリース公聴会では

never sold and started finding the work "GO" and as they would find their 1st "GO"販売されなかったとの仕事"Go"を見つけることを始め、などに気づくような、その第一の"Go"

they wil go , Eureka!彼らはエウレカ行くウィル! :) :)

Comment 5 by fmccabe , Today (3 hours ago) コメント5 fmccabeで 、 今日(3時間前)

My language is called Go!.自分言語へと呼ばれます!。 The book is called Let's Go!.本の行こうと呼ばれます!。

The issue is not whether or not Google's go will be well known.問題かどうかは、Googleの移動も呼ばれることもありません。 It is one of fairness.これは1つの公平性の一つです。

Comment 6 by zhenshe41 , Today (3 hours ago) コメント6 zhenshe41で 、 今日(3時間前)

In Go!行くで! , can the IDE know the differences between Go!は、IDEへの違いを知ることができます! and go ?行く?

Comment 9 by shirish4you , Today (2 hours ago) コメント9 shirish4youで 、 今日(2時間前)

ah...ああ... Google should change the name... Googleは、名前を変更する必要があります...

Comment 11 by spronkey , Today (2 hours ago) コメント11 spronkeyで 、 今日(2時間前)

Indeed they should.確かにそうあるべきだ。 Full support for you, Mr. McCabe.あなたのためのフルサポートミスターマッケイブ。 It's not that hard to findそれを見つけるために、ハードではない

references to your language online either - it was on the first page of Bing, secondあなたの言語オンラインへの参照のいずれか-それはビンビンの最初のページに2番目だった

of Google for 'go programming language'. Googleの'のために行くのプログラミング言語'。

In fact, the title of the Google go tutorial page is even "Let's Go".実際には、Googleタイトルチュートリアルページに行っても"行こう"です。

It would be pretty poor for you folks Google to keep this name given your "do noそれはかなりあなたのための人々 、Googleはこの名が指定さを維持する貧困層になるお客様の"ありませんか

evil" slogan!悪"のスローガン

Comment 12 by nofakesallowed , Today (2 hours ago) コメント12 nofakesallowed、 今日(2時間前 に )

Google should totally change the name, fmccabe you should find a (cheap) lawyer just Googleの完全に、あなたは(安い)弁護士を見つける必要がありますだけfmccabeの名前を変更する必要があります

in case...場合には...

Google has deep pockets. Googleの深いポケットにしています。

Comment 13 by nofakesallowed , Today (2 hours ago) コメント13 nofakesallowed、 今日(2時間前 に )

btw, what's up redditところで、どうしたのreddit

Comment 14 by alex.salkever , Today (2 hours ago) コメント14 alex.salkeverで 、 今日(2時間前)

fmcabe -- could you contact me at alex @ dailyfinance.com? fmcabe -あなたalex@dailyfinance.comで、私に連絡だろうか? Might want to write a可能性のある記述する

little article about this.このことについて少し記事 Thanks.ありがとう。

Comment 16 by matthew.m.mckenzie , Today (2 hours ago) コメント16 matthew.m.mckenzieで 、 今日(2時間前)

google should change!グーグル変更してください!

Comment 17 by senthil.nayagam , Today (2 hours ago) コメント17 senthil.nayagamで 、 今日(2時間前)

maybe name it Goo or Foo多分グーかはFooという名前を付けます

Comment 18 by mail2ankitgupta , Today (119 minutes ago) コメント18 mail2ankitguptaで 、 今日(119分前)

A company claiming to capture world's info, missed it!!!同社は、世界情報キャプチャすると主張し、それを逃した!

Comment 19 by terence.stuart , Today (117 minutes ago) コメント19 terence.stuartで 、 今日(117分前)

Let the language with the most users keep its name.ほとんどのユーザーは、その名前のままにして言語をしましょう。

Er... Erを... That's not yours, is it?それは、あなたではないって?

Comment 20 by blair.briggs , Today (113 minutes ago) コメント20 blair.briggsで 、 今日(113分前)

Go, find a new name.移動し、新しい名前を探します。 ;) ;)

Comment 21 by josecamporro , Today (111 minutes ago) コメント21 josecamporroで 、 今日(111分前)

I agree with majority on this.私はこの上の部分に同意する。 Google should change the name of this language... Googleはこの言語名前を変更する必要があります...

Francis McCab is right, Go!フランシスMcCabが正しいでGO! and Go are not that different.と移動の違いはありませんです。 And he went first, public.彼は、公共の最初に行った。

Comment 22 by sebastian.krause , Today (104 minutes ago) コメント22 sebastian.krauseで 、 今日(104分前)

Google should consider a different name simply for the reason that "Go" is just a too Googleはその理由は、"移動"されに別の名前を検討する必要がありますだけでも

common word and it might eventually become difficult to google for references and一般的な単語と、最終的に参照するためにGoogleが困難になる可能性があります

examples about this language.この言語についての例です。 A somewhat more unique name can have its benefits.もう少しユニーク名前は、その利点を持つことができます。

Comment 23 by Afro.Systems , Today (95 minutes ago) コメント23 Afro.Systemsで 、 今日(95分前)

I think lango would be a great name and I am hereby to give away to google any私はランゴすばらしい名前だと思うと私は、ここから何かグーグルに与えるために午前

copyrights for the name.名の著作権

Comment 24 by ismetdere , Today (94 minutes ago) コメント24 ismetdereで 、 今日(94分前)

Goo, whould be just fine.グー、されるだけで罰金whould。

Comment 25 by QrczakMK , Today (68 minutes ago) コメント25 QrczakMKで 、 今日(68分前)

Goo is already taken too, although it has been dead for a few years I think.ただし、それが思う数年前に死んだがグー、すでにも、撮影されます。

Comment 26 by zak.wilson , Today (68 minutes ago) コメント26 zak.wilsonで 、 今日(68分前)

Goo is the name of a Lisp dialect.具は、Lisp方言名前です。

Comment 27 by daniel.kolman , Today (67 minutes ago) コメント27 daniel.kolmanで 、 今日(67分前)

Both Google and fmccabe should find a new name, "Go" is silly name for a programming Googleとfmccabe、"Go"をテコな名前プログラミングされている新しい名前を見つける必要があります

language.言語

Comment 28 by br...@silcon.com , Today (67 minutes ago) コメント28 brで... silcon.com @、 今日(67分前)

how about GOOP = Google Object Oriented Programming?方法については無神経な人= Googleオブジェクト指向プログラミング

mccabe- personally, I agree with you, but while you may be first, and you may beマッケイブ、個人的に、私はあなたと、しかし、中に最初にすることに同意し、することがあります

published, your issue title begs not to take you seriously regardless of your actual公開され、あなたの問題のタイトル真剣にかかわらず、お客様の実際の場合を取らないように頼む

stature.身長

I do hope this is resolved in your favor though.私はあなたのおかげでも解決されてほしいですか。

Comment 29 by jwb.public , Today (66 minutes ago) コメント29 jwb.publicで 、 今日(66分前)

how about ogle?方法については色目を使う?

Comment 30 by srikumarks , Today (60 minutes ago) コメント30 srikumarksで 、 今日(60分前)

Given that is derives from Limbo, "Bo" would be short and sweet as well.つまり、辺獄から、"ボー"不足しているだろうと甘いだけでなく派生を考える。 They can alsoこれらのこともできます。

use "boroutines" :P "boroutines":pを使用

Comment 31 by ismetdere , Today (57 minutes ago) コメント31 ismetdereで 、 今日(57分前)

Goo is gone too?具も行ったですか? damn..気.. what about Goat?何ヤギは?

Comment 32 by killercore , Today (52 minutes ago) コメント32 killercoreで 、 今日(52分前)

I'd go for JAgo: Just Another go私JAgoのために行くだろう:ちょうど別のものへ

Comment 33 by jason.lee.quinn , Today (51 minutes ago) コメント33 jason.lee.quinnで 、 今日(51分前)

Goat Special Editionヤギスペシャルエディション

Comment 34 by nikola.tepper , Today (50 minutes ago) コメント34 nikola.tepperで 、 今日(50分前)

It is completely absurd to use name of an already existing language.それは完全に既存の言語名前を使用するのはばかげている。 Hey Google,ちょっとGoogleは、

couldn't you, i don't know... 、私を知らない場合が...。 google it?とGoogleの? Oh right, the name is so generic, that isそう、名ので、つまり、汎用的なもの

almost impossible to get relevant matches.ほとんどの関連性と一致を得ることは不可能。 If this language catches on, it'll be aこの言語キャッチし、それになります

nightmare to search for problems and solutions.問題と解決策を検索する悪夢のような。

Comment 36 by jsykari , Today (40 minutes ago) コメント36 jsykariで 、 今日(40分前)

May I humbly suggest "go2"? 5私は謙虚に""go2いかがでしょう?

Even C++ got away with naming the language after an esoteric feature of C -- perhapsも、C + +の距離Cの難解な機能の後に、言語名前付け規則だ-おそらく

naming a language after "goto" isn't that bad. "の後に、後藤は"悪くはない言語のネーミングになります。

Comment 37 by Linnsey , Today (38 minutes ago) コメント37 Linnseyで 、 今日(38分前)

There are so many hobby and specialist programming languages it'd be hard to find aあるので趣味や専門のプログラミング言語でそれを見つけることは難しいですね、多くの

name that's not taken.名は、撮影ではない。

Comment 39 by david.kitchen , Today (32 minutes ago) コメント39 david.kitchenで 、 今日(32分前)

@33 Disturbing but funny... @ 33不穏がおかしい... I can imagine the logo now: 3OE私は今のロゴ想像することができます:3OE

@34 Look at the dates of these things, it would appear that go started around the @これらのものの日程を34歳で見て、その周りを開始へ表示されます

same time that the book was being written (but Go! already existed).同じ時間には、図書(ただし、移動書かれていた!既に存在していた)。 I wouldn't be私ではない

surprised to learn that due diligence was done at the time but simply that since thenは、デューデリジェンス時間でも行われていた知って驚く人は、単にそれ以来、

it just hadn't been revisited.それだけで再訪されていませんでした。

@36 http://xkcd.com/292/ @ 36 http://xkcd.com/292/

Comment 40 by patla073 , Today (31 minutes ago) コメント40 patla073で 、 今日(31分前)

Why not just name it Golang?理由だけではなく、それGolang名前は?

Erlang - "Ericsson Language"アーラン- "エリクソン言語"

Golang - "Google Language" Golang - "Google言語"

Comment 41 by drc.uvic , Today (31 minutes ago) コメント41 drc.uvic、 今日(31分前 に )

Does anyone use 'Go!'?誰'移動を使用しますか!'? If yours is better, or has a decent user base then a name change might be the right thingもしあなたの優れているか、またはその名前の変更は正しいかもしれませんが、まともなユーザーベースを持って

to do.を行う。 If you're bringing it up for academic pride then I don't see why they should have to change anything.もし私はなぜ何も変更する必要がありますが表示されない学問の誇りをのために育てている。

Comment 42 by abouthors , Today (29 minutes ago) コメント42 abouthorsで 、 今日(29分前)

Jago is already taken by a program to play the game of go. Jago既に行くのゲームプレイするためのプログラムによって行われる。

Comment 44 by charles.majola , Today (18 minutes ago) コメント44 charles.majolaで 、 今日(18分前)

This is issue 9 ......この問題は9 ...... Plan 9..... Plan 9の.....

Coincidence?偶然?

Comment 45 by tuxthelinuxdood , Today (14 minutes ago) コメント45 tuxthelinuxdoodで 、 今日(14分前)

It is obvious that Google employees did not research the name in terms of existingこれは、Google従業員の面では、名前研究していない明らかにされ、既存の

languages before release.リリース前の言語。 In such a situation I believe Google is at fault and the nameこのような状況では私はGoogle断層の名前ではと考えています

should be changed.変更する必要があります。 I doubt it will happen but it to change it would be in line with "do私はそれが起こるとは思えませんが、それを行となる"を変更するか

no evil".邪悪な"。

Comment 46 by GeoffreyJ.Lee , Today (14 minutes ago) コメント46 GeoffreyJ.Leeで 、 今日(14分前)

How about "Google Go"?方法については"Googleの移動"?

Go2 is pretty clever though, so my vote is on that. Go2かなりかかわらず、僕の投票をするには利口だ。

Comment 47 by roblesjm , Today (9 minutes ago) コメント47 roblesjmで 、 今日(9分前)

Google always releases new products with the prefix "Google". Googleでは常に接頭辞"Googleとの"新製品リリースします。 In this case, I don'tこの場合、私はしないでください

know if Google want release a new product or make an Alliance like Android.知っている場合、Googleは新製品リリースしたい、またはするアライアンスAndroidのような。

In the first case, I would use "GoogleC".最初のケースで、私は"を使用します。GoogleC"。 For the second, something like "GCP" fromについては、2番目の、何か"GCPの"からのような

(Google C Python). (GoogleのĈパイソン)。

Comment 48 by ismetdere , Today (4 minutes ago) コメント48 ismetdereで 、 今日(4分前)

Goat it is...ヤギって... there, settled.そこに定住した。

Comment 49 by Peter.Schweizer , Today (4 minutes ago) コメント49 Peter.Schweizerで 、 今日(4分前)

i'd suggest "giggity giggity goo" as new name since quagmire is a very funny guy私は""新しい名前として泥沼非常に面白いやつなんだからgiggity giggityグーをお勧めしたい

btw.ところで。 hi reddit :)ハイテクしかし:)

Comment 50 by ruivaldo , Today (4 minutes ago) コメント50 ruivaldoで 、 今日(4分前)

"Do" ? ""ですか? Makes sense, check the purpose of the lang.理にかなっては、langの目的をご確認ください。

2009-10-01

ruby on rails インストール中のエラー

 WinXP機に、ruby on rails インストール中(gem使用中)に下記のエラーが発生した。

ERROR: http://gems.rubyonrails.org/ does not appear to be a repository

ERROR: could not find gem rails locally or in a repository

時間ほど格闘した結果、プロキシの設定をしてないだけだった。環境変数HTTP_PROXYを作り、URLを設定する必要があるらしい。

Goto the cmd line

set HTTP_PROXY=http://mycache:8080

http://wiki.openqa.org/display/WTR/FAQ#FAQ-HowdoIgeminstallWatirbehindaproxyserver%3F

エラーメッセージ検索しても、日本語で回答が出て来なかったので、ここにメモ

2009-08-09

http://anond.hatelabo.jp/20090809140038

レジスタの多いCPUの場合で、単純なループ最適化されるとループカウンタレジスタ上に確保される。

ローカル変数の場合。全てのコンパイラを知ってる訳じゃないから、全部そうなるとは言えないけど。

Javaの場合が気になったので、二つのコードを書いてちょっと調べてみたところ、

for(int i = 0; i < 10; i++){
	System.out.println(i);
}
for(int i = 0; i < 10; i++){
	System.out.println(i);
}
  Code:
   0:	iconst_0
   1:	istore_1
   2:	iload_1
   3:	bipush	10
   5:	if_icmpge	21
   8:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   11:	iload_1
   12:	invokevirtual	#3; //Method java/io/PrintStream.println:(I)V
   15:	iinc	1, 1
   18:	goto	2
   21:	iconst_0
   22:	istore_1
   23:	iload_1
   24:	bipush	10
   26:	if_icmpge	42
   29:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   32:	iload_1
   33:	invokevirtual	#3; //Method java/io/PrintStream.println:(I)V
   36:	iinc	1, 1
   39:	goto	23
   42:	return
int i;
for(i = 0; i < 10; i++){
	System.out.println(i);
}
for(i = 0; i < 10; i++){
	System.out.println(i);
}
  Code:
   0:	iconst_0
   1:	istore_1
   2:	iload_1
   3:	bipush	10
   5:	if_icmpge	21
   8:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   11:	iload_1
   12:	invokevirtual	#3; //Method java/io/PrintStream.println:(I)V
   15:	iinc	1, 1
   18:	goto	2
   21:	iconst_0
   22:	istore_1
   23:	iload_1
   24:	bipush	10
   26:	if_icmpge	42
   29:	getstatic	#2; //Field java/lang/System.out:Ljava/io/PrintStream;
   32:	iload_1
   33:	invokevirtual	#3; //Method java/io/PrintStream.println:(I)V
   36:	iinc	1, 1
   39:	goto	23
   42:	return

ここまで単純だと、同じコード吐いてました。(Java 1.6.0_11)

http://anond.hatelabo.jp/20090809183815

提示したコードアレ過ぎ。

背景も知らないし調べもせずにそんなコードをとりあえず書き換えるならこんな感じ。

適当自分の好みを入れているのでツッコミ入れたくなる人もいるだろうけど。

int rc = RC_SUCCESS;
boost::shared_ptr<ObjA&gt; a = createA();
if (!a)
  rc = RC_ERROR1;
if (rc == RC_SUCCESS) {
  boost::shared_ptr<ObjB&gt; b = createB();
  if (!b)
    rc = RC_ERROR2;
}
return rc;

ちょっと言葉が汚いけど簡単に書くと

  • そこでgotoは要らないだろ
  • 型名がObjAとかObjBとかなにそれ?
  • int型でRC_なんちゃらじゃなくて列挙型使えよ(intでしょうがないか、というケースはあるけど)
  • createAとかcreateBってインスタンスを作っぽいけどそれで合ってる?その上でなんでそれを使ってないの?何をやりたいか分かり難いよ。設計おかしくない?

2009-06-09

この上なく簡易なアラームが欲しい

諸氏は、下記のような事をどうしているのだろうか。

時間がきたら、メッセージボックスを出すだけで良い

・ただし、時刻の登録にマウスを操作するような煩雑さは、断じて許容できない

・常駐すんなボケ

とりあえず、if文なんて高尚なものを使ったことなかったけど、バッチファイルでやってみた。

@echo off
REM 1-31の日付でしか登録できない低能アラーム
REM 時刻は必ず入力されるものとみなす
REM よって、組み合わせはDAY×MESGのみで考える。

REM 変数初期化
SET yotei_day = 0
SET yotei_mesg = ""

SET /P yotei_time="アラームを表示する時刻 :"
SET /P yotei_day="アラームを表示する日付(1-31で指定、省略した場合は今日) :"
SET /P yotei_mesg="表示するメッセージ(省略時は、予定チェック) :"

REM 条件分岐。バッチのelseはしょぼすぎる。複数条件指定できない??
if "%yotei_day%" == "0" goto :NO_DAY
if "%yotei_mesg%" == "" goto :NO_MESG

REM 指定したもの -> DAY,MESG
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% /NEXT:%yotei_day% net send pc_Name "%yotei_mesg%"
goto :SLEEP


:NO_DAY
REM 分岐: + NO_MESG
if "%yotei_mesg%" == "" goto :NO_MESG_NO_MESG
REM 指定したもの -> MESG
echo 次の%yotei_time%'に通知します'
at %yotei_time% net send pc_Name "%yotei_mesg%"
goto :SLEEP


:NO_MESG
REM 分岐: + NO_DAY
if "%yotei_day%" == "0" goto :NO_DAY_NO_MESG
REM 指定したもの -> DAY
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% /NEXT:%yotei_day% net send pc_Name "予定チェック"
goto :SLEEP


:NO_DAY_NO_MESG
REM 指定したもの -> なし(時刻のみ)
echo %yotei_day%日の%yotei_time%に通知します'
at %yotei_time% net send pc_Name "予定チェック"
goto :SLEEP

REM 終了
:SLEEP
ping 127.0.0.1 -n 2 > nul:

これに適当名前をつけて、ランチャのfenrirで起動させる。

キーボードのみの操作で済むので、とても快適ではあるものの、見ての通りnet sendを使うため、

Windows messenger serviceを起動させるという、常駐ソフトの方がマシな本末転倒なウンコーな一品である。

ActiveDirectoryとかグループポリシーでmessenger制限されてたら使えないし。

VBWSHなら色々できそうだけど、これ以上機能はいらんのよね。いっそ、メッセージはtxtに書き込んで、それを開くだけにするか・・・・。

### しかし「>」を表示させるのに、数値参照文字じゃないとダメとか・・・。

### &#62;を半角にしたら>になりますよっと。。。

2009-05-30

http://anond.hatelabo.jp/20090530001932

別にgoto有害説でいいや。

そう思っている人にはgotoはまともに使いこなせないだろうし。

オレもちゃんと使いこなす自信はないが、使う必要に迫られたこともない。

無能かもしれんがgotoは一生コード記述したくない。

http://anond.hatelabo.jp/20090529215553

ウチの会社の何人かは今だにgoto有害説を盲目的に信じている。
いやgoto文めったやたらと使えとは言わんが、

既にテンプレート化されているgotoは、使ってもいいと思う。

具体的には、continueが無い言語でforループの最後にジャンプするgotoだとか、

try-catchが無い言語エラー処理だとか。

しかし、自ら新しいgoto利用テンプレートを作ってやるだとか、変則的なgotoの使い方を

してやるだとかの使い方は、たとえそちらの方がエレガントな解法であったとしても

コードの可読性を落とす。

2009-05-29

GOTO有害説?

ウチの会社の何人かは今だにgoto有害説を盲目的に信じている。

いやgoto文めったやたらと使えとは言わんが、

エラー処理で関数の最後にとばすとか、多重ループ抜けるとかgoto文つかった方が

コーディングキレイになるケースあるだろう。

特にエラー処理はgoto使って関数の最後でまとめて行うほうがスマートでしょう。

if文でエラー処理に入るたびに、同じようなエラー処理と関数終了処理をコピペしてるのみると

げんなりする。

2008-10-18

http://anond.hatelabo.jp/20081018072817 の続きだよ

これでおしまいだよ

elisp

sangels.el
(require 'cl)				; for cl-seq

(defvar sangels-movies-dir nil)
(defvar sangels-player "c:/Program Files/GRETECH/GomPlayer/GOM.exe")
(defvar sangels-sort-by 'sangels-sort-by-rate)
(defvar sangels-rate-file "~/.emacs.d/.sangels/rate")
(defvar sangels-buffer "*sangels*")
(defvar sangels-thumbnail "00_thumbnail.jpg")
(defvar sangels-m3u "00_movies.m3u")
(defface sangels-name '((t (:family "fixed" :weight bold :height 3.0)))
  "")
(defface sangels-rate '((t (:family "fixed" :weight bold :height 1.5)))
  "")
(defvar sangels-mode-map
  (let ((map (make-sparse-keymap)))
    (define-key map "n" 'next-line)
    (define-key map "p" 'previous-line)
    (define-key map (kbd "RET") 'sangels-select)
    (define-key map (kbd "SPC") 'sangels-select)
    (define-key map "q" 'sangels-quit)
    (define-key map "+" 'sangels-rate-plus)
    (define-key map "-" 'sangels-rate-minus)
    map))
(defvar sangels-mode-hook nil)
(defvar sangels-highlight-overlay nil)
(defvar sangels-rate-alist nil)

(defconst sangels-rate-max 6)

(defun sangels-insert-movies ()
  (save-excursion
    (let* ((inhibit-read-only t)
           (files (remove-if-not
                   (lambda (x)
                     (and (not (member (file-name-nondirectory x) '("." "..")))
                          (file-directory-p x)
                          (member sangels-thumbnail (directory-files x))))
                   (directory-files sangels-movies-dir t)))
           (ids (mapcar 'file-name-nondirectory files)))
      (erase-buffer)
      (setq ids (sangels-sort-ids ids))
      (dolist (id ids)
        (let ((file (expand-file-name id sangels-movies-dir))
              (pos (point)))
          (insert-image-file (expand-file-name sangels-thumbnail file))
          (end-of-line)
          (insert (propertize (format "%-15s " id)
                              'face 'sangels-name))
          (sangels-insert-rate id)
          (insert "\n")
          (put-text-property pos (point) 'sangels-id id))))))

(defun sangels-sort-by-name (a b)
  (string< a b))

(defun sangels-sort-by-rate (a b)
  (or (> (sangels-rate a) (sangels-rate b))
      (sangels-sort-by-name a b)))

(defun sangels-sort-ids (ids)
  (sort ids
        (or sangels-sort-by
            'sangels-sort-by-name)))
(defun sangels-insert-rate (id)
  (let ((rate (sangels-rate id)))
    (insert (propertize (concat
                         (make-string rate ?★)
                         (make-string (- sangels-rate-max rate) ?☆))
                        'sangels-rate t
                        'face 'sangels-rate))))

(defun sangels-current-id ()
  (get-text-property (point) 'sangels-id))

(defun sangels-play-movie (movie)
  (let ((explicit-shell-file-name "cmdproxy")
        (shell-file-name "cmdproxy"))
    (apply
     'call-process-shell-command
     "start" nil "*tmp*" nil
     (mapcar (lambda (x) (concat "\"" x "\""))
             (list sangels-player
                   (unix-to-dos-filename movie))))))

(defun sangels-select ()
  (interactive)
  (let ((id (sangels-current-id)))
    (when id
      (sangels-play-movie (expand-file-name
                           sangels-m3u
                           (expand-file-name id sangels-movies-dir))))))

(defun sangels-quit ()
  (interactive)
  (kill-buffer sangels-buffer))

(defun sangels-rate (id)
  (or (cdr (assoc id sangels-rate-alist)) (/ sangels-rate-max 2)))

(defun sangels-rate-save ()
  (interactive)
  (let ((dir (file-name-directory sangels-rate-file)))
    (unless (file-exists-p dir)
      (make-directory dir t)))
  (with-temp-file sangels-rate-file
    (insert (pp-to-string sangels-rate-alist))))

(defun sangels-rate-load ()
  (interactive)
  (when (file-exists-p sangels-rate-file)
    (with-temp-buffer
      (insert-file-contents sangels-rate-file)
      (goto-char (point-min))
      (setq sangels-rate-alist (read (current-buffer))))))

(defun sangels-rate-plus (&amp;optional n)
  (interactive "p")
  (setq n (or n 1))
  (let* ((id (sangels-current-id))
         (cell (assoc id sangels-rate-alist)))
    (unless cell
      (setq cell (cons id (sangels-rate id)))
      (setq sangels-rate-alist (cons cell sangels-rate-alist)))
    (setcdr cell (+ (cdr cell) n))
    (save-excursion
      (let ((inhibit-read-only t))
        (beginning-of-line)
        (goto-char (next-single-property-change (point) 'sangels-rate))
        (delete-region (point)
                       (next-single-property-change (point) 'sangels-rate))
        (sangels-insert-rate id)))
    (sangels-rate-save)))

(defun sangels-rate-minus (&amp;optional n)
  (interactive "p")
  (setq n (or n -1))
  (sangels-rate-plus (- n)))

(defun sangels-post-command-hook ()
  (save-excursion
    (move-overlay
     sangels-highlight-overlay
     (progn
       (move-beginning-of-line 1)
       (point))
     (progn
       (move-end-of-line 1)
       (forward-line)
       (point))
     (current-buffer))))

(defun sangels-mode ()
  (interactive)
  (kill-all-local-variables)
  (use-local-map sangels-mode-map)
  (setq sangels-highlight-overlay (make-overlay 0 0))
  (overlay-put sangels-highlight-overlay 'face 'highlight)
  (overlay-put sangels-highlight-overlay 'evaporate t)
  (make-local-variable 'post-command-hook)
  (add-hook 'post-command-hook 'sangels-post-command-hook nil t)
  (setq major-mode 'sangels-mode)
  (setq mode-name "Sangels")
  (run-mode-hooks 'sangels-mode-hook)
  (set-buffer-modified-p nil)
  (setq buffer-read-only t))

(defun sangels (&amp;optional arg)
  (interactive "P")
  (when (or arg (not sangels-movies-dir))
    (setq sangels-movies-dir (read-directory-name "movies dir: ")))
  (sangels-rate-load)
  (switch-to-buffer (get-buffer-create sangels-buffer))
  (sangels-insert-movies)
  (sangels-mode))

(provide 'sangels)

2008-10-11

私のプログラム

初めは小学生の頃か。

実物のスペースインベーダー記憶はない。

しかし、それを皮切りにアーケードゲームのみならず、ゲームウォッチ、ケームセンター嵐などを経て、ファミコンが登場する「ゲーム」の時代だった。

「ゲーム」コンピューターゲーム意味になった時代だった。小学生も「コンピューター」にワクワクした。

21世紀コンピューターにより人工知能ができる。そんな時代だった。

でも、アルファベットを知らない小学生BASICは難しかった。ぴゅう太がせいぜいだった。

中学生学校PC-9801があった。後のパソコンである。

PRINT」で文字を表示する。「GOTO」で行き先を変える。それは分かった。でも何をすればよいか分からなかった。

だから「ベーマガ」で16進数を打った。でも動かなかった。何度も調べ、直し、試した。デバッグした。

してようやくゲームが動いた。ゲームはつまらなかった。

でも動いた。自分の入れた文字で数字でコンピュータが動いた。自分で動かした。動かせた。

BASICで線を引きマシン語で文字を動かした。

高専に進んだ。Turbo Pascalコラムスもどきを作った。

初めてフルスクラッチで書いた。配列も使った。

小学生のころから6年が過ぎていた。

Turbo Cも使った。IDEで使うそれは、インタプリタのノリだった。

FM-Rレイトレースもした。一晩かけて、エラーが起きていた。

でも、構造プログラミングを学んだ。ポインタも学んだ。マシン語の知識が役立った。

Solarisも使った。EmacsやXも使った。オブジェクト指向も知らずC++にも触れた。

GC構造体を代入して使い回し、Xサーバを落した。

家のノートFreeBSDを入れた。rootになった。

awksed正規表現を学んだ。そしてperlに出会った。

コラムスもどきを作ってから6年が過ぎていた。

テレホーダイにした。Mewを使った。チャットをした。

perlで掲示版の書き込みをチェックし、madokaで遊んだ。CGIを書いたりした。

脆弱性を見つけた。作者にメールした。ドキドキした。

perlと出会ってから6年が過ぎていた。

オープンソースプロジェクトに参加した。

はてなに出会った。JavaScriptに出会った。

BookmarkletgreasemonkeyAjaxオブジェクトだらけだった。

初めはゲームだった。でも最初だけだった。

ハードを叩き、ライブラリを叩いていた。

サーバを叩き、ブラウザを叩いてきた。

気が付いたら24年が経っている。

今、pythonで書いている。

ようやく、言語の違いには慣れてきた。でも、まだLISPを使った事はない。

道はまだまだある。未知の世界につながっている。

作りたい物が本当は何かは分からない。作れる物が本当は何かは分からない。

でも、何かがあるような気はする。だからプログラムしてみる。

どんなふうに動くのかは分かってない気がするけれど、分かっている事もある。

今も「コンピューター」にワクワクしている。

それが今の私のstatusだ。

http://anond.hatelabo.jp/20081011173016

2008-08-31

http://anond.hatelabo.jp/20080831171249

gotoじゃない方がいいんじゃないの?という指摘は来るかなと思っていたけど。

皮肉を表現するためにあえて、gotoを使ったケース。

つまり、結婚というのは構造的にやり直すチャンスがかなり低い、ロングジャンプみたいなもので

ジャンプしたらなかなかもどってこれねーぞ。という感じ。

gotoは使い所が難しいけど、使った方が良いケースもある。

http://anond.hatelabo.jp/20080831165936

リアリティがない、修正しておいたお。

GirlFriend *honey;

honey = new GirlFriend;
while(me){
  if (me->searchOtherGirl() > honey) {
    break;
  }

  if(honey->acceptRequirement(me)){
    me->getMarried(honey);
    break;
  }
  Sleep(7*60*60);
}

me->save(id,name,haney);
delete honey;


function getMarried(wife){
	if(me->acceptRequirement(wife)){
		while(true){
			Sleep(4*60*60);
			if (dead or me->money > 3000*10000) {
				break;
			}
		}
//	  goto normalend;
	}else{
	  goto badend;
	}
//	goto happyend;
	return true;
}
ログイン ユーザー登録
ようこそ ゲスト さん