勉強についてお伺いさせて頂きます。
わたしは今、Swift,Javascript(node.jsやReact)などを勉強しています。
ほぼひとりで、udemyやネットの情報などで勉強しております。
勉強してきて、まだ自分が理想とするものは作れていませんし、
プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません。
いわゆるコピペだったり、解説をみてもあー!、とわかるとこがあったりわからないとこがあったりです。
まだ勉強して3か月ほどです。
最初はとても楽しくて楽しくて(書いてること自体が)、でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。
そこで、みなさんにどのような過程で習得していったのか、勉強法とは・・・などを教えて頂ければと思います。
宜しくお願い致します
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
プログラミングを一から自分で構想したり(アルゴリズムを組んだり)などもできません
サンプルコードを読めたり、部分的に書けるようになっても、
プログラム全体を設計するのが、最初は難しいだろうと思います。
そこで、フローチャートのような図解を使うのが良いと思います。
(オブジェクト指向で組むようになれば、フローチャートよりUMLを使う)
慣れれば無くても別に問題ない場合も多いですが、最初のうちは有効です。
フローチャートの書き方(富山大 工学部)
フローチャート(流れ図)とは
そして、分けると分かりやすいので、
設計時に、三段階に分けた方が分かりやすいです。
- 自然言語(日本語)で仕様を記述する
- フローチャートなどに作図する
- プログラミング言語で実装する
もう一点、プログラム設計のコツは、再帰的に分解することです。
プログラムで表現するには、アルゴリズムとデータ構造
(究極的には二進数)で、表現できる形にまで分解する必要があります。
たとえば、将棋のプログラムを例にとってみます。
将棋のゲームソフトなら、とうぜん勝利条件の「詰み」を判定する必要がありますね。
もちろん、この詰みの判定は、言語の標準ライブラリにはありませんから、
処理やモジュールを自作する必要があります。
いきなり詰みを直接表現しようとしても、何をやっていいか分からなくなります。
そこで、詰みを別の概念で分解していきます。
- 詰みというのは、王手から逃げられない状態
- 王手というのは、次に王様を取ろうとする、一手前の状態
- 駒を取れるのは、敵の駒のマス目に自分の駒が進んだ場合
- 盤上の駒は、二次元配列上の値で区別する
つまり、「▲7六歩」を「ban[7][6] = sen_hu」みたいに表現します。
手を表現できたら、ルールに沿った合法手や、王手を判定する。
そして、王手の対応手を生成して、逃げられないことを判定すれば、
プログラムで詰みが表現できるわけです。
麻雀の上がり判定とかでも考え方は同じですし、
RPGとかSLGとかでも、さらに業務アプリでも、
再帰的に分解する手法は通用するわけです。
最後にまとめると、プログラムの設計には、図解と再帰的分割が有効だと思います。
投稿2017/12/11 10:02
総合スコア5592
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
Fラン文系大学出身で在学中よりプログラミングを独学で勉強し、プログラマーとして働いています。
自分がスタートした当時はプログラミングの学習サイトと言えばドットインストールくらいしかなかったので、学習サイトはあまり見ていませんでした。
とりあえず作りたいものをイメージして、分解、分解した際にどのような技術が必要そうかを調査し、少しづつ出来ることを増やしていきました。
その時々で、一冊の本を頼りにしてみたりとにかく工夫をした記憶があります。
しかし、振り返ると大変非効率かつ無駄なことを多くしたなと思います。
以上を踏まえて、もし自分がプログラミングの勉強をやり直せるとしたら、以下のことを行います。
- プログラミングと並行して、英語を勉強する
- アルゴリズムを頭に徹底的に叩き込む
- 公式ドキュメントを読む癖をつける(誰かがわかりやすくまとめた記事を読むのではなく一次情報を読む)
- 検索は英語で行う
あまり参考にならないかもしれませんが、お役に立てれば幸いです
投稿2017/12/11 08:58
総合スコア1036
0
第二の人生へよおこそ
ピースを組み合わせて、結果が変わってそれが楽しいと感じるならばかなりの才能を秘めています。
このまま知識欲の赴くままに色々作ってみてください。
でも最近ではこれは自分が理想とするとこへ行けるのか・・・?などと考えたりします。
スポーツや音楽等は物心ついた頃から始める方が圧倒的有利ですが、
プログラミングスキルは何処までいっても論理パズルです。
貴方が何歳であったとしても今まで培ってきた論理的思考能力はそのまま使えるので、
一概に先に始めた人の方が有利とは限りません。
どのような過程で習得していったのか、勉強法とは・・・
最初から最後まで通しで作ることです。
RPGツクールのような誰でも簡単にRPGが作れるソフトを使ってもエターナる人はとても多いです。
つまり、最後まで作り切るということは終盤になるにつれ凄いパワーが必要になります。
プログラミングスキルを使ってシステムを作る事はなおさらで、とても困難です。
なんか作りたいと思い立って実際に完成させられる人は、
適当なプログラマを100人集めてきて1人程度の割合でしか居ないでしょう。
まずはどんなしょぼい小さなものでも良いので、最後まで作って完成させる事を目指してください。
私もLivedoorブログ等で小学生でも簡単にブログが持てるこの世の中、自分のブログをPHPとフレームワークを操ってどうにかこうにか作り上げました。
この経験を元に企業に就職、仕事になると完成させないと話にならないので死ぬ気でこなしている内に大抵なんでも出来るようになりました。
投稿2017/12/11 10:05
総合スコア21158
0
参考になるかどうかわかりませんけど、私の経験を言えば、ゲームを作りながら基礎を学びましたね。ゲームといっても、坊主めくりとか神経衰弱とか、素朴なものですが。
とにかく最初はシンプルなものでいいので完成させてみる。できたら家族とか友人に見せて遊んでもらってみる。特にゲームというのは、単純なものでも、インターフェースの作り方とかイベントの取り扱い方とかグラフィックスの操作方法とかいろいろ学ばないとできませんから、初級者には良い題材かと思います。また、比較的容易にモニターユーザの確保が見込めるという点でも有利です。
人に使ってもらうと、おそらく思いもよらなかった操作法を試されて、使いにくいとか訳が分からないとか文句を言われることも出てくると思います。また、プログラムを作りこんでいくといろいろ欲が出てきて、特殊ルールを実装してみようとか表示に凝ってみようとか考え始めるものです。で、プログラムを拡張して再度モニターを頼むわけですが、理解不能だの、前のが良かっただの、散々に言われたりします。
こうした経験がみんな大いに勉強のタネになると思います。
投稿2017/12/11 16:09
総合スコア13671
0
3か月ならまだまだ初心者。
というか、気分はいつでも初心者で。
常に学んでいくという気持ちが大切だと思います。
世の中はどんどん進んでいきますから。
「自分が理想とするとこへ行けるのか・・・?」と思っていらっしゃるのであれば、
やりたいことがあるわけですから、その理想に少しでも近づくための勉強を、
毎日、少しでもやっていけばいいと思います。
わからないことも沢山出ると思いますが、
そこであきらめずに、1つ戻って勉強をやり直すとか、
ちょっと別のジャンルを勉強していくとか。
どんな勉強方法がいいかは、個人差があると思いますので、
他の人の回答にお任せします。
あとは「志」を大切にすればいいのではないでしょうか。
投稿2017/12/11 09:29
総合スコア866
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。