『プログラムはなぜ動くのか』を読んだ感想。

前々回の記事に続き、今回も日経BPの本の紹介をしてみようと思います。

ちなみに前々回の記事↓

kazukichi.hatenadiary.com

 

今回は『プログラムはなぜ動くのか』です。

 

f:id:Q_tyokinuhata:20160510031126j:plain

 

ですが、一つ注意があります。

私が読んだのは初版で、現在は二版が出版されています。

ブックオフで安く売っていたから購入したという経緯があります。

なので、今後買う人は2版を買った方が良いと思います。

ですが、このシリーズのモットーは『10年後も通用する"基本"を身につけよう』なので、さほど内容に問題はないような気がします(二版を読んでいないので分かりませんが)。

 

この本ですが、タイトルの通り『プログラムはなぜ動くのか』を様々な視点から説明してくれています。

大きく分けるとソフトウェアの視点ハードウェアの視点といったところでしょうか。

ソフトウェア視点だとコンパイラアセンブリ言語ハードウェア視点だとCPUメモリレジスタの話が印象的です。

とはいえ、プログラムが動く過程を説明しているだけなので、そこまで専門的な内容ではなく、ある程度勉強をしたことがある方であれば、殆どが一度は聞いたことがあるワードだと思います。

 

私はこの本を読んでアセンブリ言語がちょっと(ほんのちょっと)分かったのが嬉しかったです。

興味も湧いたので勉強してみようかなーとか思っていたりもします。

 

きっと役に立ちます。

それでは。

プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識

プログラムはなぜ動くのか ― 知っておきたいプログラミングの基礎知識

 

 

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識

 

 

高専カンファレンスlolに参加した。

f:id:Q_tyokinuhata:20160430225657j:plain

kosenconf.me

 

 

ブログを書くまでが高専カンファレンスなので、眠いですが書きます。

 

 

4月30日。天気は晴れ。

明石高専で行われた高専カンファレンスlolに参加させていただきました。

参加したとはいいつつも、自分から何かプレゼンしたり、ブースを用意したりというのではなく、ふらっと遊びに行くような感覚で参加しました。

ちなみに私は高専ではないです。高校生です。

たつお(@s39_02)と一緒に行きました。

 

 

さて、今日1日にあったことをだらだらと綴っていきます。

朝起きました。

準備をしました。

家を出ました。

電車を乗り継ぎ、明石高専の最寄り駅である魚住に到着しました。

 

明石高専についたのはいいのですが、さっそく迷いました。

高専カンファレンスをしていそうな気配が全くしないのです。

結局、数十分迷い、プレゼンを途中から見る形となりました(どうやら正門ではないところから入ってしまったらしく、それが迷った原因でした)。

悲しい。

 

プレゼンは人それぞれ色んな分野について発表していたのですが、どれも面白かったです。

というか全員話すのが上手すぎる。

心を鷲掴みにされました。

リスペクトしました。

私が特に面白いと感じたのはじゅりあん(@MITLicense)さんの「ラブライブ!で学ぶドメイン駆動設計入門」でした。

※私はラブライブ!を存じ上げませんが、それでも楽しめました。すごい。

 

プレゼン発表が終わると次はブース発表でした。

いくつかの企業さんが色々展示していました。

そこでGithubのステッカーをいただきました。

かわいい。

f:id:Q_tyokinuhata:20160430230035j:plain

説明が適当になってきました。ごめんなさい。

 

ブース発表が終わると最後は懇親会です。

らりょす(@raryosu)さん、いるやん先生(@Iruyan_Zak)、ふるつき(@theoldmoon0602)さん、hum(@hum_op)さん、なまちゃん(@namachan10777)など、そうそうたるメンバーに挨拶しました。

名刺、手書きで本当にごめんなさい(間に合いませんでした)。

 

各位に挨拶を終えた私は、眠かったので足早に帰りました。完。

 

おまけ

いるやん先生にずっと言いたかったことも言えて良かったです。

本人も満更ではないらしいので積極的に使っていきましょう。

あと、声が可愛かったです。

 

さて、最後は身長が低くて上手く肩を組めなかったかずきちでお別れしましょう。

f:id:Q_tyokinuhata:20160430232100j:plain

 

また次の機会があれば是非とも参加したいです。

おやすみなさい。

『世界でもっとも強力な9つのアルゴリズム』を読んだ感想。

以前、たまたま立ち寄った書店でタイトルと表紙に一目惚れして、内容もロクに見ずに購入しました。

それをようやく読破したので紹介したいと思います。

 

f:id:Q_tyokinuhata:20160427024127j:plain

 

この本はJohn MacCormick(ジョン・マコーミック)という英ディッキソン大学コンピュータ・サイエンス教授の著書を日本語に翻訳したものです。

ページ数は、あとがきを入れて300ページちょっとなので、400ページを超える超大作・不朽の迷作『関数型プログラミングに目覚めた!(以下略)』よりはライトですね。

↓ちなみにそのときの記事です↓

kazukichi.hatenadiary.com

 

初版が2012年なのでレビューするのも微妙な時期ですが、面白かったので良しとしましょう。

 

まず、タイトルには『世界でもっとも強力な9つのアルゴリズム』と書いてありますが、ソートアルゴリズム探索アルゴリズムのような汎用的アルゴリズムではありません。

 

例をあげると、公開鍵暗号誤り訂正符号データ圧縮データベースデジタル署名など、情報処理技術者試験でおなじみのワードに加え、検索エンジンインデクシングページランクパターン認識決定不能性などの技術が説明されています。

 

とはいえ、そこまで難しい説明や専門用語は出てこないのである程度の知識があれば容易に理解できる内容なのではないでしょうか。

 

個人的には、自分の好きな分野を見つけるのに最適な技術書だと感じました。

この本を読んで、自分の興味ある分野を見つけて、さらに一歩上の専門書や論文に入っていける入門書のような立ち位置な気がします。

 (ちなみに私はパターン認識に興味が湧きました)

 

技術書では割とはずれを引くことが多い私ですが、この本はとても良書だったかと思います。

技術書なので、値段は2000円と少々高めですが、気になった方は是非とも読んでみてください。

 

世界でもっとも強力な9のアルゴリズム

世界でもっとも強力な9のアルゴリズム

 

 

ITパスポート合格体験記。

先日、情報処理技術者試験がありましたね。

私は基本情報技術者試験の(午前免除試験に合格している為)、午後試験だけ受けてきました。

合格しているような気がします(多分)。

 

本題に入ります。

2月の中旬ぐらいに受けたITパスポート合格証書がやっと届きました。

f:id:Q_tyokinuhata:20160418213519j:plain

 

なので、勉強方法合格体験談などを語っていこうと思います。

とはいえ、この試験はレベル1なので、ほとんどの方は普通に勉強してると合格するとはずです。

 

ちなみに情報処理技術者試験の各試験のレベルについては以下を参照してください。

情報処理技術者試験 - Wikipedia

 

肝心の勉強方法ですが、最初は教本を読みました。

技術評論社の合格教本シリーズです。

 私が使ったのは平成27年度版ですが、どうやら平成28年度版も出ているみたいです。

平成28年度 ITパスポート合格教本 (情報処理技術者試験)

平成28年度 ITパスポート合格教本 (情報処理技術者試験)

 

 他にも栢木先生シリーズやよくわかるマスターなど、各出版会社から色々出ているので自分に合った本を買うと良いと思います。

 

教本を一通り読み終えた後は、問題集を解きました。

大原の問題集です。

はじめてのITパスポートトレーニング問題集〈2015年度版〉

はじめてのITパスポートトレーニング問題集〈2015年度版〉

 

 ITパスポート公開問題はネット上にも転がっているのですが、せっかくなので買いました(というか学校で買わされました)。

けっこう古い問題や、FEAPなどの問題もちょいちょい入ってるので個人的には解いて良かったと思えました。

 

その後はIPAで公開されている公開問題や、CBT形式の問題を解いていました。

【ITパスポート試験】過去問題(問題冊子・解答例)

【ITパスポート試験】CBT疑似体験ソフトウェア

 

そして試験当日。

公開問題はある程度パターン化されていたので正答率は8~9割だったのですが、本番の試験は割と初見の問題が多く、あまり良い点数が取れませんでした(教本の内容をしっかり理解していたら大丈夫だと思います)。

 

700点すら超えていないという残念な結果です。

こうならないようにしっかり勉強しましょう。

でも資格試験は基準点さえ超えてたら合格だから…(という言い訳)。

f:id:Q_tyokinuhata:20160418222105j:plain

 

受験方法配点基準などについては各自で調べてみてください。

 

さいごに

ITパスポートは他の資格とは違い、基本的にいつでも受けられるので、自分の受けたいタイミングで受けられます(多分)。

そして、CBT形式の受験で、人によって問題も変わるのが怖いところです(得意なところが出ればラッキー)。

次はセキュマネ(か応用情報)でも受けてみようかな…という感じです。

まあ、その前に大学受験があるんですけどね。

 

それでは本日はこの辺で。

『関数型プログラミングに目覚めた!(以下略)』を読んだ感想。

近所のBOOKOFFでたまたま目にしたので、「関数型プログラミングに興味があるし、適当に読んでみるか」的なノリで購入しました。

今更レビューかという感じもありますが、衝撃的な内容だったので、このブログに書き記しておきたいと思います。

 

 

感想(あくまで私個人の独断と偏見による感想です)

率直に言うと、この本を自分から誰かに薦めようとは到底思えませんでした。

 

まず、この本はラノベ形式で書かれています。

作風は結城浩さんの著書、数学ガールシリーズに似ていなくもありません。

が、なんとも稚拙な表現で、特に面白くもない会話が延々と続く箇所があり、似ても似つかない作品となっています。

おかげさまでページ数は400ページほどあります。

400ページで1300円(+税)なので、ある意味お買い得なのかもしれませんね。

 

そして、この本はポエムです。

関数型プログラミング初学者の私が読んだのですが、困惑しかありませんでした(玄人の方なら内容を理解できるのかもしれません)

例をあげると、

『物質世界』密着型の命令型プログラミングの『手当たり次第の計算方法』では、コードにすべての『イデア』は表現できない 

 こんな感じです。

そもそもの話、関数型プログラミングの本でJavaScriptという言語を選択したのがミスだと思いますし、この一冊にNode.jsImmutable.jsReactなどを全て詰め込もうとしているのが無理難題に感じます。

 

そして、この本には中盤以降、頻繁に哲学や偉人の話がでてきます。

それはスピノザの話であったり、アラン・ケイの話であったりするのですが、Wikipediaで調べられるような内容ですし、目を瞑れないほど脱線します。

 

結局、肝心の関数型プログラミングの話はほとんどが『0から9までの数をすべて足すコードを書け』みたいな内容で終わってしまいます。

 

詳しいレビューなどについては、Amazonのレビュー欄にものっていますし、

qiita.com

にも書かれていますので、気になった方は参照してみてください。

もっと気になった方は著者のブログにも目を通してみてください。

それでも気になったなら購入しましょう(古本で)。

 

以上、最近読んでいた技術書(?)ラノベ(?)の感想でした。

それでは。

大晦日、今年最後の競プロ進捗報告。

12月18日にAOJのITP1を解き終わってから少しの間(ほんの少し)CTFに浮気をしていましたが、12月25日頃からまた競プロの問題を解いていました。

 

今回はAOJでは無く、AtCoderに慣れる為にも、ABC(AtCoder Beginner Contest)のA問題とB問題を解きました。

 

    f:id:Q_tyokinuhata:20151231203417p:plain

 

A問題は本当にやるだけの問題でしたが、B問題はたまに詰まったりしたので、B問題とはいえど、勉強になったんじゃないでしょうか。

 

          f:id:Q_tyokinuhata:20151231203314p:plain

ちなみにA問題とB問題をコンプリートした時点で、順位は681位 / 8636人中(2015/12/31現在)です。二桁行きたいですね…

 

C問題からが戦いだと思うので来年はC問題とD問題を頑張って解いていきます。

 

ちなみに、ACした問題数やランキングなどは、AtCoder Problemsから見ることが可能です。

 

それではこの辺で。良いお年を。

競プロ開始から一ヶ月ぐらいの進捗報告。

年内の目標が一つ達成できたので報告です。

 

まず、先月11月21日にいきなり競プロを始めました(本当に何故始めたのかは分かりません)。

 

その中でもAOJの問題セットの一つ、ITP1(Introduction to Programming)、つまり競プロ初心者用の問題セットを中心に解いていて、ついさっき44問全てが解き終わりました。

 

f:id:Q_tyokinuhata:20151218230316p:plain

 

使用言語はJavaで、今までも割と使ってきた言語のつもりだったのですが、知らないメソッドも多々あり、とても勉強になりました。

アルゴリズム力はついたのでしょうか…どうなのでしょう…。

序盤の問題はさくさく進んだのですが、後半になるともうほとんどゴリ押しで解いていたのが反省点です。

 

とりあえず目標は達成できたのでしばらく競プロは休む予定です。

次は何をしましょうか…CTF?アプリ開発?未定です。

 

ITP1、一応リンクも貼っておきますので、気になった方はどうぞ↓

http://judge.u-aizu.ac.jp/onlinejudge/finder.jsp?course=ITP1