タグ

ブックマーク / m-hiyama.hatenablog.com (13)

  • この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)

    正規表現と構文図について解説します。オートマトンについても詳しく述べます。オートマトン・スゴロクで遊びましょう! 世間でよく知られている/使われている概念・方法にはこだわらず、僕(檜山)の感覚で一番わかりやすいと思われる筋書きと用語法/図式法を使って説明します。この記事に目を通して“感じ”が掴めたら、形式言語理論の教科書を読み始めることが出来るでしょう。 [追記]この記事の内容に対する具体例は、「正規表現とオートマトン:なんだ簡単じゃん、JavaScriptによる実装」にあります。[/追記] 内容: 正規表現 正規表現の例 構文図 基記号 連接 選択 省略可能 繰り返し ストレートワイヤーによるレイアウト調整 有限状態オートマトン 有限状態オートマトンの実行 バックトラックと先読み スゴロクとオートマトン コマをたくさん使うスゴロクと並列処理 非決定性オートマトンと決定性オートマトン 正

    この機会にマスターしようぜ、正規表現、構文図、オートマトン - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 文字コードのイジワルジイサン - 檜山正幸のキマイラ飼育記 (はてなBlog)

    若者:「これは半角アルファベットで…」 檜山:「ちょっと待て、半角ってなによ、半角って?」 若者:「えーと、半分という意味かと」 檜山:「なにが半分?」 若者:「幅が半分のことです」 檜山:「幅のことだよね。だけどさ、文字の幅ってレンダリングの問題でしょ。フォントやレイアウトでどうにでもなるじゃん。半角って何を基準に半分なの? それ何ポイント? それ何ミリ? ピクセルでなんぼ?」 若者:「ほんとの幅のことじゃないですよ。1バイト文字のことです」 檜山:「イチばいとぉー? 文字が1バイトって、なにそれ?」 若者:「1文字が1バイトのデータで…」 檜山:「さっきアルファベットって言ってたよね。例えば'a'とか'b'とか、そんな文字のことだよね」 若者:「そうです」 檜山:「'a'が1バイトなの?」 若者:「はい」 檜山:「UTF-16でも'a'が1バイトのデータなの?」 若者:「あっ、いえ。1

    文字コードのイジワルジイサン - 檜山正幸のキマイラ飼育記 (はてなBlog)
    slash_01
    slash_01 2009/10/25
  • 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」

    気まぐれと偶然となりゆきで、ここ2,3回はモナドを話題にしました。googleで「モナド」を引いてザッと眺めると、「モナドはむずかしいー」とか「モナドで挫折した」みたいな雰囲気が感じられて、説明芸人の血が少し騒ぎましたね。「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 タイトルはだいぶ煽っちゃった…… けど、ハッタリじゃないつもり…… けど、実際はどうかな? ※印刷のときはサイドバーが消えます。 内容: とりあえず、あたりさわりなくモナドの来歴を紹介する こんな課題を考えてみよう:副作用付き計算 カウントアップする関数達 カウントアップしたい意志を戻り値で伝える それでは、いったい誰がカウントアップをするのだ 関数の引数の型をCountup型にまで拡張する そして、これがモナドだ とりあえず、あたりさわりなくモナドの来歴を紹介する 今からここで説明する「モナド(monad)

    檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」
  • JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JSON(http://www.json.org/)データはけっこうよく使うので、何度か話題にしたことがあります(例えば「もう一度、ちゃんとJSON入門」)。でも、JSONには型情報/メタ情報が付けられないのがとても不満で、JSON改なんてもんを考えたこともありました。(後でXIONに改名) JSONデータに対するスキーマ定義の仕様がかたまりつつあることを、ごく最近になって知りました。 http://json-schema.org/ JSON体はRFC 4627になっていますが、JSONスキーマの標準化のステータスは、あまりハッキリとは分かりません(僕には)。http://groups.google.com/group/json-schema?pli=1 を覗き見した感じでは、現状ワーキングドラフトという位置付けらしいです。 なかなか面白いし役に立ちそうなので紹介します。ただし、僕にとっ

    JSONの可能性がグンと拡がるぞ! JSONスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)

    ジジイの手習いで、JavaScriptを勉強中でございます。その動機は「結局、ブラウザベースRIAかよ」のようなこと。非ブラウザベースのリッチクライアントへの期待を失ってしまったんですね。短期的・現実的な策としては、Ajax的な手法によるRIAなのかなぁ、という気分。ただし、「短期的」が“1年”と“5年”ではえらい違いです。今のところ僕には、「短期的」の実際の期間はわかりません。 僕のJavaScript調査の結果は、「初心者でも使えてプログラマでも困惑するJavaScript 」などに書きました。これらの続きとして、「プログラマのためのJavaScript (*)」というタイトルで書こうかと予定してます。あくまで予定、気まぐれでモノグサな僕のことだから、…… “プログラマのための”というのは、C, C++, Java, C#など“普通の”プログラミング言語にある程度慣れていることを前提に

    檜山正幸のキマイラ飼育記 - プログラマのためのJavaScript (0)
  • プログラマのための「ゲーデルの不完全性定理」(1) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「プログラマのためのJavaScript」の番外シリーズ -- いやっ、ホントに。 これはシリーズのハブエントリーです。番号を(0じゃなくて)1にしたのは、全体目次だけじゃなくて内容が含まれるから。 ※ 印刷時にはサイドバーは消えるはずです、お試しください。 シリーズ全体目次(予定) (この記事;総論) 速攻速習編 自己適用からゲーデル化へ 「展望」への緊急パッチ(オハナシだよ) Reflective JavaScript 停止問題の構造 不完全性定理の構造 今回の内容: ゲーデルの不完全性定理とプログラミング ゲーデルが示したこと 不完全性定理の兄弟 -- 停止問題 JavaScript使うんだもんね 関連する記事(参考) 次の記事 速攻速習編 ●ゲーデルの不完全性定理とプログラミング 「ゲーデル」(人名;Kurt Godel、'o'の上に点々が付いてる)や彼の「不完全性定理」とかって、

    プログラマのための「ゲーデルの不完全性定理」(1) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    slash_01
    slash_01 2009/01/31
  • もっともお手軽な対話的JavaScript処理系 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    nak2kさんが、次のエントリーでWindows環境での対話的JavaScript処理系を紹介しています。 Win版インタラクティブJavaScript - nak2kのメモ帳 InteractiveJS その2 - nak2kのメモ帳 これは、「JavaScriptによるJavaScriptインタプリタ」という感じのもの。このnak2kさんのエントリから参照されている SpiderMonkey で JavaScript のインタラクティブシェル - bkブログ には次のように書いてあります。 インタラクティブシェルは JavaScript の基的な動作を理解するのに非常に役立つと思います。 そう思います。僕自身はRhinoを使ってます。で、選択肢としては: SpiderMonkey (the Mozilla's C implementation of JavaScript)の対話的処理

    もっともお手軽な対話的JavaScript処理系 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 絵を描いて学ぶ・プログラマのためのラムダ計算 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    JavaScriptで学ぶ・プログラマのためのラムダ計算」は、1回では述べ切らなくて、一段落付いたところで区切りました。これはかえって良かったですね、ブックマークやトラックバックでフィードバックが得られたので。 そのフィードバックなどをかんがみて、「残り=次回の話題」として予告した内容とはい違ってしまうのだけど、今回は、文章では伝わりにくい(前回うまく伝わらなかったと思える)ラムダ計算の大事なツボを、なんとか表現してみようと思います。 [このエントリーの内容はだいぶ前にほぼ出来上がっていたのだけど、ココに書いてある事情で、“お絵描き”がなかなか出来なかったのです。] ※印刷のときはサイドバーが消えます。 内容: 知っていて損はない 計算は身体的に理解しよう ラムダ項のツリー表示:準備 ラムダ項のツリー表示:描く! β変換に対応するツリーの描き換え もっとβ変換をやってみよう 計算現象を

    絵を描いて学ぶ・プログラマのためのラムダ計算 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算

    JavaScriptによるテンプレート・モナド、すっげー簡単!」にて: 紙と鉛筆でラムダ計算を実行できることは必要だな、やっぱり。 なんて強調したので、ラムダ計算の入門、いってみよう。 [追記]練習問題集を追加しました。説明を読みながら、あるいは読んだ後で是非やってみてください。→「JavaScriptで学ぶ・プログラマのためのラムダ計算 問題集」[/追記] ※印刷のときはサイドバーが消えます。 内容: JavaScriptの関数リテラル ラムダ式ってなんだ ラムダ計算の体系と適用操作 ラムダ式の例をいくつか β変換 -- ラムダ計算のキモ! β変換を何度か実行してみる 中間まとめ、まだ続きがあるよ JavaScriptの関数リテラル 最初に、JavaScriptに関する知識を確認しておきましょう。なお、JavaScriptの対話的実行環境については「もっともお手軽な対話的JavaScr

    檜山正幸のキマイラ飼育記 - JavaScriptで学ぶ・プログラマのためのラムダ計算
  • もう一度、ちゃんとJSON入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    僕自身も僕の周辺もJSONをよく使います。でも、細かい点でけっこうミスをやらかしています(苦笑)。このエントリーで、JSONを使う上で注意すべきこと/間違いやすい点をすべて列挙します。 内容 兼チェックリスト: 仕様原典さえ読めば完璧(のはずだが) 数値の前にゼロを付けてはいけない 16進数表記も禁止だよ 数値の前にプラスを付けてはいけない 小数点からはじまる数値はダメ 用語法が違うよ:プロパティとメンバー メンバー名には常に文字列を使う 空文字列""もメンバー名に使える 配列要素はキッチリと並べよう 文字列を囲むには二重引用符だけ 文字列内のエスケープが微妙に違う 仕様にないエスケープは構文エラー undefinedもNaNもありません ラッパーオブジェクトは使わないのが吉 型システムとtypeofに関する注意 最後に 仕様原典さえ読めば完璧(のはずだが) JSONは、小さくて簡単な仕様

    もう一度、ちゃんとJSON入門 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オブジェクトとクラスの関係について、次のような説明を見かけました(文言の引用ではなくて、檜山による要約)。 オブジェクトとクラスは全体としてツリー構造をしていて、ツリーの末端をオブジェクト、末端以外のノードをクラスという。末端であるオブジェクトは、その親ノードであるクラスのインスタンスと呼び、クラスどおしの親子関係を継承関係と呼ぶ。 うーむ、この説明、ある意味「簡潔でわかりやすい」とも言えるのだけど、ちょっと単純化し過ぎでしょ。 オブジェクトやクラスの概念て、そんなに美しくもなきゃ、整合的でもありません。実用性やら実装上の都合やらでゴチャゴチャですがね。しかし、そのゴチャゴチャが悪いともいえません。ゴチャゴチャを無理に単純化することなく、必然性を持った(幾分は偶発的だけど(苦笑))複雑さとして理解すべきかと思います。 というわけで、メタクラスやレイフィケーション(reification)な

    いまさらながらだけど、オブジェクトとクラスの関係を究めてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Java BlockingQueueで遊ぶ:パイプラインごっこ」でパイプラインの話をしたので、来の、つまりUnixのパイプやリダイレクトを少し調べてみました。 たまに話題となる some-command >file 2>&1 と some-command 2>&1 >fileの挙動の違いについて、「シェルはコマンドラインリダイレクトの指定を右から左に解釈実行する」なんて説明が見つかりました。んなバカな! パージングは左から右にするものですよ。パーズツリーを逆順にたどることはできるけど、そんなことする必然性はなんにもないよ。 次の記事を読むと、「右から左」なんて事情じゃないことが分かるでしょう。 UNIXの部屋 検索: リダイレクト シェルのリダイレクトにまつわる失敗 さてここでは、複雑なリダイレクト処理も完全に理解できる処方箋を示しましょう。例えば、次のコマンドラインが何をするか分かる

    シェルのリダイレクトを「こわいものなし」というくらい完全に理解しよう - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • イベントモデルの概念と用語法が混乱しているので、イライライするんですが - 檜山正幸のキマイラ飼育記 (はてなBlog)

    [追記 dateTime="2007-12-07 夕刻"]あーっ、今ごろ気付いた。イライライって「イ」がひとつ多いや。タイトルを編集すると、なんか悪いことが起こったりしませんかね? うーん、いいや。typoしたままにしとこう。ちなみに、「イライライ」は回文になっているぞ。[/追記][追記 date = "2007-12-11"]http://d.hatena.ne.jp/keyword/%a5%a4%a5%e9%a5%a4%a5%e9%a5%a4 [/追記] いつか文句言ってやろうと思っていた件ですよ。長いぞ。 内容: 似てるけど少しずつ違うイベントモデル達 イベントターゲット イベントフロー EventTargetインターフェース イベントハンドラーとイベントリスナー リスナーとハンドラーについてもう少し イベント伝搬とハンドラー実行 イベントの通過または出現 イベントタイプ 「イベント

    イベントモデルの概念と用語法が混乱しているので、イライライするんですが - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1