til

日本語練習

2019-06-25 日報

Get Programming with Haskell のUnit1のLesson9を読んだ

関数型言語のお気持ちを知りたくて学んでいる。 haskellで良さそうな本書があったので読んでみている。

Lesson9は高階関数のお話。基本となるmapやfilter、foldr, foldlの話がざっと書かれ、練習問題もそれに親しいものだった。

ただ3つ目の練習問題がmap/filterなど使わないできれいにかけてしまい、逆に学んだ関数をどうやって使うのかわからなくなってしまったので、次に読んだときは思いつければいいなと思っている。

このまま1日1Lessonの速度で進めてみたい。

アルゴリズムイントロダクション 第3版 総合版を読み始めた

本来であればScala関数型デザイン&プログラミングを読もうかと思ったが、よく考えたら同時に二つも関数型言語学んでもしょうがないという結論に至ったのでかねてから読みたかったアルゴリズム関連の本を読み始めた。

蟻本もあるにはあるが、ちょっとその前に分厚目のこちらで優しく解説されたいという気持ちが湧いてきたのでこちらを読み始め。

せっかくなのでrustで実装しようと環境を整えたところで今日は終わり。

読みながらRustで実装していこうと思う。

1日にどれくらい読めるか様子を見てからペースを決めようと思う。

問題解決力とコーディング力を鍛える 英語のいろはの1章を読んだ

英語はいつもやらなければいけないものなのに手を付けられていないので、本が読めているうちに本書も手を付けておいた。

1章は簡単な文法の基礎のように見せかけて前置詞+副詞のお話。 とりあえず読んだが、文法であればforestを読んだほうがまだ体系的な理解が進みそうという印象だった。

1日1章ペースで読めそうなので、それを目標に読む。

所感

今年の後半はアルゴリズムプログラミング言語とデータベースと統計から好きなところをつまむのが重になりそう。

2019-06-24 日報

Get Programming with Haskell のUnit1のLesson8を読んだ

関数型言語のお気持ちを知りたくて学んでいる。 haskellで良さそうな本書があったので読んでみている。

Lesson8は再帰の話(ふたたび)。

すでに再帰関数自体は触れられていたが、Listに対する操作をそれで書き直すと言う話がメイン(曰く再帰は慣れだ!とのこと)

他にもアッカーマン関数やコラッツ予想の話なども触れられていたりと、練習用の章だった。

このまま1日1Lessonの速度で進めてみたい。

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイドの3章を読んだ

Scala続きで本書を読み始めた。haskellで関数型学んでいるのでいらないかとも思ったのですが、scala側も概要さらったので次のことがしたくなりこちらに手を付けた。

こちらも↑のhaskell本同様の内容だったが、Scalaの文法分理解が追いつくまで時間がかかった。objectの定義の仕方や、その関係が頭に定着する前に物事が進んでしまった。 もう一度読んでも良いかもしれない。

なお、本章はかなり練習問題が豊富で、やればかなり面白そうという印象を受けた。残念ながら手を付けられていないが、2周めで手を付けるくらいのほうが精神衛生上いいかもしれない。

読んだ目次は以下

  • 第3章 関数型プログラミングのデータ構造
    • 3.1 関数型データ構造の定義
    • 3.2 パターンマッチング
    • 3.3 関数型データ構造でのデータ共有
    • 3.4 リストの再帰高階関数の一般化
    • 3.5 ツリー
    • 3.6 まとめ

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。

問題解決力とコーディング力を鍛える 英語のいろはの0章を読んだ

英語はいつもやらなければいけないものなのに手を付けられていないので、本が読めているうちに本書も手を付けておいた。 概要を読んで僕のための本じゃん。。。と思って積読したっきりだった。

「最新の技術を勉強したいけど,苦手な英語とどう向き合えばいいのかわからない」「とにかく効率的に必要な英語力だけを身につけたい」「もっと端的なクラスの命名ができるようになりたい」など,英語を勉強する際に悩んだことはないでしょうか。 本書では,英語の苦手な方でも読み始められるように,日本語と英語を比較しながら「エンジニアが本当に使える英語」を紹介します。かんたんな文法の復習をはじめ,インプット/アウトプットの方法,OSSに参加する際の英語の使い方を解説。コーディングのスキルを上げるための,文法と変数名の関連性やTDDへの応用まで扱うので,一歩踏み込んだ力も身につきます。

0章はそのまま概要という感じで、なぜ英語が身につかないのか、第1第2言語の習得の際の流れの違いなどが述べられる。他の英語学習本と比べると根拠のあるような文章が続く。

1日1章ペースで読めそうなので、それを目標に読む。

2019-06-23 日報

Get Programming with Haskell のUnit1のLesson7を読んだ

関数型言語のお気持ちを知りたくて学んでいる。 haskellで良さそうな本書があったので読んでみている。

Lesson7はListの話。

再帰によるループ処理の基本、その際に考えるべきこと(終わりの条件なにかなど)などが書かれていた。

また、haskellのパターンマッチの基礎も書かれていた。

今の所内容としては別の本で見たものばかりなので完全に英語のお勉強状態になっている。このまま1日1Lessonの速度で進めてみたい。

ベイズ統計の理論と方法の2章の資料を全部読んだ

いろいろと応用されていて、複数分野で使う予定なのでベイズ統計関連書籍を読んでいる。 本書はベイズの理論的な側面を紹介しており、通常初学者には隠されてしまうようなものが乗っているので積読していたが、ちょっとした機会があり、読んでいる。

今日はちょっとした機会の延長線上で説明を聞く日だった。そのために資料に目を通し、その後ぶっつづけで説明を聞いた。

2章に感してはだいぶ分かるようになったが、細かい計算やお気持ち的な箇所は追いきれていないので、ちゃんと追っておきたい。

次は3章の正則理論。どんどんわからないところに来ているので、周りの知識も埋めていきたい。

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド - インプレスブックスの1章及び2章を読んだ

Scala続きで本書を読み始めた。haskellで関数型学んでいるのでいらないかとも思ったのですが、scala側も概要さらったので次のことがしたくなりこちらに手を付けた。

本日読んだ箇所はほぼ復習だったので特段感想はない。

読んだ目次は以下

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。

Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作るの2章を読んだ

久しぶりにGoが書きたくなり、積読していた本書を久しぶりに読み始めた。

チャットアプリのサーバとして ChitChat というものを立てる過程でcookie, DBアクセス、動的HTML生成などをさらった。

流石にDBアクセス周りは(おそらく作者独自の)ライブラリを利用しているようだったが、それ以外は標準ライブラリでことを済ませていた。

読んだはいいもののまだ実装はできていないので、次にやるときは先に2章の実装をしようと思う

2019-06-22 日報

Get Programming with Haskell のUnit1のLesson6を読んだ

関数型言語のお気持ちを知りたくて学んでいる。 haskellで良さそうな本書があったので読んでみている。

Lesson6はListの話。

Haskellに置いて重要な(特に再帰的な処理に重要な?)データ構造 この構造の操作用の関数(head, tail, reverse, etc...)の使い方などのまとめのようなものだった。

久しぶりに(Lesson3ぶりに)練習問題を解いた。このまま1日1Lessonの速度で進めてみたい。次は再帰とパターンマッチの話。

実践Scala入門 の7章を読んだ

Scala続きで7章を読んだ。7章自体はscalaのテストツールのお話。 Scala標準でのテストツールは存在しないものの、各種ライブラリが揃っており、そちらの紹介(ライブラリ例と、一部実際のコードを書きつつの紹介)だった。

色んなスタイルでかけるのは良いなという感じで、Rspecライクにかけるものは(自分がRspecに慣れているという点もあるが)見やすかった。

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。そろそろ終わりそう。

低レイヤを知りたい人のためのCコンパイラ作成入門のStep8 分割コンパイルを実装板

Rustに入門をして低レイヤのより詳細を知りたくなったので 低レイヤを知りたい人のためのCコンパイラ作成入門 を読んでいる。

この章はコンパイラの実装というよりは、ソースファイルの分割という少し本筋から離れた章になっている。 なぜ分割コンパイルが必要なのか、それを実現するためのリンカなどの存在を説明したあと、大体の分割方針をもとに分割するという課題が与えられる。

私自身分割コンパイルが初めてだったので、ヘッダファイルに何を書けばよいのかなど都度調べながら(人に聞きながら)実装した。

幸いにもうまく実装でき、現状のテストも全て通ったので8商は無事完了した。

引き続き9章以降を読んでいく。次は 関数とローカル変数なのでかなり楽しみ。

ベイズ統計の理論と方法の2章の資料を読み始めた

いろいろと応用されていて、複数分野で使う予定なのでベイズ統計関連書籍を読んでいる。 本書はベイズの理論的な側面を紹介しており、通常初学者には隠されてしまうようなものが乗っているので積読していたが、ちょっとした機会があり、読んでいる。

すでに2章全体の流れは目を通していたが、とあるところからとても良くまとまった資料を手に入れたのでそちらを読み始めた。

明日はこれにかかりっきりになるので、朝からそちらの資料を漁る予定。

2019-06-21 日報

Get Programming with Haskell のUnit1のLesson5を読んだ

関数型言語のお気持ちを知りたくて学んでいる。

haskellで良さそうな本書があったので読んでみている。

Lesson5は第1級関数の話。closureの話。

lambda関数を用いて書くと汚くなるケースがあるが、これをHaskellの部分適用を用いてリライトすればきれいになるという話から始まる。 実際にはclosureを返す(という理解で問題ないはず。。)方法の一つとして部分適用がある様子。 closure自体は外部の変数に参照を持った函数で、その変数の状態を内部に保持するようなちょっと不思議な関数。

Haskellの関数は部分適用がデフォルトでされるが、これは(変数の数が引数の数に一致しない限り)closureを返している様子。多分引数を外部の変数として持つclosureと理解するとスッキリするかもしれない。

このまま1日1Lessonの速度で進めてみたい。次はListのお話。

実践Scala入門 の6章を読んだ

Scala続きで6章を読んだ。6章自体はscalaのビルドツールsbtのお話。 sbtとはというところから、なぜ必要なのか(これはscalacだけでは解決できないところをsbtがよしなに解決してくれるということだからなのだが)と言ったところを踏まえつつ、実際の設定する値やコマンド、ハマりどころなどが書かれていた。

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。

Rustで始めるネットワークプログラミングの1.4まで読んだ

以前からsocket通信という言葉は耳にしていたものの、内容をあまり調べられておらず、今回500円だった本書を購入。 socket通信とはというところから、実際にtcpでの通信をしたところで時間切れになったので、引き続き読んでいきたい。

以前実践Rust入門を途中まで読んでいたので思い出しながら書けたので頭の体操になったのも良かった。

Goプログラミング実践入門 標準ライブラリでゼロからWebアプリを作るの1章を読んだ

久しぶりにGoが書きたくなり、積読していた本書を久しぶりに読み始めた。

1章はGoの歴史とWebアプリケーションとは(HTTPのお話とか)の概要が述べられ、最後に簡単なサーバを書いて終わった。

ちょっと今日はベイズはお休み。

目次的には(その名の通り)実践的で面白そうな内容になっているので、興味に応じて読んでみようと思う。

2019-06-20 日報

Get Programming with Haskell のUnit1のLesson4を読んだ

関数型言語のお気持ちを知りたくて学んでいる。

haskellで良さそうな本書があったので読んでみている。

Lesson4は第1級関数の話。関数が第1級というのは関数が他の値(例えばintとかcharとか)と同様に変数に代入できたり、関数の返り値として返せるというもの

実際に冗長な処理を書いてそれを第1級関数でリライトしながらの説明など、わかりやすかった。

正直その効用はあまり理解していなかったうえに、別段積極的に使うものでもないかなと思っていましたが、Rubyのmapなどでも同様の構文(外からの代入というわけではなくブロック構文だが)で使っているものが紐づくと考えれば確かに有用そうという感覚はついた。

このまま1日1Lessonの速度で進めてみたい。

実践Scala入門 の5章を読んだ

Scala続きで5章を読んだ。5章自体はscalaの非同期処理を司るFutureのはなし。

ScalaではHTTPなどの外部との重い処理を分離したり、並列で計算させるための構文としてFutureを提供している。 Scala Schoolではあまり理解できなかったが、本書を読む限り感覚的にはJavascriptのPromiseとほぼ同義で問題なさそう。ただしJavascriptと異なり別スレッドが立ったりする様子。 HTTPなどの処理をFutureでくるみ、jsのthenのような構文で成功/失敗の際に呼ばれる関数を定義していくという感じで進められている。利用者的にはPromiseとあまり変わらない(+αとして型とthen. catchよりもうちょっと豊富なメソッド郡はある)という印象だった。

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。

ベイズ統計の理論と方法の2章全部一旦目を通した

いろいろと応用されていて、複数分野で使う予定なのでベイズ統計関連書籍を読んでいる。 本書はベイズの理論的な側面を紹介しており、通常初学者には隠されてしまうようなものが乗っているので積読していたが、ちょっとした機会があり、読んでいる。

とりあえず話の流れを掴むことを第1に読んでみている。流石に紙に書かないと理解度がぐんと落ちてしまうが、だいたいベイズで使いたい補題などの整理という意味では全体の流れに目を通せたかなともう。 もう1回2章の頭から読み始め、今度は省略しないようにする。

渡辺先生のLecture noteも読めるところから目を通したいがすぐ忘れるので再度メモしておく。

2019-06-19 日報

Get Programming with Haskell のUnit1のLesson3を読んだ

関数型言語のお気持ちを知りたくて学んでいる。

haskellで良さそうな本書があったので読んでみている。

Lesson3はlambda関数の話。単なる名前無し関数という定義では有用性が見えづらいが、これがある場合は表現力、スコープなどの点で有用的なことが書いてあった。

問題自体もすこし考えながら解けた。このまま1日1Lessonの速度で進めてみたい。

実践Scala入門 の4章を読んだ

Scala続きで4章を読んだ。4章自体はscalaのcollection操作のはなし。

seq, mapなどのrubyでいうenumerableのようなデータ構造があり、それぞれ具象クラスを持つということ、それぞれの性質及び操作のためのメソッドなどが紹介されいてる。 意外だったのはfor文の表現力が高く、場合によってはfor文のほうがきれいに書けてしまうというところだった。haskellの内包表記に近いイメージでfor文が使えるのはだいぶ便利そう。

引き続き読んでいき、scalaの理解を深める。1日1章読めれば良いなと言う感覚で読んでいく。

ベイズ統計の理論と方法の2章、2.2.1, 2.2.2に目を通した

いろいろと応用されていて、複数分野で使う予定なのでベイズ統計関連書籍を読んでいる。 本書はベイズの理論的な側面を紹介しており、通常初学者には隠されてしまうようなものが乗っているので積読していたが、ちょっとした機会があり、読んでいる。

とりあえず話の流れを掴むことを第1に読んでみている。流石に紙に書かないと理解度がぐんと落ちてしまうので、2周目で詳細を追っていきたい。

渡辺先生のLecture noteも読めるところから目を通している。