一般

メモ

20世紀を変えた10のアルゴリズム http://top-10-algorithms.sl-jp.com/

Tython

http://d.hatena.ne.jp/gongoZ/20110514/1305372647 Tythonは、XBOXのKinectを利用したインターフェース。これは非常に面白い。将来的には、OSもこのようなインターフェースになると思うが、自作プリポストにもぜひ取り入れたい。

YAGNI

YAGNIは以前から聞いたことあったが、今さらながら再度勉強になる。 http://ja.wikipedia.org/wiki/YAGNI バグを減らすために最も良い方法も、あまりコードを書かないことである。 あまりコードを書かない方法は以下の通り。 Pythonなどの「動的言語を使う」…

C++最高!

自作FEMアプリのベースの部分をC言語で作成してみたが、ベースの部分を作るのさえ苦労したし、そのベースを使う部分も汚いコードになってしまう。よく考えてみると、GUIはC++になるので、それならば初めからC++で作ってしまった方が速いし、統一性もある。GU…

自作アプリC言語化計画

プログラミング言語を以下の基準で分類してみよう。 高級 or 低級 高速 or 低速 高級言語の代表格はPythonでしょう。高速言語の代表格はC/C++でしょう。逆もその通り(低級=C/C++、低速=Python)。 JavaやC#などのVM言語は、その中間と言えるでしょう。 しかし…

メモ

言語別ゲームプログラミング制作講座一覧 (http://d.hatena.ne.jp/seikenn/20080506/1210088946)

なぜ関数型言語は普及しないか (2)

前回の記事の続編。色々反響があったみたいだが、最も気になったのは、「手続き型と関数型はパラダイムが違うのに、なぜ1対1に対応させる必要があるのか」ということ。 私の考え方をもう少し補足説明。私も手続き型と関数型を1対1に対応させるのが正解と…

なぜ関数型言語は普及しないか

言語を利用するための条件は以下の3つになると思う。つまり、言語が普及するための条件とも考えられる。 使用するための必要条件を満たしているか その言語を使用するメリットがあるか デメリットはないか 例えば、D言語はシステム言語であるので、使用する…

クラスの機能に関して

クラスは以下の機能の複合体 a) 名前空間(+アクセス指定) b) マルチプルインスタンス c) ポリモルフィズム(or Duckタイピング) d) Mix-in c)とd)が継承機能で実現されることである。しかし、スクリプト言語などの動的言語であれば、Duckタイピングは普通に出…

来年の抱負

来年勉強するかも。 Go Mecurial (TortoiseHG) PythonのC言語への組み込み PyQt きっと勉強しない。 F# GUIにはいつも悩まされる。正規表現やSQLのような言語外DSLでGUI記述言語とか誰か作ってくれないかな?XAMLはどうなのだろう?

メモ

ソースコードを試せるサイト。 http://ideone.com/

静止画ファイルから動画ファイルを作成する

FFmpegというフリーソフトでコマンドラインで、pngファイルなどからaviファイルなどを作成できる。 参考リンク: http://opensourceaki.blogspot.com/2007/10/ffmpeg_19.html http://blog.k-tai-douga.com/ Avi動画にする ffmpeg -i "c:\tmp\image%05d.jpg" …

浮動小数点数に関するメモ

演算誤差の正体 (http://pc.nikkeibp.co.jp/pc21/special/gosa/eg4.shtml) きちんと勉強したことないので、時間あるときに読むつもり。

TDDに関して

カタチづくり :僕がTDDをやめた理由 (http://d.hatena.ne.jp/u_1roh/20090208/1234095960) どんなにユニットテストを書いても、設計がクソだといつまで経ってもバグは消えない。逆に設計がキレイに決まると、殆どテストしていなくても一発で動いてしまう。初…

PODという考え方

POD(Plain Old Data)とは、C言語で言うところの構造体だと思うが、要はデータのみを表すクラス。Javaでは、POJO(Plain Old Java Object)と言うらしい。 MVCの点から言っても、テストのし易さや可読性から言っても、かなり重要な考え方だと思う。逆に、(状態…

メモ

MS系のコミュニティ (http://d.hatena.ne.jp/matarillo/20090719)

メモ

マンガで分かるLisp (http://lambda.bugyo.tk/cdr/mwl00/mwl00.html) 後で読む。

抽象と単純の度合い

アインシュタインの言葉はプログラミングの設計にも当てはまると思った。 http://ja.wikipedia.org/wiki/KISS%E5%8E%9F%E5%89%87 "everything should be made as simple as possible, but no simpler" 「物事は可能な限り単純化されるべきである。ただし、そ…

メモ

さあ、Yコンビネータ(不動点演算子)を使おう! (http://d.hatena.ne.jp/r-west/20090422/1240400570) 後で読む。

ラムダ計算

きしだのはてな: おとうさん、ぼくにもYコンビネータがわかりましたよ! (http://d.hatena.ne.jp/nowokay/20090409) ラムダ計算に関してすごくよくまとまっている。すばらしい。これを読むと分かったつもりになる。 結局、関数の式ですべてが表せるというこ…

正規表現

正規表現を超える (http://d.hatena.ne.jp/kazu-yamamoto/20090309/1236590230) Perl で正規表現が再利用できない本質的な理由は、正規表現は別の言語であって、Perl ではないからだ。Perl にとって、正規表現は異分子なのだ。Perl の関数を書いても、正規表…

メモ

returnを関数と思ってみる話 (http://www.kmonos.net/wlog/95.html#_1109090307) 読んでいて途中で分からなくなったけど非常に面白い。

3Dアプリ

3DアプリをD言語で作成しようと思っていたが、Pythonは20年かけて開発しているというのを改めて考えて、長い目で見て使えるC#で開発してみることにした。C++でも良いかもしれないが、やはりエンタープライズも意識するとC#の方がベターな気がする。問題点は…

自作アプリのGUIと3Dグラフィック用の言語

低レベル言語と高レベル言語を組み合わせる場合、一般的に高レベルな言語から低レベルな言語を呼ぶのが普通だと思われる。今、仕事に関係したプライベートなメインのアプリをPythonで書いていてJava 3Dでグラフィックを描かせる事を考えていたが、Jythonを使…

GPGPU(General Purpose computing on GPU)

西尾さんが最近ブログでCUDAについて書いていてちょっと調べてみた。CUDAはNVIDIAが開発しているGPGPUをするための言語を含む統合環境らしい。ちなみにGPGPUはグラフィック描画のためのGPUを汎用的な目的で使用するための技術。NVIDIAのCg、OpenGLのGLSL、Di…

動的言語とオブジェクト指向

クラスおよび継承の意義は以下のものだと思う。 ポリモーフィズム(インタフェース) カプセル化(名前空間) マルチプルインスタンス Mix-in(集約、委譲) Pythonなどの動的言語では基本的にはDuckTypingなのでインタフェースという考え方がない。Python3.0ではA…

llvm(Low Level Virtual Machine)

llvmの存在を知った。時代はここまで来ていたのか。C言語はますますマシン語に近くなると思われる。生のCで書いても最適化が必要になるので、下手をしたらllvmで動かした方がパフォーマンスが上がるかもしれない。 py2llvmというのがあるらしいが、期待でき…

メモ

後で読む。 正規表現エンジンを作ろう(1) (http://codezine.jp/article/detail/3039/) 正規表現エンジンを作ろう(2) (http://codezine.jp/article/detail/3154/) 正規表現エンジンを作ろう(3) (http://codezine.jp/article/detail/3158/)

プログラミング言語の動的性

最近、言語の動的性が非常に重要ではないかと思っている。C++やJavaでも大きいアプリを組む場合は汎用性を持たせたい部分を動的な仕様にする。その意味で、DLLやCOM(など。他はあまく詳しくないので分からない)、Javaのリフレクションは非常に重要だと思う。…

再帰の考え方

まず例を見てみよう。 for i in range(10): print i 上記の例では、iの状態を0から9まで変えながらループしている。ここで、1つのループをフレームと呼ぶことにする。次に再帰のコード例を見てみる。 def fib(n): if n==0 or n==1: return 1 else: return fi…