タグ

ブックマーク / leoclock.blogspot.com (10)

  • 良いプログラマになるための5つのコツ

    先日「プログラマの履歴書」という記事で「コンピューターを使って世の中をほんの少し便利にすようとする」ことが良いプログラマになるきっかけと書きました。先日「どうしたらプログラミングができるようなるか」という質問を受けたので、参考になればと思いもう少し掘り下げてみることにします。 1. 「どの言語を学べば良いか」という問いから離れる 「ノーベル賞はこうして決まる」というには、セレンディピティ(serendipity: 偶然から生まれる偉大なる発見)という言葉が頻繁に登場します。ノーベル賞は狙って取るものではなく、科学への貢献に邁進するなかで生まれてくるものだと。 その一方、「Serendipity favors the prepared mind (偉大な発見は、準備ができている頭脳を好む)」とも言われます。プログラミングを始めるにあたってどんな言語を学べば良いかという問いに対しては「何が将

    kamipo
    kamipo 2015/09/09
  • プログラマの履歴書

    「コードを書け。それが履歴書だ」という昔の名台詞が目に留まったので、常日頃感じていることを書き出してみることに。 コードが GitHubで公開してあると、まず採用する側の視点としては非常に助かります。プロジェクトを2、3つ眺めるだけでも、この人が普段どんなことを意識してプログラミングしているのかが見えてきます。例えば、性能を重視しているとか、拡張のしやすさを意識してインターフェースをデザインしているとか。さらに人の興味の方向性、得意な言語などがわかるが何より嬉しい。過去の経験から、自己申告でJavaができます、C++ができますなどと言うだけの人が期待したレベルでコードを書けた試しがありません。 その次にわかるのがコミュニケーションスキル。基礎的な英語力の判断材料にもなるし、チームを組んだ時のイメージがしやすい。問題を共有する能力も大事。自分一人の頭の中でたくさん難しいことを理解して解決で

    kamipo
    kamipo 2015/09/01
  • Leo's Chronicle: データベースシステム入門:「データベースは体育会系図書館?」

    (データベースシステムとその研究の世界を一般の人にわかりやすく伝えるため、「図書館」をモデルにした話を書いてみました。試験に出そうな(?)部分は太字で強調してあります。) 「データベース」という言葉は、データの集まりという意味です。データベースシステムの研究では、例えて言うなら「欲しいがすぐに見つかる図書館」をいかに作るかという問題を考えます。ここで「データ」は図書館の「」に相当し、「ハードディスク」は「棚」がたくさん収められている図書館の建物だと考えてください。 「欲しいがすぐに見つかる」とはどういうことでしょうか?例えば、図書目録を調べて目的の棚の番号がわかったとしても、棚までの距離が遠ければがっかりしてしまいますよね?(高すぎて手が届かない、とか泣けてきます)

    Leo's Chronicle: データベースシステム入門:「データベースは体育会系図書館?」
    kamipo
    kamipo 2011/04/28
  • Leo's Chronicle: ぜひ押さえておきたいデータベースの教科書

    先日のエントリで少し話したのですが、僕が在学していたときの東大にはデータベースを学ぶためのコースというものがありませんでした(DB関係の授業は年に1つか2つある程度。現在はどうなんだろう?)。そんなときに役だったのは、やはり教科書。読みやすいものから順に紹介していきます。(とはいってもすべて英語です。あしからず) 一番のお薦めは、Raghu Ramakrishnan先生 (現在は、Yahoo! Research) の「Database Management Systems (3rd Edition)」。初学者から研究者まで幅広く使えます。データベース管理システム(DBMS)の基概念から、問い合わせ最適化、トランザクション管理など、これらを実装・評価するために必要な、「DBの世界での常識」が、丁寧な語り口でふんだんに盛り込まれています。この1冊を読んでおけば、DBの世界で議論するための

    kamipo
    kamipo 2011/04/28
  • Top 5 Database Research Topics in 2008

    岡野原君が自然言語処理関連で2008年に読んだ論文のベスト5を紹介しています。それに倣って、僕も個人的にインパクトのあった2008年のデータベース研究のベスト5を集めてみました。 Michael J. Cahill, Uwe Röhm and Alan D. Fekete. Serializable Isolation for Snapshot Databases. SIGMOD 2008. (ACM DOI) 真っ先に思い浮かんできたのがこの論文。SIGMOD2008のベストペーパーでもあります。僕自身、トランザクション処理を長く研究していた経験から、Serializability(ディスクのread/writeの順番をあるプロトコルに従って入れ替えても、データベースの検索・更新結果に影響を与えない)を保障しつつ、一秒間あたりに処理できるトランザクションの数(つまりスループット)を上げる

    Top 5 Database Research Topics in 2008
  • Flash-Based DBMSの最前線

    フラッシュメモリーを使ったSolid State Drive (SSD)の容量が160GBに到達し、市場価格も下がってきたことにより、ハードディスクの代替品としてSSDを使う用途がいよいよ現実味を帯びてきました。低容量のものなら既にiPodやデジカメ用のメディアなど身の回りにも普及しており、市場ではすでに「破壊的イノベーション(「イノベーションのジレンマ―技術革新が巨大企業を滅ぼすとき」より)」が起こっているといえます。(HDD搭載のWalkmanとか既に滅んでいる例もあるし。。。)

    Flash-Based DBMSの最前線
  • プログラマは世界をこう視る

    今回、縁があってこのの出版のお手伝いをさせていただきました。内容はやや難し目のパズル問題集。すべての問題に目を通して、紙と鉛筆で解けるものもあれば、実際に手を動かしてプログラムを書いてみたり。前半は、プログラマでない人でも取り組めるようになっていますが、お勧めは実際にプログラムを使って解く後半。 プログラミングコンテストに挑んだことのある人には、もうおなじみの考え方だと思います。普通の人間ならやらないけれど、コンピュータというお供がいると、すべての可能性を調べ上げるような愚直な方法でも着実に実行してくれる。その様子を見て、人間がより良いアルゴリズムを思いつく、というサイクルが問題を通して学べます。

    kamipo
    kamipo 2009/03/27
    買った。まだ読んでない。
  • 正規表現に見切りをつけるとき

    Perl, Rubyなど手軽に使えるプログラミング言語に慣れてくると、あらゆるテキストデータの処理に正規表現(regular expression)を使ってしまいがちです。 けれど実は、正規表現の処理能力を超えるフォーマットというのが存在します。その典型的な例が、XMLやJSONのように、入れ子になったデータフォーマットです。

  • プログラマとして生きるということ

    システムエンジニアプログラマーなどにおける過酷な労働条件を自嘲的に表現したもの。「土方」は差別用語及び放送禁止用語として扱われているため、使用の際には留意すること。 という意味だそうです。僕は研究者だけれど、プログラマでもあるので、プログラマが世間でこう呼ばれているのは非常に悲しいことです。プログラマというのは、当はとても魅力的な仕事です。土方で甘んじているのは、きっと「プログラマ」として生きていないのだとも思います。(例えば、矢野勉さんのエントリにも挙げられているような状況の人達です) プログラムをデザインする、ということ プログラムの場合、通常の土木工事と比べて顕著に違うのが、一度作ったコードを「一から作り直さないようにデザインできる」ということ。たとえば、コマンドライン引数を処理するプログラムを一度作ると、それをクラスの形に整理して(OptionParserクラスなどと名づけて)

  • Leo's Chronicle: 良い論文を書くために知っておくべき5つのこと

    英語で科学技術論文を書くための書籍はいくつか出版されていますが、大抵、日語と英語の表現やロジックの違いの説明が主で、「論文」というよりは「英語」の学習と質的に変わりません。ここでは、「論文」をいかに書くか、さらには「論文」を書くために「研究」をいかに進めるかという点に踏み込んだ内容を紹介していきます。 まず、コンピューター系の論文の書き方のHow toを示した書き物として、DB分野で有名なJennifer Widomの以下の記事が、良い指針となります: Tips for Writing Technical Papers (Jennifer Widom)この中から、introduction (導入部)で説明すべきことについて引用しました。 What is the problem? (解いている問題は何?) Why is it interesting and important? (なぜその

  • 1