学習の栞

学びたいことと、学ぶべきことと、学べることの区別がついてない人間の進捗管理

Python勉強しました。

みんなのPython 第3版

みんなのPython 第3版

 

  「みんなのPython第3版」を購入してPythonを勉強しました。

今まで真面目に勉強した言語がC/C++/Javaと静的型付けの言語ばかりだったので、動的型付けの言語の勉強は新鮮でした。はじめのうちはサンプルを読んだり打ち込んだりしているときに気持ち悪いと感じることも多かったのですが、時間が経つと慣れてしまうものですね。

 

一冊を2週間弱で読みきってしまったので、「Pythonは習得までにかかる時間が短いのが魅力の一つ」というのは外れてない気がします。

 

さて、Pythonについて面白いと思った点をふたつほど。

 

リスト内包表記というやつがありまして、例えば

a = [x ** 2 for x in range(5)]

というやつですね。短く書けて便利!!!

 

クラス周りの機能も面白いです。

setattr()という関数を使って例えばこういうことができます。

 

class ClsHoge:
    def foo(self):
        print("foo()")

def bar():
    print("bar()")

def baz(self):
    print("baz()")

# インスタンス作って
a = ClsHoge()
b = ClsHoge()

# メソッド呼んでみる
a.foo()
b.foo()

# 空行
print("")

# setattrを使ってみる
setattr(b, "foo", bar)
a.foo()
b.foo()

print("")

# こういう使い方もできるらしい
setattr(ClsHoge, "foo", baz)
a.foo()
b.foo()

実行結果はこんな感じ

f:id:konjo_p:20140317095040p:plain

うん。とても新鮮。

使いどころはなさそうですが。必要、、、なんでしょうかね、この機能。存在してる以上は必要なんでしょうけど。

 

他にも本読みながらニヤニヤしてた部分はあるのですが、特にニヤニヤできた機能でした。

 

最後に「みんなのPython」についてなのですが、最初の300ページくらいはいいのですよ。ただ、最後のほうになってくると誤植が目立ってくるので「とてもいい本」とはいえない気がしてます。作者ページに正誤表はあるらしいですが、出版社のページに正誤表載ってるわけではないのでちょっと辛いところがあるかも。

14章にGUIアプリケーションの作り方が少しだけ解説してあるのですが、解説が不十分でなぜこれを本にねじ込んだのかよくわかりません。GUIアプリケーションについての解説が必要な人は別に資料を読む必要がありますね。私は今のところPythonGUIアプリケーション作る気は無いので別の資料を読む気はありません。

 

せっかく勉強したので気が向いたら使ってやろう。

 

そろそろOS本も続きやらないと積読化しそう。

AtCoder_Regular_Contest_017参加しました

ARC017に参加しました。

本番は2完で82位でした。

 

A,Bはやるだけだと感じました。Aは愚直にやって間に合ったのですね、エラトステネスの篩作って解きました。BはK=1の場合の答えについて悩んだせいもあったのですがもう少し早く実装終わらせて提出すべきでした。春休みを利用してコーディング力強化につとめます。

 

さて、A,BをACしたあと1時間強C問題を考えることができたのですが結局ACすることはできませんでした。コンテスト終わってから聞いた話によると半分全列挙と呼ばれる方法を使って解くらしいです。蟻本に載ってました。教えてくださった某ニコ生主さんありがとうございます。

 

次に出たときは解けるようにがんばります。

D問題についてはとりあえず保留。この春休みでARC3完の壁を突破してみたいものです。

OSのソースコードを読む進捗(1)

OSが一体どのように動いているかということに興味があって購入した本がこちら。

 

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)

 

 

そして今読み進めようとしているわけですが。。。

前書きにも書いてあるのですが、OSについての知識0の状態で読める本ような本じゃないようです。早速詰まりました。

 

さすがに内容は濃いですね。春休み二ヶ月間で完読できればいいなと思いながらじっくり読むことにします。

 

とりあえず60pまで読み進んで、アセンブリ言語で書かれたソースコード読めずに立ち止まってる状態です。一応学校でMIPSについては学習してるので関数呼び出しとかアセンブリ言語で書くとどうなるかは把握してるので読めるようになるまでそう長くはかからないと思うのですけども。

どうやらGNUアセンブラというものを勉強すればどうにかこうにかソースコードを読めそうだというところまでたどり着いたので、この先数日はそちらの勉強でしょうね。

 

2014/02/07追記

と、思っていたらUNIX Assembler Reference Manualというものを見つけてこれを読めばどうにかなりそうに思えたので今はこちらを和訳中。GNUアセンブラ全く無関係かも。

ブログ始めます

段々とやりたいこと溜ってきたり、進捗の管理が必要な気がしてきたのでブログ始めます。

技術書に栞挟んだり、感想書いたり

プログラミングコンテストの結果だとか感想だとかその他諸々の投稿用に。