はてなキーワード: MODとは
横増田だけれども*っていうのは掛け算のこと
プログラミングではこの記号を使うから、ネットで数学の解説をするときもこの記号が使われやすい
modの方は中学では習わないね。大学入っても知らないやつの方が多い
そんなに難しい記号ではないんだけどね
余りを示す記号なんだ
それと、
a*10^m ^っていうのは何乗っていう記号。その数字を何回掛け合わすかということ。この場合はm=4のときは10^4=10×10×10×10=10000ということになる
つまりa*10^m という記号で□0000000…という数字を表していることになるんだ
これで10でも9000000000000000000000000000でも表すことが出来る。10ならa=1のm=1で表せるし、9000000000000000000000000000ならa=9のm=28で表せる
こういうのを一般化っていうんだ。一般化は元増田の言う「根本的な所まで」の理解に最も適しているし確実な方法だ
243では9で割り切れるでしょ?だから全部の「各位の数を足して9で割り切れるならその数は割り切れる」んだよ! ←こんな説明をしなくていい。この説明では956743821みたいな桁の数字でも本当に使えるのかっていうことの説明になってない。元増田の言う「根本的な所まで」の説明にならないわけだ
だから一般化という方法を使うんだよ。これなら「全ての場合において成り立つ」というのが、言える。仕組みについては証明したわけだから、具体的な数字に関してはお前ら勝手に好きな数字放り込めよ、と言えるわけだ
で、a*10^mについてだけど、a=8,m=4としよう、そしたら80000になるんだが、80000を9で割った余りが8になるっていうことを意味しているんだ
記号を習うかどうかなんてのはどうでもいい話。
*は×という意味だし、a mod bはaをbで割った余りという意味。
意味が分かればそれなりに数学を理解してる中学1年生か2年生なら理解できる程度の内容ということ。
聞きたかったのは、
「その数式を理解する為に必要な数学の知識は、標準履修年次に照らし合わせるとは何年生に相当するのか?」
という事です。
当然、100万人(もいないと思うが)の中学生のうちの平均的な連中ということ。つまり指導要領の範囲ということだ。
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%AD%E3%82%A2%E7%90%86%E8%AB%96
この辺だろう。世の中なめすぎ。
そんなはずはありません。
>>中学1年か2年の時点で理解できる
という意図であれば、
聞きたかったのは、
「その数式を理解する為に必要な数学の知識は、標準履修年次に照らし合わせると何年生に相当するのか?」
という事です。
可読性が悪いにもほどがある・・・と思った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でパイプライン崩すのとどっちがいいんだろう。
http://anond.hatelabo.jp/20100725025127
"どうすればいいか"を教わって、プログラミングが身につく人は多くありません。"なにをやりたいのか"を自分で生み出せないと、詰まってしまうし、なにより楽しくありません。
やりたいことがあれば手段は後からついてきます。これは物作り全般に言えることです。特に学び始めにおいてモチベーションを維持し勢いをつけるのに大事なのは"やりたいことがあるか"、もっと具体的に言うなら"作りたいものは何か"です。これがないと始まりません。それがどうしてもないなら、そういう状況に自分を追い込むのも有効です。仕事でどうしてもやり遂げなければならない状況に追い込まれれば人間 0 からでも身につきます。実際自分がそうでした。
とかく、プログラミングというのは手段さえ知れば、あとはだれがやっても同じ結果が出る生産業だと誤解されがちです。そういう認識で学ぼうとしても楽しくありませんし、本質を掴みにくいので応用が利かなく上達しにくいです。
本質は絵や音楽と同じです。言語を覚えるということは道具の使い方を覚えることでしかありません。音楽の理論や絵筆の使い方を知っているだけで、すぐに素晴らしい音楽や絵ができるでしょうか。殆どの人がそうは思わないはずです。プログラミングもそれと同じです。作りたいものがある人が圧倒的に強いのです。
んー、ここまで読んでも「やりたいことはないけどとりあえず勉強したい」というなら、すぐに動くものをつくりやすい言語がお勧めかなあ。
Google App Engine で Python をやるとか。 Python のいいところは、明快で作法にあまり迷わなくていいところです。自分がまったく言語やったことない知り合いにすすめるとしたらこれ。
レガシーではないちゃんとした JavaScript (http://www.crockford.com/javascript/ この辺にあるような) もいいです。ブラウザですぐ動きますし、 Firefox 環境なら本格的なデバッガまであります。 JavaScript は非常に誤解の多い言語ですが、悪いものではありません。 お手軽にグラフィカルなものを扱える、結果がわかりやすいので初心者向けです。それでいて、拡張性が高く、プログラミングに必要な概念、ロジックの殆ど再現できる底力も秘めています。
Perl はレガシーな作法がいまだに見受けられる (Perl って CGI のことでしょ的な解説が未だにある) のですが、初めから strict に慣れて、 CPAN にあるようなスタイルを参考にして、初めから OOP に突っ走るなら今からやってもいい言語です。 CPAN 等のリソースの豊富さとコミュニティの広さが強いです。ただ、懐の広さ、できることの多さゆえに初心者向きではないところもあります。
PHP はお勧めしません。理由は適当に検索してください。 PHP5 でかなり良くなりましたが、逆に言えば 4 と 5 では別言語と言っても良いほどです。古い考え方と新しいスタイルがごったになりすぎていて、かつて同じような状況にあった Perl に比べても、洗練されたスタイルを学びにくいと思います。また、ロジックの面白さに感動するような部分が PHP にはちょっと足りないです。
MMORPG やそのエミュレーターの中には、 Lua を使って AI やマクロやイベントスクリプトなどを組めるものがあります。すぐに結果が出て自分の役に立つものが作れるので、既にその手のゲームが趣味ならお勧めです。こうした用途では、自分の望む世界を構築するために嫌でも物事をモデル化して考えるので、自然と OOP 的な考え方やデザインパターンが身につきます。
VB は簡単に GUI アプリケーションが作れるのでやる人が多いですが、癖が強いし応用がききにくいのでお勧めしません。また、公開されているソースコードが少ないことも学ぶには不便です。
Ruby はそれほどやりこんでないのでコメントはしないでおきますが、悪くはないと思います。
C++ は何をすればいいのか?を聞いてる人にはすすめにくいです。作りたいものが明確にあり、ロジックを見つけることで応用が利く人ならほっといても覚えるでしょう。自分は、必要に迫られて身につきましたが・・・
個人的には、作りたいものがあってそれにマッチしてるなら、関数型言語を最初にやったっていいと思います。一度ロジックを掴み取る能力がついてしまえば、第二第三の言語は猛スピードで身につくので。
作ったものを公開して、人に見せたり使わせたりして、レスポンスを得るというのはモチベーションの維持や上達に非常に有効です。むしろ、早く上達したいなら必須と言ってもよいです。プログラミングの場合はこれがおざなりにされがちです。
絵を上達したいなら、 pixiv を薦められますよね。今下手かどうかは関係ない。上手くなりたい人が沢山投稿してる。歌が上手くなりたいなら、人前で歌う事は避けられない。ニコニコ動画などで公開してる人がいるよね。人の作品をみると刺激をうける。これはすごいパワーだってのはわかると思う。
プログラミングだって全く同じです。なのに、プログラミングは引きこもって一人で勉強する人が多すぎる。絵や歌は公開しても人に害を与えないけど、プログラミングはバグやセキュリティホールがあったら人に害をあたえるかもしれない、といった印象が強いのかもしれません。
それでも、もっとコミュニティに参加したり、作ったものを公開することが学び始めのうちから重視されていいのは事実。そういった面から考えると、バグやセキュリティホールが出来にくく、安全で、危険な動作がしようもない実行環境があり、加えて Web に公開しやすい言語が学びはじめに向いています。
こちらも参考にしてみて下さい
http://d.hatena.ne.jp/Hamachiya2/20090721
http://d.hatena.ne.jp/Hamachiya2/20080131
学校に行けば一人で学ぶよりは後押しや出会いがあるかもしれませんが、”やりたいこと””必用なこと””作りたいもの”が無い限り、殆どの人は身につきません。
また、残念なことに講師にも大変当たり外れが多いです。自分は専門学校にいったことはありませんが、講師の知り合いがいるのでよく学生さんの話を聞きます。結局の所、しっかり身につく人は、家に帰っても色々作りたいものを作って公開したり、著名なプログラマ達のブログを読みまくったり、フォーラムに出入りしたり、ML に入ってたり、 twitter で刺激的な知り合いをつくるとかしていて、そういうところでめっちゃ差がつきます。
学校に行くなとまでは言いませんが、学校いかないで身に付ける人は本当に多いし、学校いって身につかない人も本当に多いということは考えて下さい。
元増田さんがどの言語をやれば・・という方だったので仕方なくこのような書き方になってしまいましたが、作りたいものが既にある人はあまり”どの言語をやるか”には拘らなくてよいと思います。
そんなことよりも、今必用で/気軽に/すぐ結果がわかることをやるのが、始めてのプログラミングには大事。だから本当は、どの言語をやるかよりも何を作りたいのかを先に見つけてほしい。
目の前の意外なところにプログラミングは生かせます。できるだけ身近な、すぐ効果がわかるところからとりかかった方がプログラミングの楽しさにはやく気付けるはず。
みたいな導入口でもいいんだ。
例えば C++ でのプログラミングを初心者が 0 からやるのは難しいだろうけど、既存のアプリケーションのプラグインなら開発のためのテンプレートや目的に近い作例があってコードも短いからそれを改造するところから始められる。需要があるから楽しいよ。
(買)Cryostasis 3.24$
http://store.steampowered.com/app/7850/
>もっさり単調だが演出や雰囲気はすごい
>スタルカー好きにはおすすめ
(買)NecroVision 3.24 これほしかったー!
http://store.steampowered.com/app/7860/
Alien Breedがおもしろそう
セールになったら買う
Multiwiniaといろいろ 5$
http://store.steampowered.com/app/1510/
Silverfall
http://store.steampowered.com/app/4420/
日本語化だってえー!?
ちくしょー、セール対象外かよー!
でも欲しいー。CoDパック買うくらいならこれ買うー!CoD1と2は日本語版もってるしー。
http://blackmalice.blog29.fc2.com/blog-entry-42.html
↑欲しい↑
~~~~~~~~~~~~~~~~~~~~~~~~~~
↓・そこまで欲しいわけでもない・↓
NUMEN : Contest of Heroes
http://store.steampowered.com/app/60800/
今月発売のRPGがまさかの77%OFF。
うーん。どうしよかなあ。トーチライトもまだ終わってないんだよね…。
・他の英雄が独自に旅をしているというFable的な世界観が気になる。
http://blackmalice.blog29.fc2.com/blog-entry-39.html
King's Bounty: Gold Edition 9.99 →最終日まで
http://store.steampowered.com/app/3170/
Armored Princessだけ買っとくか?でも体験版が合わなかったんだよなぁ
Call of Duty Pack 29.99 → 最終日に
http://store.steampowered.com/sub/4594/
Chrome + SpecForce Bundle 75% $1.99
SSを思い出したい人向け
+
SF版しょぼいファークライ
+
Chromeは昔パッケで買ったけど、いろいろと残念なゲームだった
安いけどおすすめしない
+
Chrome俺は気に入ったけどな
+
俺は完全にスルー決定したわ
http://seiryu.cside.to/3dfps/Chrome/Chrome-top.html
+
chromeおもしれー
昔、バックアップツールで自作とかしてた人だけど、技術的に難しいんじゃないかなあ。
結局マジコンとかMODチップのやってることって、ゲームハードに組み込まれた、
「正規品であるかどうかのチェックを迂回する」ってだけのはずなんで。
最近やってないから古い時代の自分の知識がDSマジコンなんかにも通用するのか自信ないけど、
「正規品と非正規品の区別」は正規品に仕掛けをしてあるからできるんであって、技術というか原理的に
手段がない気がする。
「コピー品とコピーじゃない非正規品」を区別するような仕掛け、って「コピー品に仕掛けが出来ない」
以上無理なんじゃないかなあ。「(コピーじゃない)非正規品はこういう仕掛けをしてください」という
仕組みをマジコンメーカーが取り入れたところで、今度はその仕組みがコピー品に応用されちゃうだけ
だろうし。
自作ゲームとかゲーム改造の楽しみがなくなっちゃうのは個人的には寂しいけど、
ことここまで大きな問題になっちゃったら販売規制もしょうがないよね。大元のゲーム業界が
つぶれるよりは、ずっとましだしね。
流石にいくらなんでもそんなしょーもないミスはないだろう,と.
だって閏年を忘れたんじゃなくて,閏年じゃない年を閏年だと判定したってことなんだから状況がおかしい.
閏年の判別なんてmod 4を取って,後は100と400に関して調べればいいだけ.
2000年が終わったから100とか400とかやる必要が事実上無いと考えてもmod 4を取ればいいだけ.
流石に間違えようがないだろう.
しかも20G,60Gと40Gモデルでだけ起きるってのも変な話.
まさかとは思うが2006年からスタートする内部時計(ソニータイマー)を保持していて,
インポートするときにTimeクラスではなくTimeSonyクラスを使ったとか.
そうすると2010年はソニー歴の閏年になるわけで,PS3は間違っていない.
20G,40G,60Gでは起きて,基盤が大きく異なる80Gと薄型では起きないという説明もこれでうまくいく!
オレは洋ゲーが嫌いだ。
最近はそうでもないけどちょっと前までは、日本のゲームは終わってる、海外に負けてるなどというのを良く見た気がする。
大嫌いだ。
特にRPGでその傾向が強い。
オブリビオンとFalloutが好きな人たちからだ。
二つとも高い評価を得て、人気があって面白い。MODを入れてアレンジできて、何より自由にできる。
この自由ってのが吐き気がする。自由度が高い、何でもできる、コマンド式は古い。
いらいらする。ドラクエ3をやった人ならわかると思う。名作だった。
あの時は、クリアし終わって感動してた。FFもそう。特に4ではあんだけ感動した。
だからコマンド式が古いってのは嫌い。思い出補正とか言われるかもしれないし、懐古厨と言われるかもしれないけど、これだけは譲れない。
オブリビオンは何でもできすぎる。どこにでもいけるし、後からシナリオ追加も容易にできるし。
やっぱり限られた中でどんな風に遊ぶか見つけるのかが大事だと思う。
ゲームを作ってる人がブログで言ってるだろうな・・・と思ってやったんだけど
日本のゲームが廃(すた)れてきたのは、プレステ(特にPS2)のせい?
http://soudan1.biglobe.ne.jp/qa4412266.html
>「5年まえくらいから言っているんですが、正直、日本の状況はやばいですね」(小島氏)↓
>http://www.famitsu.com/event/tgs/2008/1219002_1829.html
>「日本のゲーム業界は世界のリーダーでなくなってしまった」(和田氏)
>「安易さでPS2の時代にガラパゴス化(閉鎖化)してしまった」(鵜之澤氏)↓
>http://www.famitsu.com/event/tgs/2008/1218763_1829.html
>http://news.dengeki.com/elem/000/000/111/111702/
>http://www.secondtimes.net/news/japan/20081010_keynote_1.html
>小島氏(MGS4製作者)が警鐘を鳴らしていた「5年前」というのは
>丁度PS2が日本では普及しきっていて対応ソフトも多く出ていた時期であり
>「プレステ(特にPS2)」がほぼ名指しされる形であげられています。
へー。
>「海外のゲームを見ると最近は落ち込むんです。技術的にはほぼ負けてます」(同)
>
>あれほどのゲームを作っている開発者とは思えぬ発言に、浜村氏も「ほんとですか!? 『メタルギア ソリッド』チームでも?」と少し戸惑いの様子。しかし、それでも「負けてますね。僕らの課題はここ1、2年で海外に追いつけるかどうか。非常に危険な状態です」と深刻な面持ち。
MGS4は最後の殴り合いだけ海外に追いついて他は全部目を閉じるしかなかった・・・。
「日本は遅れをとっている」 - デジタル・コンテンツ利用促進協議会が発足
http://journal.mycom.co.jp/news/2008/09/10/038/
とりあえずメモ。
http://it.nikkei.co.jp/digital/news/index.aspx?n=MMITew000031102008
>鍵となるのは「日本がものを作る力、進歩する速度を、世界の技術革新の能力が上回ったことだ」という。そして、その速度を引き上げたのが「英語圏を中心に急成長したゲーム業界のコミュニティー」だと分析する。
>例えば、画像処理など新しい技術のミドルウエアを開発する場合でも、誰でも参加できるオープンなコミュニティーができあがっており、多くの企業が参加して急ピッチで開発が進められる。「プレイステーション3(PS3)」でも採用している「OpenGL」といった3次元グラフィックスの基礎プログラムは、様々な企業が共同で開発して、たちまちデファクトスタンダードとなった。日本単独では、これらの技術で勝ち目はない。完全に主導権を英語圏に握られてしまった。
http://www.purplemoon.jp/blog/2006/10/mod.html
>でもですね。こういう、プレイヤーがMODでどんどん勝手にコンテンツ作ってくれるタイプのゲームは、今後のゲーム業界ではすごく重要なファクターになるはずなんですよ。
>日本のゲーム市場はコンシューマが主流なので、ネットゲームに続いてこの分野でも遅れを取ってしまうのが痛いところです。
だいぶ前のことなので結構忘れてるけど。
買ったのはHHKBPro2。OSはWindowsVista
背面のスイッチをいじってキーを変える。
http://www.pfu.fujitsu.com/hhkeyboard/leaflet/hhkb_backview.html
左◇ | Fn |
右◇ | Win |
Delete | Backspace |
左◇あたりにFnを割り振らないと右小指でしかFnを押せなくて面倒。
DeleteよりBackspaceの方が使用頻度が高いので変更。(Fn+DeleteでDeleteを押したことになります)
ノートPC(日本語版Windows)で英語配列版HHKBを使う時はUSJPを入れるのが限りなく正解に近い。
http://www.trinityworks.co.jp/software/USJPPro/index.php
デスクトップPCではドライバを英語キーボードに設定すればいい。
ノートPCでUSJPを入れていて、USJPにはおまけ機能でいくらかのキーの組み合わせを設定できるので
デスクトップPCでも同じにするためにとりあえず窓使いの憂鬱を入れた。
Vista対応版
http://slashdot.jp/~kazu2/journal/411746
設定はこんな感じにした。
include "104.mayu" key C-D = Delete key C-H = BackSpace key C-M = Enter key C-Space = $ToggleIME
どこかで見た設定をベースにいじったような気がしますがどこのがベースか忘れた。
自分は左◇キーをFnキーに設定して使っているので無変換キーをFnキーにするとちょうどよくなる。
include "104.mayu" mod control += CapsLock def subst *CapsLock = *LControl key S-Pause = CapsLock def key 無変換 = 0x7b mod mod0 = 無変換 key *S-M0-K = *S-Home key *S-M0-Comma = *S-End key *S-M0-Apostrophe = Right key *S-M0-Semicolon = Left key *S-M0-LeftSquareBracket = Up key *S-M0-Solidus = Down key *S-M0-L = *S-PageUp key *S-M0-FullStop = *S-PageDown key M0-R = F5 key C-D = Delete key C-H = BackSpace key C-M = Enter key *S-M0-_1 = F1 key *S-M0-_2 = F2 key *S-M0-_3 = F3 key *S-M0-_4 = F4 key *S-M0-_5 = F5 key *S-M0-_6 = F6 key *S-M0-_7 = F7 key *S-M0-_8 = F8 key *S-M0-_9 = F9 key *S-M0-_0 = F10 key *S-M0-HyphenMinus = F11 key *S-M0-EqualsSign = F12 def key JisBackslash = 0x7d key JisBackslash = Backslash key S-JisBackslash = $VERTICAL_LINE key C-Space = $ToggleIME
HHKBを繋いだ時は上の設定、普通のキーボードを繋いだ時は下の設定に切り替えてやってます。
USBメモリを挿したい時もここ。
重量が結構ある。
プログラマになれません
http://anond.hatelabo.jp/20081025202001
今のバイト先の開発チーフには、いつもこの点を注意される。なぜそれでいいのか徹底的に考えろ、ドキュメントをちゃんと読め、関数の挙動がわからなかったらソースを読め、と。でも正直、動いてくれたらそれでいい。さすがにライブラリのドキュメントを読む癖は多少ついてきたが、けれどもそのソースを読むところまでは正直頭が、気持ちが回らない。
これって、プログラマーだけに必要なことなのかな?
その時に、(i mod 3 = 0)とか書いてて、なんか自分はやっぱりダメなんじゃという気にさせられた。代入と比較の区別がついてない。
VBだとそれでOKなんで、代入と比較の区別が必要かどうかは関係ないとおもう。
プログラマにとってプレッシャーあって当たり前、悪質から良質のプレッシャーへ
TBで、なにやらプログラマーらしき人たちが書いてるけど、逆に、プログラマーになれないほうが幸せなことなのかもしれないよ。
今は、えがメソッドのテストをしています。「はてな匿名ダイアリー」を有効に使う方法らしいのだが、実際にはどのような手法なのかのテストです。えがという人は、若きプログラマーらしいけど。
私は今某社でWebアプリ開発の補助をするアルバイトをしている。一応少しはコードを書く。でも、自分はプログラマじゃないな、と思う。素敵なアルゴリズムを考えたりもしない。アプリの設計は当然社員さんがやる。私がやることと言えば、機能追加のための簡単なコードを書いたり、簡単なWebアプリをフレームワークを勉強しつつ書いて、見た目をCSSで整えて、そんなことだ。
やりがいを感じないわけではない。やっぱり自分の書いたコードが上手く動けば嬉しい。でも、プログラマの壁を読むと、何となく自分はコーダーになれてもプログラマにはなれないような気がしてくる。一応FizzBuzzは解ける。以下、そのコード。※追記参照
#include <stdio.h> int main(void){ int i; for(i=1; i<=100; i++){ if((i % 3 == 0) || (i % 5 == 0)){ if(i % 3 == 0) printf("Fizz"); if(i % 5 == 0) printf("Buzz"); printf("\n"); } /* 以下二行と返り値追記 */ else printf("%d\n", i); } return 0; }
アルゴリズム自体は多分2分足らずでもやっと思いつき、書いてる途中で脳内もやっとを形にできた。でもCの文法を忘れていて、コンパイルを通すのに独習Cを調べつつ、5分くらいかかった。
その時に、(i mod 3 = 0)とか書いてて、なんか自分はやっぱりダメなんじゃという気にさせられた。代入と比較の区別がついてない。そういえば先日も、編集してるファイルが違ってたとかカンマをつけ忘れてたとかでエラーがでてるのに、それになかなか気がつかなかったり、if文の条件が成立する場合としない場合を逆に考えてしまったりと、そんなぼんくらミスばかりしている。
そんなときに、「ああ、自分ってプログラマ向いてないのかも」と感じさせられる。
そしてなにより自分がプログラマに向いていないと思うのは、知的探求心の問題だ。プログラマを志していたがその道を諦めた友人に、なぜプログラミングの勉強をやめたのか?と聞いたとき、彼から帰ってきた答えはこうだった。「この道に進んだら一生勉強しなきゃいけないから。自分にはそんなことはとても無理だと思った」この答えを聞いたとき、でもプログラミングの勉強だったら楽しくないのかな?と思った。しかし自分を省みたとき、私自身もそう熱心にプログラミングの勉強をしているわけではないことに気がついた。Macに入っている一通りの言語でとりあえずHello!World!を書いたりしたが、だからといってそれらの言語の得手不得手がはっきりわかるまで勉強したわけではない。文法だって忘れてしまった。アルゴリズムを熱心に勉強したことはないし、なにより自分は最も唾棄すべき「とりあえず動けばいい」と思っている人間だ。エラーがでてそれを直しプログラムが動いたとき、なぜそのエラーが出なくなったのか?なぜ動くようになったのか?そうしたことを納得がいくまで調べることは滅多にない。なんとなく、ああいう理由なのかな?と考えて、それだけですませてしまう。もう一度書くが、自分が書いたプログラムが思った通りに動いたときは楽しい。でも、そこで止まってしまうのだ。なぜ動いたのか?それを徹底して考え、理解してはいない。
今のバイト先の開発チーフには、いつもこの点を注意される。なぜそれでいいのか徹底的に考えろ、ドキュメントをちゃんと読め、関数の挙動がわからなかったらソースを読め、と。でも正直、動いてくれたらそれでいい。さすがにライブラリのドキュメントを読む癖は多少ついてきたが、けれどもそのソースを読むところまでは正直頭が、気持ちが回らない。
だから、自分はプログラマになれないと思う。いつまでたってもコーダーのままだろう。
プログラミングはとても特別な才能がいる仕事だと思う。それは、アルゴリズムやデータ構造、オブジェクト指向などといった抽象的なものごとを理解し、それを具体的なソースコードに落とす頭だけではなく、ものごとについてとことん考える知的探求心も必要だ。その二つを満たす人こそがプログラマなのだと、一コーダーなりに私は思う。
だから私は、プログラマになれません。
【追記】
さすがに仕様を満たしていないのは恥ずかしいので直しました。こういう間抜けなミスをするところがなぁ…orz。
mainについて熱くなっている方々の話にはいまいちついていけないのですが、私はこれをCで書いたつもりですし、戻り値がないことにも警告はありませんでした。コンパイラはgcc version 4.0.1 (Apple Inc. build 5465)です。
一部のはてな記法
gcdは最大公約数
pow(a,b)はaのb乗
mod(a,b)はaをbで割ったときの余り
{1,2,…,N-1}から適当にgcd(a,N)=1となるaを取る
aのNを法とした位数rを求める
aのNを法とした位数rを求めるには
としてf(x+kr)=f(x)となるrを求める(kは任意の自然数?)
rが偶数になるまでaを取るとこからやり直す
p=gcd(pow(a,r/2)+1,N)
q=gcd(pow(a,r/2)-1,N)
p,qのいずれかがNでなければそれらが求めたい因数
らしい
で、rを求めるところがイマのコンピュータだと大変で、
いやいや、マルチプラットフォームによって
>>マルチプレイは人数も多く無料、MODが使えて、マウスとキーボードでプレイできる。<<
ってのが削られつつあるから困ってるんですよ。
そりゃ最近のゲームはたいがいPCとコンシューマのマルチプラットホーム。開発費の増大を補うために多機種展開すること自体は仕方のないだと思うんだが。それでも「マルチで作るといろんなところがぬるくなる」とか「マルチだからこれが出来ない、あれが出来ない」「マルチだからコンシューマに合わされる…」と言った恨み節をえんえんと聞かされるのはもう勘弁だ。「マルチだからつまらないだろうな」と言う人までいる。そこまで極端だと最早ハード信者じゃないか。
たとえXbox360とかPS3がいくら幅をきかせても、PCは常にそれより高いところにいるんだからそれで満足じゃないのか。いいじゃないか、PCの方がグラフィックはいいし、マルチプレイは人数も多く無料、MODが使えて、マウスとキーボードでプレイできる。ゲーム性もあって、コンピュータに手加減されることも操作性の調整不足に悩まされることもない。そう、コンシューマが勝つ可能性がある部分なんてせいぜい売り上げ本数くらいのもんだ。
だからほっといてくれ。俺はコンシューマで楽しくぬるく遊んでる。それで満足してるんだから水を差さないでおくれ。そしてPCゲーマーはPCでしか出来ないゲームを大いに誇ればいい。そうだ、Clear Skyでもプレイしてようぜ。