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

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

新規登録して質問してみよう
ただいま回答率
85.48%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

プログラミング言語

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

Q&A

解決済

7回答

1203閲覧

プログラミング能力を上げるための訓練の方法が知りたいです

oyo

総合スコア7

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

プログラミング言語

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

2グッド

3クリップ

投稿2018/08/18 08:01

編集2018/08/18 09:17

プログラミング能力を上げるための訓練の方法が知りたいです。
自分は文系の人間でプログラマーではないのですが、独学である程度訓練し、プログラムを仕事にしたいと思っています。どうしたらいいのかプログラマーの知人に尋ねたところ、下記のような意見を頂きました。

  • ソートアルゴリズムなどアルゴリズムの練習をする
  • githubなどに作ったものを上げて、多くの人に見てもらう
  • とにかく作る

まずソートアルゴリズムの練習をしようと思い、調べると、書籍、WEB情報などたくさんあります。書籍はアルゴリズムとデータ構造というものを購入したところですが、
まだプロコンに参加できるレベルではありません。
また、過去に何度かプログラムの独学を挫折しているので、
どうしたら心が折れずに独学ができるか、アドバイスを頂けないでしょうか。
どうぞよろしくお願いします。

jun68ykt👍を押しています

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

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

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

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

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

m.ts10806

2018/08/18 09:09

もう少し汎用的なタグをつけられた方が良いかと思います。言語を指定するのであれば関連する内容にしてください
oyo

2018/08/18 09:16

すみません、修正します
guest

回答7

0

最終的になりたい姿がどういうものか知りませんが、作りたいものを作ればいいと思います。
何を作るのか決めて、どの言語で作るか決めて、あとはその言語の入門サイトとか入門書とか読みながら作っていけばそのうちモノが完成しますし、完成したら達成感も得られるので次の勉強に繋げやすいです。
アルゴリズムは勉強するに越したことはないですが、現在の主流になっている高級言語では自分でソートアルゴリズムの実装をするなんてことはまずありません。
多くの人に見てもらうのもひとつの手ですが、プログラミング初心者のレベルでそれをやろうと思うと、見せられるようなレベルのものを作ろうと躍起になって結局完成せずに挫折することも多いと思うので、一人でこっそり遊べるようなプログラムをどんどん作りましょう。

私は中学生の頃にホームページを作る(自作ホームページ全盛期!年齢バレしそう)のから始まり、後にC言語でじゃんけんゲームとか簡単なおみくじプログラムとか作って遊んでました。

今だとWEBシステム作るか、機械学習プログラムを作るか、IoTで遊ぶのか、スマホアプリ作るのか...どういう分野の仕事に就きたいかでどこの分野を勉強するかが変わってきますね。
基礎なんてあとから勉強すればいいのでとりあえずモノ作りして遊びましょう。

投稿2018/08/18 08:19

spookybird

総合スコア1803

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

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

oyo

2018/08/18 09:11

回答ありがとうございます! 自分のなりたい姿がいまいちはっきりしないまま学習しているのですが、作りたいものはあるので、作ってみようと思います。
guest

0

まず、プログラミングを通して作りたいものは何か、実現したいことは何かを
考え、言語を選びましょう。言語選びはプログラマーの人生を左右するといわれています。

ネット、書籍などで基本を身につけよう。(練習問題を解こう)

なんといっても基本的な文法は不可欠です。私も最初は書籍を買って勉強しました。
また、ちょっとした書き方や見慣れない単語が出た場合はネットで検索してその都度,知識として取り入れています。
基本的なことが身についたら練習問題を解くことをおすすめします。
私がお世話になったサイトだと、

C言語 練習問題
北ソフト工房 <- C,Java,C# などがあります。

paiza
paiza.io

paizaについてですが、こちらでは色んなプログラミングの基礎を動画を通して学ぶことができます。
一部有料のものもありますが、基本的に無料のものが多いです。
基礎が身についたら練習問題を解いてプログラミング能力を上げるのも一つの方法だと思います。
ただ、paizaの場合、会員登録が必要です。

また、paiza.ioでは面倒な環境構築をせずに無料でコードが書けます。
環境構築は時間がかかるので私もこちらを利用しています。

とにかく、手を動かそう。

コードを書く、頭で考えるのが80%,実際に考えたことをコードに落とし込むのが20%と言われています。
私も、実際にコードに落とし込む前にどのような流れになるか考える時間が長いです。
処理が複雑になればノートにかいて自分の中で整理したり、処理の流れを一つずつ確かめたりしてます。
(for文でループするごとに変数がどのように変わっていくかなど)
初めは、地道な作業で面倒かもしれませんが、この作業を繰り返すことで自ずとランクアップにつながると思います。

特に、エラー・バグが出た場合にコードを自分で修正することが重要だと思います。

paizaにあった文章で印象に残ったものを一つ述べます。

, 「何かに対して問題を話すことで、頭が整理されて解決法が見つかる」
というエンジニアのテクニックがあります。
(「ラバーダッキング」と呼ばれています。デスクに置かれたゴム製のアヒルに話しかけたことから)

基本的なアルゴリズムは習得しよう。

質問欄にある通りソートのアルゴリズムは大切です。その他、代表的な知っておくべきアルゴリズムを
挙げておきます。

  • 最大、最小
  • ユークリッドの互除法による最大公約数
  • 素数

投稿2018/08/18 09:01

編集2018/08/18 09:10
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

oyo

2018/08/18 09:13

回答ありがとうございます。練習問題もそこまでこなしていないので、本を読んで、なるべく多くの問題を解くようにしてみます。
guest

0

ベストアンサー

学習意欲に溢れた真面目な方なのでしょうが、課題に「ソートアルゴリズムの勉強」をいきなり選んでしまうところが、挫折の遠因じゃないかなーと思いました。

類似の質問に何度か同じことを回答しているのですが、挑戦するのは「簡単なゲーム」がお勧めです。機能・性能はしょうもないもので構いません。最小限のルールのみを実装したものをとにかく完成させることです。簡単なものでも、完結させようと思ったら、それこそソートを含めていろいろなことの基礎勉強が必要になります。必要に即して勉強したことは血肉になりやすいものです。

ゲーム以外にも、しょうもないユーティリティツール、しょうもない冗談ソフトなどもお勧めです。

ちなみに私が昔QuickBASICというものを勉強していたころ、最初に完成させたのが「意思決定支援ツール」というものです。起動させると、「コインを投げました」と表示され、しばらくすると「表が出ました」あるいは「裏が出ました」と表示されるものです。これを「完成」させたのち、ver.2ではコインが放物線を描いて飛ぶさまをアスキーアートで表示するルーチンを追加し、さらにver.3では「天気予報機能」を追加しました。コインに加えて下駄を投げられるようにしたわけです。

グラフィック処理の勉強をしていたときに作った、「某宮崎アニメのハイライトシーンを再現するプログラム」は周囲にウケましたね。起動すると画面にアトランダムにたくさんの赤い点が表示され、これらが画面中央のものから順々に青く変化するというものですが。

まあこんな調子で、(ちょっと考える→ちょっと手を動かす)xN → しょうもないけど完成のサイクルをできるだけ早く回してみることが挫折せずに独学を続けるコツではないでしょうか。

投稿2018/08/18 09:11

KojiDoi

総合スコア13671

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

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

oyo

2018/08/18 09:16

回答ありがとうございます。簡単なゲーム>現在クイズゲームを作っているところですが、確かにまだ思う動きをしていないので頑張ってみようと思います。
guest

0

歌手(シンガーソングライター)、漫画家、 作家は良い作品を生み出すためにどんなことをしているでしょう?

基礎技術の習得が最低限必要です。
(楽譜が読めない歌手とか、ヘタウマ漫画という例外があったりしますが)

プログラミングでの基礎技術はなにかをかんがえて、その習得に努力するとよいと思います。

また、よい道具を揃えることも大事です。
(弘法筆を選ばずという言葉もありますが、大工の腕は道具箱を見ればわかるとい言います)
例えば、メモ帳しか使えないハッカーというのはおそらく存在していません。

投稿2018/08/18 09:17

katoy

総合スコア22324

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

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

oyo

2018/08/18 09:20

ありがとうございます。実は自分はプログラミング的な思考能力が欠如しており、逆に、ツールを使うのは割と得意です。センスがないものが、プログラマーを目指すのはおかしいと思い、人からも言われるのですが、プログラミングは面白いと思うので、目指そうとしています。
katoy

2018/08/18 12:19

ツールを使うには、センスが必要です。
KojiDoi

2018/08/18 13:52

ツールが使えてるのなら、十分に思考能力はあると思えます。面白いと思えるなら最小限度の適性はあるといえます。そもそも「プログラミング的な思考能力」ってなんでしょう。プログラムといっても、テキストデータを上から下へ順番に読んでいきながら統計計算を進めるプログラムと、3Dをぐりぐり表示させて銃を打ち合うゲームを実現するプログラムとでは、必要とされる「センス」は大違いでしょう。prologなんて言語があるのですが、こいつの「プログラミング」はほとんどデータベースの構築です。あなたの適性がどこにハマるかはやってみないと分かりません。まあ幅広くいろいろ見て回るといいと思います。
oyo

2018/08/18 14:00

ありがとうございます。自分がどこに適正があるかもわかっていませんが、数学を高校時代に避けて通ってきてしまったので後悔しています。数学的知識が必要なものはとても遠いと思っていますが、必要な時には学ぼうと思っています。
katoy

2018/08/18 22:46

> ... 必要な時には学ぼう ... とても重要です。 この気持ちがあり実践ができれば、これだけで平均よりかなり上にはいけるはず。
oyo

2018/08/19 00:30

ありがとうございます。数学に自信がないのですが、がんばってみます。
guest

0

机上で最善の方法を探す完璧主義だと心折れやすいですね。

プログラミングが楽しければ心は折れないでしょう。楽しくもなく、目的もなければどんな楽な方法を聞いてもいずれ心折れるでしょう。
とりあえずその知人を信じて始めてみて、それで折れたら別のことをすればいいのでは?

その人はソートアルゴリズムの勉強が楽しかったんでしょう。だから勧めたんだと思います。
それがあなたに合うかどうかは、あなたがやらなければわかりません。
なぜやらないうちから別の方法を探すのですか?

投稿2018/08/18 23:12

Zuishin

総合スコア28660

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

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

oyo

2018/08/19 00:28

ありがとうございます。少しみて難しいことから逃げているかもしれません。やってみようと思います。
guest

0

誰でも最初は初心者です!

私は
Progate → dotinstall → 参考書
でした。
様々な参考書があるので、迷いますが
おそらく一番敷居が低いのはProgateです。

このサービスは月額1000円ほどかかってしまいますが、ここで学んだことを使えば
自分で一つのWebサービスを作ることができますよ^^

投稿2018/08/18 13:19

TakeshiOnaga

総合スコア60

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

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

oyo

2018/08/18 14:01

ありがとうございます。Progateを使ってみようと思います。
guest

0

過去に何度かプログラムの独学を挫折している

とのことで、どのような学習法で挑戦したのか、またどの程度の初学者であるかはわからないのですが、
Java以外ほぼ未経験の私が多言語の学習をした際に参考にしたサイトを以下に記載します。

ドットインストール
・動画を見ながら学習できる初心者向けプログラミング学習サイト

その他にも
ProgateProgra!CODEPREP
等探せば色々な学習サイトがあります。

ある程度理解ができてきたらPaizaラーニングのプログラミングスキルチェック問題
自分の実力を確認してみるのもいいかも知れません。

プログラミングの習熟には何はなくとも手を動かすこと
これが一番だと思うので、とりあえずは何かしらやってみることから始めるのが良いと思います。

投稿2018/08/18 08:30

madoka9393

総合スコア992

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

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

oyo

2018/08/18 09:12

回答ありがとうございます!教えていただいたサイトではドットインストールのみ利用したことがあるのですが、他も色々みて練習してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問