40代プログラミング未経験から独学してみる

40歳未経験者がPythonプログラミングの勉強をメインに、読書や京都のことを書いていく。

『OS自作入門』を引き続き読む。

こんにちは。

引き続き『OS自作入門』を読んでいます。

前作ではタイトルに『30日・・』とあったのですが、今回にはついていません。

本書のコードはC++で書かれており、C++をほとんど知らない状態からのスタートだったので、コードを理解するのに時間がかかっています。毎日、すき間時間を使って少しずつ読み進めています。

普段は意識することなく、操作しているマウスですが、実装されたコードから勉強すると、単純なコードを組み合わせて、動かしていることが実感できます。

例えば、コードの時間定数を微妙に変えることで、マウスポインタの動きがカクカクしてぎこちなかったり、スムーズになったり、コードと操作がリンクすると理解が深まります。

読む前には、OSといえば、すでにWindowsLinuxなどがあるので、今さら一から作って意味があるのかなと思いましたが、実際作ってみると、ジグソーパズルを組み合わせて完成に近づけていく過程に似ています。はじめは小さな塊だったのが集まってきてだんだん大きな塊になって、最後は絵が完成する、イメージです。

パソコンの起動ボタンを押せば、画面がたちあがって、アプリのアイコンをクリックすれば、文書作成やインターネットで検索ができるのが当たり前なのを、一からどう動いているのか、仕組みを理解できます。

マウスのポインタを作るところからはじめて、
マウスの動きにあわせて、画面上のポインタを動かしたり、マウスをクリックしてターミナルを動かしたり、マウスをクリックして、ターミナルのウインドウを動かすにはどの様にコードを組めばいいのか。

当たり前にできていたことを、いざ実装するとなるとかなり複雑。ただ、これまでブラックボックスだったマウスポインタの動きなどが、プログラミングコードと結びつくことで、理解できたときには爽快感があります。

『ゼロからの自作OS入門』30日で読みきるのは厳しいけど、面白い。

こんにちは。

OSがどうやって動いているのか、
興味を持ったので読みはじめました。

プログラミングコードはC++で書かれていますが、
基本的なところは同じなので、十分理解できます。

BIOSからはじまって、
OSの基本的な機能について、
どのように実装すればいいのか、
一から学べます。

例えば、普段はマウスでクリックすれば
ターミナルを立ち上げることは難なくできますが、
ターミナル自体をどうやって表示するのか、
ターミナルの中のカーソルの表示や点滅の実装
まで、載っています。

また、マウスの実装では、
割り込み機能を使っており、
マウスポインタの動きを滑らかにするためには
タイマーが重要になってくるようです。

Pythonクックブック』でも「時間」を扱った
項目が多く、それほど重視する理由が、
いまいち分からなかったのですが、
OSの勉強すると「時間」の重要性が
腑に落ちました。

本にあるコードはダウンロードで入手できますが、
一つずつ手で写経しています。この方が見るだけより理解できる気がします。その分、読むのに時間はかかっています。

『アルゴリズム・イントロダクション』の基本編をマスターしよう。

こんにちは。

アルゴリズム関係の本で、必ずと言っていいほど、
オススメされている「アルゴリズム・イントロダクション」を少しずつ読み進めています。

分冊版と合冊版(総合版)があって、総合版の方を購入しましたが、部厚さに圧倒されます。あと、重すぎて持ち運べないので、リビングの目につくところに置いていて、隙間時間があれば、本を開くようにしています。

大学の教科書みたいに、問題の解答がついていないのも、読むのに苦労します。

とにかく部厚くて、すべて読破しようとすると挫折するので、まずは基本編を繰り返し読むようにしています。

『ゼロからの自作OS入門』を読み出した。

こんばんは。

『ゼロからの自作OS入門』を読み出した。

これまで、OSはWindowsを使ってきたけど、
マウスでポインタを動かして右クリックで
アプリを立ち上げたり、カーソルを動かして
文字列をターミナルに入力したり、
当たり前のことを改めてどうやって
動いているのか、考えてみたらよく分からない。

OSがその辺をこなしてくれているから、
ブラックボックスになっているので、
気にしたことがなかった。

Pythonクックブック』を勉強してみて、
とくに並列処理とかネットワークに関連すると、
プログラミング言語そのものの勉強だけでは、
深い理解まで至らないことが分かってきたので、
この本を読み出した。

OSを自作するのが目的で、物理的に作るわけではなくて、仮想パソコン上で動くOSを作るのが目標。C++でコードが書かれているけど、Pythonのコードを読んできたから、何となく理解できるので、気にはならない。

ターミナルにカーソルを表示して、点滅させたり、文字列を入力したり、普段は当たり前に出来ていたことを、改めてはじめから設計・実装するのは思ったよりも複雑で、多数の関数が必要になるけど、
一通りコードの構成を勉強すると、OSの仕組みが何となく分かった気がする。

今まで、まったくのブラックボックスだった
ところが、多少、理解できたのでスッキリした。

コードを自分で打って実行する。

こんばんは。

paizaのスキルチェック問題(Bレベル)に取り組んだところ、かなり苦戦しました。

問題を見て何となく解き方は、思いつくのですが、コードを書こうとすると正確に思い出せない状態になりました。

最近、コードを見るという勉強方法をしていたので、いつの間にか、わかったつもりになっていたのかな、と思います。

問題を見て「あのコードを使ったらうまくいくな」と思いつくところまではいいのですが、見ていだけだといざ自分で打とうとしたときに、「あれ?これでいいのかな?」みたいに正確に再現できません。

やはり、ある程度、繰り返してみた後は、自分の手で打ち込んで、実行してみるのが大事。

毎日、勉強を続けられないときの対処法

こんにちは。

毎日、勉強しようと思ってもなかなか
時間がとれないので、続けるのは難しいです。

平日は、帰宅が午後9時~10時頃になることが
多くて、休みの日は、だらけがちになります。

ぼくも昔は似たような状態になっていました。

でも、今は違います。日曜日といえども継続しています。

継続できないのは勉強に対して理想が高すぎるんではないかな、と思います。

例えば、読んだらすぐに理解できて記憶にも残っている状態にないと意味がない。

一日終わって振り返ってみたら、
ぜんぜん思い出せないし、思い出せてもうろ覚え。

今日こそは一行目から理解して、
読み進めようとするけど
いきなり知らない用語が出てきて
教科書を見るのも嫌になる。

『ヤバい勉強脳』に書かれてあって、
恐怖が強すぎても勉強できないらしい。

『デザインパターン入門(結城浩著)』を読んでみた。

こんばんは。

デザインパターン入門』を読んでいます。
原典の『Gof本』よりもかなり読みやすい。

これまで、参考コードにJavaが使われているので、読むのを避けぎみだったけど、理解にはJava
の基本的なところさえ知っておけばほとんど支障ない。それよりもデザインパターンそのものが理解しやすくて、分かりやすい。

ただ、これを読む前に原典にあたっていて、
「ストラテジー」「シングルトン」「チェインオブリスポンシビリティ」など、何となくモヤモヤしたままではあるけど、ある程度の知識を持っていたからだろう。

モヤモヤしていて理解が中途半端でも、まったくのゼロからはじめるよりも理解するスピードはぜんぜん違う。

意味分からんまま、読んだり、紙に書いたり、ググったりして、なんとか理解しようと原典と格闘していたのは、やる意味があったと思う。