読者です 読者をやめる 読者になる 読者になる

牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

How To Become A Hacker(ハッカーになろう)の『1. プログラムのやり方を学ぶ』だけを中学時代に英語の成績が2だったにもかかわらず勉強がてら初めての翻訳などしてみた

Memo Python


Pythonを知ったきっかけが Eric Steven Raymond氏のHow To Become A Hackerの和訳、ハッカーになろうだったりする。
たまたまオリジナルの英文を見たらなんか若干?変わってるようだったので『Basic Hacking Skills』 の 『1. Learn how to program.』だけを訳してみることにした。(Revision 1.38 ?)
英語の勉強を兼ねてるから、無謀にも和訳は見ないで(||゚Д゚)
本人の話口調とかわからないから、なんとなくなノリで。でわ、いきます...



基本的なハッキング技術とか

1. プログラムのやり方を学ぶ


これは当然ながらハッキング技術の基本。もしコンピュータ言語を何も知らなければ、Python から初めることを薦めるよ。きれいにデザインされてるし、きちんと解説してるドキュメントもあって、初心者に比較的親切だから。最初に学ぶ言語として優れているにも関わらず、ただの遊び道具ではないよ。とても強力だし柔軟性があって、大きなプロジェクトにも適してる。僕はPythoの評価をもっと詳しく述べた文書も書いてるよ。それから、優れた入門書Python Web Site から入手できる。


以前は、Javaを早期に学ぶのに良い言語だと薦めていたけど、この評論が僕の意見を変えてしまった(『The Pitfalls of Java as a First Programming Language』で検索してみて。その中に書いあるから)。第一級のハッカーは、『ホームセンターの配管工のように問題解決するやり方』みたいな呆気にとられる表現はしない。コンポーネントの実際の振る舞いを知るべきだよね。だから恐らく最善なのは、まずCとLISPを学び、それからJavaだと思うよ。


もし本気でプログラミングを習得するなら、Unixの中核言語であるCを学ぶべき。C++はCと極めて密接な関係だから、もし一つ知っていればもう一方を学ぶことは難しくないよ。だけど、どちらも初めに学ぶには適していない。でも本当は、Cでのプログラミングをできるだけ避けられれば、さらに生産性が向上するかもしれない。


Cはとても効率よく速く動き、かなり機械資源に節約的なんだ。残念ながら、Cを使用するには資源(メモリのような)をたくさん低水準言語で管理をしなければならない。あらゆる低水準言語のコードは複雑でバグを誘発しやすく、デバッグに膨大な時間を奪われる。その上、現在の機械は強力だが同じように厄介ごとも強力になって、たいてい悪い交換条件になる――より賢いのは、それほど速く動作せず作業時間を費やさない言語を利用する、だけど時間はもっと効率的に使う。だからやっぱりPythonだっちゃね。


とりわけ注目すべき別の言語にPerlLISPがある。Pealには実用的な理由で学ぶ価値があります。現役のWebページやシステム管理等とても広範囲に利用され、たとえPerlで書くことがなくとも、読めるくらいはできるようになっておこう。たくさんの人がPerlを使用するから、僕がPythonを使うべきだと提案するように、Cの効率が不必要な仕事でCは避けるべきとの同じ理由で。Perlのコードを理解できる必要に迫られるかもしれないしね。


LISPにも異なる理由で学ぶ価値がある。深遠な悟りをついに体験できることでしょう。その経験は人生の残りを優れたプログラマーにするでしょう。たとえ実際にLisp自体をたくさん使うことがなくとも。(まあまあ簡単にできるLISPの初歩の体験は、Emacsの編集モードかGIMPのScript-Fuプラグインを書いたり修正すること)


本当のところ最良なのは、PythonC/C++JavaPerlそしてLISPの5つすべて学ぶこと。さらにとても重要なのは、これらのハッキング言語はプログラミングするために大きく異なるアプローチをすること。そしてそれぞれ貴重な様式を教えてくれる。


しかし、あなたが技術水準に達しないハッカーか、実に単純にただ言語を蓄積するプログラマーだとわかっているなら――どの言語からも独立して、一般的なプログラミングの厄介な問題を熟考する方法を学ぶ必要がある。本物のハッカーとして、新しい言語を学ぶために数日でマニュアルに何が書いてあるのか、それくらいとっとと要点を理解する必要がある。この方法をまったく違った言語でも学ぶべき。


ここではプログラムを学ぶ方法は適切に説明しない――それは複雑な能力だから。ただし、自信を持って言えるけど書籍や講座では駄目だよ――多くの、恐らくとても有能なハッカーの大半は独学だからね。書籍から言語の特徴は学べるよ――知識の片鱗だけど――。しかし物事の考え方は、生きた技能の中で実践と実習でのみで学べる知識が構築される。役に立つのは(a)コードを読むこと、そして(b)コードを書くこと。


Peter Norvigはグーグルにいる一流のハッカーの一人で、とても広く使われているAIの教科書の共著者であり、Teach Yourself Programming in Ten Yearsというすばらしいエッセーも書いている。彼の“プログラミング成功のためのレシピ”は十分に配慮する価値がある。


プログラムを学ぶことは上手に自然言語を書くことと似てる。最良な方法は達人が書いたものを読むこと。いくらか書いてみる。もっとたくさん読む。もう少し書いてみる。もっとたくさん読む。もう少しいくらか書いて... そして、書いたものが強力で無駄のないよう改良され、自分の手本に見えるまで繰り返すこと。


昔は優れたコードを発見することは困難でした。なぜなら、未熟なハッカーが入手できる資料の中で、読んでいじくり回すための大きいプログラムは少なかったから。これは劇的に変わった。オープンソースソフトウェア、プログラミングツール、それからオペレーションシステム(すべて作ったのはハッカー達)は現在いろいろなところから入手できる。そして、それは巧妙に次の題目へ...


−−おしまい−−


訳してみての感想など


えらい大変だった。えらい時間がかかった。もう翻訳やらないかも、たぶん(||゚Д゚)
(ちなみに続きの 『2. Get one of the open-source Unixes and learn to use and run it.』でUnix初心者にUbuntuを推奨してるあたりが2004年の和訳と違ったりするけど)
何時間もかかってこれしか出来ないってへこむなぁ。やっぱり英語は苦手だと痛感。
そのうち直す...かもしれない。
そこは違うだろ、こうだろ的なつっこみ求む(´・ω・`)


英語の勉強にはなった気がするが、英語が大嫌いになりそうだ(||゚Д゚)
とりあえず和訳のありがたみが身にしみるほどわかった希ガス

感謝

いつも参照させていただいている和訳ドキュメントなどの関係者の方々に感謝します。

みなさん感謝です。
これからも、よろしくご指導ご鞭撻の程を(勝手に)