タグ

programmingとProgrammingに関するpoginのブックマーク (44)

  • オブジェクト指向 v.s. 関数型プログラミング

    近年、関数型プログラミングの重要性はいろんなところで叫ばれています。 Javaの最新バージョンに関数型プログラミングに関する新機能が加わりました。 Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています。 プログラミングの教科書の大手、オライリー社から、Javascriptで関数型プログラミングを行うための解説書が発行されました。 関数型プログラミングへの注目度は高まってきています。 おそらく、みなさんは既にオブジェクト指向が何か、を知っています。 でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います。 実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、 関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。 この記事を読む方の中で、「関

    オブジェクト指向 v.s. 関数型プログラミング
  • エロゲーマーのためのSQL -エロゲーマーのためのSQL-

    SQLはデータベースからデータを抽出したりするための言語です。 この文書は、ErogameScapeのデータベースからSELECTを使って自由自在にデータを取得できるようになることを目標にします。 エロゲーをやりはじめる大学生くらいのときに、大学の講義でデータベースを学んで、退屈だなーと思った時に、ErogameScapeでSQLを学ぶことで、少しでもSQLに興味を持って、自身でデータを加工することを学習して頂けると幸いです。 ※私の大学のリレーショナルデータベースの授業では、自分の身の回りの何かをER図に落とし込んで、DBを設計し、PostgreSQLに実装し、実際にデータを入力してSELECTしてみるところまでをやりました。 ER図という概念を学んだとき「ああ、これは面白い」と思いました。 先生はこう言ったのです。 「ER図に落とし込むと、思いもよらなかったことが分かる。」と。 当時、

  • コメントの9割は無駄!~アンチプラクティスから学ぶ洗練されたコメントの書き方~ #code #コード|CodeIQ MAGAZINE

    コメントは基礎的で一般的なものでありながら、「どのようなことをコメントに残すか」は経験のあるプログラマにとっても難しいもの。 この記事では、アンチパターンコメントを見ながら、どのようなコメントを残すべきかについて説明します。 by 馬場美由紀 (CodeIQ中の人) コードは機械のために、コメントは人間のために? プログラミング言語を学ぶとき、コメントは最初に習う項目のひとつです。そして、プログラムであればコメントを含んでいることが普通です。ある研究によれば、ソースコードの平均19%がコメントだそうです。 コードを書くとき、私たちは機械とコミュニケーションを取ることを意識しています。機械はコードを認識してコンパイルしたり実行してくれます。解釈できなければ教えてくれます。プログラマは、コンパイラのためにデータ型を明示するコードを書いたりもします。 一方、コメントは人間とコミュニケーションする

    コメントの9割は無駄!~アンチプラクティスから学ぶ洗練されたコメントの書き方~ #code #コード|CodeIQ MAGAZINE
  • 設計からコーディングまでの「距離」:An Agile Way:オルタナティブ・ブログ

    私の立場は「コーディングは設計(の一部)だ」(by Jack Reeves)である。ここでは、コーディング以前のラフな設計(例えばUMLのクラス図やシーケンス図レベルのアイディア、それがホワイトボードに描かれていようが、紙であろうが、JUDEであろうが、日語であろうが)を、ここでは設計と呼ぼう。 設計とコーディングの距離が増えれば増えるほど、ムダが増える。私の主張は、できるだけ、1つの関連部分の設計とコーディングは、「一人の人」が「少しずつ」行ったほうがよい、ということだ。昔見た「詳細設計書」という細かい実装の詳細を日語である人が書き、それを見て別の人がコードを書く、ということは避けたい。ここでの距離とは、 頭脳間距離。 時間的距離。 の2つ。 頭脳的距離は、物理的に書く人の頭脳の距離だ。1人の人が設計からコーディングまでを含めて担当すれば、この距離は0だ、別の頭脳が担当するならば同じ

    設計からコーディングまでの「距離」:An Agile Way:オルタナティブ・ブログ
  • C++による行列演算クラスの作成

    もう随分と昔の事です。 もう随分と前のことになりますが、きっかけは幾つかの物事でした。 当時、なんとなく知人に借りて読んでいた有限要素法入門書には、行列演算の基礎や行列演算による式の解法が書かれていました。 また、その頃使っていたHP-BASIC(Rocky Mountain Basic)には組込みの配列(行列)演算関数があり、何とはなしに使っていましたが便利なものでした。 ちょうどその頃、C++に興味を持ち始め、そこで知ったのは、C++では演算子(operator、+ とか * 等)をユーザー定義出来るという事でした。 そこで思いついたのが、C++のユーザー定義演算子を使えば、プログラム中でも自然な形で行列演算が記述出来るんじゃないのか?という事でした。 "自然な形で行列演算を記述"するというのは、例えば、行列A、B、Cがあったとすると、 C = A * B; //行列Aと行列Bの乗算を

  • 夏のプログラミングシンポジウムで「数式を綺麗にプログラミングするコツ」を発表してきました - 木曜不足

    8/25 に開催された夏のプログラミングシンポジウム 2013 にて、「数式を綺麗にプログラミングするコツ」というお話をさせてもらいました。運営、発表に携わった&参加者のみなさん、会場のドリコムさん、お疲れ様でした&ありがとうございました。お水おいしかったです。 こちらが発表資料。 数式を綺麗にプログラミングするコツ #spro2013 from Shuyo Nakatani www.slideshare.net この発表、実は一昨年に Tokyo.SciPy #2 でやらせてもらった「数式を numpy に落としこむコツ」のブラッシュアップ版である。 数式をnumpyに落としこむコツ 変更点は R のサンプルコードの追加と、表現をよりわかりやすくリライトしたという2点であり、紹介されているサンプルも含め質的にはほぼ同じ内容である。手抜きっぽくてごめん。 当は他の例を追加したかったのだ

    夏のプログラミングシンポジウムで「数式を綺麗にプログラミングするコツ」を発表してきました - 木曜不足
  • Modelの中身ードメインロジックパターン

    Please select the category that most closely reflects your concern about the presentation, so that we can review it and determine whether it violates our Terms of Use or isn't appropriate for all viewers.

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • git difftool --dir-diff が便利すぎて泣きそうです

    Git の 1.7.11 から git difftool コマンドに --dir-diff というオプションが追加されたのですが、これがライフ チェンジングだと思ったので紹介します。 --dir-diff 登場以前の git difftool は「ファイルごとに順番に差分を表示していく」ことしかできず、使い勝手はいまいちでした。それが、--dir-diff オプションの登場で状況が一変したわけです。 こんな感じの使い心地だよ ある Git レポジトリーで dir1/a.txt と dir2/c.txt を編集したとしましょう。 この状態で git difftool --dir-diff または git difftool -d を実行してみると・・・。 はい、差分のあるファイルが一覧で表示されました。 (difftool に WinMerge を設定して、メニューから [ツリー表示] を有効

    git difftool --dir-diff が便利すぎて泣きそうです
  • 簡単なWebサーチエンジンの作り方 - Imagine with 加藤和彦

    筑波大学は3学期制で,12月1日から3学期が始まりました.3学期には私が担当している学類生(普通の大学の学部生)3年生向けの実験があります.約3ヶ月を掛けて,ほどほどの規模のプログラム作成を行います.私が作り,担当しているプログラム実験は「Webサーチエンジン」といいまして,テキストはこちらに公開しています. この実験,結構,自信作なんです.Javaの基的なプログラミングができることだけを仮定して,漏れのない全文検索を行うWebサーエンジンを作ります.Webデータ収集を自動的に行うクローラー付き.Googleのようなページランキング機能はありませんが,一応,サーチエンジンの基機能を備えます.自慢は,このテキストが実質A4で印刷して2ページくらいであること.数学の小問を解いていくように,順番に小問を解いていくと,最後にはWebサーチエンジンができます. ミソはサフィックス・アレイ(suf

    簡単なWebサーチエンジンの作り方 - Imagine with 加藤和彦
  • IDEA * IDEA

    ドットインストール代表のライフハックブログ

    IDEA * IDEA
  • Cello • High Level C

    #include "Cello.h" int main(int argc, char** argv) { /* Stack objects are created using "$" */ var i0 = $(Int, 5); var i1 = $(Int, 3); var i2 = $(Int, 4); /* Heap objects are created using "new" */ var items = new(Array, Int, i0, i1, i2); /* Collections can be looped over */ foreach (item in items) { print("Object %$ is of type %$\n", item, type_of(item)); } /* Heap objects destructed via Garbage

  • 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 日本語訳
  • Control.Arrow - mzsmsの雑記

    http://www.nicovideo.jp/watch/sm5103132 で、Haskell(というかGHC?)のControl.Arrowに関心を持ったので、すこしいじってみた。 loop その1 まず、理解が難しいloopから。なぜなら、どうもArrowを使うときにはトップダウンで考えないとわけが分からなくなるようなので。そしてあとで出す例もそうだけど、繰り返しをする仕事は一番上がloopになるので、loopに何を入れるべきなのかから考えはじめることになる。 とりあえず、(->)型(関数そのものの型)のloopの定義は次のとおり: class Arrow a => ArrowLoop a where loop :: a (b,d) (c,d) -> a b c instance ArrowLoop (->) where loop f b = let (c,d) = f (b,d)

    Control.Arrow - mzsmsの雑記
  • SULE SLOT: Situs Slot Jackpot dengan Minimal Deposit 10 Ribu

    SULE SLOT adalah pilihan terbaik bagi pemain yang mencari situs slot dengan deposit rendah namun tetap memiliki peluang besar untuk menang. Dengan minimal deposit 10 ribu rupiah, berbagai pilihan permainan slot, serta peluang jackpot yang besar.

  • おねえさんを組み合わせ爆発から救う:完結編おねえさんは星になった - きしだのHatena

    おねえさんを組み合わせ爆発から救うために、経路をZDDとして表したら、すっきりと経路情報が扱えました。 http://d.hatena.ne.jp/nowokay/20121018#1350528607 あとは、このZDDを効率よく構築できれば、おねえさんを救えそうです。このZDDの構築には、クヌース先生の開発したSimpathアルゴリズムを使うと非常に効率よく構築できます。 前回生成したZDDを見ると、同じノードにまとまっているものがいくつかあることがわかります。特に後半になるとどんどん同じパターンになるものがまとめられていきます。 つまり、この経路問題のZDDを構築するときには、いかに同じパターンになるものをまとめるかが鍵になるということです。 Simpathでは、辺の端だけに注目して、同じパターンになっていればそれ以降のノードを使いまわすという考え方で、ノードをまとめていきます。 つ

    おねえさんを組み合わせ爆発から救う:完結編おねえさんは星になった - きしだのHatena
  • SamurAI Codingのゲームルールを勝手に解説 - 西尾泰和のはてなダイアリー

    SamurAI Codingは情報処理学会主催で行われる国際プログラミングコンテスト。9月28日にシンガポール予選、10月11日にシリコンバレー予選、24日に日予選が行われる。 公式サイト: https://samuraicoding.org/ ゲームは簡潔に言えば「サムライと犬を動かして陣取りをするゲーム」で、その動かすアルゴリズムをGunbai Scriptっていうこのゲーム専用の言語で実装して提出する。だから「慣れた言語やライブラリが使えるかどうか」っていう点での有利不利はなく、同じスタートラインから「理解し、よいプログラムを作る」という力を競い合うことができる。 ちなみに10月22日がソースコードの提出期限。24日は対戦が行われる日なので勘違いしないように。 ゲームルール ここではざっくりとルールの概要を解説する。ざっくりとしか書かないので細かいことはオフィシャルのPDFを参考に

    SamurAI Codingのゲームルールを勝手に解説 - 西尾泰和のはてなダイアリー
  • ICFP programming contest 2012 - 兼雑記

    http://shinh.skr.jp/dat_dir/icfp12.tgz 二日目から遊んでました。 <vp0"L"2p0"F"0p0"E"0p0"D"*55p0"C"0p0"B"*25p0"A"0 p"d"00 v< >0"J"0p 0"M"0p v > >00g"F"0g2p 10g"F"0g1+2p :"F"0g2+ v v p0"N"0 < > "G"0p ^ > :"*"- #v_^ 2 v < ^ +1g0"G" _^#!-"@": < > :"\"- #v_ "G"0g v p > 010p 000p > #^~:00g 10g"e" +p:"R"-#^_00g 50p10g 60pv v p0"G"+1 < v< ^p00+1g00 _v#-5-5 < < p0"F"+3g0"F" < ^p01+1g01p000_v#g00< v < > ~$~$~$~$~$ "B" v

    ICFP programming contest 2012 - 兼雑記
  • Applicative Programming with Effects

    Conor McBride and Ross Paterson. in Journal of Functional Programming 18:1 (2008), pages 1-13. Abstract In this paper, we introduce Applicative functors--an abstract characterisation of an applicative style of effectful programming, weaker than Monads and hence more widespread. Indeed, it is the ubiquity of this programming pattern that drew us to the abstraction. We retrace our steps in this pape

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode