「演算子」を含む日記 RSS

はてなキーワード: 演算子とは

2010-11-22

C言語すら知らなかった云々の記事がちょっとひどい

http://www.lastday.jp/2010/11/22/objective-c

 

早速Objective-Cとやらを勉強しようと思ってググってみたら、Objective-CC言語拡張なので先にC言語を学ぶ必要があるという驚愕の事実が発覚!

ググる前に公式ドキュメント読もうよ。

 

この文書はC言語については解説されていないため、C言語にある程度慣れていることが前提となり ますしかし、それほど熟達している必要はありません。Objective-Cによるオブジェクト指向プロ グラミングはANSI Cの手続き型プログラミングとはかなり違っているので、熟達したCプログラマで なくても、さほど不利にはなりません。

  

Objective-Cプログラミング言語 日本語

http://developer.apple.com/jp/devcenter/ios/library/japanese.html

 

Cの知識があるに越したことはないけども、どこまで必要かという話になるとごにょごにょ

少なくとも、Objective-Cを公開している連中が、"Cの手続き型プログラミングとはかなり違う"と言っているのだから、C言語的なコードの流れには(あんまり)ならない(はず)。

それより、フレームワークの扱いに慣れることに重点を置いたほうがいいんじゃないかな。

苦Cで言うところ、文字列やら、ファイルの取り扱いあたりになってくるとかなり微妙で、出来る限り言語機能やフレームワークに任せたい

ポインタはそりゃ、Python使いが見たら発狂するんじゃないかってぐらいポインタ演算子が出てくるけど、オブジェクトインスタンスは全部ポインタなんだから、いっそ気にしなくていいんじゃない? それとも関数ポインタとか使いたい? きっとデバッグが大変だよ。

 

YouTubeVimeoで『Xcode tutorial』で検索すると大量のiPhoneプログラミングチュートリアル無料で視聴可能です!

動画は全部英語

公式の「iOS アプリケーションチュートリアル日本語版)」を読んだ上で言っているのであれば、どこの誰が作ったかも分からない英語動画が、アップル公式の日本語ドキュメントより優れている点を挙げた上で、その動画URLを示して欲しい。

英語なんて分からないよ。

 

初心者オススメです。この本を読めばiPhoneアプリ自分でも作れるかもしれないと思えるようになります

オススメってことは必読じゃないのかな?

 

3.初期投資

Intel Mac + iPhone or iPod Touch + 10,800円

ここから、開発者プログラムの参加費用$99(¥8000程度)を差っ引くと、一冊分しか残らないから、下の方で紹介されてる本が必読なんだろう。

 

たのしいCocoaプログラミング[Leopard対応版]

初心者にわかりやすくObjective-Cの事が書かれています。必読です!

こっちが必読?

内容全く知らないで発言するけども、書評を見てみると、Snow Leopard対応していない旨が書きこまれていて、多少不安

流行りに乗ってMacbook Airを購入した人は、大抵Snow Leopardのはず。

記事には、"二ヶ月前"からとあるので、少なくとも記事を書いた人はMacbook Airではないのだろう。

 

自分アプリの必要な部分だけを勉強すれば、それだけリリースも早くなりますモチベーションも下がりません。全部網羅しようと思うと開発自体を頓挫しかねません。

遅延評価勉強法の考えで行くと、C言語を先に勉強する必要はなかったと思うけど、どっちなんだろう。

その辺も遅延で気付いたのかな。

 

英語力がなくてもアプリは作れますが、英語がわかると公式ドキュメントや先にあげたYouTubeチュートリアル動画も理解できるので簡単な英語くらいはできる方が良いです。

日本語の公式ドキュメントがあるので、是非参照して頂きたいです。

 

iOS Reference Library日本語

http://developer.apple.com/jp/devcenter/ios/library/japanese.html

Apple Developer Documentation日本語

http://developer.apple.com/jp/documentation/japanese.html

 

 

日本語ユーザが増えたら、Xcodeのクイックヘルプとかドキュメントとかも日本語化してくれないかなあ。

それとも、実はただの調査不足で既にあったりとか…

2010-08-16

if も 3項演算子も for も do whileすらもない ifなしの Fizz Buzz

だから、プログラム記法がなくても<>が無いから化けないぜ

#include "stdio.h"
#include "stdlib.h"

int cnumber=0;

void fizz(){
    printf("fizz");
    cnumber++;
};

void nonfizz(){
};

void buzz(){
    printf("buzz");
    cnumber++;
};

void nonbuzz(){
};

void number(int i){
    printf("%d",i);
    cnumber = 0;
}

void nonnumber(int i){
    cnumber = 0;
}

void myexit(void){
    printf("\n Hit return key to exit\n");
    getchar();
    exit(1);
}

void noexit(void){
}

void (*pfizz[3])() = {fizz,nonfizz,nonfizz};
void (*pbuzz[5])() = {buzz,nonbuzz,nonbuzz,nonbuzz,nonbuzz};
void (*pnumber[3])(int) = {number,nonnumber,nonnumber};
void (*pmyexit[2])() = {noexit,myexit};

int main(int argc, char* argv[])
{
    int loopmax = (111+222+333)*10;
    int i = 1;
    head:
    (*pfizz[i%3])();
    (*pbuzz[i%5])();
    (*pnumber[cnumber])(i);
    (*pmyexit[!(loopmax-i)])();
    printf(",");
    i++;
    goto head;
    return 0;
}

includeが<>を使ってないので必要ならパスは各自で通してねw

2010-08-05

http://anond.hatelabo.jp/20100805154559

トヨタのような規模の会社で、開発環境を統一・限定するのは、コストダウンとしても悪くないし、従業員はその環境で開発できればOKと言うのはあります。

また、学習としてモデルを使って行うのは、悪くないとも思う。

こうしたツールでは、シミュレーションテストも行えるわけで、設計上の問題点も見つけやすいですし、言語的な考え方でのアプローチとは異なる思考で作れますからね。

設計と実装を考えたときに、実装は違う工程だというのは、あながち間違いないではないですし、設計に焦点を当てるのも効果的だとは思います。


ただまぁ、大型機械などではなく、小型の機械だったりすると、リソースの関係で高級言語が使えなかったりします。

C++で書いたコードが実際に使うメモリ量とか、ぱっと計算できないですよね。

a = b ;

と言うコードの実態は、「=」演算子の実装次第ですし。

2010-07-28

http://anond.hatelabo.jp/20100728204309

もはや3項演算子を使いたいという事が目的になってやがるw

そもそもCとかC++初心者で?のことを良く理解していないレベルに読みにくいよ

だいいち、そのレベルなら ifで書けばいいだろうと。

そもそも

while( (*p++ = *c++) != '\0' );

のような 異なる演算 を 1文に書くのがCスタイルだから

c = param [ a>=0?a:0 ];

みたいな、使い方 をして 他の演算引数に3項演算子を使ってるならわかるが

単なる代入だけで、しかも複文でネストすんならifで書けや!

ネストするってことは条件があるていど複雑ってことで、あとで、デバッグ用のif入れたりprintf入れたり改造する可能性があるってことを考慮してくれ。

 

変に?をネストさせて、『他人が間違えて』間違った改造いれたりしたら、どうするつもりなんだと?

間違った奴が悪い?複雑なネストして、間違いやすいコードを残した奴も悪いよ。

 

簡単にいえばたった、5行のスパゲティ

2010-07-27

可読性が悪いにもほどがある・・・と思った1関数

http://blog.livedoor.jp/dankogai/archives/51490675.html

inline U64 powmod(U64 base, U64 power, U64 mod){

return base >= UINT_MAX ? powmod_gmp(base, power, mod)

: power >= UINT_MAX ? powmod_gmp(base, power, mod)

: mod >= UINT_MAX ? powmod_gmp(base, power, mod)

: powmod_64(base, power, mod);

}

3項演算子を連打とか・・・

if(base  >= UINT_MAX){
 return powmod_gmp(base, power, mod);
}else if(base  >= UINT_MAX){
 return powmod_gmp(base, power, mod);
}else if(mod   >= UINT_MAX ){
 return powmod_gmp(base, power, mod)
}else{
 return powmod_64(base, power, mod);
}

って事で、要するに

if(base < UINT_MAX && power <  UINT_MAX && mod < UINT_MAX){
 return powmod_64(base, power, mod);
} else {
 return powmod_gmp(base, power, mod)
}

って事じゃないのか?実際Cは左辺優先評価で1つ目がFALSEの場合2つめ以後は評価されない(してはいけない)でelseにジャンプ だからif演算の回数だけなら等価

まぁ、確かに、パイプラインを考えればthen節とelse節は等価ではないので、データによって真ん中の書き方のほうが下より早いとか遅いという差はでるけど・・・

 

なくても、真ん中か、下の書き方でいいよなぁ。

まかり間違って

if(base >= UINT_MAX || base  >=  UINT_MAX || mod >= UINT_MAX){ 
 return powmod_gmp(base, power, mod)
}else{
 return powmod_64(base, power, mod);
}

と書いても、おそらく、コンパイラ先生がただしく最適化してくれればおなじになるだろう。正しく最適化しないと、コレは遅い可能性もあるが、そんなことはまず無いだろう。

 

いや?演算子が悪いとは言わないけど、チーム組んで初級の若いプログラマがこういうコードを読めるとは思わないし、読む必要があるとも思わないんだが・・・

ジェネリックに、みんなに分かりやすく。

トリッキーに書くのもいいけど、それは、速度かメモリかで恩恵が受けられる場合で、メリットがないなら、初心者でも読みやすく、メンテしやすくする。って間違ってるのかなぁ?

?連打の方が世の中読みやすいのか?

 

どうでもいいけど・・・UINT_MAX って、最大値+1じゃなくて、最大値だよなぁ・・・。確か>=の=の有り無し逆じゃね?

もっと、どうでもいいけど、mmレジスタとxmmレジスタmod演算ってクロック数違うんだっけ?だれか、教えて。ifでパイプライン崩すのとどっちがいいんだろう。

2010-03-04

RubySchemeより優れているたった一つの理由

Rubyは、純粋オブジェクト指向と評されるHaskellの直系と遇されるのが常だが、私の見解は、むしろマクロアセンブラにより近い、というものなのだ。Rubyにおいて継続すなわちcontinuationの使用はもはや常態とも言えるが、一方のSchemeでは、Algol的な例外機構の残滓により、Unixシグナルに留まっている。

制御構造のみならず、データ構造の観点からも、RubySchemeよりはるかにポストモダンと言えるだろう。淵源へと遡れば、マクロアセンブラPascalの対立の図式へと導かれる。私は、Schemeデータ構造は、唾棄すべき要因を含むという思いを抱く誘惑に抗いかねるのだ。そうであるならば、民主党政権交代は失敗であったと結論せざるを得ない。

もとより、アインシュタイン相対性理論からも、明らかにRubyに軍配が上がるだろう。SchemeSchemeたらしめているブロックスコープ構造にしろ、今となっては決して珍しいものとは言えない。いやむしろ、真に純粋関数型を指向するなら、Schemeへの共用体の導入をこそ今真摯に検討すべきなのだ。演算子オーバーロードですべての問題が解決するわけではない。この実存的な課題をただ黙殺しているSchemeに、私は異議を申し立てる。

2009-09-01

http://anond.hatelabo.jp/20090831161712

yearのうるう年の処理

うるう年の処理は

  1. 400で割り切れる年はうるう年
  2. それ以外で100で割り切れる年は平年
  3. それ以外で4で割り切れる年はうるう年
  4. それ以外は平年

という処理なら分かる。でも実際のコード

  1. 400年から799年まではうるう年
  2. それ以外で100年から199年は平年
  3. それ以外で4年から7年まではうるう年
  4. それ以外は平年

という処理になってる。

あと、urの処理で頭が混乱してると思うので、

  • i年の秒数加算(urで判定させつつ)
  • (i+1)年のur(うるう年)の判定

で2パートに分けると、わかりやすくなるよ。

monthの処理

  • n月以上なら、(n-1)月の秒数を足す

という処理が、実際のコード

  • n月なら、(n-1)月の秒数を足す

という表現になっていて、3月以降の加算が無効になってる。

off-by-one error(一個外れエラー)にならず、正しく書けているところ、

3月以降に、ちゃんとうるう年の処理が入ってるところは素敵。

演算子を正しく理解すれば、上達するはず。

2009-06-18

http://anond.hatelabo.jp/20090618121442

もともと

if("0x0a" == 10){

}

を成り立たせた方が都合がよい。というのの応用で

"0x0a" == 10 == "10" となるだけだからねぇ。

if ("0x0A" == 0x0A) {
    print '(´ε` )チュッ';
}else{
    print '\(^o^)/';
}

は'(´ε` )チュッ'だしねぇ。

"0x0a" == 10 == "10" == 0x0Aなんだよね・・・

この辺がPHP世界

数字に変換されると言うよりは

==演算子、 おおよそ意味が一緒

===演算子、 おおよその意味が一緒で、型も一緒

だからねぇ。

もともと、HTMLXMLの中の数字っぽい物を数字として処理する方が、多いからこうなってるだけで・・・

文字列キャストしたら0になるっていうのが、単なる他の言語の決めの問題だからねぇ。

少なくともC/C++言語では文字列キャストしたら、ポインタアドレスが返ってくるから0じゃねーし。

atoiの事を言っているなら、それキャストじゃなくて、関数つかってるし・・・関数使うなら=タイプした方が速いだろうという、マインド

言語毎の仕様差分は、黙って覚える物で文句を言う物じゃないと思う。

http://anond.hatelabo.jp/20090618115804

===なんていう意味不明変態演算子をわざわざ使わなきゃいけない言語なんて…。

まぁPHPさわったことないけど。

http://anond.hatelabo.jp/20090617130518

===演算子を使えよ

if ("0x0A" === "10") {
    print '(´ε` )チュッ';
}else{
	print '\(^o^)/';
}

\(^o^)/

==演算子は方をキャストしながら、ほぼ同じなら同じと見なせという意味

HTMLとかで曖昧に比較したいというのがベース言語なのに何を言う・・・

厳密に比較して欲しいときは、型キャストを明示的に禁止する===を使えば良いのに、何が不満なんだろう。

if ("0x0A" === "0x0A") {
    print '(´ε` )チュッ';
}else{
	print '\(^o^)/';
}

(´ε` )チュッ

8進数使いたいという場合がよくわからないけど、それが必用なら、必用になった人がコードパッチを当てて

試験して、それを、PHPの開発チームに送りつけてコミットさせれば、次のバージョンからサポートされるでしょ。

オープンソースなんだから、必用になった人が機能を追加する。これ基本。

http://anond.hatelabo.jp/20090617164618

文字列比較を意図するのであれば、

if (strcmp("0x0A", "10")) {
    print '(´ε` )チュッ';
}

とすべき。当然チュッされない。

strcmp()は文字列が等しいときに0になるから、これだとチュッされるんじゃ。

if (strcmp("0x0A", "10") == 0) {
    print '(´ε` )チュッ';
}

if ("0x0A" === "10") {
    print '(´ε` )チュッ';
}

の方が楽かなぁ?

これならどちらでもチュッされないはず。

PHPの比較に付いてはこのあたりを見ると良いと思う http://www.php.net/manual/ja/types.comparisons.php

まぁ、なんだ。==演算子を信頼しちゃダメって事だな。

2009-06-17

http://anond.hatelabo.jp/20090617130518

PHPで一番困るのは、この手の変換が直感的でも統一的でもなことだな。

自分が何をしようとしているのか」が素直に書けないんだよね。

言語として元になっているPerlにも文字と数値の暗黙的な変換があるけど、

数値と文字で比較演算子が違うから、常に「演算子が要求している型」に変換する。

演算子の数は増えてしまうけど、これなら意図しない型に変換されてしまうことはない。

なんとなく、もっとうまくやろうとして失敗したふいんき

PHPの比較の素晴らしさ加減は正常


if ("0x0A" == "10") {
    print '(´ε` )チュッ';
}

チュッ。されちゃいます。

文字列であっても整数解釈できる文字列の場合は勝手に型変換しやがる今世紀最大の愚行を犯してしまうってのは有名な話だよね。

文字列であっても整数解釈できる文字列の場合は自動的に整数に型変換してくれる超便利機能があるってのは有名な話だよね。

だけどなんでコレが一致するかわけがわからんかった。

0x0Aは10進数で10になるので一致する。と、言いたいところなんですがそう単純な話じゃないんだ。

以下の例を目ん玉見開いて見て欲しい。


var_dump(0x0A);
var_dump("0x0A");
var_dump((int)"0x0A");
var_dump((float)"0x0A");
var_dump(intval("0x0A"));

実行結果
int(10)
string(4) "0x0A"
int(0)
float(0)
int(0)

つまり文字列の"0x0A"ってやつはどう考えても0と解釈されるはずなんだ。だから上記if文が本来一致するはずがいない。

でも実際は何故か10と解釈されて一致してしまう。

そう、つまり演算子で比較した場合、やらんでもいいのにわざわざ16進表記かどうかまでチェックして余計なお世話的うんこ変換しやがるということになる。

そう、つまり演算子で比較した場合は、16進表記かどうかまでチェックして10進数に変換してくれているということになる。

明示的に書くならこんな感じだ。


if (intval("0x0A",16) == "10") {
    print '(´ε` )チュッ';
}

クソが。

なるほどねー。

ただでさえ文字列同士の比較なのにintに変換されるだけでもミソ糞うぜぇのに、わざわざ16進数の場合は10進数に変換してくれる超糞尿仕様

文字列同士の比較であってもintに自動変換してくれるだけでも素晴らしいのに、それに加えて16進数の場合は10進数に変換してくれる超便利仕様

ってこたぁ、8進数表記の場合も糞糞マジ死ぬほど余計なお世話するんだろうなぁと思ってしぶしぶ試してみた。

ということは8進数表記の場合もこの素晴らしい自動変換しれくるのかなと思って試してみた。


if ("0x0A" == "012") {
    print '(´ε` )チュッ';
}
else {
    print '\(^o^)/';
}

実行結果
\(^o^)/

おー、さすがPHP!、やっぱ8進数の場合は10進数と似てるから8進数と見なすよりも10進数と見なしたほうが効率いいですもんね。いやーわかってるなー。ますますPHPが好きになりました。I Love PHP. We Love P☆H☆P!

はは、はははっ、ははははっ。やるならやる!やらないならやらない!どっちかに統一せーやこのプリンシパル校長ヘッドハンティンピープルぺーぺーぽりんき味噌マッチョ変態改造エアガン陵辱-2くらいのスカンク殺ろうがぁああああああ★ああああああああああああああああああああああああああああああああああああああfじょ★えいjfsきじぇいつつしまじいのそるいつのだ★ひろけがきちもするけけけそあいんぼろうれあああぁあああああaaaaaa


プログラ増田のあなぐら

2009-05-24

腐女子はマセマティック?

攻め受けの●●×□□は、□□×●●と等価ではないようで、

●●×□□=□□×●●は、●●⇔□□でリバとなるらしい。

これがすごく演算子的に見えて、通常攻め受けは非可換で、

リバのとき可換になるようで、うむ数学だ。

ということはだ、[●●,□□]=●●×□□-□□×●●=?は、

可換ならば、=0で、

非可換ならば、≠0で、=アッーか?


当然だが落ちはないが、題名は新井輝風に(キリッ。

2009-05-15

http://anond.hatelabo.jp/20090515131444

君の感覚の問題でもあるから「何故量子力学虚数が必要か」っつー話(の概略)に留まるけど、

量子力学の基本方程式ニュートン力学運動方程式電磁気学マクスウェル方程式みたいなもん)である

シュレディンガー方程式は、

i(h/2\pi)d/dt \psi = H \psi

という形をしてて(Hはハミルトニアンというある演算子)、時間について1階の微分項を含むわけだ。

1階の時間微分ってのは、古典物理世界では散逸に対応するんだな。摩擦とか。

そのままだとどうやっても散逸してエネルギー消失しちゃうんだ。

でも電子はいつまでも原子核のまわりを回ってて、全ての原子が潰れちゃうなんていう現象はこの宇宙では起こって無い。

じゃあどうするかっつーと、1階微分項の係数に虚数を使うしかないんだよ。

そういうものを考えてみると、これがびっくりするくらい実験とピッタリ合うし、未知の現象とかガンガン予測しちゃったんだな。

だからまあよくわかんねーけど正しいとしか思えない、という感じになってるわけだ。

2009-02-25

インクリメント演算子の謎

 インクリメント演算子は、どうも言語によってかなり扱いが違うことに気がついた。

後置インクリメント

まず、実行しようと思うコードの擬似表現は以下。このコードを実行すると、どのような結果が出力されるだろうか? まずは頭の中で考えてほしい。

なお、「a++」の部分は「後置インクリメント」と呼ばれ、式自体の評価値はインクリメント前の値になる。つまり、「a++」の評価値はいずれの言語でも1になる。

a = 1;
print (a + a++);

計算し終わっただろうか。では上記コードを各種言語で実行した場合の結果を見てみよう。

言語間で結果が違うことがわかるだろう。まずは、なぜこれらの言語間で結果が違うのか、納得のいく説明を考えてほしい。

前置インクリメント

考え終わったら次の実験をしてみよう。

次は、後置インクリメントではなく前置インクリメントを使ってみる。つまり、下記のようなコードである。

なお「++a」は、計算後の値が評価値になるため、いずれの言語でも2と評価される。

a = 1;
print (a + ++a);

 こちらも、各種言語で実行した結果を見てみよう。

 さて、後置インクリメントの結果を見て考えた「納得のいく説明」は、こちらでも通用しただろうか。

見出しの前置と後置が逆だったので修正しました

2009-01-11

年明けに大掃除した。

年明けに大掃除したら、実家から持ってきた書籍の中に小学生の時に

初めて購入したパソコンマニュアルが入っていた。

サンヨーパソコンWavy6とか書いてある。

その中にチラシが入っていたのだが

「お知らせ

 本機は日本電信電話公社より認定をうけており、キャプテンユニットMPC-CAP1などの機器との組み合わせで

 ビデオテックスターミナルとしてご使用頂けます。」

とか書いてある。

キャプテンユニットってなんなんだろう・・?

CAPTAINシステムと何か関係あるんだろうか。

ビデオテックスターミナルってなんなんだろう?

当時はこんなチラシ見もせずにBASICとデーレコばかり操作していたからな。

このチラシが何を意味する物なのか今となっては謎になっている。

それよりも、その他にもBASICマニュアルなんぞ出てきたのだがEOFとかBSAVEとかON SPRITE GOSUBとか理論演算子とか掲載されてる。

おかしいなぁ・・小学生時代にはこれも覚えてスプライトを駆使してマシン語を16進数で作成、3色キャラクタなんぞを作ってBASIC

プログラムを作って遊んだはずなのに。今ではすっかり忘れてしまった・・。

あのままもっと色々とやっていれば勉強できたのかなぁ。


そんな自分も今では派遣切りに合い、正社員にもなれない無スキル無職男になってしまった。

自分の頭のスペックはZ80Aで止まっているに違いない。

2008-12-26

http://anond.hatelabo.jp/20081225235924

アプリ作者です。

フィードバックありがとうございます。

ゲームの大まかな流れを説明します。

周辺の8つの数値のいずれかをドラッグして、

6つの演算子のいずれかにドロップすることで、

中央の数値とドロップした値との演算が行われ、

その結果が新たな中央の数値となります。

この演算を繰り返すことで、中央の数値を

targetとして表示されている目標値に近づけていき、

中央の値と目標値が一致したところでクリアとなります。

問題をクリアすると、次の問題に進みます。

演算子を周辺の数値にドラッグアンドドロップすることでも演算は行われます。

ある数値を他の数値にドラッグアンドドロップすると数値が入れ替わります。

こんなややこしい操作体系、何の説明も無しに分かるはずがないですね…すいません。

特に、ドラッグアンドドロップさせるというのは無理がありました。

できるだけ少ない操作で遊べるように、ドラッグアンドドロップ制を採用したんですが、

ドラッグ中に数字がポインタにくっついてくるようにする、などの画面効果は検討します。

ヒューマンインタフェースの本もいつか読みます。

それから、そもそもゲームが面白くないというのも致命的ですね。すいません…。

与えられた9つの値からより早く目標値を作り出すというところに、

パズル的な要素があるかなと考えたんですが…。

ほとんどが足し算と引き算で終わってしまう、とのことですが、

どうすればより早く目標値を作り出せるか、と考えると、

掛け算や割り算も必要になってくるかと思います…。

このような問題を解決する技能が他に使えるかどうか、という点については、

与えられた値からより早く目標値を作り出す過程を考える上で、

暗算を何度も行う必要があると思います。

それがいわゆる脳トレになるかな、と。

…今更脳トレも無いか。

http://anond.hatelabo.jp/20081225235924

俺も、最初使い方が分からず、トラックバックで使い方説明してくれた人のを見て初めてわかった。

使い方が分かりにくいのは確かだが、ゲーム性を高めるためのサウンドとかグラフィックは、それなりによくできていると思うぞ。

ちょっとした改善点で、ずっと使い方が分かりやすくなると思うので、以下、下にあげておく:

1)数字を演算子ドラッグアンドドロップする必要性はどこにある?

数字をクリック演算子クリック、じゃだめなの?

数字をクリックすると、数字を赤くするとかして、「今、選択されている」ことを示せばいい。

違う数字を選びたかったら、違う数字をクリックすると、選択が違う数字に移るようにすればいい。

ボタンがたくさん付いている中で、「押す」ことは想像できるけど、ドラッグアンドドロップ想像しにくい。

2)どうしても、ドラッグアンドドロップにしたい場合

ドラッグアンドドロップだと分からなかったのは、ドラッグしている最中ポインタにくっついてくるものが何もないから。

どうしてもドラッグアンドドロップにしたいのなら、ドラッグ中に数字がポインタにくっついてくるようにするべき。

2008-12-25

BGMが応援ソングだった。

俺は代入演算子と比較演算子の区別もつかなかった。

心が折れたが今夜は聖夜なのでそれなりである。でもきっと明日もそれなりだ。来年もそれなりだろう。社会はそれなりよりはひどい状況だろうが、やっぱり俺はそれなりだった。

2008-11-07

Haskellerと付き合い始めたのだが

http://anond.hatelabo.jp/20081105135432

彼女ができた。なんとHaskellerだ。

8月に参加したLLイベントで知り合い、10月から付き合い始めた。なんでLLイベントにHaskellerが…

これまで5人くらいのプログラマと付き合ったことがあるけれど、一般的なプログラマと比較して

といった点が目立つ。

見た目はLisperを少し丸くしたようなかわいらしさがあるのだけれど、要するに中身はPrologだ。

初めは戸惑いもあったが、案外こういうプログラマとつきあうのは楽で楽しいと分かってきた。

コードは深い問題もFizzBuzzのような軽い問題も内容を伴って書ける。

いろいろメタプログラミング・アロー記法ユニコード演算子などを試そうとするなど好奇心が強い。

純粋関数型言語も習得しているというのに論理系の言語も習得しようと勉強していて向上心の強さがある。

反面、入出力のコード論理的・合理的なのかな…と思いきや、

IOモナドコントロールできない自分に「おかしいな、普段はこんなはずじゃないのに///」と恥ずかしがる。

Haskeller、はっきり言ってオススメです。

問題はどうやって知り合うかだけれど、職場(あるのか?)という戦闘モードの時に誘うのではなく、.emacsなどを書いているオフタイムが狙い目としか。

初めの一歩が難しいだけで、後は一般的な女の子よりも付き合いは簡単かも。

だって普段Makefileに書いている論理と同じでいいんだから。

2008-10-12

[][]Grass

Table of Contents: ||||||

オープンソースソフトウェアGISOpen Source software and GISOpen Source software and GIS 1 (6)
オープンソース概念Open Source concept1 (2)
オープンソースGISとしてのGRASSGRASS as an Open Source GIS3 (2)
ノースカロライナサンプルデータセットThe North Carolina sample data set 5 (1)
この本の読み方How to read this book5 (2)
GIS概念GIS conceptsGIS concepts 7 (14)
一般的なGIS原理General GIS principles 7 (6)
地理空間データモデルGeospatial data models 7 (4)
GISデータシステムの構成Organization of GIS data and system11 (2)
機能functionality
地図投影法と座標系Map projections and coordinate systems 13 (8)
地図投影原理Map projection principles13 (3)
一般的な座標系とdatumsCommon coordinate systems and datums 16 (5)
GRASSをはじめようGetting started with GRASSGetting started with GRASS 21 (32)
第一歩First steps21 (16)
GRASSダウンロードインストールDownload and install GRASS 21 (2)
データベースコマンド構造Database and command structure 23 (3)
GRASS6のためのグラフィカルユーザインタフェイス: Graphical User Interfaces for GRASS 6: 26 (1)
QGISgis.mQGIS and gis.m
ノースカロライナを用いてGRASSを開始Starting GRASS with the North Carolina 27 (3)
データセットdata set
GRASSデータディスプレイ3D可視化GRASS data display and 3D visualization30 (4)
プロジェクトデータ管理Project data management34 (3)
新しいプロジェクトGRASSを開始Starting GRASS with a new project37 (7)
aのための座標系の定義Defining the coordinate system for a 40 (4)
新しいプロジェクトnew project
空間投影されていないxy座標系Non-georeferenced xy coordinate system 44 (1)
座標系の変換Coordinate system transformations44 (9)
座標系のリストCoordinate lists 45 (2)
ラスタベクトル地図投影Projection of raster and vector maps 47 (1)
GDAL/OGRツールで、再投影Reprojecting with GDAL/OGR tools 48 (5)
GRASSデータモデルデータの交換GRASS data models and data exchange53 (30)
ラスタデータRaster data54 (16)
GRASS2Dの、3DラスタデータモデルGRASS 2D and 3D raster data models 54 (2)
領域の統合と境界Managing regions and boundaries raster map resolution
ジオコードされたラスタデータインポートImport of georeferenced raster data58 (8)
スキャンされた歴史地図インポートとジオコーディングImport and geocoding of a scanned66 (3)
ラスタデータエクスポートRaster data export 69 (1)
ベクトルデータVector data70 (13)
GRASSベクトルデータモデルGRASS vector data model70 (3)
ベクトルデータインポートImport of vector data73 (5)
xy CAD描画のための座標変換Coordinate transformation for xy CAD drawings 78 (2)
ベクトルデータエクスポートExport of vector data80 (3)
ラスタデータを使うWorking with raster data 83 (86)
ラスタ地図を表示、管理Viewing and managing raster maps 83 (22)
ラスタデータの表示と、カラーテーブルの割り当てDisplaying raster data and assigning a color table 83 (3)
ラスタ地図に関するメタデータを管理Managing metadata of raster maps 86 (2)
ラスタ地図クエリプロファイルRaster map queries and profiles88 (2)
ラスタ地図統計Raster map statistics90 (1)
ラスタ地図ズームと、部分集合の生成Zooming and generating subsets from91 (1)
簡単なラスタ地図の生成Generating simple raster maps92 (2)
再分類と再スケーリングReclassification and rescaling of94 (3)
ラスタ地図raster maps
ラスタ地図タイプの記録と値の置換Recoding of raster map types and value replacements 97 (2)
カテゴリベルの割り当てAssigning category labels99 (4)
マスキングとノーデータ値の取り扱いMasking and handling of no-data values 103(2)
ラスタ地図の計算Raster map algebra 105(10)
整数と浮動小数点データInteger and floating point data107(1)
基本的な計算Basic calculations 108(1)
“if"状態を使うWorking with ``if'' conditions109(1)
r.mapcalcのNULL値の取り扱いHandling of NULL values in r.mapcalc 110(1)
r.mapcalcでMASKを作成Creating a MASK with r.mapcalc 111(1)
特別なグラフ演算子Special graph operators112(1)
相対的座標での近傍演算Neighborhood operations with relative coordinates113(2)
ラスタデータの変換と内挿Raster data transformation and interpolation 115(11)
離散的ラスタデータ自動ベクトルAutomated vectorization of discrete raster data115(3)
連続フィールドの等値線の描画を生成Generating isolines representing continuous fields 118(1)
ラスタデータのリサンプリングと内挿Resampling and interpolation of raster data 119(5)
ラスタ地図オーバーレイマージOverlaying and merging raster maps 124(2)
ラスタデータの空間分析Spatial analysis with raster data126(29)
近傍分析とクロスカテゴリー統計Neighborhood analysis and cross-category statistics126(7)
ラスタフィーチャのバッファリングBuffering of raster features 133(2)
コストサーフェイスCost surfaces135(5)
地勢と分水界分析Terrain and watershed analysis 140(13)
ランドスケープ構造解析Landscape structure analysis 153(2)
ランドスケーププロセスモデリングLandscape process modeling 155(11)
文学的、地下水モデルHydrologic and groundwater modeling155(3)
浸食と宣誓証言モデルErosion and deposition modeling158(8)
ラスタベースモデルと解析に関するまとめFinal note on raster-based modeling and analysis166(1)
ボクセルデータを使うWorking with voxel data166(3)
ベクトルデータを使うWorking with vector data 169(94)
地図の表示とメタデータ管理Map viewing and metadata management169(4)
ベクトル地図を表示Displaying vector maps 169(3)
ベクトル地図メタデータ維持Vector map metadata maintenance172(1)
ベクトル地図属性管理とSQLサポートVector map attribute management and SQL support173(14)
GRASS6でのSQLサポートSQL support in GRASS 6 174(7)
サンプルSQLクエリ属性変更Sample SQL queries and attribute modifications 181(4)
地図再分類Map reclassification 185(1)
複数の属性があるベクトル地図Vector map with multiple attribute tables: layers 186(1)
ベクトルデータデジタルDigitizing vector data 187(5)
位相データデジタル化の一般原理General principles for digitizing topological data187(2)
GRASSでの対話的なデジタイジンInteractive digitizing in GRASS189(3)
ベクトル地図クエリ統計Vector map queries and statistics192(4)
地図クエリMap queries192(2)
ベクトルオブジェクトに基づくラスタ地図統計Raster map statistics based on vector objects194(2)
ポイントベクトル地図統計Point vector map statistics196(1)
幾何学操作Geometry operations196(20)
位相的な操作Topological operations 197(6)
バッファリングBuffering203(1)
フィーチャの抽出と境界のディゾルブFeature extraction and boundary dissolving204(1)
ベクトル地図を修理Patching vector maps 205(1)
ベクトル地図インターセクディングとクリッピングIntersecting and clipping vector maps206(3)
ベクトル幾何の変換と3Dベクトルの作成Transforming vector geometry and creating 3D vectors 209(2)
点からのコンベックスハルとトライアンギュレーションConvex hull and triangulation from points 211(1)
同じ位置の掘り出し物の複数のポイントFind multiple points in same location212(2)
一般的な多角形境界の長さLength of common polygon boundaries214(2)
ベクトルネットワーク分析Vector network analysis216(11)
ネットワーク分析Network analysis 216(5)
直線的な参照システム(LRS)Linear reference system (LRS)221(6)
ラスタへのベクトルデータ変化Vector data transformations to raster227(3)
空間的な内挿と近似Spatial interpolation and approximation230(19)
内挿方法を選択Selecting an interpolation method230(5)
RSTによる内挿と近似Interpolation and approximation with RST 235(2)
RSTパラメタの調整: テンションスムージングTuning the RST parameters: tension and smoothing 237(4)
RSTの精度を評価Estimating RST accuracy241(3)
セグメント化処理Segmented processing 244(3)
RSTとのトポグラフィー分析Topographic analysis with RST247(2)
ライダーポイントクラウドデータを使うWorking with lidar point cloud data249(8)
ボリュームに基づくは内挿Volume based interpolation 257(6)
3番目の変数の追加: 高度のある降水量Adding third variable: precipitation with elevation 258(3)
ボリュームとボリューム-時間内挿Volume and volume-temporal interpolation 261(1)
地球統計学とスプライGeostatistics and splines262(1)

2008-10-08

プログラム言語入門サイトをぐぐってみる

Web 系の言語(って何?)に対して、 Google で 「○○ 入門」で検索してみる

Perl

Perl基礎入門 (www.kent-web.com)
"このコーナは、初心者向けのPerl入門ページであり、また、自分自身の覚え書きという位置づけで作成していきます。 "
Perl入門 (www.perlplus.jp)
"プログラミング言語としてPerlを使った方法を学習される型を対象として、 Perlによるプログラム記述方法を確認していきます"
とほほのperl入門 (www.tohoho-web.com)
"perlとは / 実行方法 / 基礎知識 / 定数・変数・値 "

21世紀にもなってまだKENTかよ、という気は若干しなくもないですが、入門レベルだけで終わる需要が多いことも考えるとこんなもんだと思います。

PHP

PHP入門 (www.scollabo.com)
"この章では、PHPの作成を支援するために解説しています。"
初心者用PHP入門 (www.standpower.com)
"初心者PHP入門ではWindowsでの環境構築方法、Apache2のインストールPHPインストールPHPの文法、関数演算子等の基礎知識の解説をしています。"
PHP入門 (www.phpbook.jp)
"これからPHPプログラムを開始される方を対象として、PHPの基本的な構文の解説とプログラム記述方法を学習していきます。 "

書籍サイトも全部糞、公式のマニュアルのみ正確正当」というPHPです(そう思うなら翻訳しっかり訳してくれ)。公式マニュアルは手元に置いておきましょう。

Python

Python 入門 (www.f7.ems.okayama-u.ac.jp)
"Python の紹介から C とのインターフェースまで、順を追って解説。"
Python入門 (www.pythonweb.jp)
"Pythonを使ってプログラミング学習を開始される方を対象として、Pythonを使ったプログラム記述方法や実行までをサンプルを使いながら順に学習していきます"
python入門 (word.starword.org)
"私がこう理解したというレベルお話です。用語等不適切な点があるかもしれません。"

日本語ドキュメントのいいのが無いのだけが欠点であるところのPythonさんです。まあこんなもんだと思います。

Ruby

さて、順番的にオチです。Rubyです。

Ruby入門 (www.lab.ime.cmc.osaka-u.ac.jp)
"阪大情報教育システムには、Ruby で作られたツールがたくさん用意されています。
これらのツールの仕組みを理解し、改良していくためにも、Ruby の使い方をマスターしましょう。"

まず、講義用の1枚ページが引っかかりました。このサイト自体はなんにも悪くありませんが、このサイトが国内で1位になるのってどうなのよ。どうなのよう。

Ruby入門 (www.rubylife.jp)
"これからRubyプログラムを開始される方を対象として、Rubyの基本的な構文の解説とプログラム記述方法を学習していきます"

次に、PerlでもPHPでもPythonでもあった、同一団体が同一フォーマットで各言語の検索結果上位に食い込ませてるページがヒットです。いや内容が妥当なら問題ないですが。

Ruby入門 (www.jaist.ac.jp)
"最後に更新した日からはや5年の月日がたった。Rubyバージョンも当時は1.4くらいだった気がする。"

で、3番目は大学に在籍さんのページです。ぬう。



ネタ元:http://pc11.2ch.net/test/read.cgi/tech/1170047838/61



追記

ブクマで「プログラミング」関連のタグをつけてる人には実は内容伝わってないんじゃいかと危惧

やっぱ最後に持ってくるんじゃなく2行目くらいにすぱっと結論書いて判断仰ぐべきですかそうですか

2008-09-02

http://anond.hatelabo.jp/20080902072100

てめえのほうが文盲だろうが。

100年ROMってな。…鼻で笑われるわ。

ほんとばっかだなあ。

ほんとに口汚いですね(苦笑

中身は何にも無いし。

早く消えて欲しい。

(誰かが様相論理に言及してたけど、「必ず」は、様相演算子で表すなら□でしょうね。この口汚い増田がそんなの知るはずないと思う。)

ログイン ユーザー登録
ようこそ ゲスト さん