タグ

ブックマーク / nishiohirokazu.hatenadiary.org (12)

  • 再帰呼び出しを再帰呼び出しなしで実現 - 西尾泰和のはてなダイアリー

    拙著「コーディングを支える技術」の第5章「関数」では、P.50で「再帰呼び出しを使っているプログラムは、再帰呼び出しを使わなくても書くことができる」と説明しました。この件に関してここで補足記事として解説することにしました。 P.53の簡単な再帰呼び出しの例(total関数)をターゲットにします。これは空行とコメントを除くと8行の簡単な例です。このコードから、挙動を変えずに再帰呼び出しを取り除いてみましょう。腕に自身のある人はは続きを読む前に自分で実装してみるとよいでしょう。 チャレンジする人向けの注意点 今回の対象では再帰呼び出しをしながら行う処理が「要素の足し算」でした。足し算は順番を入れ替えても結果が同じです。なので、うっかり計算の順番を変えてしまっても、結果からは間違いに気付けません。例えば深さ優先探索を幅優先探索に変えてしまうと、[1, [2, 3], 4]が来の1, 2, 3,

    再帰呼び出しを再帰呼び出しなしで実現 - 西尾泰和のはてなダイアリー
  • 「自信がない」は自信の持ちすぎ - 西尾泰和のはてなダイアリー

    「原稿書かなきゃいけないんだけどなぁ」とか言いながら現実逃避で読んでいた「心は病気―役立つ初期仏教法話〈2〉」に心に刺さる言葉があったのでここに書いておく。 正確な引用ではないので、正確な言葉が知りたければP.60から3ページくらいを読むとよい。 人間が自信をなくす原因は、自信の持ちすぎである。 自分が「この程度の仕事サクッと終わらせられる」と思っているのに、実際にやるとうまくいかないとき、人は自信をなくす。 「抜群のスピーチをしよう」と思って、実際にはうまく喋れなくて、自信をなくす。 妄想の中の自分が事実に反して素晴らしすぎるから、その「妄想の中の素晴らしい自分」が振る舞うように振舞おうとして、できないので苦しむ。 「自分の仕事に自信がない」というのは、奇跡的な成功を頭で妄想しているせい。現実の自分ができるようにしかできない。できることをすればよい。「自分は精一杯やった」と思える状態を

    「自信がない」は自信の持ちすぎ - 西尾泰和のはてなダイアリー
  • 禅 of Python: 20の格言 - 西尾泰和のはてなダイアリー

    Pythonには "Zen of Python"という、Pythonの設計原則を簡潔に20個の格言にまとめたものがあります。それを単純に翻訳しても伝わりにくいだろうなぁと思ったので、訳注をたくさんつけて翻訳してみました。 美は醜より良い 明示は暗黙より良い 単純は複雑より良い 複雑なほうが理解しにくいよりは良い *1 平坦は入れ子より良い 疎は密より良い *2 読みやすさが重要 「特殊なケース」はルールを破るほど特殊ではない*3 しかし、実利は純粋さより重要 *4 エラーを黙って通してはいけない ただし、明示的に黙らせた場合は別 *5 曖昧さに面したら、正解を推測したくなる誘惑を退けよ *6 一つの明確なやり方があるべきだ。そしてただ一つであることが望ましい。 *7 しかし、その方法はオランダ人以外にはとっつきにくいかもね *8 今やる方がやらないより良い しかし、やらないほうが、今 *す

    禅 of Python: 20の格言 - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2012/06/29
    これ良いね
  • java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー

    ブログを書くまでがjava-jaですが、もう眠いのでとりあえず1行だけ書いて、あとは徐々に書き足す。 会場を無料提供してくれたグリーさん、ありがとうございます! 誰かが検査例外の話をするだろうと思って書かなかったら結局誰も言及しなかった、Javaのコミュニティなのに。 っていうか聴衆が100人もいると、もしかしてそもそも「検査例外ってなに?」って人もいたんじゃないか?「検査例外がOCPを壊す」とか「Liskovの置換原則のLiskov」とか通じてるんだろうか?とりあえず直和型が通じてないことだけはひしひしと感じた。 Twitterの自分の発言を転載しておく。 ちなみにZen of Pythonでも「エラーを握りつぶすな」と書いてあります 禅 of Python: 20の格言 「例外はそもそも何のため」ってところ、ざっくり省いたんだけどもそういうところのほうがニーズあったかね?? 「C#1.

    java-jaで例外処理の話をしてきました - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2012/06/29
    面白い。あとで読み直す
  • 言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー

    Twitterのタイムラインが面白すぎて、ついうっかり言語を擬人化して脳内で言語女子会なるものを開いてしまいました。なお、登場人物と実在の人物は1対1に対応しません。 undefinedとnullの両方必要なの? とあるプログラミング言語が集う女子会にて: Perl: そういえばさ、なんでJavaScriptちゃんってundefinedとnullの両方もってるの? JavaScript: えっ、未定義の変数にアクセスした時undefined返したいじゃない? Python: 例外投げて死ねばいいじゃん Ruby: 例外投げて死ねばいいよね Python & Ruby: ねー♡ Java: いやそこは参照型ならnull、数値型なら0で初期化すべきでしょ C: これだから最近の若い子は…初期化にだってコストが掛かるんだからね!デフォルトで初期化するなんて無駄遣いよ!必要な人だけが責任をもって初

    言語女子会: undefとnullは両方必要? - 西尾泰和のはてなダイアリー
  • 遺伝子をモチーフにした言語「Genomy」を作りました - 西尾泰和のはてなダイアリー

    最近、3年くらい前に書いた「そろそろ例のプロジェクトについて言及するか」についてTwitterで言及があったので思い出しました。「条件を満たしたものをすべて呼び出す」という設計思想でプログラムが書けてしまうという点について意外とみんなピンと来ないみたいだからコンセプトプルーフを実装してみようと思っていたんでした。 という訳で作りました。https://github.com/nishio/genomy 解説 「遺伝子はタンパク質の設計図」というところまでは教科書などでもよく言及されます。でも、その設計図には「どういう状況になったら作るべきか」「どういう状況では作るべきではないか」という情報も書かれています。 この「作るべきではない」(発現の抑制)がどう実現されているか、ザックリ説明しましょう。体の中にあるタンパク質があると、これがある遺伝子の周辺にへばりつき、その遺伝子からタンパク質を作る過

    遺伝子をモチーフにした言語「Genomy」を作りました - 西尾泰和のはてなダイアリー
  • 焼畑農業をやめるために---新卒準備カレンダー 2011春 - 西尾泰和のはてなダイアリー

    by Lior Shapira under CC BY-NC-ND 2.0 このエントリーは新卒準備カレンダー 2011春という、みんなで仕事に関して自分が考えることなどをエントリーに書いていく企画で書かれたものです。 渋川さんの話を聞く会のつもりが、なぜかいつの間にか名前入りで「新卒準備カレンダー 2011春 : ATND」を作られていたので、空気を読まずに農業の話をします!! お前だれよ? 西尾泰和と申します。サイボウズっていうグループウェアの会社のサイボウズラボっていう研究部門子会社で、まあ研究とかをしています。一番最近のアウトプットはこのブログの右サイドバーに出ている「 Amazon.co.jp: WEB+DB PRESS Vol.60」で「言語設計の基礎知識」という特集を書いたことかな。そうそう、3年くらい英語版のプロフィールページしか更新していなかったら3年前の日語版を最新版

    焼畑農業をやめるために---新卒準備カレンダー 2011春 - 西尾泰和のはてなダイアリー
  • そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー

    以前、とあるシステムのソースコードを読む機会があったのだけどあまりにひどかった。あのひどいコードでまあまあまともに動いているというのが逆に信じられない。今日昼ご飯をべながら少し話していたのだけど意外と知られていないようなので、話せる範囲でいかにひどいのか説明してみようと思う。 まず、ソースコードが大雑把に見積もって3750万行あるのだけど、その中でまともに機能しているコードは3%しかない。10分の1程度のソースコードで同程度の機能を実現しているシステムもあるのでほんとあのシステムのコードはゴミだと言っても過言じゃない(*1) プログラマとしてはなんでそのプロジェクトはそんな状態になってしまったのか気になるところだけども、まあ多くのプロジェクト同様、真相を知る人は誰もいない。でもまあ、実際に機能しているコードのコピーみたいなものがあちこちに散らばっていることからしてコピー&ペーストが盛んに

    そろそろ例のプロジェクトについて言及するか - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2011/03/09
    これは面白い
  • スケジューリングがタコだと使い勝手が良くない(コンピュータも人間も) - 西尾泰和のはてなダイアリー

    Code Camp (201004)で id:Voluntas にインスパイアされたことのまとめ どんなにCPUが早くてもスケジューリング(タスク管理)がタコなOSが入っているとイマイチ使い勝手が良くない。 外部との相互作用が少ない、純粋にCPUの演算能力に依存したタスクの場合はタスクの実行に必要な情報を全部メモリやキャッシュなどの「高速にアクセスできる記憶領域」に乗せて処理するのが効率いい。つまり自分ひとりで完結する頭脳労働中心のタスクは、閉じこもってコーラだけ飲んで48時間ぶっとおしでコードを書いたりするのが効率いい。 学生などの時にこのタスク管理方法での成功体験があると「この方法がよい」「自分向きだ」と勘違いしてしまいがち。それは違う。この方法ではマルチタスクが困難だ。どんな人も複数の仕事を抱えるより一つのことに専念した方が効率がいい。だからこの方法(シングルタスク的タスク管理)の方

    スケジューリングがタコだと使い勝手が良くない(コンピュータも人間も) - 西尾泰和のはてなダイアリー
  • ANOBAR - 西尾泰和のはてなダイアリー

    http://anobar.jp/ 写真も撮ったけどもオフィシャルの動画を見てもらったほうがどういうものかわかりやすいかも。 http://www.ustream.tv/swf/4/viewer.9.swf?&loc=/&cid=174211 ディスプレイがFEDだからなのか、文字を流したときの表示がクリアだった。あと勝手に新幹線の中のニュースが流れる電光版をイメージしていたのだけど、それより解像度が高くて(640 x 96)しかもフルカラー。シューティングゲームも動いていたから表示性能的には困ることはほとんどなさそうだ。動画を見ているとメニューを操作したり天気図を出したりするところも見られるかと思うけど、実物を見る前の想像よりかなりいいものだった。ANOBARを設置すると昔ながらのテレビにニコニコ動画みたいな「他の人と一緒に見ている感」をつけることができるわけか。でもそれだけにはとどまら

    ANOBAR - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2008/07/25
    これは面白そう
  • 初心者向けの言語探してないでコードを書けばいいと思う - 西尾泰和のはてなダイアリー

    「初心者向けの言語は〜」に初心者が思うこと - 遥か彼方の彼方から http://d.hatena.ne.jp/tek_koc/20080205/1202185452 これをみてフォロー書かなきゃと思いつつ忘れてました。 「初心者用言語」祭りが意外と盛り上がった件 - おびなたのはてな日記 http://d.hatena.ne.jp/earth2001y/20080205/p2 そしたらおびなたくんに先に書かれてしまいました。 書こうと思っていたことはほぼ重複するんですけど、いちおう書いておきます。 上級者の皆さんが「あれの方がいい」「これの方がいい」と話し合ってくれるのは嬉しいんですけど、少しばかりノイズに感じてしまいます。ごめんなさい。 少しばかりじゃなくてほとんどノイズです。なんだかすごく盛り上がったみたいだけど、その中で実際にプログラミング未経験の人間複数人にその言語を教えた経験の

    初心者向けの言語探してないでコードを書けばいいと思う - 西尾泰和のはてなダイアリー
    shimooka
    shimooka 2008/02/12
    だからこそ大切なことは、とにもかくにも「実際にやってみる」こと
  • 僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー

    よく質問されるけども、いつもうまく答えられない。 今回、ちょっといい説明方法が思いついたのでメモしておく。 僕のサイボウズラボでの仕事は、3年で1個の「イノベーティブななにか」を作ること。そして、そのために3年で10個の「リリースできるサービス/利用できる技術」を作ること。そしてそのために3年で100個の「プロトタイプ」を作ること。そしてそのために3年で1000個の「新しいアイデア」を思いつくこと。 逆に言えば、3年で1000個思いつき、100個作り、10個リリースして、1個のイノベーションを起こすこと。 イノベーションは狙って起こすことができないので、こうやるしかないのだと思う。当は、1000個の「新しいアイデア」を出すために10000個の「既存のアイデア」を学ぶべきなのだけど、そこはまだまだ追いついていない。 - あ、なんかブックマークがいっぱいついてる…。誤解がないように補足してお

    僕のサイボウズラボでの仕事について - 西尾泰和のはてなダイアリー
  • 1