eljefeblog 

Any sufficiently advanced technology is indistinguishable from magic

programming

【厳選Tips5】Pythonで始めるプログラミング入門1




貴方が初めてのプログラミング言語に
Pythonを選ぼうとしていることを嬉しく思います。

僕がよく初学者から聞く質問として最も多いものは
“Pythonを習得する上で、最も効率の良い方法は何ですか?”
というものです。

現代では様々な言語が分野ごとに開発され、
その中には本職のプログラマですら知らない言語があります。

どの言語を貴方が選び、学ぼうとしたとしても
最初のステップは、どの様にしてその言語を学ぶのか
その方法を概念として正しく認識しておく事が最も重要な事でしょう。

さらにこのスキルを磨く事は
今後貴方が取り組むどの様なComputer Scienceのプロジェクトにおいても
絶大な恩恵を齎すことに疑念の余地はありません。

本記事ではBeginner Programmerの為の効果的な学習戦略を提供し
Python Programmerとして一段上のレベルアップをさせる
後押しを目的としています。




Tip1 毎日コーディングをすること


一貫性を保つ事は貴方がどんな新しい言語を学ぶ上でも
とても重要な事です。


僕は毎日、何かしらのコーディングにコミットする事を推奨しています。


信じ難いかも知れませんが、貴方の物理的肉体の記憶領域が
programming習得において大きな割合を占めているのです。


毎日コーディングに触れる事で貴方の肉体における記憶領域を
拡張し、発達させる事が理論的に可能になります。


出鼻を挫く様ですが
1日25分間からで良いのです。貴方の生活に
意識的にコードを書く習慣を植え付け
スタート地点に立つ事が重要です。


Tip2 全て書き出すことを意識する


Pythonプログラマの初学者として道のりを歩き始めるにあたり
ひょっとすると貴方は自分が学んだ知識を書き残す必要があるのでないか
と感じているかも知れません。


その通りです。それは長期的に見て絶大な効果を発揮します。


また記録を残すのはただPCに打ち込むのではなく
実際にアメリカの大学研究機関での論文では
特に手書きでの記録を行う事が長期間の記憶保持に効果的であるとする
論証を述べています。


Googleをはじめとするsoftwareエンジニアの面接試験では
課される問題に対し
ホワイトボードにコードを書き出し説明する事が頻繁に要求されます。


故にこれは本職のプログラマを目指す上でも
貴方にとって有益なスキルになる事は間違い無いでしょう。


一度小さなプロジェクトやプログラムに仕事として関わる様になると
PCに向かう前に頭の中のアルゴリズムを一旦ノートに書き出すといった
一手間が、プロジェクトにおける大幅なタイムロスを実現するのです。


Tip3 “Interactive”に学習を進めよ


初めて基本的なPythonのデータ構造(-string, lists, dictionaries, etc.)を学ぶ時
または何か新しいアプリケーションを開発する上でも
Interactive-Python-Shellは貴方にとって効率の良い学習ツールになります。


このPython-Shell(Python REPLと呼ぶ人もいます)はMacのPCであれば
初期の段階ですでにpre-installされています。


まずはターミナルを開き、Python-Shellをactivateしましょう。
貴方の環境にインストールされている
Python( or Python3)を実行してください。


対話環境に入れたら準備完了です。
以下に簡単なPythonコードを用意したので
実際に手を動かして練習して見ましょう。


まずはじめにdir()関数を使用して
どの様なオペレーションがstringの要素に作用しているのか
可視化して見ましょう。

>>> my_string = 'I am a string'
>>> dir(my_string)
['__add__', ..., 'upper', 'zfill'] # Truncated for readability

これらのdir()関数により返されたlistの中の要素は
全て変数に適用できる関数になります。
例えば以下の様にです。

>>> my_string.upper()
>>> 'I AM A STRING'

ここではupper()関数を呼んだことに注目してください。
上記のコードで関数がどの様な動作をしているのか理解できますか?


この関数は変数my_stringに指定された全ての文字列を
大文字に変換する関数です。


続いて要素の性質を取得して見ましょう。

>>> type(my_string)
>>> str

strという出力が得られました。


Pythonのbuilt-in組み込み関数help()を利用し
strについてdocumentを取得して見ましょう。

>>> help(str)
Help on class str in module __builtin__:

class str(basestring)
| str(object='') -> string
| ......

これでstrに関する情報を取得できたはずです。


続いてPythonのライブラリdatetimeをimportして
利用して見ましょう。

>>> from datetime import datetime
>>> dir(datetime)
['__add__', ..., 'weekday', 'year'] # Truncated for readability
>>> datetime.now()
datetime.datetime(2019, 8, 8, 13, 44, 50, 851904)

現在時刻が取得できた事を確認しましょう。


続いてShellコマンドを実行して見ましょう。

>>> import os
>>> os.system('ls')
python_hw1.py python_hw2.py README.txt 

UnixコマンドのlsをPythonのインタプリタShellで実行し
ディレクトリ内のファイルを確認する事ができます。

Tip4 休息を取る事


貴方が勉強をする時、まずは効率の良い学習方法を理解する事が重要です。
Pomodoro Techniqueが有名な理論で多くの教育現場で利用されるものですが

25分間勉強し、短い休憩をとる。
そしてこのステップを繰り返すというものです。

一般的な人間が物事に集中する継続時間の限界は
30分間
と言われています。

小休憩を勉強の合間に挟む事で
特に勉強すべき量が多いほど、
学習効率改善に劇的な変化をもたらすのです。

これはデバッグを行う際にも有効で
バグを見つけたがその原因の特定が困難な場合に
躍起になるのではなく、

PCから一旦離れ、散歩する。友達と話す。

など頭の中を意識的にリセットする事で
往々にして新しいアイディアが浮かぶものです。

プログラミングにおいて、
貴方が書くコードはその言語の規則に正しく従う事が要求されます。
1つのクオーテーションマークの有無で正しくプログラムが動作しないという事が
本当に頻繁に起こります。

頭と心を定期的に休める事は軽視すべきでなく
意図的に習慣化することを目指しましょう!

Tip5 Bug発掘ハンターを目指せ


バグに関することについても言及しておきます。


貴方が初めて自分で考えたプログラムをコーディングし始めた時
そのアイディアが複雑であればある程、必ずバグが混在します。


これは何も初学者にのみ当てはまる事例ではなく、
全てのprogrammerが経験することです。


バグを発見し、プログラムが上手く動作しない時
どうかイライラして原因特定を蔑ろにし、
全てのコードを消して書き直さないでください。


代わりに自分をバグが好きで探していたBug Hunterなのだと
思えるマインド
を身につける事が大切です。


この発想の転換こそが貴方のPython Programmerとしての成長を
爆発的に加速させるのです。


Debuggingを行う際、「書いたコードのどの部分が上手くいっていないのか」
をいち早く発見する思考方法を確立する事が重要です。


それには貴方のコードを実行される順番に確認していき
それぞれのプログラムの動作を1つ1つ
丁寧に理解してく事がとても有効になります。


プログラムの不具合部分を特定する事ができたら
次に続くコードを挿入し実行して見ましょう。

>>> import pdb
>>> pdb.set_trace()

このライブラリはPythonのDebuggerでインタラクティブに動作します。

またShellのコマンドラインでも実行可能で
以下のコードで実行できます。

[your_account]$ python -m pdb <your_file.py>

後書き


如何だったでしょうか?
これまでPython Programmingを学習する上で有効な
いくつかの学習戦略を紹介してきました。


以上の戦略を心に留めながら
まずは手を動かしてみることから始めましょう!


続編はこちら↓↓↓







人気記事【初学者必見】効率的なプログラミング勉強方法を紹介します

人気記事 CS学位取得者がガチでプログラミングスクールを調査してみた件【おすすめのスクール】






data-ad-format="rectangle" data-ad-format="rectangle"

返信する

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

某国立大学大学院(理系)に所属しています。 最近の趣味は人工知能関連の論文を読む事で 研究ではComputer Vision周りを中心に活動しており、 サイドワークとしてデータ分析の業務に関わっています。 本ブログはこれまで筆者が学んできた様々な知識の中から 有益だと思えた情報のみをまとめたものです。 内容は個人の見解であり、所属する機関と関係するものではありません。 Research: is related to Computer Vision Hobby: is to study Artificial Intelligence / Machine Learning.