Code|プログラミング言語から学ぶのはダメ?プログラミング学習をする前に知っておくべきこと

こんにちは、うしまるです。

今日もプログラミングについて勉強していきましょう。

今回は、「プログラミングを学ぶ前に知るべきこと」についてお話していきます。

これからプログラミングを学習していく人に知っておいてほしいことを書きましたのでぜひ参考にしてみてください。

うしまるについて

まずはじめにうしまるについてかんたんに自己紹介です。

うしまるは、現在プログラミング歴11年になります。言語を学んだ順番がC→Java→C++→C#→Python→Rubyとなります。

C++以降は社会人になってからで、それぞれ仕事で使う上で必要になり調べながら開発に携わっています。主なジャンルは工業系の保守メンテナンスを行うソフトウェア開発を専門にしています。

詳しくはこちらの記事をご確認ください。

うしまるのプロフィール

プログラミング学習を始める前にやること

プログラミング言語から覚えてはダメ?

みなさんは、プログラムを学習するときどういう勉強をしていますか?

いきなりC言語の基本とか買ってきて勉強をしていませんか?

もちろんC言語の専門家になりたい人はそれでも良いと思います。

しかし、大部分の人はその勉強方法はもしかしたら時間を無駄にしてしまっているかもしれません。

結論から先に言ってしまうとプログラムを学習するとき、いきなり特定のC言語とかPythonとかから勉強を始めるのはあまりおすすめしません。

なぜなら、大部分のプログラムを学びたいと思う人の最終目標は、プログラミングを使って仕事をするためだからです。

プログラム言語は、その時々で流行り廃りというものがあり、例えば今、機械学習やビックデータで注目されているPython。

これも何年かしたら別の言語にとって変わられる可能性もあるやもしれません。

つまり、特定の言語を極めたとしてもその言語を使った仕事自体がなくなってしまうととたんにスキルの優位性がなくなってしまいます。

そこで大事なスキルが、アルゴリズムです。

このアルゴリズムは、どのプログラミング言語にも応用の効く共通の大事な考え方になります。

これさえマスターしてしまえば、その時々のニーズにあった言語を必要最小限覚えるだけで、スムーズに対応することができるようになります。

アルゴリズムに最適な言語は日本語(母国語)?

アルゴリズムを覚える上で、この記事を読む人に最適な言語はずばり!

「日本語」です。

もちろんどんな言語でも学べないことはないですが、はじめてアルゴリズムを学んでいくならばその国の母国語がおすすめです。

なんといっても、知らないプログラム言語を学ぶよりもすでに知っているものでできるなら楽ですよね?

日本語でアルゴリズムを学ぶメリットは、普通に普段日本語を使っている人であれば、プログラミング言語なんてまったく知らなくてもすぐにアルゴリズムを学ぶことができます。

せっかく幼少期から鍛え上げてきた日本語を有効活用してしまいましょう!

アルゴリズムって何?

次にアルゴリズムってなんだろうという疑問について解説していきます。

これは簡単に言うと料理と同じようなもので、私たちは、美味しいカレーライスが食べたい!と思ったときに美味しいカレー屋さんを探して頼みます。

このとき私達は別にカレーライスの細かな作り方や材料なんて気にしていなくて、その人が求めるものが満たされていればよいわけです。

これはプログラムでも同じで、カレーの作り方や材料の選び方が無限に近いくらいあるのと同様にどのプログラミング言語は、料理でいう材料でしかありません。

自宅では、じゃがいもと人参とカレー粉があるからカレー作ろうとなるかもしれませんが、お店の人が材料が余っているからこのお店で出す料理はこれとはならないのと一緒です。(すべてとはいいませんが…)

アルゴリズムってぱっと聞いたときなにか難しそうな言葉がでてきたように思いますが、簡単に言うとなにかを実現するための「やり方」のことになります。

料理でアルゴリズムの考え方を学ぼう!

身近なアルゴリズムの考え方を鍛える方法を料理でやってみます。

例えば、うしまる流普段のカレーの作り方を紹介します。

うしまるのカレーの作り方
1:お肉の下ごしらえ
2:炊飯器のセット(お米を炊く)
3:鍋に水を入れ火にかける
4:玉ねぎ・じゃがいも・にんじんを一口だいに切って鍋に投入
5:お肉を炒める
6:お肉を鍋に投入
7:カレールー投入
8:とろみが出てきたら完成

だいたい料理はじめから最後までで1時間ちょっとですね。ずっとつきっきりではないので料理の間の時間は適当に本読んっだり動画見たりしています。

では、これがうしまる家カレーライスの作り方のアルゴリズムになります。

さてさて

では、次にこれを15分で作るための改善案を考えてみましょう!

時短のためにそれぞれの工程の中から省けそうな手順を検討してみます。

時短の方法を検討する
1:お肉の下ごしらえ
→味を落としてよければこの工程を省きましょう!
2:炊飯器のセット(お米を炊く)
→予めお米は炊いておけば問題なし!
3:鍋に水を入れ火にかける
→ここは必須なのでそのまま
4:玉ねぎ・じゃがいも・にんじんを一口だいに切って鍋に投入
→茹でるを電子レンジでチンに変えると時短になります
5:お肉を炒める
6:お肉を鍋に投入
→手順3と統合してもいいかもです
7:カレールー投入
8:とろみが出てきたら完成
→ここは必須なのでそのまま

検討の結果をみてみましょう。

うしまるのカレーの作り方(時短編)
0:お米は事前に炊いておく
1:鍋に水と肉を入れ火にかける
2:玉ねぎ・じゃがいも・にんじんを一口だいに切って電子レンジでチン
3:カレールー投入
4:とろみが出てきたら完成

これで15分でカレーライスにありつけます。

このように普段やっていることに対して、何か条件を追加してみて、その条件を満たす手順を考えてみる練習をしてみるとアルゴリズムの考え方を鍛えることができます。

他にもDIYが好きな人は何か課題を見つけてその解決策を検討してみるのもおすすめです。

プログラムとアルゴリズム

前の章では、普段の生活の身近な部分からアルゴリズムの考え方を学ぶ練習をしました。

次は、プログラムを使った具体的な方法をまとめてみました。

プログラミング学習の具体的なやり方
1:やりたいことを決めよう
2:やりたいことを日本語で細かく分解する
3:向いていそうなプログラミング言語を選ぼう
4:プログラミング言語でできるところまでさらに手順2を分解する
5:コーディングする

まず最初に作ってみたいものを決めましょう!

作りたいものが決まったらその作りたいものがどのように動くのか細かく分解していきます。ちょうど料理を作るときみたいに分けていきましょう。

次に細かく分解した項目をもとに実装していくプログラムを選定します。

作りたいもののジャンルによって得意な言語がありますのでそれを選んでみましょう。

ただしどのような言語があるかわからない場合は、使用している言語の利用者が多いものを選択ことをおすすめします。おすすめの理由は、サンプルソースが多いのでわからないことがあった場合も独学で解決しやすくなります。

うしまるのおすすめは、初めてのプログラミング言語であれば、JavaかC#がおすすめです。

PythonやRubyは、よくも悪くも書き方が簡素化されているため、これを最初に勉強したあとにC言語系に手を出すとコテンパンにされます。とはいいつつも結局はやりたいことや作りたいものが作りやすそうなやつを選んだほうが良いので好きな言語でやってみてください!

そして次にようやくプログラミング言語の学習をしていきます。やりたいことを細かくプログラミング言語の仕様に沿って細分化していると思いますので、分解してやりたいこととプログラミング言語の仕様を見比べてどうやったら実現できるのかを考えます。

条件分岐してみたいけれど、この言語ではどういったふうに実装するのだろう?といった形で調べると必要最低限のことを最速で調べ上げることができます。

そして最後にコーディングしていくといった流れになります。

最初はかなり大変ですが、これを何度か経験していくとどんなプログラミング言語でも、例えそれが今までまったく見たことのない言語だったとしても不思議と読めるようになってきます。

あとは、そのプログラミング言語特有の書き方さえ覚えてしまえば、あら不思議。どんな言語もあなた自信のスキルとして使いこなすことができるようになります!

まとめ

今回は、プログラミングをこれから学ぶ人、もしくはプログラム言語を今学習している人に向けた勉強の方法について紹介しました。

少しでも記事を読んでくれたあなたにとって役に立てば幸いです。

それでは、本日はこのへんでノシ

 

記事が参考になったり、気に入ってもらえたら
ポチッとしてもらえると励みになります!

にほんブログ村 IT技術ブログへ にほんブログ村 IT技術ブログ Pythonへ にほんブログ村 株ブログ つみたてNISAへ

シェアしてもらえるとうれしいです!

コメントを残す

ABOUT US

usimaru
福岡でWindowsアプリケーション開発のお仕事してます。 お金に縛られない生活を目指して日々学んだことをOUTPUTしていきます。 主なテーマ ◆仕事経験から:AWS/Azure/C++/C#/Python/Ruby ◆資産形成に向けて:つみたてNISA/米国株/日本株/仮想通貨/ソーシャルレンディング ◆好きなこと:旅行/温泉/美味しいもの/布団の中 ◆目標:ブログを毎日更新目指します!