プログラミング能力を上げるための訓練の方法が知りたいです。
自分は文系の人間でプログラマーではないのですが、独学である程度訓練し、プログラムを仕事にしたいと思っています。どうしたらいいのかプログラマーの知人に尋ねたところ、下記のような意見を頂きました。
- ソートアルゴリズムなどアルゴリズムの練習をする
- githubなどに作ったものを上げて、多くの人に見てもらう
- とにかく作る
まずソートアルゴリズムの練習をしようと思い、調べると、書籍、WEB情報などたくさんあります。書籍はアルゴリズムとデータ構造というものを購入したところですが、
まだプロコンに参加できるレベルではありません。
また、過去に何度かプログラムの独学を挫折しているので、
どうしたら心が折れずに独学ができるか、アドバイスを頂けないでしょうか。
どうぞよろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 09:16
回答7件
0
最終的になりたい姿がどういうものか知りませんが、作りたいものを作ればいいと思います。
何を作るのか決めて、どの言語で作るか決めて、あとはその言語の入門サイトとか入門書とか読みながら作っていけばそのうちモノが完成しますし、完成したら達成感も得られるので次の勉強に繋げやすいです。
アルゴリズムは勉強するに越したことはないですが、現在の主流になっている高級言語では自分でソートアルゴリズムの実装をするなんてことはまずありません。
多くの人に見てもらうのもひとつの手ですが、プログラミング初心者のレベルでそれをやろうと思うと、見せられるようなレベルのものを作ろうと躍起になって結局完成せずに挫折することも多いと思うので、一人でこっそり遊べるようなプログラムをどんどん作りましょう。
私は中学生の頃にホームページを作る(自作ホームページ全盛期!年齢バレしそう)のから始まり、後にC言語でじゃんけんゲームとか簡単なおみくじプログラムとか作って遊んでました。
今だとWEBシステム作るか、機械学習プログラムを作るか、IoTで遊ぶのか、スマホアプリ作るのか...どういう分野の仕事に就きたいかでどこの分野を勉強するかが変わってきますね。
基礎なんてあとから勉強すればいいのでとりあえずモノ作りして遊びましょう。
投稿2018/08/18 08:19
総合スコア1803
0
まず、プログラミングを通して作りたいものは何か、実現したいことは何かを
考え、言語を選びましょう。言語選びはプログラマーの人生を左右するといわれています。
ネット、書籍などで基本を身につけよう。(練習問題を解こう)
なんといっても基本的な文法は不可欠です。私も最初は書籍を買って勉強しました。
また、ちょっとした書き方や見慣れない単語が出た場合はネットで検索してその都度,知識として取り入れています。
基本的なことが身についたら練習問題を解くことをおすすめします。
私がお世話になったサイトだと、
C言語 練習問題
北ソフト工房 <- C,Java,C# などがあります。
paizaについてですが、こちらでは色んなプログラミングの基礎を動画を通して学ぶことができます。
一部有料のものもありますが、基本的に無料のものが多いです。
基礎が身についたら練習問題を解いてプログラミング能力を上げるのも一つの方法だと思います。
ただ、paizaの場合、会員登録が必要です。
また、paiza.ioでは面倒な環境構築をせずに無料でコードが書けます。
環境構築は時間がかかるので私もこちらを利用しています。
とにかく、手を動かそう。
コードを書く、頭で考えるのが80%,実際に考えたことをコードに落とし込むのが20%と言われています。
私も、実際にコードに落とし込む前にどのような流れになるか考える時間が長いです。
処理が複雑になればノートにかいて自分の中で整理したり、処理の流れを一つずつ確かめたりしてます。
(for
文でループするごとに変数がどのように変わっていくかなど)
初めは、地道な作業で面倒かもしれませんが、この作業を繰り返すことで自ずとランクアップにつながると思います。
特に、エラー・バグが出た場合にコードを自分で修正することが重要だと思います。
paizaにあった文章で印象に残ったものを一つ述べます。
, 「何かに対して問題を話すことで、頭が整理されて解決法が見つかる」
というエンジニアのテクニックがあります。
(「ラバーダッキング」と呼ばれています。デスクに置かれたゴム製のアヒルに話しかけたことから)
基本的なアルゴリズムは習得しよう。
質問欄にある通りソートのアルゴリズムは大切です。その他、代表的な知っておくべきアルゴリズムを
挙げておきます。
- 最大、最小
- ユークリッドの互除法による最大公約数
- 素数
投稿2018/08/18 09:01
編集2018/08/18 09:10退会済みユーザー
総合スコア0
0
ベストアンサー
学習意欲に溢れた真面目な方なのでしょうが、課題に「ソートアルゴリズムの勉強」をいきなり選んでしまうところが、挫折の遠因じゃないかなーと思いました。
類似の質問に何度か同じことを回答しているのですが、挑戦するのは「簡単なゲーム」がお勧めです。機能・性能はしょうもないもので構いません。最小限のルールのみを実装したものをとにかく完成させることです。簡単なものでも、完結させようと思ったら、それこそソートを含めていろいろなことの基礎勉強が必要になります。必要に即して勉強したことは血肉になりやすいものです。
ゲーム以外にも、しょうもないユーティリティツール、しょうもない冗談ソフトなどもお勧めです。
ちなみに私が昔QuickBASICというものを勉強していたころ、最初に完成させたのが「意思決定支援ツール」というものです。起動させると、「コインを投げました」と表示され、しばらくすると「表が出ました」あるいは「裏が出ました」と表示されるものです。これを「完成」させたのち、ver.2ではコインが放物線を描いて飛ぶさまをアスキーアートで表示するルーチンを追加し、さらにver.3では「天気予報機能」を追加しました。コインに加えて下駄を投げられるようにしたわけです。
グラフィック処理の勉強をしていたときに作った、「某宮崎アニメのハイライトシーンを再現するプログラム」は周囲にウケましたね。起動すると画面にアトランダムにたくさんの赤い点が表示され、これらが画面中央のものから順々に青く変化するというものですが。
まあこんな調子で、(ちょっと考える→ちょっと手を動かす)xN → しょうもないけど完成
のサイクルをできるだけ早く回してみることが挫折せずに独学を続けるコツではないでしょうか。
投稿2018/08/18 09:11
総合スコア13671
0
歌手(シンガーソングライター)、漫画家、 作家は良い作品を生み出すためにどんなことをしているでしょう?
基礎技術の習得が最低限必要です。
(楽譜が読めない歌手とか、ヘタウマ漫画という例外があったりしますが)
プログラミングでの基礎技術はなにかをかんがえて、その習得に努力するとよいと思います。
また、よい道具を揃えることも大事です。
(弘法筆を選ばずという言葉もありますが、大工の腕は道具箱を見ればわかるとい言います)
例えば、メモ帳しか使えないハッカーというのはおそらく存在していません。
投稿2018/08/18 09:17
総合スコア22324
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/18 09:20
2018/08/18 12:19
2018/08/18 13:52
2018/08/18 14:00
2018/08/18 22:46
2018/08/19 00:30
0
机上で最善の方法を探す完璧主義だと心折れやすいですね。
プログラミングが楽しければ心は折れないでしょう。楽しくもなく、目的もなければどんな楽な方法を聞いてもいずれ心折れるでしょう。
とりあえずその知人を信じて始めてみて、それで折れたら別のことをすればいいのでは?
その人はソートアルゴリズムの勉強が楽しかったんでしょう。だから勧めたんだと思います。
それがあなたに合うかどうかは、あなたがやらなければわかりません。
なぜやらないうちから別の方法を探すのですか?
投稿2018/08/18 23:12
総合スコア28660
0
誰でも最初は初心者です!
私は
Progate → dotinstall → 参考書
でした。
様々な参考書があるので、迷いますが
おそらく一番敷居が低いのはProgateです。
このサービスは月額1000円ほどかかってしまいますが、ここで学んだことを使えば
自分で一つのWebサービスを作ることができますよ^^
投稿2018/08/18 13:19
総合スコア60
0
過去に何度かプログラムの独学を挫折している
とのことで、どのような学習法で挑戦したのか、またどの程度の初学者であるかはわからないのですが、
Java以外ほぼ未経験の私が多言語の学習をした際に参考にしたサイトを以下に記載します。
ドットインストール
・動画を見ながら学習できる初心者向けプログラミング学習サイト
その他にも
Progate、Progra!、CODEPREP
等探せば色々な学習サイトがあります。
ある程度理解ができてきたらPaizaラーニングのプログラミングスキルチェック問題で
自分の実力を確認してみるのもいいかも知れません。
プログラミングの習熟には何はなくとも手を動かすこと
これが一番だと思うので、とりあえずは何かしらやってみることから始めるのが良いと思います。
投稿2018/08/18 08:30
総合スコア992
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。