プログラミングの師を見つけた話
5/19
みなさんはじめまして、僕は2020年より新米プログラマとして働き始めたものです。
この度、僕の社会人生活がコロナ禍がピークに迫った4月の第一周。僕の社会人生活が静かな自宅にて幕を開けました。
まさか引きこもりが推奨される耳時代がくるなんて・・・
入社して初めの頃、といってもまだ一月と半月ほどしか働いていないのですが、細々と簡単なお仕事をこなしていました。そんな中、ついにコーディングの仕事をしてもらおうと話になり、嬉しさ半分、不安半分の中いよいよ本格的なプログラマとしての仕事ができるのか・・・と思っておりました。
そしていざ始まり、まずは力試しということで、社長自ら僕のプログラマとしてどれほどの力があるかを図るためにクイズ形式の座学が初日は行われました。
難しすぎる。
この一言に尽きます。
正直な話就活の最中はプログラムの勉強をしていましたが、就職が決まってからというものサボり、ほぼ忘れていたのです。
いままでもやっては忘れ、忘れては初めてといった繰り返しで、会社に入れば嫌でも身に尽くし、勉強が習慣化するだろう。なんて甘い考えを持っていました。
そんな僕です。社長の出題する問題の数々を僕は必死に答えを見つけ出そうと、考え込み、その時間を積み重ねれば積み重ねていくほどに、社長の顔色は曇り模様に変化していきました。そんな表情を察した僕は焦りが有頂天に達し、良い歳をしてキョロキョロと目が泳いでいたと思います。
そして、僕はこう告げられました。
「これじゃあ仕事にならないよ」
奈落の底に突き落とされた僕は、やっとこさ重い腰をあげる決意をし、真面目に勉強をし始めました。
全く持って社会人にもなってこれじゃあお先真っ暗です。
そんな中、会社と揉めて退職予定のあるプログラマの方が、僕の先生として仕事、もといプログラミングに付いて教えて下さることになりました。
その方は、プログラミング能力にずば抜けて長けており僕にプログラムについての説明をするのですが、それがとても分かりやすい。理解力のない僕の頭にもスっと入ってきます。なぜこの方はこんなにプログラムができるのだろうと色々と話を聞いたところ、元々趣味でゲームを作ったりしているらしく、好きでやっていたら身に付いた。という感じでした。
絵に描いたスーパープログラマ。
僕はそんな感想を覚えつつ、やはり勉強という気持ちでやっといても長続きはしないし、楽しんでやっている人にはやはり敵いません。
いやいや、社会人にもなってそんな甘えた事いってられねえぜ。なんて言われてしまいそうですが、そもそも僕は勉強が好きではありません。これまで二十数年、このままでは駄目だと思い、頑張って勉強を始めた日もありました。けれどもって3ヶ月でした。
反対に好きで始めた趣味だったりは、長続きしますし
そもそも人生一度きりの人生なのですから、嫌々やるなんてもったいないし、やはり一日のほぼ半分を仕事に費やすわけですから、好きになるしかない。それに先輩プログラマの、仕事への意識の高さに僕は感銘を受けました。先を見据え、コード中に懇切丁寧な分かりやすいコメントを残していたり、何らかのトラブル時にも対応できるよう、バックアップのバックアップを事前にとっていたり、とにかく自分の作ったプログラムには自信と責任を持っている方です。
自分のためにやっている事だと言っていましたが、そのおかげで救われた人たちがいます。けれどそれには今後も気付く事はないでしょう。
おそらく社長の次に仕事に対して真面目だと思います。それなのに、こんな人材を見す見す手放すなんて・・・僕にはできません。
先輩はいずれ会社を去ることになりますが、僕がその意思を引き継ぎ(仕事の引継ぎだけに)そんな先輩の背中を僕は追っていきたいと思いました。本当にプログラマとして、ではなく人として尊敬できる人です。
これから短い間になると思いますが、何卒よろしくお願いします!勉強させてください!
それでは以上になります。
「作りながら学ぶRuby入門」でやっとオブジェクト指向を理解できた話
みなさんこんばんは。
僕は今度こそはPythonを挫折せずにマスターすると、豪語していましたが、またもや途中でやめてしまいました。やめた結果、このブログを開設したきっかけにもなった、Rubyを再度勉強しています。
そして、今回やっとこさオブジェクト指向の意味を理解できました。
オブジェクト指向は元となるインスタンスからクラスを作成することができる。インスタンス内にはそのプログラムの部品となる処理を書き、インスタンスから作成したクラスでは処理に必要な引数を渡して実際に処理をする。
「ふむふむなるほど...」
理解できたようでできていない僕は、ここでなぜインスタンスが必要なのかという疑問が出てきます。
そして、自分で実際に作ってみてその意味が分かりました。
インスタンスを作らないで、処理を作成してしまうと変数や処理などに変更、追加がでてきたさい、都度追加、変更する必要がでてきてしまい、それが膨大なプログラムだとしたら、ものすごい作業になってしまいます。
だから、そんな手間がでてこないようまた、再利用をしやすいように、オブジェクト指向型というものが作られたのです。
プログラムを理解するための一番てっとり早い方法は自分で考え書いてみることです。
そうすることで、解説を見ても理解できなかったことの意味が分かってきます。
僕もそのおかげもあり、initializeによる初期化やアクセサなどを理解することができました。初めはプログラムについて間違った解釈をして勘違いしていたりすることがあるので、プログラムを簡単なのでいいから作ってみて、処理を実際に確認するのが大事だと思いました。
後は、プログラムの全体像を捉えた考え方、見方が大事だと思います。
Pythonのプログラムを書く時について
こんばんは、メモです。
Pythoでプログラムを作る際は、インタラクティブ上にではなく、[Ctrn]+[N]キーで開くことのできる、ファイルエディタに書き込んでいく。
input() 関数はユーザーがキーボードからテキストを入力してエンターキーを待ち、変数に代入する。
後、現在読んでいる本のchapterの終末に演習問題があるので、現在1章は終わってしまったので省きますが、2章からは僕の回答をブログに掲載していきたいと思う。
そして僕と、本書の回答の違いを比較し、正しくなかった部分を改善できるようにしていきたいと思います。
みなさんお久しぶりです。Pythonを始める事にしました。
みなさんお久しぶりです。
三日坊主で終わっていましたこちらのブログでしたが、再開しようと思います。
毎日更新は、とりあえず「恋するプログラミング」を触るまではやめておこうと思います。モチベーションが続きませんし、何よりその時間を学習に割いた方が良いと思ったからです。これからはブログに当分の目標を定めたり、学習したことを忘れないようにするため使っていきます。
ほとんどブログの使い方は毎日更新以外変わりません。
僕は現在、Pythonを勉強しています。主に'Progate'を使って体系的に基礎を学びゆくゆくは「退屈な事はPythonにやらせよう」という本を読んで、学習していこうと考えています。なのでとりあえずProgateの課題をサクっと終わらせてしまいたいです。
lsson 1を完了していますので、残りLesson 2~5 終了時間はおおよそ7時間あたりです。終わったらとりあえず、本を取り掛かる前に前回と同じよう、簡単なプログラムでも作りたいと思います。
そして、とにかく今回は途中で投げださないよう、メンドクサイと思っても楽しくなるまではちょこっとでもいいので、毎日勉強していきたいと思います。
去年の末からギターをしているのですが、やっぱり続けないと腕は上達しません。
忙しくても本当に5分でもいい、毎日続けることが大事で、継続が命ということに気付きました。
以上で本日は、当分の計画と久々の更新の挨拶でした。
最低目標30分、理想目標1時間。学習が楽しくなればそれ以上。という感じです。
それではまた。おやすみなさい。
プログラム初心者の僕が「恋するプログラミング -Rubyでつくる人工無能- 」を読んで勉強してみた ⑦ ドットインストール編
ええみなさんこんばんは、3日ほどさぼっちゃていました。
ということで、また本日より、気を取り直して頑張っていきたいと思います。
今回は、前回「恋するプログラミング -Rubyでつくる人工無能- 」を理解するのに少しばかり、行き詰まりを感じたので、ドットインストールにてRubyの基礎を学んでいます。
内容は(全26回)で、12回まで終わったのですが、ほぼ「恋するプログラミング -Rubyでつくる人工無能- 」にて学んだ内容なので、特筆するべきこともありません。
今回新たに学んだことがあるとすれば、チャプター12の書式付きで値を埋め込む方法や、新たに登場するメソッドの数々です。
メソッドについては、文末にて、紹介するので置いておくとして、
チャプター12の書式付きで値を埋め込む方法についてなのですが、
Rubyの入門ということもあり、あたりまえといえばあたりまえなのですが、これを使えば、文章表示の表現の幅が広がるし、実際のプログラム作成の際、良く使う内容ではないかと思った。覚えておくべき内容の一つでしょう。
使い方は
p "name: %s " % "taro"
といった書き方をします。
また、書式を指定して値を埋め込むこともできます。
p "name: %10s " % "taro"
こんのように書いてあげるとスペースを10桁分確保して表示します。
後はprintやprintsfを使って表示させる方法もあり、その場合書き方が異なり以下のようになります。
printf("name: %10s\n", "taro")
p sprintf("name: %10s\n", "taro")
sprintfは文字列を返すのみなので、pやputsなどのメソッドを使い出力します。また、
表示内容もprintfとは異なり、\nなどがそのまま表示されます。
それではチャプター12は以上になります。
眠くなってきましたので、本日はこの辺で、おやすみなさい。
今回学んだ用語集
・.size :大きさを返す
・.sort : 配列の並び替え
・.to_a : ハッシュを配列にして返す
・.to_i : 整数に変換
・.to_s : 文字列に変換
・.upcase : 文字列の小文字を大文字にしたものを返す
・.downcase : 文字列の大文字を小文字にしたものを返す
・ :(シンボル) :配列などでシンボルを使うことにより、読み込みがはやくなる
プログラム初心者の僕が「恋するプログラミング -Rubyでつくる人工無能- 」を読んで勉強してみた ⑦ ドットインストール編
ええみなさんこんばんは、3日ほどさぼっちゃていました。
ということで、また本日より、また気を取り直して頑張っていきたいと思います。
今回は、前回「恋するプログラミング -Rubyでつくる人工無能- 」を理解するのに少しばかり、行き詰まりを感じたので、ドットインストールにてRubyの基礎を学んでいます。
内容は(全26回)で、12回まで終わったのですが、ほぼ「恋するプログラミング -Rubyでつくる人工無能- 」にて学んだ内容なので、特筆するべきこともありません。
今回新たに学んだことがあるとすれば、チャプター12の書式付きで値を埋め込む方法や、新たに登場するメソッドの数々です。
メソッドについては、文末にて、紹介するので置いておくとして、
チャプター12の書式付きで値を埋め込む方法についてなのですが、
Rubyの入門ということもあり、あたりまえといえばあたりまえなのですが、これを使えば、文章表示の表現の幅が広がるし、実際のプログラム作成の際、良く使う内容ではないかと思った。覚えておくべき内容の一つでしょう。
使い方は
*1
といった書き方をします。
また、書式を指定して値を埋め込むこともできます。
*2
こんのように書いてあげるとスペースを10桁分確保して表示します。
後はprintやprintsfを使って表示させる方法もあり、その場合書き方が異なります。
今回学んだ用語集
・.size :大きさを返す
・.sort : 配列の並び替え
・.to_a : ハッシュを配列にして返す
・.to_i : 整数に変換
・.to_s : 文字列に変換
・.upcase : 文字列の小文字を大文字にしたものを返す
・.downcase : 文字列の大文字を小文字にしたものを返す
・ :(シンボル) :配列などでシンボルを使うことにより、読み込みがはやくなる