はてなキーワード: クヌースとは
正解が「数学的」に決まるところ。たとえば「1■1=2 のときに ■を答えなさい」というときに競プロは■を答えるだろうし、それを早く答えて悦に入るだろう。
それもいいけど、いちど数学的に答えが決まっちゃう問題はライブラリにまとめられて、一般的なコーダはなにも考えなくてもインポートして処理できちゃうわけ。上の例えだとふつーのプログラマなら「枯れたライブラリをインポートして、正しく答えが出ると確信できるなら『答えは正しいとか考えなくても』それを使って対処する」ので、データの振る舞いとか気にしないで済む。たとえば SQL なんて、実行時計画という「アルゴリズムを常に指定するなら不要な」話題があるのだけど、データ量によって適切なアルゴリズムが変化するから仕方ないし、概ね RDB は賢いのでヒューマンが考慮するのは問題がある場合だけなのだ。よって、競技プログラマが生産性を確実に上げるという根拠はない。
もちろん、アルゴリズム知識を身につけるのは大切だし、クヌース先生も書いてたけど分散処理アルゴリズムはフロンテイアだろうよ。というか、暗号分野やセキュリティの領域や、条件が過酷な場合(宇宙線の影響下とか、メモリの少ないエッジコンピューティングとか)だと、アルゴリズムの研究や追求は大切なのは今も同じだ。でも、競技プログラマが新規にアルゴリズムを開発したり、セキュリティに向上したという話は聞いたことがないが、レッドコーダー諸君は自前で創造して使われた実績はあるのだろうか?
ついでに聞いてみたいのだが、競技プログラマたちは「マルチスレッドなコードで早く書こうとしないのはなぜ?」「そもそも、競技プログラミングで使うコードは便利なスニペッツがあるけどそれってチートでは?」「ときどき正規表現で解く問題があるけど、そのときの計算量は無視してない?」という矛盾を抱えているのてはないか?と思うのだが如何か。
究極的には競技プログラミングに必要な知識というのは、産業用途で要求される知識の一部でしかないのが問題なんだと思うよ。ほら、アレだよ、むかし話題になった「数学だけデキる人向けの東工入試をやったら、英語ができなくて卒業できなかった」という童話に近いんだよ。競技プログラムってインとアウトしか見てないブラックボックステストだから、ここだけしか計算機科学の知識が無いというヤバ人材の育成しかなってないのだろうな。
New York Timesはシリコンバレーのヨーダというタイトルで「The Art of Computer Programming」の著者でTeXの開発者としても有名なドナルド・クヌース博士(80)の紹介記事に25ブクマ。
https://www.nytimes.com/2018/12/17/science/donald-knuth-computers-algorithms-programming.html
GuardianはGuardianの会社がmysql派生のMongo DBからPostgreSQLに乗り換えるという記事に20ブクマ。今年の3月に上げられた記事。
https://www.theguardian.com/info/2018/nov/30/bye-bye-mongo-hello-postgres
BBCはSlackがアメリカが経済制裁中の地域に行ってきた人をアカバンしているという記事に18ブクマ。
https://www.bbc.com/news/technology-46642760
もう1件ルワンダ虐殺から数十人の人を救ったZura Karuhimbiさんの訃報記事に6ブクマ。
https://www.bbc.com/news/world-africa-46618482
South China Morning Postはカール・マルクス生誕200年記念として中国で伝記アニメが作られておりビリビリ動画で予告編が配信されてるという記事に3ブクマ。中国政府肝いりで作られるという。
俺の親父はドケチだった.
とにかくドケチだった.
口を開けば「カネがない」とグチった.
貧乏だった.
食う物と言えばパンの耳,着るものと言えばボロ雑巾みたいな古着だった.
ガキだった俺は友達が持っているスーファミが羨ましくて親父にせがんだ.
帰ってきたのはゲンコツだった.
そんなカネねえ,と.
ドケチなクソ親父め.
でも俺はあきらめなかった.
キャラクターをテレビの中で自由に動かせるのに,熱中していた.
根負けしたのか,なんとかしてやると言い出した.
俺は興奮で眠れぬ夜を過ごした.
どうやら友人から譲ってもらったらしい.
なんだか嫌な予感がしながら電源を入れたら,文字しか出てこねぇし,なにすりゃいいのか分からないし,
まさに「コレジャナイ~」と泣きながら手足をバタバタさせてダダをコネたい気持ちになった.
やっぱりクソ親父はクソ親父だった.
曰く,
「これさえあればゲームを作れるらしい.そんなに欲しいなら自分で作れ」
始めはとっつきにくかったが,やってみると面白かった.
「ゲームを自分で作れる」という魅力的な言葉に酔っていたのかもしれない.
これでいつか俺も,F-ZEROを作ってやるぞと,本気で思っていた.
ゴミ捨て場から拾ってきた古いベーマガを読みながら,小さなゲームを作っては楽しんでいた.
始めてジャンケンができるプログラムを作った時の感動は忘れられない.
グラフィカルなゲームは作れなかったが,友達も一緒になって楽しんでくれた.
だが中学2年に上がるころ,長年連れ添った俺の愛機が突然動かなくなった.
ついに寿命が尽きたのだ.
俺はこの世の終わりのように感じた.
まるで愛犬に死なれたような気持ちだった.
しばらく学校も休んだ.
今思えば前の持ち主から数えて10年近く,よく動き続けたものだと感心する.
ドケチな親父は,当然だが新しいPCを買ってくれるわけはなかった.
帰ってきた言葉は
「そんなに欲しいなら自分で作れ」
新聞配達で稼いだ金で少しずつパーツを買い集めた.
始めて自作PCが立ち上がった時は感動した.
親父に本を買ってくれと言ったら,始めは渋っていたが,ボロボロの技術書を何冊か古本屋から調達してくれた.
ヴォルトのアルゴリズムとデータ構造と,クヌースのThe Art of Computer Programmingもあった.
難しすぎたし技術的なところが足りないから,遠くの図書館までわざわざ出かけて技術書を借りてきては読みふけった.
学校の授業中にも読んでいた.
プログラミングの技術はもちろん,画像処理のための数学の道具についても勉強した.
同級生が2次方程式や因数分解をやっている横で,三角関数や行列計算をしていた.
特にアフィン変換には感動させられた.
こんな風に言うと,さぞ数学の成績がよかったのだろうと思うのかもしれないが,テストの点はそこそこだった.
コードを書くのに必要な概念として知っているだけで,証明問題は苦手だった.
それと,古典や社会の時間は全部すっぽかしてノートにコード書いてたから散々だった.
高校に入ったあたりでX windowシステムを使ったグラフィカルなゲームを作れるようになった.
出てきた敵を撃つだけの簡単なインベーダーゲームに始まり,オセロ,ブロック崩し,ウィザードリィみたいな迷宮探索ゲーム,思いつく物何でも作った.
友達の家にもPCがあるところが多くて,Windowsに移植して簡単なネットワーク型対戦ゲームなんかを作ったりもした.
ここまで本格的にゲームプログラミングをやっていると,さすがにジャンクパーツを集めただけのPCでは性能に不満が出ることが多くなってきた.
ビルドの待ち時間が長くていらいらしたり,友達の家で動くゲームが自分のPCで動かなかったりした.
「自分で稼いで買え」
親父はどこから取ってきたのか,俺でもこなせる程度の仕事を持ってきた.
始めはパソコン教室のバイトだったり,ゲームのデバッグだったり,まともなバイトだったのが,
ある日学校から帰ってくると,何に使うのかは知らないが,明日までにこういうコードを書けと言われて徹夜でプログラミングしたりするようになった.
プロの書いたらしいコードを読んで書き直す作業は,かなりの勉強になった.
給料は親父から手渡しで貰ったが,今まで見た事もないような額になった.
その金で新しいマザーボードとPentium IIと32MBメモリを何枚かと,自分の開発環境用にWindowsPCを作った.
こんな感じで高校には通っていたものの,勉強らしい勉強はほとんどしないで過ごした.
それでも,手に職はあるわけだし,しばらくは同人ゲームでも作って過ごそうと思っていた.
だけど親父は反対で,大学ぐらい入れと言い出した.
それでもやる気のなかった俺に,
一体何が起こった,このクソ親父,脳の病気にでもかかったかと本気で疑った.
どうやら正気で言っているらしいと分かると,俺も必死に勉強を始めた.
そうは言っても,中学時代から受験を意識した勉強なんてさっぱりしてこなかった俺には,何をどうしていいのか分からない.
しかも,やっぱり親父はドケチで,塾や予備校なんていく金は無い.
しかたがないから高校時代の友達で,頭のいい大学に行ったやつにお世話になることになった.
厚かましくも,キャンパスにまでついていったりしていたから,新入生として入って行くと顔見知りに驚かれた.
親父は約束通りPower Macintosh G3を買ってくれた.
だが,俺の親父はドケチだった.
「せっかくいいパソコン買ってやったんだから,そいつで学費ぐらい稼げ」
さすがにそいつは無いだろうと思った.
自分で遊ぶ分くらいは当然稼ぐつもりだったが,学費丸ごととは.
いくら国立大学とは言え4年分の学費となると200万ほどになる.
しかも教科書代やもろもろを考えると300万円は無いと厳しい.
300万円稼ぐために俺ができることと言えば,やはりゲームを作るぐらいだった.
志望動機を聞かれて,
「ゲームを作って300万円ほど稼ぐためです」
と言ったら爆笑された.
金が必要な理由を言ったら,一瞬でお通夜みたいな空気になったけれど.
先輩が相談に乗ってくれて,成績優秀なら学費は免除になったり半額になったりすることを教えてくれた.
それならなんとかできそうな金額だった.
プログラミングをしているだけなのに,「お勉強」として扱われるなんて.
今まで何気なく使ってきた道具に,こんなに深い基礎理論があるなんて,知らなかった.
講義が終わったらサークル棟に入り浸って,入学祝いのMacintoshで朝までゲームを作ったりしていた.
学費を稼ぐためのゲームだが,やはりエロゲを作ろうということになった.
ただし,そのためには絵師が必要だということで,先輩が漫画研究会から絵師をスカウトしてきた.
一目惚れした.
こんなちっこくてクリクリして可愛い女の子が,こんなドエロい絵を描くなんて!
俺の頭はすっかり茹だって,も~だめだ~という感じになった.
それから,なんやかんやあって,結果的に彼女は俺の嫁になった.
詳細は伏せるが,なかなかにこっ恥ずかしい青春を送った.
今まで○とか■とか,ちょっとしたドット絵でしかなかったキャラクターに命が吹き込まれるようだった.
先輩たちが,売上金を快く俺にカンパしてくれたおかげでもある.
満ち足りた大学生活だった.
スーファミはもう時代遅れになったが,自分の作ったゲームが本当に発売されて,ゲーム機の中で動いているのを見た時は嬉しくて泣いた.
娘が生まれた時と,どっちがと思うくらい泣いた.
さて,俺のドケチな親父だが,娘が生まれてほどなくして死んだ.
あんなにドケチに金を惜しんでいたのに,財産も何も残さず死んだ.
遺書を読んだら,葬儀は簡素に親族だけで行うように,とあった.
親戚付き合いらしい親戚も居ないし,どうせ誰も来ないだろうと思っていたが,
葬式当日には呼んでもないのに大勢の参列があって,なんだこれは,人違いかなにかかと思った.
なんでも,親父の運営するNPO法人の従業員だとか,親父の寄付金で建てた養護施設の代表さんだとか,
親父とは無縁の世界の住人だとばかり思っていた,立派な善人ばかりだった.
家に居ないことの多い親父が外で何をしているかなんて興味なかったし,どうせ競馬かなんかで稼いでるんだろうと思っていた.
葬儀が終わって,ちょっとした額になった香典の山を眺めていると,
「さあ自由に使っていいカネだぞ.お前はそれで何をするんだ?」
そんな声が聞こえてくるようだった.
なんだかむかついたので,その金は今まで通った学校にプログラミング関係の本を寄付するのに使うことにした.
一銭も残さずに,全部.
それでもなんだか負けた気分だったから,ボーナスをつぎ込んで,倍額にして寄付してやった.
ドケチなクソ親父を,見返してやった.
最高の気分だった.
それが6年ほど前の話だ.
ところで最近,小学校に上がった娘が,アニメに出てくるようなフリフリなドレスを着て学校に行きたいと言い出した.
もうそんなお年ごろになったのか.
子供には不自由させたくないと思っていたが,調べてみると我が子の眼鏡にかなう服は,日常的に着る服にしては,ちょっと高い.
悩ましい問題だ.
さて,どうやって安上がりにすませようか.