タグ

関連タグで絞り込む (204)

タグの絞り込みを解除

Programmingに関するVoQnのブックマーク (311)

  • adventures in uncertainty: An Introduction to Recursion Schemes

    2014-02-15 In 1991, Erik Meijer, Maarten Fokkinga, and Ross Paterson published their now-classic paper Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire. Though this paper isn’t widely known outside of the functional programming community, its contributions are astonishing: the authors use category theory to express a set of simple, composable combinators, called recursion sch

  • Haskell入門という本を書きました - 北海道苫小牧市出身の初老PGが書くブログ

    Haskell入門 というを書きました。まだ店頭で買うことはできませんが、amazonでは予約を開始しています。また、電子版も早いうちに出ると聞いているので、そちらもあわせてお求め下さい。技術評論社さんのサイトではサンプルのpdfも読むことができます。 Haskellには すごいH というとても良い教科書がすでにありますが、「アプリケーションを作って楽しむ」という観点から書かれたも欲しいなということを常々感じていました1。すごいHでHaskellの考え方やプログラムの組み方は学べますが、例えば、プロジェクトを作成して開発を始めるにはどうするかであったり、必要なライブラリをどこから探してどのように自分のプロジェクトへ組み込むのかといった、開発に必要な基的な事項は自分で学ぶ必要があります。今回執筆した Haskell入門 ではとにかくHaskellでアプリケーションを作ることにフォー

    Haskell入門という本を書きました - 北海道苫小牧市出身の初老PGが書くブログ
    VoQn
    VoQn 2017/09/18
    アプリケーション作るって軸での本は欲しかったですね
  • combine: マクロのいらないRustのパーサーコンビネーター - 簡潔なQ

    はじめに Rustには有名なnomというパーサーコンビネーターライブラリがあるが、せっかく高級な型システムと最適化があるのにマクロで何とかしようとするのは勿体無いと思うので、マクロに深く依存しないcombineを使ってみた。 combineの主な特徴 parsec リスペクトのパーサーコンビネーター コンビネーターはマクロではなく、 Parser traitを実装する値で表す バイトストリーム、文字(Unicodeコードポイント)ストリーム、トークンストリームの全てに対応 メモリ上の文字列だけではなく、入力ストリームからの直接のパースにも対応 まだ計測はしていないが、 Box を多用していたりはしないので、速度的に大きく遅れをとるようなことはないのではないかと思う。 以下、parsecについて知っていたほうが読みやすい構成になっているので、必要ならparsecの資料を探して読むといいかもし

    combine: マクロのいらないRustのパーサーコンビネーター - 簡潔なQ
  • 低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~

    この記事は Kobe University Advent Calendar25日目の記事です。 低レイヤー技術(後述)をこれから学びたい人向けの入門記事です。 自身の経験を踏まえ、より多くの人達にこのレイヤーに興味を持ってほしくて書きました。 決して卒論がやばくてAdvent calendarのネタが作れなかったわけでは(ry なぜこんな記事を書いたか いわゆるシステムプログラミングのような低レイヤー(と言って差し支えない)ジャンルって一体何から始めれば良いのかいまいちピンと来ないし、何が面白いのかも分からないと思われている事が多いと思います。 にもかかわらず低レイヤーの魅力や学び方の指針みたいな物を示した、いわゆる入門記事ってかなり少ないんですよね。 記事はこれからシステムプログラミングを始めたい方や、既にかじってみたが中々先が見えてこない、将来何の役に立つのか不安という方達に読んでい

    低レイヤーの歩き方 - るくすの日記 ~ Out_Of_Range ~
    VoQn
    VoQn 2016/12/26
    情熱があってよかった。非常に良かった
  • Haskell コンパイラを書こう!

    この記事では、私が Haskell コンパイラを Haskell で書いてみたいと思って勉強した事柄を紹介したいと思います。 Haskell は多くの特徴をもった高水準言語であるため、Haskell コンパイラが行わなければならない仕事はたくさんあります。 しかし、それらを一か所にまとめて述べた教科書のようなものは見当たらなかったので、 結構たくさんの文書を調べてまわる必要がありました。 ここで、それら全てについて詳しく解説するには、 紙幅も私の能力も足りませんが*1、 簡単な紹介と参考文献へのリンクを示しておけば、多少の価値はあるのではないかな…、あればいいな、 と期待しています。 コンパイラに限らず、そこそこの規模のプログラムを作ろうとする場合には、 最初のマイルストーンとなるようなサブ目標を決めるのが良いように思われます。 有名な Wnn における「私の名前は中村です」のようなやつ。

    Haskell コンパイラを書こう!
  • kanaka/mal: mal - Make a Lisp

    1. Mal is a Clojure inspired Lisp interpreter 2. Mal is a learning tool Each implementation of mal is separated into 11 incremental, self-contained (and testable) steps that demonstrate core concepts of Lisp. The last step is capable of self-hosting (running the mal implementation of mal). See the make-a-lisp process guide. The make-a-lisp steps are: step0_repl step1_read_print step2_eval step3_en

    kanaka/mal: mal - Make a Lisp
    VoQn
    VoQn 2016/11/23
    Clojureライクな小さなLisp方言を63の言語で実装する教材的なリポジトリ。CやRustからTclやbash, BASICでの実装例なんかまである
  • 三項演算子である条件演算子が右結合であることの利点・妥当性と可読性について - Guinea Pig

    条件演算子とは? 条件演算子とは、よく見るアレのことである。 bool b = true; string s = b ? "真" : "偽" ; // ここで出てくる ? と : が条件演算子 // ? の左が真であれば : の左を返し、 // ? の左が偽であれば : の右を返す。 // この場合 b が true なので (b ? "真" : "偽") は "真" を返す 右結合と左結合 んで、右結合、左結合というのは、同じ優先度の演算子が並んだ場合、それを右からまとめていくか左からまとめていくかと言うルールの話である。 // 左結合の例 int sub = 10 - a - b - c; // 左結合なので、以下の順番で解釈される // int sub = (((10 - a) - b) - c); // 右結合の例 x = y = z = 10; // 右結合なので、以下の順番で解

    三項演算子である条件演算子が右結合であることの利点・妥当性と可読性について - Guinea Pig
    VoQn
    VoQn 2016/11/22
    なるほどなー
  • R7RS 日本語訳

    R7RS 日語訳 アルゴリズム言語Scheme改7の概要 (PDF) アルゴリズム言語Scheme報告書改7 (PDF) github

    VoQn
    VoQn 2016/11/20
    SchemeのR7RSの仕様の日本語訳でハンドブックに良い手短さだった
  • GLICODE®(グリコード)|グリコ

    利用規約 利用者は、規約の定めに従い、「GLICODE®(グリコード)」(以下「コンテンツ」といいます)を利用するものとします。 なお、当社は当社が必要と判断する場合、あらかじめ利用者に通知することなく、いつでも、規約を変更できるものとします。 変更後の規約は、当社が運営するウェブサイト、アプリ内の適宜の場所に掲示された時点からその効力を生じるものとし、利用者は規約の変更後もコンテンツを使い続けることにより、変更後の規約に対する有効かつ取消不能な同意をしたものとみなされます。 かかる変更の内容を利用者に個別に通知することはいたしかねますので、コンテンツをご利用の際には、随時、最新の規約をご参照ください。 注意事項 コンテンツ利用にかかる通信費や諸経費は利用者の負担となります。 当社は、当社が必要と判断する場合、あらかじめ利用者に通知することなく、いつでも、コンテンツの

    GLICODE®(グリコード)|グリコ
    VoQn
    VoQn 2016/08/16
    グリコがプログラミング教材とお菓子の販促の一石二鳥を狙う狡猾なアプリケーションを出してきた…
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    VoQn
    VoQn 2016/02/19
    その辺で入手できる技術書と全然違うこと書いてあって驚き。知らんこと多かったわ(まぁもう中々書く機会もないんけど)
  • RubyからGoの関数をつかう → はやい - Qiita

    この記事ではRuby2.2.3とGo1.5.1を使用しています。 すごい要約 Go and Ruby-FFI - Code7 Interactiveを読むといい。 Go、はやい 最初にRubyGoの計算速度を比べるため、フィボナッチ数を単純に計算するやつをそれぞれ書きました。

    RubyからGoの関数をつかう → はやい - Qiita
    VoQn
    VoQn 2015/11/07
    フィボナッチ数の演算を例にするなら最速効率実装で比較しないとさ… http://qiita.com/VoQn/items/b2750322135a3cb0ca97
  • JavaScriptのコメントは不要か? | POSTD

    コード中にコメントを書くべきでしょうか? 是が非でも避けるべきでしょうか? それとも控えめに書けばいいでしょうか? 開発者たちはそれぞれ、ソフトウェアを開発する際にどのように、そしてどんな時にコメントを書くかについて、独自の考え方を持っています。この記事では私の意見を述べますが、これが誰にも当てはまるというわけではありません。 なお、関数型プログラミングまたはオブジェクト指向プログラミングの原則に則ってJavaScriptで書かれたソフトウェアに絞った上で、私の意見を述べることにします。 コメントと保守性 この記事では、保守性のあるコードを書く場合について考えます。つまり、以下のようなコードです。 簡単に理解できる 簡単に拡張できる 簡単にデバッグできる 簡単にテストできる 保守性のあるコードには、大量のコメントが必要でしょうか? 明確に書かれたコードであるならば、大量のコメントは不要だと

    JavaScriptのコメントは不要か? | POSTD
    VoQn
    VoQn 2015/10/07
    ヘッダコメントは要るし、内部のちょっとした部分にもコメントは結局要る派(特にXP指向してるならmasterマージまではザクザク入れろと思う)
  • Easing Equations

    easeInSine Math function easeInSine(x) { return 1 - Math.cos((x * Math.PI) / 2); } CSS transition: transform 0.5s cubic-bezier(0.12, 0, 0.39, 0) easeOutSine Math function easeOutSine(x) { return Math.sin((x * Math.PI) / 2); } CSS transition: transform 0.5s cubic-bezier(0.61, 1, 0.88, 1) easeInOutSine Math function easeInOutSine(x) { return -(Math.cos(Math.PI * x) - 1) / 2; } CSS transition: transf

    VoQn
    VoQn 2015/09/28
    イージング関数のjs実装リファレンス
  • ch07.vp

    Flash / Robert Penner's Programming Macromedia Flash MX / Penner/ 2356-1 / Chapter 7 Blind Folio 189 Par t III Dynamic Visuals P:\010Comp\Flash\356-1\ch07.vp Friday, October 04, 2002 4:24:37 PM Color profile: Generic CMYK printer profile Composite Default screen Flash / Robert Penner's Programming Macromedia Flash MX / Penner/ 2356-1 / Chapter 7 Blind Folio 191 Chapter 7 Motion, Tweening, and Easi

    VoQn
    VoQn 2015/09/28
    イージング関数の解説および定義、実装方法について
  • Jacob Kaplan-MossのPyCon 2015における基調講演: プログラミングの才能という都市伝説

    Keynote - Jacob Kaplan-Moss - Pycon 2015 - YouTube The programming talent myth [LWN.net] PyCon 2015で、Djangoの貢献者であるJacob Kaplan-Mossが興味深い基調講演をしているので紹介する。LWM.netでほぼ全面書き起こしに近いまとめがあったので助かった。 自己紹介 Kaplan-MossはDjangoの貢献者であり、Herokuのセキュリテイ部門の部長である。PyCon参加者としては歴史が長く、その他のカンファレンスでもよく発表している。Pythonコミュニティは「自分にとってこの業界におけるとても重要なもの」であり、PyConの基調講演を行うということは、「自分のキャリア上の絶頂」である。 自分の最初のPyConの発表は2005年のことで、PythonAppleScri

    Jacob Kaplan-MossのPyCon 2015における基調講演: プログラミングの才能という都市伝説
    VoQn
    VoQn 2015/05/06
    ”技術業界は、性差別、人種差別、同性愛差別などのあらゆる差別が渦巻いている。これは一つの問題ではないし、原因も一つではないのだが、才能の都市伝説も問題のひとつだ”
  • Generics + Enum + Default ArgumentsでUnityのMonoコンパイラがコンパイルエラーを吐く話 - diary

    VoQn
    VoQn 2015/02/27
    知見だ
  • ネイティブと働いて分かった英語コミットメッセージの頻出動詞10つ

    ウッ ここで詰まる事は往々にしてあります. 特に急いでる時の煩わしさは甚だしいです. どうせならそれっぽい英語を使いたいのでOSSや同僚のコミットメージの語彙の出現確率を調べてみましたら、 もちろんfeatureによってコミットメッセージの付け方など数多あるものの、一定の頻出パターンは見い出せたので筆を取りました. (英語勉強しないと..) 方法 github.com/rails/railsのコミットメッセージ内における各動詞の出現確率を求め、 またOSSと仕事でのコミットメッセージの趣向も変わってくる事も勘案するため、 (仕事でDeprecateとか滅多に使わんし) 同僚に聞きつつ10つあげてみた. 以下列挙 (例は実際の同僚やOSS上でのコミットメッセージです.) Add *A to *B AをBに加える

    ネイティブと働いて分かった英語コミットメッセージの頻出動詞10つ
    VoQn
    VoQn 2015/01/23
    手短で良い。Evernoteとかにチートシートとして保存しておきたい
  • Waxeye Parser Generator

    User Manual GitHub Waxeye is a parser generator based on parsing expression grammars (PEGs). Currently supported programming languages: Racket Features Language-agnostic, modular, composable grammars Automatic AST generation Command-line grammar interpreter Grammar testing DSL License Released under the PolyForm Noncommercial License 1.0.0. © 2021 Orlando Hill

    VoQn
    VoQn 2015/01/14
    パックラット構文解析ライブラリの実装。C, Java, js, python, ruby, SML, Scheme それぞれ実装あって参考になる
  • Bayonetta2 開発ブログ

    Bayonetta2 開発ブログ 『ベヨネッタ2』発売2周年&amiibo初公開! 2016.09.20

    Bayonetta2 開発ブログ
    VoQn
    VoQn 2014/11/21
    カッコイイ。ゲームプログラマーはそういうカッコイイことした話が良い
  • Martin Fowler氏の語る“犠牲的アーキテクチャ"

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Martin Fowler氏の語る“犠牲的アーキテクチャ"
    VoQn
    VoQn 2014/11/14
    設計するタイミングで「そもそも○年後にリプレースされるつもりか」っていう話は出すようにしてる(モジュラリティが高ければ言語ごと替える選択肢さえあるように作りたいぐらい)