タグ

プログラミングに関するfn23_2002のブックマーク (24)

  • バッドノウハウからグッドラッパーへ

    「有用なものを生み出すけれど複雑怪奇になっているシステム」を見つけたときには、 「バッドノウハウだ」と批判するだけではなく、 バッドノウハウを隠す「グッドラッパー」を作ることを考えよう、というお話。 目次 はじめに 有益なものを生み出さなければ「奥が深い」とも呼ばれない バッドノウハウをグッドラッパーで隠そう 当によくないシステムとは よびかけ 補足:Perlとバッドノウハウ いろんな方からのコメント 反応リンク 関連リンク 更新履歴 ぜひ、感想をお送りください はじめに 高林哲さんは『バッドノウハウと「奥が深い症候群」』というページで、 「奥が深い症候群」や「バッドノウハウをありがたがることの危険性」について書いています。 これはもっともな指摘なので、それを受けてもう一歩進んだ話を書いてみましょう。 有益なものを生み出さなければ「奥が深い」とも呼ばれない もしも「奥が深い」システムが何

  • GameObj - Trac

  • Moved

    This URL was moved The requested URL http://web.sfc.keio.ac.jp/~t03792sh/archives/2006/10/arduino-uart-led-adc.html was moved to http://web.sfc.keio.ac.jp/~shokai/archives/2006/10/arduino-uart-led-adc.html.

  • uonoue/PPL_SS05 - PukiWiki

    以上の性質は型付き関数型言語の共通項である。 このチュートリアルの内容のほとんどは Standard ML や Haskell にも応用できる。 ここで Objective Caml を Haskell と置き換えて読めば、Haskellを用いる理由としてそのまま当てはまる。 (Haskell の特徴については後述) ↑ 誕生の背景 † FPCA '87 それまでに両手に余る数の非正格純粋関数型言語が提案済み しかし共通の言語がないため広まらない!!! 委員会による標準仕様の策定ならびに改定を経て 1990 に最初の標準規格である Haskell 1.0 が 1998 に現行のバージョンである Haskell 98 が提案 Haskell の名前は論理学者 Haskell B. Curry に由来 (参考) 他の(関数型)言語はいつ頃生まれた? Lisp 1958 ISWIM 1966 M

  • http://www.osix.net/modules/article/?id=442

  • The Haskell 98 Language Report

    Simon Peyton Jones [editor], Microsoft Research, Cambridge Lennart Augustsson, Sandburst Corporation Dave Barton, Intermetrics Brian Boutel, Victoria University of Wellington Warren Burton, Simon Fraser University Joseph Fasel, Los Alamos National Laboratory Kevin Hammond, University of St. Andrews Ralf Hinze, University of Bonn Paul Hudak, Yale University John Hughes, Chalmers University of Techn

  • How to Design Programs

    How to Design Programs The First Edition is still available!

  • 開発抽象化レイヤ - The Joel on Software Translation Project

    Joel Spolsky / 青木靖 訳 2006年4月11日 火曜 若い男が町にやってきた。彼は見かけも悪くないし、ちょっとは金も持っていた。 過去のことについてはあまり話したがらないが、血の通ってない大企業に長くいたらしいことは明らかだった。 彼は生まれつき人当たりが良く社交的で、自分に自信を持っていながら傲慢ではない。だから地元のプログラマーズ・カフェにある求職の掲示の中からちょっとした仕事を見つけるのは、彼には簡単なことだった。しかし保険データベースプロジェクトや、主婦向けの飾りだらけのWebページや、会計計算エンジンといったものには、やがて興味をなくしてしまった。 1年もたつと、彼の慎ましい生計を1年支えられるくらいの蓄えができた。それで贔屓にしてくれるアルザス人へのコンサルティング仕事の後、料品店の上にある自分のアパートの陽の当たる部屋にコンピュータを据え付け、選りすぐったツ

  • たらいを回すならHaskell : 404 Blog Not Found

    2006年04月07日22:09 カテゴリLightweight Languages たらいを回すならHaskell たらい回し関数、またはtakと呼ばれる有名な関数が存在する。 C言語による最新アルゴリズム事典 奥村晴彦 同書をお持ちの方は、185ページに乗っている。 実はこれ、Haskellの売り込みには最高の関数なのだ。 ちなみに、これ最後にyを返すバージョンとzを返すバージョンがあるようで、それぞれtakyとtakzと呼ばれている模様。ここではtakyの方を採用。 まずは、私のnative tongueとも言えるperl。 tak.pl #!/usr/bin/perl use strict; use warnings; sub tak{ my ($x, $y, $z) = @_; ($x <= $y) ? $y : tak(tak($x-1, $y, $z), tak($y-1,

    たらいを回すならHaskell : 404 Blog Not Found
  • 思いて学ばざれば則ち殆うし - sumiiのブログ

    あるところに同じようなことを(ほとんど成り行きで)書いたのですが、重要な問題のような気がしてきたので、こっちにも書いてみる。 一般に、関数型言語やプログラミング言語(および計算機科学、ないし任意の専門)についての情報は、 一般書・一般誌、Webやメーリングリストやブログ 教科書・専門書 論文 口頭での議論(学会発表や質疑応答、グループのミーティング、部屋での会話) などで交換されます。 で、一般に情報の「ディープさ」は上から下へ行くほど濃くなると思うのです(少なくとも僕の専門分野ではそう)。そのごく一部である1.だけ(しかも日語onlyで)「勉強」していろいろと議論するのは、(何もしないよりは良いのかもしれませんが)非常に危険です。その危険をちゃんと意識していればno problemですが。「高速道路」の話と同じことかも。 たとえば、日のネット(?)では今になって妙に持ち上げられている

    思いて学ばざれば則ち殆うし - sumiiのブログ
  • ライブラリの外に公開するシンボルを制限する - bkブログ

    ライブラリの外に公開するシンボルを制限する C言語にはファイル内 (コンパイル単位) からしかアクセスできない static 関数と、別のファイルからもアクセスできる非static 関数があります。しかし、ライブラリを作成する上では、この2つのスコープだけでは不十分なときがあります。 記事では GNUの開発環境において、ライブラリの外に公開するシンボルを制限する方法を紹介します。 次のような例を考えてみます。 % cat a.c // foo() は libfoo の主役の関数なので公開したい void foo() { bar(); } % cat b.c // bar() はライブラリの中だけで使われるべきなので当は公開 // したくない。しかし別のファイルに含まれる foo() から使われ // ているので、非staticにせざるをえない void bar() { } このようなコ

  • 正規表現メモ

    \x{} \pは後続する名前が表すクラス(プロパティ、スクリプト、ブロック)に属する文字にマッチし、 \Pは後続する名前のクラスに属さない文字にマッチします。 クラスの名前が一文字のときはブレースを省略できます。 クラス名の前に^を置くことにより否定形の指定を行うことも可能です。 Perl 5.8 での変更点 Perl5.8以降(5.6でも使えたようですが)では \pや\Pで始まるプロパティ指定に標準Unicode属性を使うこともできます。 詳しくは perlunicode perlunicode - Perl における Unicode サポート を参照してください。 日語による説明が Unicodestandard にもあります。 Perl 5.8以降ではユーザーが任意のプロパティを作成することができます (IsまたはInを必ず前置)。 詳しくは perlunicode perluni

  • Engadget | Technology News & Reviews

    Anker's 3-in-1 MagSafe foldable charging station drops back down to its Prime Day price

  • CandASM

  • inquisitor: ハッカーと画家

  • objcopy で実行ファイルにデータを埋め込む

    普通のやつらの下を行け: objcopy で実行ファイルにデータを埋め込む プログラムの実行に不可欠なデータをファイルから読み込んで利用することがあります。この方法を用いると、データの更新が手軽にできるという利点がある一方で、単体の実行ファイルで実行できない、データファイルが紛失してしまう、といった問題もあります。 普通のやつらの下を行けの第5回として、今回は objcopy を用いて実行ファイルにデータを埋め込む方法を取り上げたいと思います。 データの埋め込み 小さなデータをソースコードに埋め込むのは簡単です。ソースコード中に埋め込まれている "hello, world" などのメッセージはソースコードに埋め込まれたデータといえます。 一方、画像や辞書などの巨大なデータをソースコードに埋め込むのはそう簡単ではありません。まず、データを文字列などに変換する必要がある上に、変換後の巨大なソー

  • Teach Yourself Programming in Ten Years 日本語訳

    以下の文章は、Peter Norvig による Teach Yourself Programming in Ten Years の日語訳である。 翻訳文書については、以下の方々にご教示を頂きました。ありがとうございました。 Shiro Kawai さん:誤訳の訂正 三好博之さん:誤訳の訂正 竹中明夫さん:2001年7月改版分の訳、誤訳の訂正(共訳者にクレジット) Toshihiko Ono さん:誤訳の訂正 アクビさん:訳注3に関する情報 どうしてみんなそんなに急ぐの? どの屋に足を運んでも、『7日で学ぶ Java』といったハウツーを見かけるし、そのそばには Visual Basic や Windows やインターネットなどについて、同じように数日や数時間で学べると売りこむが無限のバリエーションで並んでいる。Amazon.com で以下の条件で検索してみたところ、 pubdate

    Teach Yourself Programming in Ten Years 日本語訳
  • Joel on Software - 射撃しつつ前進

    Joel Spolsky ジョエル・スポルスキ 翻訳: Yasushi Aoki 青木靖 2002/1/6 ときどき何もできないことがある。 確かにオフィスにやってきて、だらだらとし、emailを10秒ごとにチェックし、Webをながめ、アメックスの請求書を支払うというような頭を使わない作業をしたりもする。しかしコードを書くフローの状態に戻ろうとしても、それができない。 このような非生産的な期間は通常1日か2日続く。しかし私の開発者としてのキャリアには何週間もの間何もできずにいたということが何度かあった。言うならば、私はフロー状態になかった。私はゾーンの中にいなかったのだ。私はどこにもいなかった。 誰でも気分のむらはある。ある人々にはそれは穏やかなものだが、他の人々には、それはもっとはっきりしていて、ときには機能不全でさえある。そして非生産的な期間は塞いだ気分と何か関係しているようだ。 それ

  • Insider's Computer Dictionary:リトルエンディアン とは? - @IT

    2bytes以上のバイト幅を持つ数値をコンピュータ内のメモリに格納するときや、データとして転送するときに、最下位のバイトから順番にアドレスの昇順に格納したり、転送したりすることをリトルエンディアンという。 通常のコンピュータでは、メモリには1byteごとに昇順のアドレスが付けられているが、2bytes以上の幅(サイズ)を持つ数値をメモリに格納する場合、1byteごとに分割してメモり上の各アドレスに格納する必要がある。このとき、どのバイト位置のデータをメモリ上のどの番地に格納するかということをバイトオーダーもしくはエンディアンという。最下位のバイト(LSB)から順番にアドレスの昇順に格納するものをリトルエンディアンといい、最上位のバイト(MSB)から順番にアドレスの昇順に格納するものをビッグエンディアンという。

  • Insider's Computer Dictionary:ビッグエンディアン とは? - @IT

    2bytes以上のバイト幅を持つ数値をコンピュータ内のメモリに格納するときや、データとして転送するときに、最上位のバイトから順番にアドレスの昇順に格納したり、転送したりすることをビッグエンディアンという。 通常のコンピュータでは、メモリには1byteごとに昇順のアドレスが付けられているが、2bytes以上の幅(サイズ)を持つ数値をメモリに格納する場合、1byteごとに分割してメモり上の各アドレスに格納する必要がある。このとき、どのバイト位置のデータをメモリ上のどの番地に格納するかということをバイトオーダーもしくはエンディアンという。最下位のバイト(LSB)から順番にアドレスの昇順に格納するものをリトルエンディアンといい、最上位のバイト(MSB)から順番にアドレスの昇順に格納するものをビッグエンディアンという。