タグ

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

  • パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)

    jq(https://stedolan.github.io/jq/)の紹介では、「JSON処理のワンライナー〈一行野郎〉としてめちゃくちゃ便利!」とアピールするのが定番です。もちろんそれは当で、「めちゃくちゃ便利!」です。が、実は jq は、ワンライナー記述にとどまらない、かなり格的なプログラミング言語です。 JSON処理のためのDSL〈Domain Specific Language | 領域特化言語〉なので、汎用言語ではありません。しかし、汎用言語が備えている言語機能の一部(関数定義、モジュールシステムなど)を jq も持っています。また jq は、独特で楽しいプログラミング・パラダイム -- “パイプライン指向”に基づいて設計されています。 この記事では、ワンライナーを超えた jq の使い方と、プログラミング言語としての jq の特徴を紹介します。長い記事になってしまったので、一

    パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2022/12/05
  • 奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)

    言い訳から始めます。この記事を(途中まででも)読んだ人は、次のように言いたくなるでしょう。 『理論から学ぶデータベース実践入門』は良いなのか悪いなのか、いったいどっちなんだよ?! このは間違いや説明不足があり、誤読されやすい表現も多く、その点では残念なです。しかし、面白いアイディア、するどい観察も含まれていて、行間を補い深読みすれば、多くの示唆を得られるでもあります。 よって、「良い/悪い」の二択では答えられません。良い点と悪い点の両方を、できるだけ客観的に記述するしかないのです。それをした結果、長い記事となりました。 内容: ことの発端: zhanponさんの批判 奥野擁護と奥野批判 僕の擁護・批判の方針 zhanponさんの指摘の再検討 1. 論理的な矛盾とデータの不整合を混同している 2. 命題論理の限界についての説明がおかしい 3. 古典論理の定義を間違えている 4.

    奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2017/10/10
  • 「フローチャート」騒ぎ、もう少し頭使って考えてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    割と最近、次の記事がブックマークと注目を集めたようです。 若手プログラマー保存版!フローチャート徹底解説と作成カンニングペーパー 見る前に予想したように、「何言ってんだ!? コイツ」「アホかバカか」的な扱いでしたね。雰囲気としては、「ホメオパシー効いたよ、マジおすすめ」という類の記事への反応と似たようなものです。 ブックマーク: http://b.hatena.ne.jp/entry/it-koala.com/flowchart-2241 上記「フローチャート徹底解説」記事は、特段に酷いとは思いませんが、かといってたいして役立ちそうにないし、反感を買いそうな記述もある*1ので、記事を擁護する気はありません。しかし、フローチャート自体は強く擁護してきたので、ここでまたフローチャート擁護論を展開すべきかな、… と思わなくもないですが、あんまり乗り気じゃない -- 言いたいことは過去にほぼ書き尽

    「フローチャート」騒ぎ、もう少し頭使って考えてみようよ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2016/12/26
  • viXraのトンデモとarXivのトンデモ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「arXiv.orgのオルタナティブ!? viXra.org」で紹介したviXraは、案の定トンデモの巣窟ですね。だいぶ香ばしい例を紹介すると: Title: The Answers to Two Millennium Prize Problems (2012-12-23) Author: Andrew Nassif Pages: 5p URL: http://vixra.org/pdf/1212.0137v1.pdf Part I: The P vs NP は7行のテキスト、Part II: Riemann Hypothesis は4行のテキストと4枚の画面キャプチャ画像からなります。この2つのミレニアム懸賞問題について“何か”書いてあります。「解いた」つもりなんでしょうか? 意味不明です。 家arXivは、トンデモ野放し状態ではないので、ある程度の質は担保されていると言われます。しか

    viXraのトンデモとarXivのトンデモ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2016/10/24
  • 入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)

    タイトルに「入門的ではない」と入れたのは; 先日の「関数型プログラミングとオブジェクト指向について、何か書く、かも」において、「型クラス入門」の記事を書くかもと予告じみたことを言ってしまったので、その入門じゃないぞ、と。でも、型クラスの話だぞ、と。そういう意味合いです。ヨロシク、アシカラズ。 型クラスの元祖はHaskellです。なので、「型クラス = Haskellの型クラス」という前提での解説が多いみたいです。しかし、元祖は“最初の試み”であるがゆえに、使用経験や後発の理論を活かすことが出来ず、むしろ問題をかかえていたりします。Haskellの型クラスも、なんだか残念なところが。 内容: オーバーロードと人生 型クラスは何がうれしいのか(オーバーロードなしでも) 型クラスの実際 記号の乱用の実装法 Haskellの型クラスは何がマズイのか オーバーロードと人生 型クラス誕生の動機は、演算

    入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2016/10/01
    newtypeを使うんだっけかな>もってまわった
  • コンピュータ科学や組み合わせ論を“微分幾何”とみなす:CADGの夢 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    『シン・ゴジラ』は僕のツボにはまったんですよね。コワ面白かった! 最近、もうひとつ「これは面白い!」と思っていることがあります。微分幾何の応用の話です。多くの人が「応用」という言葉から連想する内容とはちょっと違います。微分幾何を換骨奪胎して、その枠組を、微分とも幾何ともまったく無関係と思える分野にも適用するのです。 「微分とも幾何ともまったく無関係と思える分野」には、コンピュータ科学や組み合わせ論が含まれます。これには驚きました。好奇心を刺激されて、しばらく猿になって調べまくってました。 調べても理解できないことがたくさんあるので、断片的で中途半端な知識を推測(妄想?)でつなぎ合わせるという手法(いつものやり口)で語ってみます。圏と多様体の定義くらいは仮定しますが、それ以外の知識は要求しないオハナシ調です。 内容: リソース計算が微分計算だってぇぇ?! 微分の計算が出来る圏 組み合せ論とデ

    コンピュータ科学や組み合わせ論を“微分幾何”とみなす:CADGの夢 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2016/08/05
  • クロージャなんて貧乏人のオブジェクトだろ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html : closures are in fact poor man's objects (in his opinion). ...snip... A closure is an object that supports exactly one method: "apply". Christian Queinnecは、 closures are a poor man's objects と言っている、一方、Norman Adamsは、 objects are a poor man's closures と言っている、と、そんなことみたいです。「クロージャはよく知らないがオブジェクトなら知ってる」という人は多そうなので、「クロージャとは、貧乏人のオブジェ

    クロージャなんて貧乏人のオブジェクトだろ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/12/09
  • 林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先週のことでタイミングが遅れていますが、 http://d.hatena.ne.jp/JavaBlack/20151103/p1 相変わらず、何の根拠も示さずに知ったふうな事をのたまう。無根拠・非論理の芸風は死ぬまで治らない(治さない)のでしょう。 林晋さん*1へのたちの悪い言及を目にしてしまったので、一言いわずにはおれない気分です。 まず、林晋さんの著書について述べます。林さんのは3冊持っていて、目次と索引しか見ない僕*2にしてはよく参照してます。 コロナ社の『数理論理学』*3は手が届く場所に置いてあります。 数理論理学 (コンピュータ数学シリーズ) 作者:晋, 林発売日: 1989/12/20メディア: 単行 カリー/ハワード対応について説明している論理のは少ないので、非常に助かります。かつてラムダセミナー/モニャドセミナーでカリー/ハワード対応を題材にしたときのネタはこれです

    林晋さんのこと、根拠なきイチャモンのこと - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/11/09
    共立のマーク並んでるの見ると落ち着く
  • 統計の基本中の基本をハッキリさせる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    R言語をインストールしたはいいけど、全然使えないです。Rが、プログラミング言語としてどういうものか?おおよその見当は付きますが、Rの用途は統計。統計処理をしないとあまり意味がない。だけど統計を知らないのでお手上げ。 統計の入り口は、データ整理をする記述統計という分野です。記述統計では確率も母集団も出てきません。このレベルでもよく分かんない。入門書を見ると、事例があるだけで用語・概念の定義がないんですよ。教育的配慮としては妥当かと思うんですが、気持ち悪い。なので、想像(「たぶんこうだろう」)を織り交ぜて基概念を解釈してみます。教育的配慮はありません。 変数とデータ データシーケンスからデータフレームへ 変量の値の集合 分布と密度 ヒストグラム グラフィックス以前 変数とデータ いきなり「2変数のデータ」とか言われても、「はぁー、ソレなんですか?」と困惑します。 統計の「変数」とは関数のこと

    統計の基本中の基本をハッキリさせる - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/05/18
  • 最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    TypeScriptでは、コンパイルが必要です。プログラムをブラウザーとNode.jsの両方で使おうとすると、さらに加工が必要です。ミニファイだの文書も作るだのすると、ちょっとしたビルドプロセスとなるので手作業では辛くなります。 今更Makeでもないよなー、と思い、最近のビルドツールを試してみました。 内容: 流行りすたりが激しすぎる gulpを使ってみる:こんなサンプル gulpのビルドスクリプト タスクランナーってのはビルドツールとは違うのか? ビルドツールは進化したのか 参考資料: 例題のファイルとコマンドの一覧 ソースファイル 追加の話: gulp問題ひきずり:ウォッチがまたおバカ過ぎる 流行りすたりが激しすぎる 「確かGruntってツールがあったよな」と、インストールと使い方を調べていると、やたらにgulpって単語が目立つんですよね。Gruntのライバルの新興勢力らしいです。 「

    最近のビルドツールって何なの? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/05/11
  • TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2008年に書いた記事「CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ」はCPSの説明にJavaScriptを使っています。しかし、JavaScriptでは型宣言や型総称(ジェネリックス)が使えないので、「未来のJavaScript」という最初の節で架空のJavaScript方言を定義しました。最近のAltJSのなかには、当時の「架空のJavaScript方言」の機能を実現したものがあります。そのなかでも、TypeScritは強力な型システムを持っています。2015年に現存するJavaScript風言語であるTypeScriptで、関手やモナドがうまく書けるかどうか探ってみます。 内容: 圏論とプログラミング言語 TypeScriptの型の書き方 お題はリストモナド モナドの乗法と単位、全体のまとまり 追記: TypeScriptに関する補足

    TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • アマゾンが間違いメール? なんなんだ、これは!? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    なにがあったのかというと(少し前のことなので、「ありのまま 今 起こった事」ってセリフは適当じゃないです)、詐欺メールみたいなのが来たのですが、なんか物のようなんです。物だとすると、なんで僕(檜山)宛に届いたの? 事情も対処も分かりません。 3月13日に次のメールが届きました。 Title: 店舗到着済:認証キーをお送りします(注文番号: XXX-XXXXXXX-XXXXXXX) From: Amazon.co.jp <delivery-notification@amazon.co.jp> 2015年3月13日 11:21 Amazon.co.jp <delivery-notification@amazon.co.jp>: Amazon.co.jpをご利用いただき、ありがとうございます。 ご注文商品がご指定のコンビニに到着いたしましたので、商品をお受け取りいただけます。 商品のお受け取

    アマゾンが間違いメール? なんなんだ、これは!? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/03/16
  • 中学レベル代入計算からカリー/ハワード流証明の圏へ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    Coqをいじっていると、カリー/ハワード対応の威力を実感します。一方で、証明といえども所詮は計算なんだな、とも思います。中学校くらいでやる代入計算の直接的な延長線上に証明の合成操作があるんですよね。中学レベルの計算と形式的証明では、用語や記号がまったく違うのですが、そこにうまく通路を作ってやると、やってることは大差ないことが分かります。 「寄り道Coq: exactタクティクと型理論と圏論」の最後の節「大きなラムダ式/小さなラムダ式」で述べたことの敷衍です。 内容: 1次式の代入計算 代入の圏 代入をシーケントで表す 型判断を成分とする代入 カリー/ハワード対応による再解釈 Coqにおける実例 まとめと展望 1次式の代入計算 話を簡単にするために、式としては1次式だけを考えます。1次式による計算結果を変数に代入することを次の形で書きます。 v := 2x + 3y - 1 連立の場合もあり

    中学レベル代入計算からカリー/ハワード流証明の圏へ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2015/02/02
  • 実例で見る JSONスキーマ vs Catyスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    http://return0.info/note/2014-11.html#id2014-11-26 : 俺は今でもCatyスキーマが今のところ世界でもっとも使いやすいスキーマ言語だと思っている Kuwataさんや僕がこういうことを言うと手前味噌なわけですが、実際のところCatyスキーマより書きやすいスキーマ言語は見当たらないです。 実際に仕事に使ったスキーマ記述の例を挙げましょう。WebサイトでWebフォントを使う状況で、フォントに関するメタデータをJSONファイルに保存しておくことにします。そのJSONファイルのデータ形式を定義するものです。 スキーマ記述ファイルは次のコメントから始まります。'/**' から始まるドキュメンテーション・コメントは、単なるコメントではなくて、処理系に認識されてヘルプやマニュアルの生成などに使われます。コメント内はWiki記法が使えます(以下の例ではこれと

    実例で見る JSONスキーマ vs Catyスキーマ - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/12/02
  • オートマトンの定義を書き換えてみる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    オートマトンとラベル付き遷移系(labeled transition system)はほとんど同じものです。ここでは区別せずに遷移系全般をひっくるめて「オートマトン」と呼ぶことにします。オートマトンによりモデル化できることは多いですが、目的によっては通常の定義では使いにくいこともあります。そこで、オートマトンの定義をより使いやすい形に書き換えてみます。 結局のところ、「オートマトンとは関手です」ってオチになるのですが、これでは漠然としすぎているので、もう少し手でいじれる形も提供します。「形式言語理論のための代数」で述べた行列としての解釈とはどう関係するのか?は、また別の機会に述べるつもりです。 内容: オートマトンの定義(普通のやつ) 普通の定義はどのへんが痒いのか 関手オートマトン 色々なオートマトン 圏を有向グラフに変えても十分 始状態の扱い オートマトンの直和 アルファベットのケイリ

    オートマトンの定義を書き換えてみる - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/11/19
  • プログラムの実行時間を計る事と半環の代数 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「零の概念とmax-plus半環の紹介」において: max-plus半環やmin-plus半環の計算技術は、トロピカル代数(tropical algebra、より一般にはエキゾチック代数)と呼ばれたりします。[...snip...] 例えば、プログラム意味論に計量的な要素を入れるとき、トロピカル代数が使えそうです。 実際にトロピカル代数を使ってプログラムの実行時間を計って*1みます。 「零の概念とmax-plus半環の紹介」で導入した概念は断りなしに使います。内容はまだ生煮えなところがあります。 内容: プログラムのモノイドとプログラムの半環 プログラムの実行時間 実行時間の計測値となる半環 もっと精密に実行時間を記録するには まだ精密さが足りないと思うなら プログラムのモノイドとプログラムの半環 p, q などはプログラムを表すとします。プログラムの全体をMとします。当然に、その「プログ

    terazzo
    terazzo 2014/11/10
  • モノイドや半環は、群や環とはかけ離れている - 檜山正幸のキマイラ飼育記 (はてなBlog)

    二値真偽値 {true, false} のブール代数は、論理ORを足し算、論理ANDを掛け算として半環となります。集合Aのベキ集合Pow(A)は、合併を足し算、共通部分を掛け算として半環です。アルファベットΣの言語の代数 Lang(Σ) = Pow(Σ*) も(たいていは非可換の)半環です。 これらの半環の足し算部分は可換モノイドであり、ベキ等でありω-総和可能です。論理、形式言語理論、プログラム意味論などに登場する半環/可換モノイドは、ベキ等性やω-総和可能性を持つ場合が多いのです。 モノイドや半環の理論は、できるだけ群や環の理論に似せて作りたい、という希望があります。しかし、ベキ等性やω-総和可能性を要求すると、群や環から離れてしまい、ある意味で対極的な構造になってしまいます。群や環の常識は通用しないことを覚悟しなくてはなりません。この記事では、その覚悟を促すいくつかの状況証拠を示しま

    モノイドや半環は、群や環とはかけ離れている - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/09/12
  • 形式言語理論のための代数 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    形式言語理論は、かなりの程度、代数的に定式化できます。例えば、形式言語の全体は順序半環、オートマトンはその順序半環を係数とする正方行列だと思えます。オートマトンの初期状態と終状態、オートマトンのあいだの模倣(simulation)関係なども行列により表現できます。 ここでは、できるだけ手短に形式言語理論のための代数、特に半環係数行列の概念を説明します。形式言語とオートマトンの基礎事項についても概要を述べますが、とてもラフな記述なので、他の資料や教科書で予備知識は仕入れておいたほうがいいでしょう。図を多用して幾何的・物理的な比喩を使うと分かりやすくなるとは思うのですが、今回は絵は描きませんでした。絵による説明はまたの機会に。 目標はオートマトンと模倣の圏を作ることです。オートマトンは代数的には正方行列となります。関係圏Rel(の部分圏)をインデキシング圏とするインデックス付き圏を作り、そのグ

    形式言語理論のための代数 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/08/20
  • 簡単なテンプレート処理を行うときは - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日、bashのprintfの話をしました。printfは、以前に簡単なテンプレート処理をする目的で紹介したのでした →「このシェル・ワンライナーがけっこう役立った: printfコマンドで超簡易テンプレート」 なんかプレースホルダーのマークがあって、プレースホルダー部分を実際の文字列で置換するのがテンプレート処理の基です。 printf "%s,\n%s.\n" Hello World これも、%sで示されるプレースホルダーがあって、実際の文字列「Hello」と「World」で置き換えているので、まー「テンプレート処理」と言えなくもないでしょう。 実際の文字を変数にセットして、ドルマークの変数参照で置換する方法もあります。 greeting=Hello whom=World; echo "$greeting, $whom. " $greetingと$whomが文字列内の変数参照です。シ

    簡単なテンプレート処理を行うときは - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/03/20
  • WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)

    分散バージョン管理システムの利用は拡大しています。そのなかでも最も人気のあるツールはGitでしょう。しかし、GitWindowsで使うのはなかなか困難でした。 Windows向けのGitであるmsysGitは、bashのコンソールを出して、最小限のUnix風コマンドライン環境を提供するものです。これは使いやすくありません。もう一つの選択肢であるTortoise Gitは、Windowsのエクスプローラー(ファイルマネージャ)に統合されたGUIツールですが、僕は「なんか違うな」と感じてました -- これは個人の感性の問題ですが、ファイルマネージャに横付けすることが、分散バージョン管理システムへの良いUIを提供するようには思えないのです。 ところが、最近は事情が大きく変わっています。使いやすいGUIツールとして、2013年6月に正式公開されたSourceTree for Windowsが存在

    WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows - 檜山正幸のキマイラ飼育記 (はてなBlog)
    terazzo
    terazzo 2014/02/14