古い記事
ランダムジャンプ
新しい記事
Undergraduation
<http://paulgraham.com/college.html>
via <http://www.rubyist.net/~matz/20050319.html#p01>

ポール・グラハム (Paul Graham) の2005年3月の最新エッセイ。
すごいハッカーになるには大学で何をすべきか、という話(かと)。
大学で何を学んだら良いのか?というコンピュータサイエンス専攻の大学生の質問から話は膨らんでいく。

■Hacking
すごいハッカーになるには?すごいプログラマになるには?
- 一つの方法は、講義よりも実践。しかし学業に支障があるかも。
- もう一つの方法は、すごい人を見つけて、その人から吸収すること。
(アカデミックvsハック、みたいなテイストも
  In your own projects you don't have to worry about novelty (as
professors do) or profitability (as businesses do). All that matters is
how hard the project is technically, and that has no correlation to the
nature of the application.



■Math
高校レベルの数学+α以上は必要ない。とはいえ、
But while you don't literally need math for most kinds of hacking, in
the sense of knowing 1001 tricks for differentiating formulas, math is
very much worth studying for its own sake. It's a valuable source of
metaphors for almost any kind of work.
という観点から、もっと勉強しとけば良かったとポール・グラハムは言っている。

[3] Eric Raymond says the best metaphors for hackers are in set
theory, combinatorics, and graph theory.
集合論、組み合わせ論、グラフ理論。大学でも講義取ったし、
院生のときには「離散数学」という枠組みで復習しました。
確かにこれらは押さえるべき。

■Everything
いろいろ学べ!
The point is, you'll learn more by taking a class in another
department.
具体的には:
math, the hard sciences, engineering, history (especially economic
and social history, and the history of science), architecture, and
the classics
学ばなくてもいいもの:
the social sciences, philosophy, and the various departments created
recently in response to political pressures.

語学は陶芸クラスみたいな課外授業と考えた方がよい、と。
英語が母国語なハッカーなら不要かもしれないけど、
世界にどのような言語があってどのような特色があるかくらいは学んでもらいたいね。


■Jobs
就職か大学院進学か!?
就職の場合、「大企業に勤めたいならWindowsを、クールな小企業や研究所に勤めたいならLinux 上のRubyを学ぶべき。自分で起業したいなら最強のツールを自分で探すこと。」(Matz氏の超訳)

The programs you write in classes differ in three critical ways
from the ones you'll write in the real world: they're small; you
get to start from scratch; and the problem is usually artificial
and predetermined. In the real world, programs are bigger, tend to
involve existing code, and often require you to figure out what
the problem is before you can solve it.
授業でのプログラミング:
(1)小さい、
(2)ゼロから書く、
(3)人工的できちんと定義された問題を対象にする。
会社(実世界)でのプログラミング:
(1)大きい、
(2)ぐちゃった既存コードを何とかする、
(3)問題が何かを見つけなければならない。

とのこと。


■Grad School
大学院に行くべきか否か。ええと、これに関してはまたそのうち...。
ref. [2005-01-29-3]

§

ポール・グラハムのエッセイ集「ハッカーと画家」もオススメ!

ポール・グレアム / ハッカーと画家

(ref. [2005-03-21-5])