1からプログラミングを覚えるなら独学じゃない方がいい理由

プログラム
Pocket

大学4年で1からプログラミングを始める

筆者は機械工学科の大学、大学院を出てます。

機械工学科を講義と言うと4力学と言われる講義が多くを占めてます。(流体力学、材料力学、熱力学、機械力学)

つまり、プログラミングに触れる機会がほとんどなかったんですよね。

しかし、

大学4年の時、配属先研究室の教授からシミュレーションソフトを作る研究をやってください。と言われました。

筆者が教授にした初めての質問が

シミュレーションソフトってどうやって作るのですか?

プログラミングのプの字も知らないことが分かってしまう質問ですね(笑)

しかし、約2年間(大学院2年次は商用ソフトを使って研究していた)本気でプログラミングをした結果他のプログラミング記事のようなレベルまで能力が上がりました。

レイノルズ方程式をプログラミング

Fortran サブルーチン

ちなみにサンプルコードを使わずに、完全オリジナルコードですよ(ちょっと自慢(笑))

完ぺきではないですが自分で、このシミュレーションしたいなと思ったら何とかコードは書けます。

そして1からプログラミングを覚えた、筆者が独学より習う方が良いと思った理由を経験を交えて話したいと思います。

分からないことを分からないままにしないことが1番大事

注:筆者はFORTRANという言語を使っていたので、FORTRANが題材になります。

初めてのことに挑戦すると必ずあることですが、

何が分からないかが
分からない

プログラミングの基本中に基本に型宣言があります。

real、integerというやつです。

当然筆者を色々調べました。
するとrealは実数型、integer整数型です。
ネットでも、本でも、このようなことが書いていました。

筆者は

それで?

と思いました。

上記のことの意味については、詳しく書いていましたが、肝心なことが全く説明されてませんでした。

それは、どういう時にrealを使い、どういう時にintegerを使うのかです。

筆者は教授に上記のことを質問しました。

すると、

integer ZZと宣言して、ZZ=SQRT(2)※√2という意味とプログラムしてみてと言われました。

実際にやってみるとエラーが起きました。

エラーの原因は

ZZはinteger(整数型)で宣言しているのに、整数だけでは表すことができない
√2(1.414 )をZZに入れようとしたためだよ。
ここはrealで宣言しないといけないよ。と言われました。

 

そこでようやく筆者は理解納得しました。

独学でやっていたら、感覚で進めてしまうか、理解するのにもっと時間が掛かっていたということは断言できます。

もう1つ教授に質問した例を挙げると

real a

a = 式

if(a==1)then    ※aが1なら

処理

end if

この部分のプログラムが上手く行きませんでした。

教授に質問したところ、まず、コンピューター2進数を使っていて、日常では10進数を使っている所から理解しようと言われました。

簡単に説明すると、10進数では表せることのできる数字が、2進数では表せない場合があるよということを説明してくれました。
具体例として
10進数では0.1で表せるが、2進数では、0.000110011001100…と無限に続き、コンピュータは有効桁として表現してしまう。

だから、コンピュータ内のデータには0.1というきれいな数字ではない数字が記録ちゃうんだよと教えてくれました。

このことを知ったうえで、上のコードを見てみると

if(a==1)then    ※aが1なら
この部分が
10進数なら1という数字になるが、2進数では1.00001等になっている場合があり、上手くいかなくなる場合がある。と教えてくれました。

この問題については独学なら本当に詰んでいる(原因不明)案件だったと言えます。

まとめ

1からプログラミングを覚えるなら独学より習った方がいい理由、というタイトルですが、全員に当てはまるとは思ってません。

質問しない人、疑問に思わない人、本気で覚えようとしない人は独学でプログラミングを覚えた方がいいと思ってます。
独学のが安いですし、わざわざ高いお金を払って習うメリットを見つけられません。

因みに筆者の大学4年~大学院2年までの授業料は約250万です(高い(笑))

しかし、上記と真逆の人はお金を払ってでも、質問できる環境を作った方が早く上達できると、思います。

1からプログラミングを覚えた筆者でもここまでできるように
なりました。
本気で取り組めば出来るようになります。(これは断言出来る)

本気!
が大事です。

関連記事

FORTRAN基本から中級レベルまでの記事を紹介 まとめ