#はじめに
新卒1年目の配属で社内SEという名の雑用係になってしまった。
去年まで大学生だった、なんちゃってエンジニアです。
大学時代に研究でプログラミングを行った際に感じたことについての記録です。
#使ったことのある言語(完全に蛇足)
・C/C++
・Python3
他にも触れたことがある言語はありますが(PHPとか)これからも自己学習したいと思える言語はこの2つです。(といっても現状)
#実行環境(こっちも蛇足)
・Windows、
・Mac
・Linux(Ubuntu、CentOS7)
このあたりで実行環境を作成して学習しました。(MacとLinuxはほぼ一緒だったけど)
実行環境の構築は他の記事などを参考にしてください。ここでは書きません。
#1つの目プログラミング言語の学習!
プログラミング言語の学習において最も重要なことは書くこと。
とにかく学習サイトや書籍のサンプルコードを自分で書いて実行してみる。
####自分で書くメリット
プログラム言語はアルファベットの羅列である。
それを眺めて理解できる人は、そもそもプログラムの取得に苦労しない超人。
凡人の自覚のある私のような人間は実際の動きをみてコードを自分の言葉で理解する必要があると思います。
また自分の手で実行まで持ってくためにsyntaxエラーやPythonの文法ではインデントによるエラーなどの複数のエラーに対する経験値を積むことができる。サンプルコードと自分で書いたコードを比較し、間違えている箇所を探して直すことで、今後同じようなエラーを見たときに直す箇所の予想が速くなると思います。
####プログラム改変のメリット
書いたコードを改変することが一番理解を深めるコツ。最速の方法だと思っています。
改変できるときはどんどん改変すべきだと思います。
エラーにならないように、かつ数値の変更や出力の変更によって実行結果がどう変わるかを観察することができるためコードの動作を複数の視点から見ることができる。
##最低限覚えたほうがいい概念と文法
###変数
よく数値を格納する箱と表現されるプログラムの概念。
変わる数と書いて変数と書くので基本的に箱の中にしまわれている値は変えることができます。
プログラミングはこの変数を変化させ、表示させることで成り立っている。プログラミングの学習の際はこの変数の中身を意識すると学習をしやすいと思います。
変数はプログラミング言語の基本的な概念でHTML以外の全てのプログラミング言語で見たことがあります。(HTMLがプログラミング言語かどうかはわからないけど...)
###if文
特定の条件でプログラムに行わせる処理を変えるとき使用する文法です。
いままで見てきたプログラミング言語の全てに登場してきた関数です。(HTML以外のプログラミング言語ですが)
if hoge == "hage":
print(hoge)
else:
print("hige")
上記はPythonでのif文です。
Pythonはインデントによって処理の塊を定義しているので段落の下がっているコードの上にあるコード(例えばif hoge == "hage"
とか)の処理の中身と考えると理解しやすい。
処理の中身を簡単に説明すると
hogeという変数に"hage"という文字(コンピュータは文字も数値で表します)が入っていた場合にhageという変数の中身を表示、中身が"hage"以外の時は"hige"という文字を表示しろという命令である。
if文は条件に当てはまったときにだけ中身が実行される。
elseはifと同時に使用され、ifの条件に当てはまらなかった時にだけ中身が実行される。
###for文
同じ処理を何度も繰り返すときに使用する文法です。
いままで見てきたプログラミング言語の全てに登場してきた関数です。(HTML以外です。)
for i in range(10):
print("hage")
Pythonで書いたfor文の例です。
Pythonは他の言語のfor文と比べる書き方が特殊かもしれませんが。
配列を操作するときには使いやすいけど
このコードは"hage"という文字を10回表示させるコードです。(悪意はないです。)
for文は設定した回数だけ同一の処理を行わせる文法です。
上のコードでprint("hage")
が実行され"hage"が実行されると、for i in range(10)
に戻って処理が再実行される。
指定の回数繰り返すと戻らずにprintの下に書かれた処理が実行される。
if文と違って必要性が浮かばないかもしれませんが、例えばHTMLで表を作りたい場合、表のセルの数だけ、セルを表示するコードを書く必要がある。
for文を使用することでセルの数にもよるが圧倒的に少ないコードで表を作ることができる。
#プログラミング学習のコツ
やっとこの記事で書きたいことが書けます。
上で書いたような、どの言語にも共通している概念は多くあると思います。
適当に上げると
・配列
・連想配列
・関数
・クラス
・変数型
少し考えただけでもこのくらいはでます。
このように共通している概念を見つけ出すことが新しい言語を読むときに大きな力になります。
また、複数の言語を学習していると(多すぎるのも良くないと思いますが)1つ目の言語では学習しなかった概念を2つ目の言語で学習したことによって1つ目の言語でも使えるか調べて使えるようになる。
1つ目の言語と同じようなアルゴリズムを2つ目の言語でさせようとしたら実行結果が1つ目の言語と異なっているため、調べたら両方の言語の処理に対しての理解が深まる
などの効果もあるように思います。
1つの言語を徹底的に極める学習法もいいかもしれませんが、2つ3つの言語をつまみ食いしながら相互に理解を深めていくことも学習としていいと思います。
#まとめ
いろいろと書きましたが、この記事をまとめると
・プログラミング言語の最初の一歩はその言語、特有の処理を学習するより処理を抽象的に理解することが大切。
・概念を理解しておけば、特定の言語でその概念をしようしたいときにスムーズに調べることができる。
・プログラミングの学習は言語の学習ではなくプログラミングの使用する概念の学習と考えたほうが応用が利く
#おわりに
プログラムの学習について感じたことをまとめました。
ご意見や変数やif文の説明に間違えなどがございましたら教えていただけると幸いです。
最後にここまで読んでいただきありがとうございます。
執筆日
2020-9-5