StudyCS.log

CSを勉強している人が、学習の足跡を残すための手記

「ハッカーと画家」を読んだ

f:id:HoriK:20210405183908j:plain 

 ハッカーと呼ばれるような優れたプログラマがどのような気質やコーディングスタイルを持っているか。そして、そうした人々に作られるソフトウェアのデザインはどのような要素を満たしているか、に言及した名著。

 本書ではプログラマの最も重要な能力の一つとして開発スピードの速さが紹介されている。開発が早ければ士気を保つことは容易になるし、何よりも短時間で多くの価値を創出できる。手法としては、主要な目的を果たすだけのプロトタイプをすばやく開発して、あとはそれを徐々にブラッシュアップしていくというもので、これはちょうど画家がスケッチをしたり、絵の具を塗り重ねながら完成を目指すのに似ている。

 こうしたスタイルを取るためにハッカーたちは、重要な部分に集中できてかつタイプ数の少ない抽象的な言語、そして必要時にはソフトそのものを改変できるオープンソースソフトウェアを好む。

 良いソフトウェアのデザインというのも、ハッカーたちが好むソフトウェアに通ずるところがあって、シンプルで柔軟、そして目的の問題を正しく解決するのが大前提だ。新たにソフトを作る場合はそのソフトウェアが革新的である必要もある。これはタブーとされていることや困難とされているような問題に注目してみると、良いアイデアが発掘されることがあるようだ。開発の形態はベンチャー起業が理想的だ。ハードワークが前提になるし、ソフトの改変も圧倒的に早い。開発の対象は現在はWeb一択と考えて良さそう。

 この本を読んで僕のコーディングスタイルがあまりに時代遅れであることに驚愕した。僕は紙で問題を解いてからプログラムを書き始めるが、これは現代主流となっている高級言語の良さを殺している。問題に集中できるように抽象化が進んだのだから、その言語を使って、エディタ上で思考を重ねるべきだ。

 そして高級言語の中でもより高級な言語に移行する必要性も感じた。僕はいつもCでプログラムを書いているが、Pythonに移行しようと思う。移行しない理由がもう殆ど無い。

 という具合に、本一冊でコーディングへの考え方が大きく変わった。

参考文献

 「Paul Graham:著 川合史郎:監訳『ハッカーと画家 コンピュータ時代の創造者たち(Hackers and Painters: Big Ideas from the Computer Age)』オーム社 2005/01/25」

 

学部1年後期を振り返る

<<前 ”学部1年前期をふりかえる”

>>次 まだないよ

 

 年度も明けて、学部2年になろうとしている。学部1年後期の振り返りがまだであることに気づいたので、この機に振り返っておこう。主にTwitterを見つつ。

散歩を習慣化した

 前期に引き続いてコロナ渦まっただなかにある。そして、このコロナ渦の中を生き抜くためには運動習慣必要だと思ったので、まずは散歩からということで運動を始めた。最終的に、この習慣化は成功した。春休み期間中の今でも散歩は続けている。

大学でCSを勉強できるようになった

 前期はCS学科であるはずなのに教養科目ばかりでCSの勉強ができない、とか嘆いていた。ただ、この問題は後期に入ってからはカリキュラムの関係で自動的に解決された。後期はアルゴリズムとプログラミング、コンピュータアーキテクチャの講義がそれぞれ入っており、ようやくCS学科らしくなってきた感はある。アルゴリズムは成績が思ったほど良くなかったのだが、他は良好だった。

本を読むようになった

 

 後期は割と時間的な余裕があったので、空き時間を読書することに回すことができた。読みたかった技術書にいろいろ手を出したのはもちろんのこと、普段は読まないような小説に手を出したりもできた。今年の前期がどのようなスケジュールになるかわからないのだが、今後も時間が空いたら積極的に本を読んでいきたい。

解析学にボコされる

 いや、課題多すぎwww

そのほか

 ほかは、コンパイラの設計をかじってみたり、セキュリティをかじってみたり、いろいろかじった。なにか優れた技術を身に着けたとか、そういったことはなかったけど各分野についての見通しは良くなったので良かったと思う。

今年度1年を振り返って

 1年前の自分と比較すると、技術者としても人間としてもかなり成長した実感がある。

 技術者としては、技術についての見通しが良くなったことが何よりも大きいだろう。過去はコンピュータがただのブラックボックスにしか見えなかったものが、今は大まかにはどのように動作しており、各分野においてどのような研究領域や技術が使われているのかを(ざっくりとではあるが)想像できるようになった。

 人間としては、コロナ渦によって成長させられたところが大きい。孤独と向き合い、内省を対話を繰り返して、いままでぼんやりとしていた(議論を避けていたのかもしれない)部分をはっきりとさせることができた。具体的には、自分が卒業後に目指す姿やそのときにどの程度のスキルを持っていればよいか、そもそもの動機は何だったか、など。

 総じて今年度は僕にとって良い1年だった。

 

 

「ホワイトハッカー入門」を読んだ

f:id:HoriK:20210330090853j:plain

 いかにもなタイトルなので、気になって読んでみた。内容は、セキュリティにおけるホワイトハッカーを「攻撃者と同じ目線に立ってリスクを分析できるセキュリティ人材」として定義し、そのポジションに立って、攻撃のフローや各工程の技術を紹介するものになっている。
 読み始める前は世間ではありがちな、倫理観をひたすらに説いたり、就職や資格勉強の話を書いたり、とかそういうものかと思っていたが全く違った。むしろそういった情報は「その他の雑多な情報」ということでまとめられていて、メインはあくまでも技術の紹介ということになっている。
 技術についてはかなりの広範囲をカバーしており、”攻撃者の目線から”というスタンスで一貫している。個人的にかなり好感が持てたのは、実際に利用されているツール類やデータベースを名指して紹介しているところだ。aptツールでダウンロードなどして、「これが実際に使われているツールなのか!」とリアリティを感じることができた。刺激的であった。
 シンプルにホワイトハッカーに興味があるという人だけでなく、セキュリティに興味があるがいまいち実態がつかめない、と思っている人にも進められる一冊であろう。

 なお、具体性が高いのはこの本の価値を間違いなく高めているが、情報が具体的であることにはメリット/デメリットの両方が存在する。メリットとしては、上述の通り現実に近い事実を知ることができること。反対にデメリットは、サイトやツールの変化によって本の資料的価値が低下しやすいことだ。何が言いたいかというと、情報価値が低下しないうちにこの本は読んだほうが良いということ。積読している人は早い段階で手をつけましょうw

参考文献

 「阿部ひろき:著『ホワイトハッカー入門』株式会社インプレス 2020/10/21」

最近疲れが取れない感じがする

2021/03/28
 最近疲れが取れない感じがする。夜しっかり寝ているはずなのに昼間に眠気が襲ってきたり、デスクを離れた瞬間にめまいがしたりとか、肩こり、腰痛が襲って来たりとか。毎日の散歩習慣で一応運動はしているのだが、筋力を鍛えるようなトレーニングは一切していない。そのため、体幹を支える筋肉が衰えてしまっており、これが原因になっているのではないか、と思っている。
 ずいぶん前に買ったまま積読にしていた、筋トレ本に手を出すべき時が来たのかもしれない。

学習記録
 ・ペンマンシップで筆記体の練習をした。筆記体をきれいに書くというのは不慣れにつき、なかなか難しいところだが、筆記体で記述された文章を読み解くことはできるようになった。かつては英語の指導要領の中に筆記体も含まれていたが、現在はブロック体のみを教えて、筆記体は指導内容に含めないのが一般的である。とはいえ、筆記体もまだしばしば使われることがあるため、英語に興味のある人は学んでみるとよいだろう。
・ホワイトハッカー入門という本を読み始めた。この本の興味深いところはとにかく具体的であるというところだ。〜をするツール、というようなぼやかした表現ではなく、実際に使われているツールを名指しで書いてあったり、実行するコマンドが記載してあったりする。発刊されてからまだそんなに経っていないこともあって、情報としての価値も高い。早めに出会えてよかったと思う。

「孤独であるためのレッスン」を読んだ

f:id:HoriK:20210326104515j:plain

 自分は日々理解者が欠如している、と感じている。友達と過ごしてみても、親と会話してみても、一向にこの孤独感というか欠如感が解消されない。そこで、ヒントを求めてこの本を読むことにした。

 一言でこの本を表すとすれば、「孤独を(強烈に)リ・ビジョニングして、ルールと手法によって積極的に孤独を取り入れる本」といった感じになるだろう。

 はじめは言葉通り、孤独をリ・ビジョニングすることから始める。現代社会は社会性や協調性に過剰に重きが置かれており、「孤独になること=リスク」といったような価値観が定着している。そして、そうした価値観は引きこもりやハラスメント、ランチタイム症候群や多重恋愛、共依存恋愛などを引き起こす一因となっている。しかし「孤独を深める」ことはリスクであるどころか、想像力や創造性を高め、現代社会を強く生きるための必須の行為なのである。それは孤独を深めることによる様々な恩恵によるものだ。

 孤独を深めることの最も大きな恩恵は「自己回復」だろう。自己回復とは、自分独自の価値観を獲得することであり、これは他者や世間の評価軸で物事を判断する思考停止状態から脱出するということでもある。自分にとって何が大切なのか、何が優先されるべきか、を自分で判断して取り組めるようになる。多くの人がやりがちな(自分もそうだった)過剰な自己否定も、自己回復によって克服することができる。

 また、一口に孤独と言ってもいくつかのカテゴリーが存在している。本書では4つのカテゴリーに分類されている。それぞれ

 A型の孤独ー>他者とは理解し合えると思っており、人々は同質なもので個別性はないと考えている人の孤独感

 B型の孤独ー>他者とは理解し合えないと思っており、人々は同質なもので個別性はないと考えている人の孤独感

 C型の孤独ー>他者とは理解し合えないと思っており、人々は個別性を持った多様な存在であると考えている人の孤独感

 D型の孤独ー>他者とは部分的にではあるが理解し合えると思っており、人々は個別性を持った多様な存在であると考えている人の孤独感

となっており、D型の孤独にまで発達させることが、孤独を積極的な意味合いで深める一つのゴールである。ちなみに、自分の感じている孤独感はちょうどB型の孤独感であった。多くの人は、A型の孤独から始まり、BないしCを経て、D型へと成熟していくようだ。

 さらに、本書では孤独を深めるためのルールや具体的手法も紹介されている。

 ルールの中で特に興味深かったのは、自己否定をしない「超越的な存在」を仮定して養成する、というものだ。前述の通り、自分の自己肯定感が低い原因は、過剰なまでに自己否定を行っていたことに由来していた。理解者を探したり、求めたりする以前に、自分自身が自分の良き理解者になる必要があったのだ。

 具体的手法でもこれに関連する手法に興味を持った。それが「ワールドワーク」である。これは、一つテーマを定めてそのテーマについて発生しそうな立場を列挙し、順にそれぞれの立場に立って意見や事情を考える、というワークである。多様な観点で一つの問題を考察することで、問題についての理解が深まることはもちろん、全体の意見を公平に俯瞰する能力が養成される。これは、自己に内在するさまざまな人格や感情を耳を傾けて、深く追求するというものに類似した行為であり、したがって、これは孤独を深めて「超越的な存在」を養成する練習に転用可能である。

 この本を読んで、孤独との関わり方を見直すことができた。ここに紹介しているものの他にも、さまざまな具体例や、ルール、手法が紹介されている。コロナ渦で孤独を感じている人や、理解者がいないことに欠如感を感じている人などには、おすすめできる一冊であると言える。

参考文献

 「諸富祥彦:著『孤独であるためのレッスン』NHK出版 2001年10月30日」

生姜買い忘れたw

2021年3月20日

 生姜焼きを作ろうと思ったのだが、生姜を買い忘れた。一応生姜焼きの素、みたいなのは手元にあるのだが、違うのだ。僕がやりたいのは、素に材料を突っ込んで終わり、みたいななんちゃって自炊からの脱却なのだ。

 、、、、、どうでもいいことだな。生姜はその後ファミリーマートで購入した。最近のコンビニの品揃えはすごい。調味料も結構充実している。下手したらコンビニの素材だけで自炊なんてこともできるかもしれない。流石に無理があるか。

学習記録

 ・コンピュータアーキテクチャの第9章を読んでおり、これはネットワークアーキテクチャを説明するための章である。内容はやや古くなっており、公衆電話回線やPHSについて説明に相当数のページが割かれている。とはいえ、無向グラフなどを持ち出してネットワークの効率などをしっかりと考えるような、典型的なネットワーク関連の研究ならばいざ知らず、ネットワークを構成するためのハードないしソフトについての常識はあまり変化していないように思えるので、内容の古さはそこまで問題にならないのかも。

 ・NHKBooksの孤独であるためのレッスン、という本を読み始めた。第1章では社会的に(世間的に、が適切かも)避難されがちな、いわゆる「孤独な人」達に対する価値観を見直すリ・ビジョニングを行った。引きこもり等に関しては割と月並みなだなぁ、という印象を受けたが、パラサイト・シングルや独身女性の価値観への言及は興味深いところがあった。

 ・別にこれは勉強ではないのだけれども、3月分の積読を新たに仕入れた。今週は歴史に関する本と興味のあったSFをいくらか仕入れた。

「わかりやすさ」より「丁寧さ」

2021年3月15日

 今日はとある資格参考書を読んでいたのだが、内容に大変驚愕する点があった。メモリやファイル装置の速度性能を語呂合わせで暗記するように書いてあったのだ。メモリアーキテクチャでは、”参照局所性に配慮したピラミッドのような構成”と”置換の繰り返しによってヒット率を高める”、というのが極めて重要なアイデアであり、その観点でメモリ装置の速度性能がキャッシュ>MM>ディスクキャッシュ>ファイル装置の順になるのはひどく当たり前のことである。読者はこの本を読んでなお「メモリ」がどこか謎めいたものであるような印象を払拭できないであろう。

 この本も例にもれないが、「わかりやすさ」を謳っている本は重要な理論や理屈についての議論を蔑ろにして、天下り的な論理展開や、暗記を強要するようなものが多いので注意が必要だ。僕は前期に力学の講義を取っていたのだが、その時の教科書がまさにそんな感じでなかなか読むに耐えないものであった。悲惨なことに、読み終えて演習問題を解けるようになった段になっても全く見通しが良くならなかった。

 その界隈で名著とされている本の数々、パット見堅苦しいような印象を受けるし、使われている言葉も平易ではないものが多い。しかしやはりきちんとした教科書を理解することにはそれなりの価値があるのだと思う。読むときこそつらいものだが、読み終えたあとに本にかかれてあったような理屈が、様々なところに適用されていることがわかり、文字通り「世界が変わった」ような気分になれる。学習というのは本来そういった感動や、世界が開けたような感覚をもたらしてくれるものであるはずだ。わかりやすさより丁寧さを謳ったほんを買うのが良い。

 きちんと理屈の通った本を読むことが大切だ

と底辺学生の自分が調子に乗って語ってみた

学習記録

 ・コンピュータアーキテクチャの基礎の8章をついに読み終えた。最後はノースブリッジやサウスブリッジの話をして、具体的な規格が紹介された。気づいたのは世の中にはパラレル通信がほとんど生き残っていないことだ。伝送速度の向上に伴ってパラレル通信に必須の同期制御が現実的ではなくなってしまったことがどうもその要因のようだ。

 ・暗号技術のchapter4を読み終えた。内容が十分に理解しできなかったため、再度同じ章を読み直している。

 ・高校数学の復習などした。軽めの問題集を選んだから、休憩時間とか朝の目覚ましの代わりなどに解くのにとても適している。

 ・基本情報技術者試験の勉強を進めた。参考書にはあまり時間をかけず、過去問に進むの良いのかな、などと思っている。