質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

解決済

5回答

1730閲覧

プログラミングの勉強について

gonp

総合スコア8

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

0グッド

3クリップ

投稿2017/12/11 08:38

勉強についてお伺いさせて頂きます。
わたしは今、Swift,Javascript(node.jsやReact)などを勉強しています。
ほぼひとりで、udemyやネットの情報などで勉強しております。

勉強してきて、まだ自分が理想とするものは作れていませんし、
プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません。
いわゆるコピペだったり、解説をみてもあー!、とわかるとこがあったりわからないとこがあったりです。
まだ勉強して3か月ほどです。
最初はとても楽しくて楽しくて(書いてること自体が)、でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。

そこで、みなさんにどのような過程で習得していったのか、勉強法とは・・・などを教えて頂ければと思います。

宜しくお願い致します

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KojiDoi

2017/12/11 15:44

あなたにとっての「理想とするもの」は何でしょうか?
guest

回答5

0

プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません

サンプルコードを読めたり、部分的に書けるようになっても、
プログラム全体設計するのが、最初は難しいだろうと思います。

そこで、フローチャートのような図解を使うのが良いと思います。
(オブジェクト指向で組むようになれば、フローチャートよりUMLを使う)
慣れれば無くても別に問題ない場合も多いですが、最初のうちは有効です。

フローチャートの書き方(富山大 工学部)
フローチャート(流れ図)とは

そして、分けると分かりやすいので、
設計時に、三段階に分けた方が分かりやすいです。

  1. 自然言語(日本語)で仕様を記述する
  2. フローチャートなどに作図する
  3. プログラミング言語で実装する

もう一点、プログラム設計のコツは、再帰的に分解することです。
プログラムで表現するには、アルゴリズムデータ構造
(究極的には二進数)で、表現できる形にまで分解する必要があります。

たとえば、将棋のプログラムを例にとってみます。
将棋のゲームソフトなら、とうぜん勝利条件の「詰み」を判定する必要がありますね。

もちろん、この詰みの判定は、言語の標準ライブラリにはありませんから、
処理やモジュールを自作する必要があります。

いきなり詰みを直接表現しようとしても、何をやっていいか分からなくなります。
そこで、詰みを別の概念で分解していきます。

  1. 詰みというのは、王手から逃げられない状態
  2. 王手というのは、次に王様を取ろうとする、一手前の状態
  3. 駒を取れるのは、敵の駒のマス目に自分の駒が進んだ場合
  4. 盤上の駒は、二次元配列上の値で区別する

つまり、「▲7六歩」を「ban[7][6] = sen_hu」みたいに表現します。
手を表現できたら、ルールに沿った合法手や、王手を判定する。
そして、王手の対応手を生成して、逃げられないことを判定すれば、
プログラムで詰みが表現できるわけです。

麻雀の上がり判定とかでも考え方は同じですし、
RPGとかSLGとかでも、さらに業務アプリでも、
再帰的に分解する手法は通用するわけです。

最後にまとめると、プログラムの設計には、図解と再帰的分割が有効だと思います。

投稿2017/12/11 10:02

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Fラン文系大学出身で在学中よりプログラミングを独学で勉強し、プログラマーとして働いています。
自分がスタートした当時はプログラミングの学習サイトと言えばドットインストールくらいしかなかったので、学習サイトはあまり見ていませんでした。
とりあえず作りたいものをイメージして、分解、分解した際にどのような技術が必要そうかを調査し、少しづつ出来ることを増やしていきました。
その時々で、一冊の本を頼りにしてみたりとにかく工夫をした記憶があります。

しかし、振り返ると大変非効率かつ無駄なことを多くしたなと思います。
以上を踏まえて、もし自分がプログラミングの勉強をやり直せるとしたら、以下のことを行います。

  • プログラミングと並行して、英語を勉強する
  • アルゴリズムを頭に徹底的に叩き込む
  • 公式ドキュメントを読む癖をつける(誰かがわかりやすくまとめた記事を読むのではなく一次情報を読む)
  • 検索は英語で行う

あまり参考にならないかもしれませんが、お役に立てれば幸いです

投稿2017/12/11 08:58

kenny_sayama

総合スコア1036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gonp

2017/12/12 11:13

回答ありがとうございます!とても嬉しいです。 具体的な方法を教えてくださりありがとうございます! そうなんです!やっていて、とても非効率なんじゃないんか・・・?と度々思ってしまい、やる気をなくす時もあるんです。 分解する考え方、 英語の重要性は身にしみて感じております。。 ぜひそれらを実践していきたいと思います! ありがとうございます!!
guest

0

第二の人生へよおこそ

ピースを組み合わせて、結果が変わってそれが楽しいと感じるならばかなりの才能を秘めています。
このまま知識欲の赴くままに色々作ってみてください。

でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。

スポーツや音楽等は物心ついた頃から始める方が圧倒的有利ですが、
プログラミングスキルは何処までいっても論理パズルです。
貴方が何歳であったとしても今まで培ってきた論理的思考能力はそのまま使えるので、
一概に先に始めた人の方が有利とは限りません。

どのような過程で習得していったのか、勉強法とは・・・

最初から最後まで通しで作ることです。
RPGツクールのような誰でも簡単にRPGが作れるソフトを使ってもエターナる人はとても多いです。
つまり、最後まで作り切るということは終盤になるにつれ凄いパワーが必要になります。

プログラミングスキルを使ってシステムを作る事はなおさらで、とても困難です。
なんか作りたいと思い立って実際に完成させられる人は、
適当なプログラマを100人集めてきて1人程度の割合でしか居ないでしょう。

まずはどんなしょぼい小さなものでも良いので、最後まで作って完成させる事を目指してください。
私もLivedoorブログ等で小学生でも簡単にブログが持てるこの世の中、自分のブログをPHPとフレームワークを操ってどうにかこうにか作り上げました。
この経験を元に企業に就職、仕事になると完成させないと話にならないので死ぬ気でこなしている内に大抵なんでも出来るようになりました。

投稿2017/12/11 10:05

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gonp

2017/12/12 11:09

回答ありがとうございます。とても嬉しいです。 おそらくベテランの方でしょうか。回答になんだかとても勇気をもらいました。励ましもいただいてありがとうございます。 とりあえず、最後まで完成させる・・・それが大事ですね!ぜひ作って見たいと思います! そのためにはガッツとか体力、情熱も重要ですね。 ありがとうございます!
guest

0

参考になるかどうかわかりませんけど、私の経験を言えば、ゲームを作りながら基礎を学びましたね。ゲームといっても、坊主めくりとか神経衰弱とか、素朴なものですが。

とにかく最初はシンプルなものでいいので完成させてみる。できたら家族とか友人に見せて遊んでもらってみる。特にゲームというのは、単純なものでも、インターフェースの作り方とかイベントの取り扱い方とかグラフィックスの操作方法とかいろいろ学ばないとできませんから、初級者には良い題材かと思います。また、比較的容易にモニターユーザの確保が見込めるという点でも有利です。

人に使ってもらうと、おそらく思いもよらなかった操作法を試されて、使いにくいとか訳が分からないとか文句を言われることも出てくると思います。また、プログラムを作りこんでいくといろいろ欲が出てきて、特殊ルールを実装してみようとか表示に凝ってみようとか考え始めるものです。で、プログラムを拡張して再度モニターを頼むわけですが、理解不能だの、前のが良かっただの、散々に言われたりします。
こうした経験がみんな大いに勉強のタネになると思います。

投稿2017/12/11 16:09

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gonp

2017/12/12 11:07

回答ありがとうございます!大変嬉しいです。 とにかく最初はシンプルなものでいいので完成させてみる。 また、プログラムを作りこんでいくといろいろ欲が出てきて、特殊ルールを実装してみようとか表示に凝ってみようとか考え始めるものです。 上記の回答、特になるほどなあと感じました。 とりあえず、一つ作って見たいと思います!まずは、そこからですね。 ありがとうございます!!
guest

0

3か月ならまだまだ初心者。
というか、気分はいつでも初心者で。
常に学んでいくという気持ちが大切だと思います。
世の中はどんどん進んでいきますから。

「自分が理想とするとこへ行けるのか・・・?」と思っていらっしゃるのであれば、
やりたいことがあるわけですから、その理想に少しでも近づくための勉強を、
毎日、少しでもやっていけばいいと思います。

わからないことも沢山出ると思いますが、
そこであきらめずに、1つ戻って勉強をやり直すとか、
ちょっと別のジャンルを勉強していくとか。

どんな勉強方法がいいかは、個人差があると思いますので、
他の人の回答にお任せします。
あとは「志」を大切にすればいいのではないでしょうか。

投稿2017/12/11 09:29

jm1156

総合スコア866

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gonp

2017/12/12 11:11

回答ありがとうございます!とても嬉しいです。 学び続けるのですね。惰性なども感じてしまっていたのです最近。。 一歩一歩、頑張っていきます! 志・・・とても重要ですね。 ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問