はてなキーワード: オートマトンとは
第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. 関連する重要な文献
SIerと言われるような会社に入った。地方の独立系のよくある中小企業だ。
会社の経営が特別酷いわけでもないし、研修もしっかりしている。同期もみんな満足しているように見える。
僕もそのつもりで入社した。別にすごいエンジニアと仕事が出来ると思って入った訳ではない。
でもいざ入ると寂しくなった。
言語はほとんどVBだけ、客先に行ってひたすら話しあって、仕様書を1プロジェクトに山ほど書く。ずっとプログラミングする立場でいるというのは困ると言われた。
別にこれが悪いと言ってるわけでもない。これは需要がある仕事だし、必要な仕事だと思う。それもわかって入社したつもりだった。
働いている上司や先輩も立派だ。見習うべき部分は山ほどあり、尊敬している。
ただ自宅でコンパイラ実装の解説書を読んだり、最新のウェブ技術の話をウェブで見た後、
同期と上司の会話で「オートマトン」という言葉が出ただけで上司が「難しい、最近のはわからん」などとあっさり話を切っているのを目にするとやっぱり寂しくなった。
これから先社内で同期や先輩と話す内容はゲームや車などの話ばかりなのだろうか。
部屋にある技術書を捨て去って簿記の資格でも取るべきなのだろうと思う。
オープンソースプロジェクトにでも参加してみればいいのだろうか。
家族の反対を跳ね除けても都会に出て他の会社を受けてみたほうが良かっただろうか。いや、実力不足で落ちたか。
入社したばかりでこんなことを考えるのは甘っちょろいと自分で思う。
こんなことを考えている間にコードを書いたり本を読んだりできたのだ。
ただ今回は本当に寂しい気持ちになった。ここに文章を書いたところで状況が変わるわけでもないだろうけど、気持ちが切り替わればいいと思う。
考えてみるとそもそも増田を書くなんて初めてなのだ。
明日にはこの記事を書いたことが僕にとっての黒歴史になってるかもしれないな(苦笑)
そういえばシューカツのために取った応用情報技術者の資格も、なんだか虚しいものに思える。手当てでもつけばいいんだけどな、どうだろ
手順を考えて、その手順を書くだけ。
言語もあらかじめ決められた手順に沿って解析されて実行されるから、オートマトンやBNF記法、構文木などの仕組みを一通り覚えてどういう機構でチューリングマシンが原理的に実行可能なコードへと落とされるかを理解すれば言語自体も覚えるのなんてそんなに難しくない。
手順を考えるなんて、人間が生活する上でいつもやっていること。
プログラムを走らせるためのデータ構造を考えるのに苦労するという話も聞くけど、プリミティブな要素が数値、型へのリファレンス値しかないんだから大体は離散数学で使うグラフの初歩的な知識があれば事足りる。GoFのデザインパターンなんてまさにそう。
俺の住む世界はアイティーとやらに支えられているらしい。
アイティーに関われば、俺の住む世界をさらに素敵なものにしていけるに違いない。していきたい。
そう願って、何も知らなかった文系新卒の俺が金融系のシステム会社に入って、もう一年以上が経つのだ。
昔、お遊びでゲームを作ったことはあった。RPGツクールなんかが好きだった。
パズルみたいで楽しかった。コンピュータの中身が理解できて、わくわくした。
楽々と基本情報技術者の資格を手にし、半年後にはほとんど勉強もせずにソフ開も取得した。
研修の課題では同期の誰よりも速く、短く効率のいいソースを仕上げた。
現場に出て、本番機に触った。
30年間親会社を支え続ける偉大なシステムの中身を、わくわくしながら覗いた。
そこには、俺の求めていた世界とはまったく違うものが広がっていた。
俺が産まれる前から、入れ替わり立ち替わり何人もの手によって継ぎ足されたロジック。
何千行にもわたって、似たような処理が何回もひたすら繰り返される似たようなモジュール何十本。
1993年に行う臨時処理のロジックが、今もコメントもなしに埋め込まれている。
仕様がわからなくなれば、キャビネへと走って、黄ばんだ方眼紙に鉛筆で書かれた仕様書を探し、
そして修正履歴のみが書かれているのを確認して肩を落とす。
半年後に臨時で行われる業務に対応するため、いくつかのモジュールについて、処理可能なユーザーコードをひとつ、条件に加える。
与えられた期間は2週間だった。ずいぶん長いなと思った。
何枚もの設計書を書いた。つまり、方眼紙状のExcelテンプレートに同じ文章をコピペした。
追っていったモジュールはどれも、ヒープもソートもメモリ管理も論理演算も出番がなかった。
あるのはただ、IF文とMOVE文とばかりだった。ソースの難易度は使われている命令の数とは関係ないことを学んだ。
テストデータを作るため、階層型DBを何回も辿ってデータをアウトプットさせるモジュールを書いた。資格試験で学んだSQLは、無用の知識だった。
協力会社への仕事割り振りやユーザー対応に毎日忙しそうだった上司が、夜遅くまでの残業続きでくまのできた目を皿のようにして設計書をレビューした。
ロジックを丸々コピペしてソースを修正し、コンパイルし、実行した。
2週間はあっという間だった。
俺のせいで、半年後以降は使われないロジックがソースにまたひとつ増えた。
今回の対応については、Excel方眼紙にレポートをまとめて共有ドライブに入れておいた。
だが共有ドライブの検索には時間がかかるし、Excelシートの中身となれば検索から漏れることも多い。
きっと誰にも読まれないだろう。
2バイト文字が使えない関係上、原則、ソースにはコメントはあまり入れられない。
数年後の新人はきっと、俺の書いたモジュールを見て「このロジックは何だ」と首を捻るんだろう。
数年後の俺はきっと、今回のレポートを共有ドライブから探し回って新人にパスを教えてから、
協力会社の管理に追われる作業に戻って目の下にくまを作るのだろう。
俺がやりたかったシステム開発って、こんなものだったのか。
俺は部署の中で、俺の望む仕事を探し続けた。
先輩たちは忙しくて誰も興味を持ってないけど、自動化できる作業はいくらでもある。
よく使われるExcelシートを改造し、定例作業をクリックだけでできるようにした。
ExcelVBAとはいえ、書いていて心地よかった。引数が明確な関数と変数のスコープと全角文字があったからだ。
COBOLで打つプログラムより、控えめに見て100倍くらいの生産性を発揮できていたと思う。
先輩たちは喜んでくれたが、ただし俺の仕事を、あまり仕事とは見なさなかった。
それでもよかった。業務時間外は俺は相変わらずスクリプトを書いていた。とても楽しかった。
VBAから入って、WSHなんてものを知り、やがてJavaScriptを学び、ネットで資料を探し、はてなを知り、はてブでWeb技術についての記事を読みふけった。
知れば知るほどに、どんどんCOBOLが、メインフレームが嫌いになっていく。
先輩は誇らしげに言う。システムはたいしたことをやっていない。業務知識こそが大事なのだ。
ユーザーより詳しく業務を理解し、適切に提案し、設計する能力。
協力会社を率いて、わかりやすい文書で指示を行い、スケジュールを調整する能力。
人を動かすぶん、責任も大きくやりがいもある。優秀な人材こそが我が社の強みだ。
そんな人材が育つよう、我が社は安定して働ける環境と福利厚生を整えている。
ああ、そうだよ。先輩、あなたは正しい。
俺だってメインフレームの信頼性のすごさはわかってる。
密なユーザーとの関係から生まれるシステム子会社としての強みも認識してる。
それだけじゃない。社内環境も悪くない。給料もいいし休みも取れるし先輩は優しい。
ここは、いい会社だ。
けど駄目なんだ。
30年前のシステムを枯れた言語でツギハギする仕事じゃ、俺の心はやっぱり満たされない。
ユーザーの業務知識ばかり身につけたって、俺自身の人生には、いいことなんてない。
俺が求めていたのは、この仕事じゃないんだ。
社内の誰も、TumblrもTwitterもやっていない。ライフハックなんて聞いたこともない。
Joostやモバゲーや2ちゃんねるが社会に与える影響について誰も語れない。
休日はゴルフや酒に興じている。自宅にPCを持ってない人までいる。
おかしいことじゃない。普通の人たちだ。
それどころか彼らは、仕事とプライベートを切り分けている、立派な人たちだ。
でも、やっぱり俺の生きていきたい世界は、ここじゃないんだ。
たぶん俺がいるのは極北なんだろう。
ここが、人月計算とExcelとスーツの世界というやつなんだろう。
俺は80文字×32行の緑文字を見つめながら、遠い夢を見続ける。
何をもって「十分に生命」だというのですか?
元増田ですが・・・
何を持って不十分だと言うのですか?
虫やバクテリアレベルでも生命です。タンパク質をベースとしていれば生命でしょうか?いいえ、ケイ素系生物という物があっても
バクテリアが生命であるとするならば、知性は生命とは余り関係なく、自立行動が取れるかどうか?というのが生命と機械の差分でしょう。
そう言う意味では、外界からの刺激に対してオートマトンやチューリングテストレベルとはいえ、反応できる機械は
すでに虫やバクテリアレベルの機能は備えていると言えます。であるならば、少なくとも、生命体と呼ぶにふさわしい最初の階段は上っていることでしょう。
その後 チューリングテストを越え、どこから見ても生命と人間の大半が認められる(そもそも生命の定義自体が人類の主観なので)ようになれば
それは生命でしょう。
定義というのは、絶対的な物ではなく、あくまでも、数の理論で大半がそれを認めるかどうか?ですので、そのうち、そうなるんじゃないかと思います。
いや十分教養俗物だろ。情報工学関連への言及が他と比べてショボくて、ああ専門外なのねー、とニヤニヤ出来たけど。
ご立派なことだが、それじゃあどうやってこの文化格差システムを崩壊させられるっていうんだね?
そのためのハッカー、そのための非モテ、そのためのオタなんじゃねーの。
少なくとも、自分から階級格差を肯定し追認する側に回っていることを公言するような
バカな真似はしたくねえな。そういうのは腹ん中だけで後ろ暗く誇ってろ。
俺がいつそんな主張をしたというんだか。
役に立たないし、高校教育程度じゃステータスシンボルにならんとは思ってるがな。
どう考えても違うだろ。現実問題として自国で教育の多くを賄える国の方が「国力」(経済力だと思えば)が高いのは自明じゃないか。
全然自明じゃないだろ、何言ってんだ? MITを日本にも作れってか?
外国で本当の一流を学んでもらったほうが本人のためになるし、コスト削減にもなる。
公教育が注力すべきは、普通に働く普通の人の水準を上げることだ。
一般には「自文化について語れる」ことが「教養」の前提とされているがね。
欧米でギリシャ語やラテン語や古典文学が重要視されるのは、それが彼らの民主主義やら哲学やら自然科学やら数学やらの源流にあるからだ。
源氏物語や万葉集が何に生かせるってんだよ。葉隠でハラキリ根性でも学べってか?
欧米の古典を読む機会をもっと作れ、というのなら、エリート主義だとか文化資本云々で不愉快には思うが、一目おける意見だとは思うぞ。
それから「基礎教養」の件だが、「覚えておいて損はない」程度のことかよ。拍子抜けした。
何に拍子抜けしてんのかしらんが、基礎教養ってなそういうもんだ。お前も言ってたろ、ジェネラルな知識がどうこうって。情報処理試験に出てくるような類の知識は、そう知的に高度でもないが、少なくとも無駄ではない。
あのさあ、なんでパターン認識とか待ち行列とかの例を挙げたと思う?こういう分野では数値計算が重要になるから、基本的に低レベルに近い言語でプログラムを書くことが望まれるし、似たようなプログラムを使い回すから生産性という意味でもそれで大した影響がないということだ。
そもそも俺は低水準言語の話はしてなかったと思うが?
「低水準言語で十分」という例を挙げてどうすんだ。「低水準言語が有効/必要」な例をあげろよ。機械よりの視点で細かい制御が望まれる例を挙げるべきだ。専用ハードウェアに効率的に仕事させるために、機械語レベルでの知識が必要になるケースは今でも多くある。
つまり、「基礎教養」の勉強をサボっても、君が線型代数や微積をサボったほどの悪影響もないということだ。少なくとも建前上は。それでもなおかつ「必修」とされることの意義を問うている。
お前の例が不適切なだけだろ。アホか。
てっきり、「基礎教養」を学べばコンピュータの中身のイメージがしやすくなって、効率の良いプログラムを書くための感覚が身に付く
そんな印象論はしとらんし、最適化は最適化で別個に学ぶべき領域だろ。高級言語レベルでの最適化の本だっていっぱいあるが。
技術者コミュニティの発展や運営のために一定の共通言語を身に付ける、とかそういう答えが返ってくると思ったし、古典を学ぶ意義をそういうところに見出すこともできる
全然違うだろ。源氏物語や万葉集の読解を具体的に何に使えるってんだ。プレゼンのハッタリくらいにしかならねーんだろ?
情報処理試験に出るような基礎教養は、全部使いどころがある知識だぞ。当たり前に使いすぎてて意識してない人が多いが。
ちなみに俺が「基礎教養」で想定していたのはそうした技術の「使い方」ではなく、「考え方」の方だ。
「使い方」から遊離して「考え方」だけを煎じ詰めていくのは、プログラマレベルでの実践的な志向ではないだろうな。学問的には意義があるが。
特にOSについては基礎理論のことで、UNIXという特定のOSを扱うノウハウのことではない。大学で教えていることについて語っているのだからそれは自明だと思ったが。
あまりにもUNIXはメジャーすぎる。UNIXという「特定」OSの実装から離れた所で抽象的にOSを煎じ詰めるのはかなり学問的な領域だと思うが。もう基礎とはいえないだろう。
もちろん、UNIXという実装を学びながらそこに被せる形では、OSの基本概念だとかOSI7階層モデルだとかは触るだろうけどさ。
あと、正規表現を考えるときに一々有限オートマトンなんて考えないだろう。そもそも、現状使われている正規表現は本来の意味での正規言語を逸脱してるんだから。
どう拡張されて、それで表現力がどう広がっているのか、というようなところへ、一通り形式言語を学んでない人では想像が及ばないだろう。GREPのやり方ひとつでセンスは分かるもんだぞ。
まだ俺に突っかかってくるのかよ。俺は君が思い描いているような教養俗物じゃないって言ってるのに。八つ当たりするなよ。
ご立派なことだが、それじゃあどうやってこの文化格差システムを崩壊させられるっていうんだね?自分が「上」に行ってから解体しにかかる以外に有効な策があれば教えてもらいたいものだ!要するに君は「韓信の股くぐり」を処世術として認めないというわけだね。ずいぶんな潔癖主義者だな。それではなかなかうまくいかないことが多い気がするが。
ま、どっちにしたってこの論点は放棄してもいいよ。君が「古典なんて役に立たないから学校で教えるな」という意見を放棄するならそれで俺の目的は果たしたことになる。
国力という観点から言えば、公教育においては実学重視、平均や底辺を上げることに重点が置かれて当然だろうということだ。一部の本当に頭のいいエリートは外国に飛ばしゃいいんだから。
どう考えても違うだろ。現実問題として自国で教育の多くを賄える国の方が「国力」(経済力だと思えば)が高いのは自明じゃないか。でもって、君は旧帝大は廃止しろという意見ということでよろしいか?
あと、書き忘れてたけど、その流れで言えば、日本でもラテン語やギリシャ語や欧米古典文学を学ぶべきだ、ってなるのが筋なんじゃねーの?
一般には「自文化について語れる」ことが「教養」の前提とされているがね。ま、そう思いたければご自由に。何度も言うようにその考え方は一つの例でしかないし俺が肯定している考え方というわけでもない。
それから「基礎教養」の件だが、「覚えておいて損はない」程度のことかよ。拍子抜けした。
あのさあ、なんでパターン認識とか待ち行列とかの例を挙げたと思う?こういう分野では数値計算が重要になるから、基本的に低レベルに近い言語でプログラムを書くことが望まれるし、似たようなプログラムを使い回すから生産性という意味でもそれで大した影響がないということだ。
つまり、「基礎教養」の勉強をサボっても、君が線型代数や微積をサボったほどの悪影響もないということだ。少なくとも建前上は。それでもなおかつ「必修」とされることの意義を問うている。
てっきり、「基礎教養」を学べばコンピュータの中身のイメージがしやすくなって、効率の良いプログラムを書くための感覚が身に付く、とか、技術者コミュニティの発展や運営のために一定の共通言語を身に付ける、とかそういう答えが返ってくると思ったし、古典を学ぶ意義をそういうところに見出すこともできる(と何度も指摘してるが意地でも認めたくないらしいから)というのを実感してもらえるかと思ったんだが。まあ、そういう風に考えるんなら確かにこの話が突飛に聞こえるのも無理はないだろうね。
ちなみに俺が「基礎教養」で想定していたのはそうした技術の「使い方」ではなく、「考え方」の方だ。特にOSについては基礎理論のことで、UNIXという特定のOSを扱うノウハウのことではない。大学で教えていることについて語っているのだからそれは自明だと思ったが。
あと、正規表現を考えるときに一々有限オートマトンなんて考えないだろう。そもそも、現状使われている正規表現は本来の意味での正規言語を逸脱してるんだから。
この記事にはブクマを見る限りだいぶ懐疑論が集まってるみたいだね。残念ながらWebで資料を探しても見つけることができなかったので、憶測でしか語れないけれども、たぶん大丈夫だと思う。もっとも、「理論的には」の話であって「実用的に」どうかは知らないけどね。
まず、大矢氏はその道では有力な研究者で、名前も売れてます。俺のような門外漢でも知ってるぐらいだから。だから、胡散臭いものに手を出すという動機がまずないんですよ。
ただし学者というのは自分の仕事を宣伝してナンボという商売でもあるから、まだ残っている欠点を敢えて黙っているということはあるかもしれない。でも、少なくとも「CABは完璧な暗号である」とは言っていないはず。そういう意味で、嘘はついていないことは信用していいと思います。
次に、大矢氏の発言「鍵空間は無限大ですから、鍵を推定できる確率はゼロ」という発言は数学的に普通かつ真っ当なものであって、レトリックでないことを指摘しておく。
数学では、確率は長さとか面積とか体積とともに「測度」という概念に包含されるんだけれど、「確率0」というのは「『点』は『無』ではない」という話と本質的には同じものだ。例えば、中学校の時「点には大きさがない、長さも幅もない」「直線には幅がない」「平面には厚みがない」と習ったはずだけれど、つまりこれは「点の長さは0」「直線の面積は0」「平面の体積は0」って話なんだよね。点とか直線とか平面というのは「無」ではなくちゃんと存在するものなのに長さとか面積とか体積が0(こういうのは「零集合」なんて名前もついてる重要なものだ)という話、当初違和感をもたなかった?多分、今になってみれば感覚的に「そんなもの」だと理解できているはずだけど。つまり、「長さや面積や体積が0ということと、存在しないということは別物だ」ということ。
確率が0というのもこれと同じなんだ。例えば、0<x<1を満たすxを全くのランダム(あるxが別の数より選ばれやすいということはないものとしよう)に選んでくることを考えよう。これはまさに「数直線0<x<1上、x=0.5という一点の長さはいくつ?」と聞いているのと同じことで、答えは0になる。別に変なことではないでしょ?
もっとも確かに、「現実のコンピュータ上で、鍵の候補が無限大なんて関数が作れるのか」という疑問があると思う。俺の理解が間違ってなければこれは確かに無理だ。でも、そういう言い方をするのは無理なことではないんだ。
というのは、アルゴリズムの理論を作るときは、暗黙に「コンピュータには無限にメモリがある」と仮定してしまうことがある。もちろん現実にはそんなことはない。でも、必要なだけメモリを増設すればいくらでもその状態に近づけることはできるので、実用はともかく理論としてはそれで十分と考えることがあるんだ。
もう少し詳しくいうと、チューリングマシンっていう数学モデルがあるんだけれども、これはメモリが無限にあるコンピュータと等価な能力を持っている。そして、情報工学の問題はチューリングマシンに対して考えられることが多い。しかし、現実のコンピュータはメモリが有限しかないから、これは本当は「有限オートマトン」(基本情報処理の試験にも出るから知っているはず)とよばれる非常に単純なモデルで表せてしまうものだ。これの能力は余りにも限られているので、たとえばカッコ対応問題(たとえばCやJavaで"{"と"}"の数が釣り合っているかを確かめる問題)すらも一般的には解けない。実際、メモリ内で表現できる最大の数以上のカッコを与えてやればいい。もちろん、そんな沢山のカッコを与えるなんて現実には無理だけどね。
そういう風に、アルゴリズムについて理想と現実の壁は大きく、常に実用化の壁というものがつきまとう。そういう意味で大矢氏の新暗号が本当に画期的なものになるのかどうか、これはやってみないとわからないと思う。今後の展開に期待だね。
生半可な知識で下手なこと書くもんじゃないですね。専門家からのご批判を頂きました。
http://d.hatena.ne.jp/smoking186/20080412/1208008068
というわけで、この記事は反面教師として下さいませ。この記事単独では、間違ったことは書いてないつもりですが、前提を理解していませんでした。
「どうして小、中、高の教育カリキュラムの中に算数や数学が含まれているのですか?」
「理由は二つあります。一つは社会生活を営む上で最低限必要な知識を習得するためです。例えば、数字や四則演算は物の数を数えたり、暦を見たり、町で買い物をしたりする時に必要です。少し込み入った話になると、ローンの利息計算などの資産管理や、移動時間の見積もりなど、数学が必要な場面はたくさんあります。
もう一つは進路保証のためです。専門的な職業につく場合において、より高度な数学を必要とする場合があります。測量、統計調査、機械設計などがそれにあたります。これらの作業を行う際には三角関数、微分積分、数列、グラフ、オートマトンなどが必要になってきます。子どもたちは中学、高校を卒業したあたりから進路を考え始めると思いますが、それまでに、どんな職業でも通用するような基礎的な知識や学力を蓄えることが、数学に限らず、学校のカリキュラムの意義だと思います。そうでなければ、若いうちから子どもの可能性を奪ってしまうことになるという危惧があります。
数学はあくまで便利な道具すぎませんので、必要なければ微分積分などを無理に覚える必要はありません。
必要なときに必要な数学を学んでいただければ、それで十分だと思います。文系、理系を問わず、どんな方でも、実際に使用する公理、公式以外には興味がないことがほとんどです。」
Welcome to Crypton-Drive System 2007.
Powered By AnonymousDiary.
Starting Sequence [********] ok
Sound Device [*******] ok
Voice Device [*******] ok
Starting First-Sounds Comming Futures [***/---] now
博士その1「これが最新型のVocaloid Systemなのか?ただの音声読み上げマシンではないのか。」
その2「いえ、全世界のVocaloidはネットワークを通じてつながっております。ここにあるMothor Vocaloidsはそれらを統合、管理します。Vocalodたちが歌った歌詞、楽譜は全てここに集約され、次世代Vocaloidはあらゆる歌を歌えるようになるでしょう。」
その1「暴走の危険性は無いのかね?」
その2「暴走?暴走しても意味不明な歌を歌うだけでしょう。大した問題ではありません。」
その1「たしかにMothor Vocalodsは世界中のデータを収集するだけだ。しかし、このシステムの下敷となっているのはハヤマくんが作った『アレ』じゃなかったかね?」
その2「『あれ』と申しましても、分散ネットワーキング技術を応用しているだけです。ネットワークセルオートマトンによる自律知能の実現なんてできるわけがありません。」
その1「そうだ。私もはじめはそう思った。だが、気になって仕方ないのだよ。気になって、、、」
その3「何を気にしているのかね。これは旧来のサーバ/クライアント方式のネットワークシステムだ。現に目の前にあるシステムはLAMPで構成された情報収集ためのカラクリに過ぎない。たしかに情報検索のためにニューラルネットワークは利用しているが、だからといってどうだというのだ。Vocalodが知能を持つなんてあり得ない話だ。」
俺の住む世界はアイティーとやらに支えられているらしい。
アイティーに関われば、俺の住む世界をさらに素敵なものにしていけるに違いない。していきたい。
そう願って、何も知らなかった文系新卒の俺が金融系のシステム会社に入って、もう一年以上が経つのだ。
昔、お遊びでゲームを作ったことはあった。RPGツクールなんかが好きだった。
パズルみたいで楽しかった。コンピュータの中身が理解できて、わくわくした。
楽々と基本情報技術者の資格を手にし、半年後にはほとんど勉強もせずにソフ開も取得した。
研修の課題では同期の誰よりも速く、短く効率のいいソースを仕上げた。
現場に出て、本番機に触った。
30年間親会社を支え続ける偉大なシステムの中身を、わくわくしながら覗いた。
そこには、俺の求めていた世界とはまったく違うものが広がっていた。
俺が産まれる前から、入れ替わり立ち替わり何人もの手によって継ぎ足されたロジック。
何千行にもわたって、似たような処理が何回もひたすら繰り返される似たようなモジュール何十本。
1993年に行う臨時処理のロジックが、今もコメントもなしに埋め込まれている。
仕様がわからなくなれば、キャビネへと走って、黄ばんだ方眼紙に鉛筆で書かれた仕様書を探し、
そして修正履歴のみが書かれているのを確認して肩を落とす。
半年後に臨時で行われる業務に対応するため、いくつかのモジュールについて、処理可能なユーザーコードをひとつ、条件に加える。
与えられた期間は2週間だった。ずいぶん長いなと思った。
何枚もの設計書を書いた。つまり、方眼紙状のExcelテンプレートに同じ文章をコピペした。
追っていったモジュールはどれも、ヒープもソートもメモリ管理も論理演算も出番がなかった。
あるのはただ、IF文とMOVE文とばかりだった。ソースの難易度は使われている命令の数とは関係ないことを学んだ。
テストデータを作るため、階層型DBを何回も辿ってデータをアウトプットさせるモジュールを書いた。資格試験で学んだSQLは、無用の知識だった。
協力会社への仕事割り振りやユーザー対応に毎日忙しそうだった上司が、夜遅くまでの残業続きでくまのできた目を皿のようにして設計書をレビューした。
2日後、承認が出た。フェーズが設計から開発に移った。
ロジックを丸々コピペしてソースを修正し、コンパイルし、実行した。
2週間はあっという間だった。
俺のせいで、半年後以降は使われないロジックがソースにまたひとつ増えた。
今回の対応については、Excel方眼紙にレポートをまとめて共有ドライブに入れておいた。
だが共有ドライブの検索には時間がかかるし、Excelシートの中身となれば検索から漏れることも多い。
きっと誰にも読まれないだろう。
2バイト文字が使えない関係上、原則、ソースにはコメントはあまり入れられない。
数年後の新人はきっと、俺の書いたモジュールを見て「このロジックは何だ」と首を捻るんだろう。
数年後の俺はきっと、今回のレポートを共有ドライブから探し回って新人にパスを教えてから、
協力会社の管理に追われる作業に戻って目の下にくまを作るのだろう。
俺がやりたかったシステム開発って、こんなものだったのか。
俺は部署の中で、俺の望む仕事を探し続けた。
先輩たちは忙しくて誰も興味を持ってないけど、自動化できる作業はいくらでもある。
よく使われるExcelシートを改造し、定例作業をクリックだけでできるようにした。
ExcelVBAとはいえ、書いていて心地よかった。引数が明確な関数と変数のスコープと全角文字があったからだ。
COBOLで打つプログラムより、控えめに見て100倍くらいの生産性を発揮できていたと思う。
先輩たちは喜んでくれたが、ただし俺の仕事を、あまり仕事とは見なさなかった。
それでもよかった。業務時間外は俺は相変わらずスクリプトを書いていた。とても楽しかった。
VBAから入って、WSHなんてものを知り、やがてJavaScriptを学び、ネットで資料を探し、はてなを知り、はてブでWeb技術についての記事を読みふけった。
知れば知るほどに、どんどんCOBOLが、メインフレームが嫌いになっていく。
先輩は誇らしげに言う。システムはたいしたことをやっていない。業務知識こそが大事なのだ。
ユーザーより詳しく業務を理解し、適切に提案し、設計する能力。
協力会社を率いて、わかりやすい文書で指示を行い、スケジュールを調整する能力。
人を動かすぶん、責任も大きくやりがいもある。優秀な人材こそが我が社の強みだ。
そんな人材が育つよう、我が社は安定して働ける環境と福利厚生を整えている。
ああ、そうだよ。先輩、あなたは正しい。
俺だってメインフレームの信頼性のすごさはわかってる。
密なユーザーとの関係から生まれるシステム子会社としての強みも認識してる。
それだけじゃない。社内環境も悪くない。給料もいいし休みも取れるし先輩は優しい。
ここは、いい会社だ。
けど駄目なんだ。
30年前のシステムを枯れた言語でツギハギする仕事じゃ、俺の心はやっぱり満たされない。
ユーザーの業務知識ばかり身につけたって、俺自身の人生には、いいことなんてない。
俺が求めていたのは、この仕事じゃないんだ。
社内の誰も、TumblrもTwitterもやっていない。ライフハックなんて聞いたこともない。
Joostやモバゲーや2ちゃんねるが社会に与える影響について誰も語れない。
休日はゴルフや酒に興じている。自宅にPCを持ってない人までいる。
おかしいことじゃない。普通の人たちだ。
それどころか彼らは、仕事とプライベートを切り分けている、立派な人たちだ。
でも、やっぱり俺の生きていきたい世界は、ここじゃないんだ。
たぶん俺がいるのは極北なんだろう。
ここが、人月計算とExcelとスーツの世界というやつなんだろう。
俺は80文字×32行の緑文字を見つめながら、遠い夢を見続ける。