タグ

ブックマーク / mandel59.hateblo.jp (11)

  • 記号と通信に関する抽象階層モデルのメモ - Ryusei’s Notes (a.k.a. M59のブログ)

    情報科学・技術と記号論を関連付けようとする試みは、いくらか存在するが、個人的には、いままで提示されているモデルで納得がいくものはあまり多くない。既存のモデルは、断片的だったり不正確だ。ここでは、より正確であるが、詳細になりすぎないモデルをメモしておく。 情報システムは、次の4つの世界観に分けて、考えることができる。低次のレイヤーから順に、 物理界=場の世界 通信界=信号の世界 計算界=表現の世界 人間界=意識の世界 と考える。 物理界は、情報システムをそのように物理的な系として解釈した世界観だ。人間や計算機は、センサーやアクチュエーターなどを介して物理的な外部環境と相互作用している。そうした過程のすべての現象は、計算過程や通信過程も含めて、実際にはすべて物理的な法則に従っている。物理界では、人間の知覚しがたい現象が作用しあい、混沌としていて、高度な数理モデルによって記述される。 通信界は、

    記号と通信に関する抽象階層モデルのメモ - Ryusei’s Notes (a.k.a. M59のブログ)
    xef
    xef 2024/04/19
  • 漢字データベースを使って漢字ベン図を作問する - Ryusei’s Notes (a.k.a. M59のブログ)

    漢字ベン図は、QuizKnockがやっていた漢字クイズです。条件が3つ与えられるので、複数の条件に当てはまる漢字を答えていきます。 www.youtube.com この記事では、漢字情報データベース Mojidata を活用して、漢字ベン図を作問してみようと思います。 github.com MojidataはSQLiteというデータベースエンジンで使うことができるデータベースになっていて、情報をSQLで取得することができます。 データベースを使う準備 Mojidataを使うには、Node.jsとSQLiteをインストールしてあると楽です。 その後、ターミナルで次のコマンドを実行して、moji.dbをダウンロードし、sqlite3を起動してください。 # 作業用のディレクトリを作る mkdir kanji-venn # カレントディレクトリを変更する cd kanji-venn # npm

    漢字データベースを使って漢字ベン図を作問する - Ryusei’s Notes (a.k.a. M59のブログ)
    xef
    xef 2023/05/08
  • TopShell: シェル再考 - Ryusei’s Notes (a.k.a. M59のブログ)

    GitHubのExplore repositoriesにたまたま表示されていた TopShell が気になったので、ここで紹介する。 github.com TopShell開発の動機は TopShell: Reimagined Terminal and Shell · topshell-language/topshell Wiki · GitHub に書いてあるが、要点をまとめると「古典的なUnixシェルを使うのはつらい。いいところだけを抜き出して、全くシェルを考えたら、どうなるだろうか?」ということらしい。 Unixシェルのだめなところ 未定義の変数を使ってもエラーにならない【デフォルトで。set -u を使えばエラーになる。】 コマンドがエラーになってもスルーされる【デフォルトで。set -e とか set -opipefail を使えばエラー時に中断される。】 全部のデータが文字列

    TopShell: シェル再考 - Ryusei’s Notes (a.k.a. M59のブログ)
    xef
    xef 2019/09/05
  • Phantom property pattern - Ryusei’s Notes (a.k.a. M59のブログ)

    TypeScriptは、JavaScriptエンジンの動的セマンティクス上に、静的な型システムのセマンティクスが重なっているものです。ここで、JavaScriptとしては正しく実行できても、TypeScriptの型システム上ではちゃんと型が付かないという場合もあります。ときには、TypeScriptで型がつくように大幅に書き換えないといけない場合も出てきたりして、そうなると大変です。それでも、TypeScriptの型システムは高度な機能を持っているので、大体の場合は、うまく表現してやると、JavaScriptらしい書き方のままで型をつけることができてしまいます。今回は、JavaScriptでよくある、プリミティブ値をそのまま取り回すパターンに型を付けたいと思います。 プリミティブ型を扱うプログラミングは、素朴でわかりやすいですが、型の考えからするとかなり悪いものです。こういうプログラミング

    Phantom property pattern - Ryusei’s Notes (a.k.a. M59のブログ)
  • プログラムを哲学する 2. 「概念記法」 - Ryusei’s Notes (a.k.a. M59のブログ)

    以前、言語の完全性について言及した。今回は引き続き、言語の完全性について考える。 mandel59.hateblo.jp フレーゲの「概念記法」 フレーゲは未定義の式の存在を「言語の不完全性」(einer Unvollkommenheit der Sprache)とみなしていた。論理学者のフレーゲにとって、表現の「意味」(Bedeutung; その記号があらわしている事物。表記対象 denotation や言及対象 referent に相当すると考えられる)が確定していることは重要なことであった。表現の「意味」は、ちょうど1つでなければならず、それより多くても、少なくてもいけない。*1そのような多義的ないし無意味な表現は論理的誤謬のもととなるので、学問から排除するべきだと考えた。 フレーゲの提案した「約定」(Festsetzung)とは、そのような「言語の不完全性」を排し、言語を完全化する

  • プログラム意味論の分かりやすい紹介 - Ryusei’s Notes (a.k.a. M59のブログ)

    巷に膾炙しているプログラム意味論の説明は、正直言って何を言っているのか、部外者にはよく分からないように感じられる。プログラムの意味を論じる「プログラム意味論」の意味がよくわからないというのは末転倒だろう。ここでは、プログラム意味論を分かりやすく紹介したい。 プログラムの意味 プログラム意味論とは、プログラムの意味に関する理論だ。 そもそも「意味」とはなんだろうか。「意味」の意味を知るために、デジタル大辞泉で調べてみよう。 1 言葉が示す内容。また、言葉がある物事を示すこと。「単語の―を調べる」「愛を―するギリシャ語」 2 ある表現・行為によって示され、あるいはそこに含み隠されている内容。また、表現・行為がある内容を示すこと。「慰労の―で一席設ける」「―ありげな行動」「沈黙は賛成を―する」 3 価値。重要性。「―のある集会」「全員が参加しなければ―がない」 いみ【意味】の意味 - goo国

  • Referential Transparencyの代わりに使える概念案 - Ryusei’s Notes (a.k.a. M59のブログ)

    Referential Transparencyという概念が指すものは漠然としているので、もっと意味が明瞭で使いやすい用語を定義し、色々な言語の性質を記述してみる。 前提として 式は原子式か複合式である。 複合式は関手(functor)と項(argument)から構成される。 〈純粋性〉 「式の意味」と「式の値」は同義である。 〈原子確定性〉 原子式の意味は原子式自身とその原子式の文脈から決定される。 〈構成性〉 複合式の意味は関手および項の意味から決定される。 〈弱構成性〉 複合式の意味は関手、項の意味および式の文脈から決定される。 〈文脈構成性〉 複合式の項の文脈は、その複合式の文脈と関手から決定される。 〈文脈弱構成性〉 複合式の項の文脈は、その複合式の文脈、関手および他の項の意味から決定される。 〈確定性〉 式と式の文脈から部分式の意味が決定される。 〈文脈確定性〉 式と式の文脈か

  • プログラムを哲学する 1. 言及 - Ryusei’s Notes (a.k.a. M59のブログ)

    これから書くのは、言葉や論理と、その意味に関する話だ。フレーゲらによる、物事を厳密に考える言葉の探求は、現代論理学や分析哲学の出発点になった。まずは、その哲学を探りながら、関数プログラミングの話でよく耳にする「参照透過性」という概念を理解することを最初の目標にしたい。 言及 Reference (Stanford Encyclopedia of Philosophy) 普通、記号には表す対象が存在している。記号と記号が表す対象との間にある関係を、言及(reference)という。*1たとえば、「東京タワー」や「港区にある電波塔」という言葉は建造物の《日電波塔》への言及だし、「港区」や「東京タワーのある区」という言葉は場所の《東京都港区》への言及だ、などという。*2このような、記号の意味とは言及対象のことなのだという考えは、いろいろある意味の捉え方のうちのひとつだ。(直接言及論 Direc

  • Go, Rust, Haxeによる正規表現エンジン実装の読み比べ - Ryusei’s Notes (a.k.a. M59のブログ)

    この記事はRust Language Advent Calendar 2014の20日目であると同時に、Haxe Advent Calendar 2014の20日目でもあります。 正規表現エンジン 正規表現エンジンのGoによる実装sre2、Rustによる実装libregex、そしてはHaxeによる実装HxREを読み比べます。 sre2は、もともとC++で実装されていたRE2をGoで実装したものです。 libregexは、Rustで実装された正規表現エンジンです。これはRE2をベースに実装されていていますが、独自の特徴として、マクロを使うことでコンパイル時に特殊化したコードを生成できることが挙げられます。 HxReは、Rustのlibregexを参考にHaxeで実装したもので、こちらもマクロによる特殊化機能を備えています。実験的な実装で未実装の機能も多いです。 仮想マシンアプローチによる正規

    Go, Rust, Haxeによる正規表現エンジン実装の読み比べ - Ryusei’s Notes (a.k.a. M59のブログ)
  • HaxeでUnicode文字列をどう取り扱うか - Ryusei’s Notes (a.k.a. M59のブログ)

    Haxeには複数のターゲットがあり、文字列のAPIは共通だが、それぞれで文字列の内部表現が異なっている。普通にプログラムを書いても、ターゲットによって結果が変わってくる。 class Main { public static function main() { var s = "\u{20000}𩸽あëa"; trace(s); trace(s.length); trace(s.charCodeAt(1)); } }$ haxe -main Main.hx -python main.py $ haxe -main Main.hx -js main.js $ haxe -main Main.hx -php main_php $ python3 main.py Main.hx:5: 𠀀𩸽あëa Main.hx:6: 5 Main.hx:7: 171581 $ node main.js

    HaxeでUnicode文字列をどう取り扱うか - Ryusei’s Notes (a.k.a. M59のブログ)
  • こわくない Idris (1) - Ryusei’s Notes (a.k.a. M59のブログ)

    はじめに Idrisという、Haskellに似ていて、依存型 dependent type を持っている言語がある。依存型を持った言語なんて他にもあるのだけれども、Idrisは general purpose を謳っている。わざわざ汎用って謳っているあたり、依存型ってのはもっと色々に使えるものなんだぞって主張があるように思う。 そんなIdrisなんだけど、日語による文献はとても少ない。今のところ、Idrisをやろうって人はまず英語のチュートリアル読まなきゃいけない。僕はIdris初心者でまだIdrisらしいプログラミングがどんなものか分からないのだけれども、日語による学習ノートを残しておこうと思う。もしかしたらデタラメ書いてるかもしれないので、はてブかTwitter @mandel59で教えて下さい。 Idris Idris チュートリアル (英文) Programming in Id

    こわくない Idris (1) - Ryusei’s Notes (a.k.a. M59のブログ)
    xef
    xef 2013/09/03
  • 1