プログラミングで押さえるべきポイント
見出し画像

プログラミングで押さえるべきポイント

ノンストップ飯田

プログラミング言語は、当たり前ですがPythonだけではありません。
僕はPythonから入って、Web系のフロントエンド(画面表示やデザイン)言語であるHTMLやCSS。機能系のバックエンド(データベースとの連携や動的にサイトを動かす)言語であるPHPやPythonを使ったWebフレームワークであるDjango等、どっちにも跨るJavasCriptなど、いろいろかじりました 笑
最近は、会社で直球に業務効率化に直結する、VBA(マクロ)のプログラムを良く作ってます。(順序逆じゃないかって気も・・・笑)

今日は、そもそもプログラミングで押さえるべきポイントって何なの?って部分を書きたいと思います。(初心者に毛が生えたレベルの僕がおこがましいですが・・・)

1.何故ポイントを押さえるべきか

理由はただ一つ、習得スピードが上がるのとモチベーションが保ちやすいためです。
僕自身、全く知識0でプログラミング学習を独学で開始しました。一番、くじけそうになったのは主に以下の理由によるものです。

➀ 何故こう書くのだろうか?覚え(暗記し)ないといけないのだろうか。
➁ 果たしてこの学習方法で正しいのだろうか。
➂ この本(サイト)で学習はしたけど、次は何をすればいいのかな。

一番初めにつまづくのは➀ではないでしょうか。
僕は、確か一番初め本を買って勉強しました。「Pythonで数当てゲームを作りながら、基本的なコードの書き方を覚えよう」的なやつでした。

Pythonは前回の記事で書いたとおり、簡単に始めることができます。
感覚的に結構書けるし、多分初心者にとってとっつきやすいのは事実です。でも、画面表示やボタン配置等、前述のフロント部分(ユーザーインターフェースというやつですね)を書こうとすると、「tkinter」というライブラリを使って、ウインドウ表示をしたり、ウインドウに操作させるボタンを配置したりします。

これが難しい!!(笑)
本当に丸写しでしかない。暗記やただそういうものだと覚えるのって、勉強を最もつまらなくさせる要因ですよね。

結論から言うと、暗記する必要は0です。
もちろん覚えてた方が、プログラムを書こうと思った場合に、「あれ、どう書くんだっけ?」って調べなくていいので、効率的です。
ただ、極端な話都度調べたり、自分のメモを振り返ればいいのです。

以下の流れでOKなのです。

→ 原理を理解 
→ 書き方やチートシート等がまとめられたサイト等をブックマーク
 (僕はEvernoteにクリップしてます) 
→ 必要に応じて、ブックマーク(僕の場合はEvernote)から引っ張り出
 して、コードの書き方を確認しながら組み合わせてく。

むしろ、「こういうことをしたい」っていうWillに対して、自分の引き出しにあるものとその時、ググって組み合わせたもので、「こうすればOK」という答えを考える行為こそが大事だと思います。
あと、コードの書き方はある程度文法のように定めがあっても、組み合わせやゴールまでの道筋は様々です。暗記なんかいらないです。

例えば、1から10までの数字を出力するっていうだけのコードでも。
書き方は様々です。

・書き方 ➀

print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
print(7)
print(8)
print(9)
print(10)

・書き方 ➁

for i in range(10):
   print(i + 1)  

・書き方 ➂

num_list = [i for i in range(1,11)]
for num in num_list:
   print(num)

・書き方 ➃

num = 1
while  num < 11:
   print(num)
   num += 1

書き方➀は直球ですね。print関数というものを使って、本当に1~10までの数値を出力してます。これはこれで目的を達成しています。

書き方➁は、for文というループ処理とiという任意の変数を使って、0から10個(0~9)の数値を都度変数iに代入して、数値1を足して出力することで、0+1,1+1,2+1・・・9+1と、出力をしてます。
これは、for文があることと、rangeという書き方があることだけ知ってれば細かいことは覚えなくてもOKです。

書き方➂は、num_listというリスト型の変数に、1から10(11-1)個の数字をループ処理で格納しています。リストというのはコンテナという、複数の値を格納できるタンスみたいなものです。1~10までの数字をループ処理で順に取り出しながら出力するやり方です。
書き方➁は、0から10個の範囲をループ処理の対象として指定しましたが、➂ではリスト自体をループ処理の対象として指定しています。

書き方➃は、同じループ処理なのですが、while文という、ある条件下であれば処理を繰り返すよ、という別の書き方でnum変数の値が11未満の間である限り、num変数に1ずつ足して、出力するという処理です。

・・・どうでしょう。もちろん、せっかくプログラムで実行する以上書き方➀~➃は、手で数字1~10をタイプした方が速いので、アレですが・・・。
仮に出力したい数が100までとか、1000までとかなったらどうでしょうか。

➁~➃は、確実に効率的ですよね。
こんな感じで、道は一本ではないし、暗記も必要ないです。試しに「forループ python」や「whileループ python」、「python リスト」等でググってみてください。沢山、素晴らしい解説サイトが出てきます。

2. 特に押さえるべきポイント

上記を踏まえ、特に意識するポイントを記載します。

(1)  変数
  上の例でも出てきましたが、変数というのはプログラムを書く上で、まず
  理解すべき概念・ツールだと思います。

(2)  データの型
  プログラムで上記変数も含め、扱う値には型があります。数値だったり、   文字列だったり、上の例のリスト以外に辞書型だったり様々な型がありま
  す。これも暗記する必要はなくて、データ型で何を意識すべきか、という
   原理だけ理解すればOKです。細かい話は都度ググ(以下割愛)

(3) 条件式
  なぜプログラムを作るかというと、処理を自動化するのが大抵の目的で
  す。となると、当然明確に判断できるものはプログラムに判断させる必要 
  があります。これはif文というもので、書けます。
  また、ifにelseif(もしくは)や、else(それ以外)や、orやandなどの条件で
  複雑な指定もできます。

(4) ループ処理
  項番1で記載したプログラムの例で解説したので、割愛しますが、条件式
 とともにプログラムで実現したいのは、処理の自動化なので当然、複数入
  ってきたインプットすべてに対して、繰り返し処理する。
  あるいは、一つのインプットを複数の角度で加工しながら、処理を繰り返
  していくなど、条件式とともに理解すべき重要な部分です。

(5) 言語ごとの特徴的な処理
  実は、(4)まではほぼどの言語であっても(HTMLやCSS等除く)ありま
  す。なぜなら、処理を自動化するのが大抵のプログラムの目的だからで
  す。ちょっと文法等は違ったりするのですが、結構似てます。
 (興味がある型は、調べてみてください)

  一方、その言語固有の書き方もあります。例えば、Pythonは書き方➂のよ
  うな「リスト内包表記」という書き方が可能です。
  また、インデントといって、開始列をずらす(例のifの次の文等を参照) 
  ことでブロックを表します。

  これが他の言語だと、{ }等でブロックをくくる必要があったりしますが、
  インデントでブロックが作れたり、リスト内包表記だったりでコードも読
  みやすいというのが、Pythonが初心者に分かりやすいと言われている一つ
  の理由だと思います。また、いまや身近になりつつあるAI(機械学習やデ
  ィープラーニング)もPythonには、簡単にインストールして使えるライブ
  ラリがあったりします。(個人的にはユーザーインターフェースの部分が 
  いまいちだと思ってますが)

  また、マクロVBAだと、セル操作やオートシェイプ等、おおよそエクセル
  上でできるレンジやオブジェクトの操作が可能だったり、ワークシート
  やファイル操作等が可能です。

3.他言語にも応用可能

 他の言語もやってみて思うのは、項番2で記載したポイントに対する理解
 は他言語でも流用可能です。

 もちろん、書き方や言語ごとの固有の特徴はあるため、そのままいけるも
  のではないですが、0から入るのとは全然違うはずです。

 以上、今日もコードにほぼ触れることなく 笑
 おしまいです!

 次回から、ポイント部分について、練習問題的なものも絡めてゆるりと書
    いていきたいと思います。読んでいただきありがとうございました。



この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
どうもありがとうございます😊
ノンストップ飯田
中堅サラリーマン。金融関連会社で今はシステム開発関連の仕事をしています。 ビットコイン誕生の経緯を読んで、プログラミングに興味を持ち、独学でPythonを契機に諸々浅く広く首突っ込んでます。なお、会社ではVBAで効率化ツール作ることにはまってます(殆ど趣味)