タグ

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

  • 奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

    奥野幹也『理論から学ぶデータベース実践入門』はどこがダメなのか - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 極小チームでbitbucketを利用するには - 檜山正幸のキマイラ飼育記 (はてなBlog)

    極小チームとは、二人組を想定しています。三人でも同じ方法が使えますが、五人とかだと別なやり方をしたほうがいいと思います。 分散バージョン管理システム(DVCS)を介して極小チーム(二人組あるいは三人組)で仕事をしたいことはけっこうあるでしょう。DVCS機能を提供するサービスといえばgithubが一番有名ですが、githubでは、無料で非公開(プライベート)リポジトリを作ることはできません。仕事となると、リポジトリを公開するのはマズイこともあります。github有料プランを使う手もありますが、bitbucket(https://bitbucket.org/)なら無料でも非公開リポジトリを無制限に作れます。 最近のbitbucketでは、個人ユーザー以外にチームという概念があり、チームとしてURLやリポジトリを持てるようです。でも僕はチームを使ったことがないので、複数の個人がリポジトリを共有す

    極小チームでbitbucketを利用するには - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 構文解析のオハナシ:訂正 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日のエントリーのどこが変かというと: 加数 ::= 因数 ('*' 因数)* | '-' 加数 これだと、積('*')と符号反転('-')の優先順位が相変わらず曖昧で、「一意的にパーズ(解析)できます。」なんてセリフが嘘になります。例えば、2+-3*5 が、2+(-(3*5)) か 2+((-3)*5) かハッキリしません。この例では計算結果は変わりませんが、今は構文解析ツリーを作るのが目的なので、2+(-(3*5)) と 2+((-3)*5) は別物とみなすのです。 昨日エントリーの後半では、なぜか積('*')が符号反転('-')より優先される前提で書かれています。そういう約束があってもいいですけど、常識的には符号反転のほうが積より強い(優先順位が高い)演算子ですよね。つまり、'+' < '*' < '-' という順序が自然でしょう。 ということで、構文定義のBNFは次のようにすべきで

    構文解析のオハナシ:訂正 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 構文解析のオハナシを少し - 檜山正幸のキマイラ飼育記 (はてなBlog)

    工作員お手伝いのショー君がid:aiue3という投げやりなIDでダイアリーを書いていたようです。http://d.hatena.ne.jp/aiue3/20061120#1164006565 のなかに再帰的下向き法(recursive decent; 再帰下降法)というのが出てくるので少し補足しておきましょう。 お馴染みの算術式(arithmetic expression)を素材にします。'+'は足し算, '*'は掛け算、そして'-'は引き算ではなくて符号反転の単項演算子とします。 式 ::= 数 | 和 | 積 | 符号反転 | '(' 式 ')' 和 ::= 式 '+' 式 積 ::= 式 '*' 式 符号反転 ::= '-' 式 これでも、構文的に正しい算術式を定義できます。しかし、3 + 5 * 2 が (3 + 5) * 2 なのか 3 + (5 * 2) なのかはわかりません。

    構文解析のオハナシを少し - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)

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

    入門的ではない型クラスの話:Haskellの型クラスがぁ (´^`;) - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • goto、大域変数、例外、双対性 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    世間の嫌われ者を、あえて擁護したり偏愛するつもりはないのですけど、goto文や大域変数は面白いし、好きだなー。過去の記事を参照しながら、goto文や大域変数の面白さについてナニヤラごたごたと書いてみます。 内容: gotoの棲み家 大域変数と例外の扱い方 必要悪としてのキャッチとミューテーション gotoの棲み家 タチの良いgoto文は、エルゴット繰り返し(Elgot repetition)演算子とみなされます。エルゴット繰り返し演算子は、コンウェイ不動点演算子の双対です。そのことは次の記事で述べました。 絵算で見る「カザネスク/ステファネスク/ハイランド/長谷川の定理」 データ・コード双対性、エルゴット繰り返し、ツインコードスタック抽象機械 あんまりタチの良くないgoto文もCPS(継続渡し方式)変換でだいたいは説明が付きます。 CPS(継続渡し方式)変換をJavaScriptで説明して

    goto、大域変数、例外、双対性 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2016/05/15
  • CPS(継続渡し方式)変換で裏返る理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日、CPS(継続渡し方式)への変換を話題にしました。 最近CPSに凝っているらしいid:higeponさんが: 人間の皮が裏返る。外が内、内が外。みたいなイメージでしょうか。 と書いてます(CPSで思考する - higepon blog)。この裏返る感じを説明してみたいと思います。 プログラムが、3つの部分A, B, Cから構成されているとします。 A; B; C; A, B, Cは単一の文ではなくて大きなブロックでもかまいません。ブロックAの計算結果は変数aに代入され、ブロックBの計算結果は変数bに代入されるとしましょう。それぞれのブロックを関数化すると、次のようになります。 a = A(); b = B(a); c = C(b); 変数cの値がプログラム全体の結果となります。 中間変数a, bは不要なので除去すると: c = C(B(A())); 結局、プログラム全体の機能は、C(B

    CPS(継続渡し方式)変換で裏返る理由 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2016/05/15
  • 便利な厄介者: ディレクトリを指すシンボリックリンク - 檜山正幸のキマイラ飼育記 (はてなBlog)

    先日、コマンドラインからの誤操作でファイルをゴッソリ消してしまいました。再生可能なファイルだったので深刻な事態じゃなかったですけど冷や汗が出ましたね。事故の原因は、ディレクトリを指すシンボリックリンクの扱いを勘違いしたことです。 僕の場合、bash, cmd.exe, PowerShellの3つのシェル(と関連コマンド)を使っていて、さらにbashは、LinuxとMinGW/MSYSでは挙動が多少違うので、4つの環境のコマンドラインを相手にしてます。なかでも、ディレクトリを指すシンボリックリンクは環境ごとの違いが大きいので厄介です。 間違うと被害が大きい「ディレクトリを指すシンボリックリンクの削除」について記しておきます。 内容: 事実はこうなっている bashと/bin/rm cmd.exeとdel PowerShellとrm(Remove-Item) bashと/bin/rm cmd.

    便利な厄介者: ディレクトリを指すシンボリックリンク - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2016/02/18
    "/bin/rm -rf symlink"
  • もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2014初頭に書いた「WindowsにおけるGit利用環境は整った: Git for Windows と SourceTree for Windows」の最後の文: ブランチは、Gitのなかで最も重要でありながら最も分かりにくい概念でしょう。表面的な言葉に騙されず、先入観を持たず、SourceTreeの視覚的表示(樹形図)の力を借りながら学習するのが、理解への一番の近道です。 そんへんの詳しいことはまたの機会に述べるかも知れません。 1年半以上たってしまいましたが、「またの機会」がやって来ましたよ。ええ、Gitの説明をします、ブランチを中心に詳しく。 「基礎編」と「ブランチ編」で2回に分けようかと思ったけど、長大な記事として一挙公開。これからGitを使う人が対象ではありません。Gitが何をやっているのか、自分が何をやっているのかイマイチ自信が持てない方向けです。 ブランチやマージって、なん

    もうGitは怖くない: 自信を持って使いたいあなたへ - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「最近のビルドツールって何なの?」において、gulpは「腕力はあるが知性を持たない」、ゴレライ的というかゴライアス的というか…、そんなツールだと述べました。二、三、後から思ったことがあるので追加します。 内容: プロジェクトは肥大しちゃうことがある ウォッチをいちいち手で書くのかよー OMakeと比較してみる ウォッチはこうでなきゃ じゃ、OMakeがいいのか? プロジェクトは肥大しちゃうことがある 「そもそも大した事はしないのでシンプルなツールgulpでも十分」ということなら、「そうですよね」と同意して話はオシマイです。でもね、gulpを使うプロジェクトが、ほんとに小さくて簡単なものなんでしょうか。 目の前に、10種のプログラミング言語が混じった2000ファイルのソースコード群がいきなり与えられたとき、「よしっ、gulpを使おう」とはならないと思うのですが、小さなプロジェクトが(良くも悪

    gulp問題ひきずり:ウォッチがまたおバカ過ぎる - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 引き算と無限個の足し算は両立しない - 檜山正幸のキマイラ飼育記 (はてなBlog)

    次の論文のなかにあった小ネタを紹介します。 Title: POSITIVE TOPOLOGICAL QUANTUM FIELD THEORIES Author: MARKUS BANAGL URL: http://www.mathi.uni-heidelberg.de/~banagl/pdfdocs/postft.pdf 簡単な話ですが、「ヘーッ」と目から鱗でした。 [追記]以下、半環と環の話になってますが、掛け算を使ってないので可換モノイドと可換群としても通用します。[/追記] 半環については昨日の記事でも紹介しました。足し算と掛け算が自由にできるが、引き算は要求しないような代数系です。別な言い方をすると、aに対して-a(マイナス)が必ずしも存在しなくていいのが半環です。-aの存在を要求すれば環となります。 自然数(非負整数)の全体Nは半環、整数の全体Zは環です。 過去の記事「可算な総和

    引き算と無限個の足し算は両立しない - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2014/08/14
  • J言語の評判 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    J言語について調べたくても、検索が困難ですね。日語なら「J言語」「プログラミング言語J」、英語なら「"J language"」「jsoftware」とかで検索するのですが、あまりうまくヒットしません。そもそも情報が少ないのかもしれませんが。 名前が1文字のプログラミング言語がたくさんありますが、検索は困りますね。1文字じゃないけど、Self、Io、Icon、Goとかも探しにくいでしょう。 プログラミング言語一覧 それでもなにやら探していたら、J言語に関する次の記事がみつかりました。 Rubyist のための他言語探訪 【第 12 回】 APL と J プログラミング言語「J」がオープンソースされた 2つとも短い記事で、読み物としてもたいへん面白いです。 「APL と J」は、RubyのまつもとさんによるAPL/Jの紹介記事で、APL(Jの親とも言えるプログラミング言語)について: APL

    J言語の評判 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2014/03/23
  • Haskell の構文に惑わされているね - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2月21日に、rst76さんからトラックバックをいただきました。 「技術者/プログラマのためのラムダ計算、論理、圏」セミナー第2回 だいぶ遅くなってしまいましたが、口語体、つうかオシャベリ体でお応えします。 こりゃカリー化つうより、コンビネータの利用じゃね rst76さん曰く: Prelude> let g a b x = a * x + b Prelude> g 3 5 7 26 Prelude> let g1 a b = (+ b) . (* a) Prelude> g1 3 5 7 26 んーんと、これはカリー化(ラムダ抽象)と関係ないなー。確かに関数の変数(引数)が減っているように見えるんだけど、それは単にgとg1で違う書き方をした、ってだけ。g1がgのカリー化(ラムダ抽象)ということではない。 これはむしろコンビネータに関係するかな。コンビネータを使うとラムダ変数(束縛変数)を減

    Haskell の構文に惑わされているね - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 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)
  • J言語の印象: その変態さと可能性 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    なんだか驚いた、というわけで、J言語を少し調べたり触ったりしました。このJ言語、2014年は絶対に … … 流行らないでしょう。 J言語のホームページは http://www.jsoftware.com/ です。必要なものはココに揃っています。J言語の入門的解説であるPrimerもあります。そのPrimerの冒頭に曰く: J is a very rich language. You could study and use it for years, and still consider yourself a beginner. J言語はとても奥深い言語です。何年もJ言語を勉強し使い続けても、それでも「自分はまだ初心者だ」と感じるかもしれません。 のっけから気力が萎えることを言ってくれますね。(人によっては挑戦意欲を刺激されるかもしれませんが。) 日語の資料は少ないですが、次がまとまってい

    J言語の印象: その変態さと可能性 - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2014/01/13
  • J言語は閉鎖的なのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)

    「空前絶後、他の追従を許さない難解プログラミング言語」と評判のJ言語、Googleで検索してはアッチコッチを斜め読みしています。「難解だからチャレンジしたい」というマゾっ気は全くないのですが、「iPhoneで使えるインタプリタが欲しい」がけっこう強い動機になっています。 来、難解・難読な言語ですから、その学習曲線は地を這うがごとくだろうとは予測してましたが、どうもそれだけではない「難しさ」を感じます。あくまでも「感じ」でして、確たる根拠はないのですが、なんか新参者を寄せ付けない壁のようなものを感じるのです。 自然言語ではないプログラミング言語であっても、言語利用者のあいだに文化や習慣が形成されるので、コミュニティの境界線のようなものは自ずと生まれるでしょう。J言語の場合は、その境界線が越えにくい、言語の難解さだけではない事情で越えにくいように感ずるのです。 例えば、J言語の家サイト h

    J言語は閉鎖的なのか? - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2014/01/13
  • bitbucketはもう信用する気になれない - 檜山正幸のキマイラ飼育記 (はてなBlog)

    bitbucketは、分散バージョン管理システムのリポジトリと関連機能をホスティングしているサービス。Catyの開発にはずっとbitbucketを使ってきた。細かい不満はあるものの、「これはダメだ」というほどの問題点は感じていなかった。だが、最近の変更は酷い。それについては、既にKuwataさんが書いている。 http://return0.info/note/2012-10.html#id2012-10-10 http://return0.info/note/2012-10.html#id2012-10-19 Wikiの記法が、WikiCreoleからMarkdownに変わったのだが、互換性への配慮が一切されてない。ユーザーが今まで貯めこんできたデータが壊れる事態もヤムナシという判断らしいが、ヒド過ぎる。具体的に言うと、過去にWikiCreole記法で書いた(イシュートラッカーの)イシュー

    bitbucketはもう信用する気になれない - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • オダンゴ図で解明するHaskell構文の巧みさと落とし穴 - 檜山正幸のキマイラ飼育記 (はてなBlog)

    昨日のエントリー「Haskell の構文に惑わされているね」を少し引っ張るんだけど; Haskellの関数定義/呼び出し*1構文は、誤解や混乱を招く危険もあるにはあるけど、やっぱり巧みに出来ているなー。誤解したまま使ってもツジツマがあうところが素晴らしい。 その誤解とは、f x y のような書き方を2引数(2変数)関数だと思うこと。昨日の例 g a b x = a*x + b を使うけど、絵の描きやすさの都合から、a*x + b を b + a*x の形に書きますね。 g b a x = b + a*x これは、次の図1のように思っても問題ありません。 図1 g とは、 b a x | \ / \ * \ / + | けど、より精密に描けば(アスキー絵では無理) 図2 掛け算のところから説明すると; a*x という算術の式は、(*) a x のことです。(*)の正体は λs.λt.(mul

    オダンゴ図で解明するHaskell構文の巧みさと落とし穴 - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • マスロフ式算数がやたらに面白いんですけど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    インド式算数って、速算処方箋の寄せ集めでしょ。ロシア発のマスロフ式算数は、質的に新しい演算を扱う奧が深い算数ですよ。マスロフ式算数を学んでも速算の役には立たないけど、背後にある数理的構造/現象の神秘に触れられるかもよ。 内容: マスロフ式算数の由来 maxとminの算数 足し算的演算 足し算的演算の実例 マスロフ和 マスロフ和の極限 プランク定数と脱量子化 マスロフ式算数の由来 1980年代に、ロシアの物理学者マソロフ(Victor P. Maslov)により始められた脱量子化(Maslov Dequantization)という手法があり、現在では、数学、物理学、工学の広い範囲に影響を与えてます。マソロフ脱量子化の入り口は、変形した足し算を含む計算です。この計算は、普通の算数と同じ簡単な法則に従いますが、エキゾチックな世界を記述する道具になります。 このエキゾチックな算数の構造は、高校生

    マスロフ式算数がやたらに面白いんですけど - 檜山正幸のキマイラ飼育記 (はてなBlog)
    nfunato
    nfunato 2012/02/18
  • 1