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

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

ただいまの
回答率

87.48%

プログラミングってどうやって勉強していますか??

受付中

回答 12

投稿

  • 評価
  • クリップ 14
  • VIEW 6,869

score 585

最近、プログラミングが上達していないような気がしていて困っています。

プログラミングの勉強の仕方なのですが、皆さんはどうやっていますか??

・本をたくさん買ってひたすらプログラムを作りまくる。
・本を絞って数学や物理の勉強のように繰り返す。
・ノートに写す(書いて覚える)

が、なんとなく思いつきますが・・・

困っているのがC言語とかで関数の使い方を忘れてしまうんですよね。
関数の数が多いと覚えきれません、パラメータが多い関数とかはすぐに忘れてしまいます。

こんなプログラムを作りたいのに何の関数を使うんだっけ??」ってことが良くあります。
ネットワークプログラミングだと関数を使う順序を忘れることが多いですね。
C++だとcoutの使い方を忘れて、調べるのがめんどくさいからprintfでいいやぁ~~ みたいなことがよくあります。

1人で勉強してきたので他の人がどのようにして勉強しているか全く分かりません。

「自分はこんな風に勉強してきた!」というのがあったら教えてください。

ちなみに、自分は最初の頃はノートにひたすら書いて覚えていました。(写経みたいな感じですね。)
最近は本を買ってきて、ひたすら作っています。(次の日には忘れてしまいますね。)

是非教えてください!!

プログラミング初心者が絶対やっちゃいけない5つの勉強方法

実際には仕事の現場でもプログラマも検索しながら記述をしています。

え?そうなんですか? プロだと、パパーーンと作れるものだと思っていました。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 12

+13

「プログラミング初心者が絶対やっちゃいけない5つの勉強方法」
の内容に沿って回答して見ます。

1 いきなり書籍で学習すること

初めは本を買ってやりました。ざーと本の内容に沿って、基本的な記述と、データベースのつなぎ方とかを中心にやっていました。

2 いきなり難易度の高い言語を学習すること

HTMLがもともとかけるがけの知識はありましたので、PHP部分、MySQLの内容をやっていましたね。

3 プログラミングを暗記しないこと

そもそも暗記なんてしようと思わなかったです。未だによくやるし、意識していることは、「知っている関数」であっても、必ずリファレンスに目を通すようにしています。そうすると、浅い知識がより深まって、新しい発見があったりします。

こんな感じで→ https://qiita.com/ShibuyaKosuke/items/b2667b95be8df9dd8d5b

4 1つの技術を完璧にしてから次の技術を学ぼうとすること

teratail でもこういう人を見かけますが、一体何年かけるつもりだろうかと、疑問に思います。完璧にできる人なら、teratailに頼らなくてもできる人でしょうね。

5 手段を目的にすること

プログラミング言語は、文字どうり「言語」ですから、英語の知識がいくらあっても、英語で話しができない人と同じ。プログラミング言語を使ってソフトウェアを作ることが目的のはず。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/31 23:06

    「そもそも暗記なんてしようと思わなかったです。」
    勝手に覚えていった感じですかね?

    キャンセル

  • 2017/10/31 23:07 編集

    よく使うものは自然と覚えるし、あまり出番のないものは忘れる。

    キャンセル

  • 2017/10/31 23:11

    また、複数言語を扱うようになると、「あれ?VBのIF文ってどうだったけ?」みたいなことすらありますからね。リファレンスを見ないで書くなんて、そこを目標にしたってしょうがない。力を入れるところが違うと思います。

    キャンセル

+11

多くの人が「プログラミング」で「ガチガチに決まったもの」という印象を持ってしまうかと思いますが、個人的には非形式的な感覚も、重要なものだと捉えています。

自転車に乗る時に、テキストで乗り方を教わるわけでもないように、プログラミングも、「作りたい」という状況になれば、その情熱だけでかなりのところへと進んで行けてしまいます。何度か書いていれば基本的な文法は身につくでしょうし、そしてプログラミングやライブラリに関する感覚もついてきます。

どんな言語でも取り組む問題は似ていますし、今時の言語であればRubyGems、npm、Packagist、cabalのようにパッケージリポジトリもありますので、「こんなことをするライブラリが欲しい」となったときに(特に、同様なものが他言語にある場合)、たいていは標準ライブラリかリポジトリに転がっています。

あるとわかれば、探して調べて取り入れることは容易ですので、細かな引数の順番を覚えるよりは、「こんな機能がありそう」という嗅覚を身につけたほうが確実に役立ちます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/01 12:49

    「その情熱だけでかなりのところへと進んで行けてしまいます。」
    確かに。。。必要なのは、情熱ですね。

    キャンセル

+10

昔は動画なんて無かったし、今ほどネットに入門のサイトが溢れてなかったし(当時はとほほぐらいかな・・・てか今でもあるあそこはある意味すごいけど)、書籍ぐらいしか体系的に学べる物が無かったんですがねー。これが時代が変わったと言うことでしょうか…。


さて、関数の使い方を忘れたという話についてです。いやはや、忘れるだけマシです。私の場合、はじめから覚えていないのですから。coutなんてcountと書いて、何でコンパイルが通らないんだと2~3分悩むような人間です。

各言語には膨大な標準関数やクラスが存在します。それに加えて無限とも思えるほどの外部ライブラリがあり、それらにも多くの関数やクラスが存在します。それら全てを覚えることは無理です。だから、初めから覚えません。では、どうするのかというと、どうやったら使い方がわかるかだけを覚えておくのです。ツールでもサイトでも書籍でも何でもいいのですが、ここを見たら使い方がわかるという事だけ覚えます。

なんか、すごいプログラマーは一つの画面でガチャガチャやっているイメージがありますが、昔は大抵、分厚いリファレンス本を脇に置いていたものです。ネットも本もみてないと思っても、IDE内で関数リファレンス等が読めるので、よーく見るとちょくちょくそれらを見ているだけだったりします。ターミナル一つでガチャガチャやっている人も見るかも知れませんが、manが入ってなかったら、その人はたぶん何もできません。みんな調べながらやっているのであり、それが普通であり、全て覚えるなんて無駄なことはしません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/01 12:48

    「どうやったら使い方がわかるかだけを覚えておくのです。」
    関数の使い方を覚えるより最初っから「調べること」に頼るんですね!!
    分かりましたわ。

    キャンセル

+10

かれこれ30年近くはほぼ毎日何かしら趣味か仕事でコンピュータプログラミングをしています。日本と海外とで情報処理に関する学習と研究と仕事と教育の経験があります。現在は海外で大学生や大学院生に教えていますが日本で大学生や社会人にも教えた経験があります。

一言で「プログラミング」と言っても幅広いので、まずは自分が「どの分野」の「どの段階」の学習が必要か(学習をしたいのか)、を知ることが重要かもしれません。

質問から察するに、おそらくC言語をベースとして、「言語の文法」や有名どころの「アルゴリズム」を学習されているのだと、思われます。その段階ですと、独学であるならば、何か一冊体系的にまとまった本を読めば良いと思います。いわゆる「書式」は暗記する必要はなくどこに何が書いてあったかだけ覚えておけば良いかと思います。あ、これなんだっけ、と思った時にさっと調べられるようにしておくことが大事です。googleを使うにしても自分の問題を解決できるキーワード(と概念)を持っていることが重要です。私でも一日に何度も関数(メソッド)のreferenceをgoogleで調べることがあります。

printfかcoutかどちらを使うか、といようなことはプログラミングの本質的なことではないですし、よく使う関数はなんども使っていれば自然と覚えます。逆に言えば、書式などは無理して暗記しなくても自然と出てくるくらいまで、何度でも何度でも使う場面に遭遇するぐらいの経験量が大事ということです。

私が思いますに、プログラミング言語初学者の一番の難関は、アルゴリズムの構築部分、です。文法はわかった、配列や関数や変数の意味もわかった、解くべき問題も知っている、でも自分で考えて問題を解決するためのプログラミングを一から組むことができない、といった状況です。

英語の勉強で例えるなら、外国人の話していることはだいたい理解できるが、自分から言いたいことを話せない、というような状況です。

もしstrikeさんがこの状況であるのだとするなら、ヒントとしては、論理的な思考、ができるかどうかにかかっています。もし大学の講義などで論理学の講義があればぜひ参加して、論理的思考が自然とできる訓練を積んでください。悩みながらいっぱいコードを書け、人のコードを読んで理解しろ、的なことを言われる人も時折いますが、それでは「どう勉強したら良いか」の回答になっていません。

遠回りのようでもこれが、1.問題をプログラミングで解決できる小問題に分割して、2.それをアルゴリズムの形で頭の中で構成して、3.プログラミング言語という形で表現する、ための近道になりますし、将来プログラミング作業を続けていく上で重要な基礎になります。

デバッグの仕方やエディタの使い方、githubの使い方、ライブラリ、フレームワークの使い方などは、確かにプログラミング作業上大事ですが、プログラミングを使った問題解決のための本質的な部分ではないと私は考えています。

プログラミング言語によって、その背景となる哲学や数学的基礎、パラダイムなどが異なりますが、C言語のような「手続き型言語」と呼ばれる言語をベースに学び始めるのが良いかと私は思います(賛否はあるかもしれませんが)。

もし、効率よく学びたい、というのであれば、一度は体系的にプログラミング言語の講義を受けるのが早いですし、そのあとではプログラミング上級者と一緒に作業することができればスキルアップが加速されます。いずれにしましても、毎日何かプログラミングしていたいと思えるくらいプログラミングが好きであれば自然と上達すると思います。

とりとめなくなりましたが、何かのご参考になれば幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/03 23:39

    ふと思ったのですが、定番コードを覚えてしまうのが最強かもしれません。
    部品を組み合わせて作っていくので、その部品のストックを多く持っていればある程度のものを作れるようになるかもしれないですね。

    キャンセル

  • 2017/12/04 02:47

    少なくとも私が素晴らしいと思える点が2点あります。

    一つ目は、「ふと」そのことに気がつかれたこと。
    二つ目は、早速自分の得た思考の部品を活用して、新しいアイデア(思考の部品)を作り出されたこと。

    です。

    最初に「論理的思考」が大事、と申しましたが、この(思考の)部品を選び出す、思いつく、気がつく、ひらめく、というような作業は実は論理的思考(演繹的推論)だけではできないことでいわゆる(現在の)AIには難しく私たち人間が得意とする思考方法です。いわゆるAIの難問と言われるフレーム問題にも関連しています。「ふと」思いつく場合、全く別の経験をしていることがよくありますが、たいていはその問題を一度はじっくり考えた上で何か別の経験がトリガーになるということが少なくありません。事実かどうかは定かではありませんが、アイザックニュートンがリンゴが落ちるのを見て、「上から下に落ちた」のではなく「リンゴと地球が引き合った」と「ハッと思いついた」のはそれ以前に引き合う力(引力)について考えた経験があったからだと私は信じています。きっとstrikeさんもプログラミングをどう勉強するのが良いのかじっくり考えた経験があったからこそ、「ふと」思いつかれたのだと、推測しています。

    おっしゃることに異論はありませんが、もう少しアイデアを掘り下げるお手伝いをしてみましょうか。

    多々ある思考の部品の中から使えそうなものを選び出す(思いつく)ためには、もちろん部品ストックが多いに越したことはありませんが、単にストックが多いだけではダメで、その部品を何通りもの仕方で使った経験(記憶)が大事になります。どなたかがアウトプットが大事と回答されていましたが知識として得た部品を使うことで本当の意味で自分の知識とすることができます。自転車の乗り方は教わった、でも普通はそれだけでは自転車を乗りこなせません。本当に乗りこなすためにはなんどもなんども乗ってみる(使ってみる)ことが大事だと私は思います。

    次に、プログラミングに関わる「部品」ですが、部品はいろいろなまとまりで見ることができます。なんどもなんども使うようなコードはC言語であれば「関数」として用意しておき、これが「部品」として使えますし、みんながよく使う関数(群)は通常ライブラリとして言語処理系にくっついて配布されます。C言語で言えばincludeするstdioとかstdlibとかいうあれ、です。オブジェクト指向言語であればクラスライブラリがいっぱい出回っていることでしょう。これらも部品として活用できます。さらにあるライブラリ群+プログラミングお作法をセットにすると、フレームワーク、という名の部品になります。Ruby on Railsというのは(大雑把に言えば)たくさんのRubyライブラリとその使い方のセットのことでで、その使い方に従うと、パパッとWebアプリケーションが作れてしまう道具、といった具合です。

    世の中もちろん「定番」などそもそも存在しない問題も山ほどありますからその場合はそれまで得た知識を総動員して、問題解決のコード(アルゴリズム)を組み上げていくことになるでしょう。そこでも、問題を理解して、分解して、論理的に考えて部品を組み上げていくこと時にはもちろんそれまで使ってきた部品が役に立ちます。もしかしたらその時には、別の経験から得た思考の部品がトリガーになって「ふと」いいアイデアが思いつくかもしれませんので、プログラミングに限らず、日本に限らず、いろいろな世界で、いろいろな分野で多くの経験をされることは後々の人生で非常に大事になってくると私は思います。

    ご参考になれば幸いです。

    キャンセル

  • 2017/12/04 14:56

    fmfm
    なるほど

    キャンセル

+7

こんにちは。

私自身は「プログラムを作りまくる。」でした。本は多少は買いましたけどたくさんは買ってないです。基本だけ読んだら(読んだだけではちんぷんかんぷんでした。)後はひたすら作りまくった感じです。当然、なかなかうまくいかないです。でもあの頃は若かったので根性が続きました。

困っているのがC言語とかで関数の使い方を忘れてしまうんですよね。
(後略)

力いっぱい「あるある」です。最初はcout <<だっけ? cout >>だっけ?のような時さえありました。coutを使い始めたのはここ3年ほどですが...間抜けですよね。
流石に散々使ったので今はcoutでこれはないですが、頻繁に使わない関数ではいつものことです。cerrだっけcerrsだっけみたいなことは今もあります。

ですので、リファレンスを見ずにコンパイルを通せることの方が少ないです。たぶん永遠にこのままです。言語はどんどん進化するけど、記憶は必ず忘却しますから。むしろ、うろ覚えな記憶に頼るプログラミングは逆に怖いかも。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/01 12:59

    みなさん、意外と同じような問題を抱えてますね。

    キャンセル

+6

私がある程度プログラミングに慣れてきたな、と思ったのはブログを自分で作成し、作ったものやちょっとしたコードをアウトプットするように心がけてからです。
(もしかしたら、これはコップの水が溢れるという例えで有名なアレかもしれません。成長する時期がたまたま重なっただけだったかもしれない)
私が思うに、これは大まかに2つに分けられると感じました。

1.自分で常に使うもの(例えばブログ)を自分で作成したこと
大きなプログラムでも、初めはシンプルなものだったりします。繰り返し改良し、機能を加えていくことで巨大化させることができますし、その経過というものは有意義だったように思います。
また、自分が常日頃使うものですから、必然的にプログラムに触れる時間が増えます。
愛着も湧きますし、楽しいというのも大きい理由ですね。

2.学んだ知識をアウトプットすること
アウトプット自体も良い習慣だと思いますが、一番良いと感じたのは過去に作成したコードを再利用できることです。
大きめなプログラムはGithubに上げてますが、Githubに上げるコードの多くはブログにも小さい粒度に分けて書き直しています。
メモやブログといったものへのアウトプットは1行1行解説するということも簡単ですし、それらをタグやカテゴリー分けし後から見直すことも容易な為、Githubに上げたコードよりも自分のブログのコードを参考にすることが私は多いです。
自分で書いた説明ですから、やっぱり自分で読んでてすぐわかります。

私のブログはそんなにアクセスがないですが、場合によっては詳しい方が突っ込んでくれることもあるでしょう。アドセンス広告なんかを貼ってから、内容を推敲する癖も少しつきました。金になればやっぱ嬉しいですからね。


上の2つは良い効果があったように思いますが、私が個人的に行っていることもいくつかあります。
ただ、他のエンジニアの方を見る限り推奨されないと思うので、参考にはしない方が良いかもしれません。
アンチパターンや、何かの参考になればいいのですが...

1.書籍を繰り返しよく読み、あまり写経はしない
私が書籍を読むときは写経はあまりせず、できる限り頭の中でコードを理解しようとします。
これは書かなきゃ理解できないなと思ったら流石に写経するのですが、それでも1回2回写経したら後は読むだけです。読んでてこれはあれに使ってみようとかあれば、早速使ってみます。
その後も定期的に読んでいますが、その際は割と息抜きがてらです。コード書きつかれたなーという時など
元々向こうの書籍なんかは、ジョークもあって結構楽しいです。

2.言語はできるだけ1つに絞る
これは仕事の都合もあるので難しいとは思いますが、私はできるだけ一つの言語に習熟してから他の言語を学ぶようにしたい派です。
いくつもの言語を学ぶことで様々な考え方を吸収できる一方で、その言語特有の設計思想やベストプラクティクスが存在するのも事実です。少なくとも、それらがある程度身につくまでは他の言語を深くはやらないようにしています。
ただ、先程書いたように仕事上の都合もありますし、他の方を見るにこの考えは間違っているかもしれません

3.目的がプログラミング
私はプログラミングそのものが目的です。綺麗だと思えるコードを書いたりそれを説明してる時が単純に好きです。
何かを作るのは当然楽しいですし、興味のないモノは作る気がしません。ただ、プログラミングをそもそもしたいので多少興味があればそれを作るというスタンスです。
この考えは他の方を見る限り、間違っているような気がします。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/01 12:51

    「言語はできるだけ1つに絞る」
    これは分かります。
    あまり多くの言語に手を出したくないというのはありますね。

    キャンセル

  • 2017/11/04 00:05

    全く以て同感です。

    キャンセル

+4

的外れな回答ではありますが、これまで学んできたことに基づいて、分かるor興味のある範囲でteratailなどで回答してみることがよい勉強になります。
自分がどれだけ学べたのか、理解できたのかを確かめるには、誰かにそれを説明してみるのがよいです。
それでうまく説明できないことは理解できていないのですから、それを勉強すればよいです。

では、どのような勉強をすればよいの?という疑問については他の方の回答を参考にしてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+4

C言語とかで関数の使い方を忘れてしまうんですよね
関数の数が多いと覚えきれません
パラメータが多い関数とかはすぐに忘れてしまいます
関数を使う順序を忘れることが多いですね

回答時点で一ヶ月前の質問ですし、本題とは別角度の回答ですが、
おそらく盲点になっているので、「忘却」をテーマに回答してみます。


今回のテーマに合わせてあえて強調して言えば、
オブジェクト指向は、忘れても組める手法です。
たとえば、ご質問に対しては、以下のような対策があります。

  • 関数の数が多い → クラスにまとめる
  • パラメータが多い関数 → 状態を内部に持ち、引数を減らす
  • 関数を使う順序を忘れる → ファサードやアダプターパターン

「なぜ、OOPでわざわざ複雑に組むんだろう」と思うかもしれませんが、
多少書くときに冗長になっても、後で忘れても変更しやすいからです。
逆に、手続き的に書くと、作りやすいが変えにくい

たとえば、newしてもいいものを、わざわざファクトリを使ったりするのは、
初期化の手順を忘れてもいいようにするわけです。
あるいは、アダプターでラップするのは、APIを忘れてもいいからです。

そういうオブジェクトに覚えさせるという発想があると、
長期間に渡って変更し続けるような開発や保守の負担が減ります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/02 13:01

    なるほど!!
    オブジェクト指向すごいですね!!

    参考になります。

    キャンセル

+2

勉強自体は、独学と職場でのOJT。

大抵やりたいロジックが先にあって、書籍を見たり、ググったりして標準関数等がないか探す。

この業界に入った時、プログラムを作る事より大切な事として、上司や先輩に言われた事。

●書籍ではなく他人が作ったプログラムをいっぱい見る事。
※いっぱい見るうちに、綺麗なプログラムなのか、汚いプログラムなのか分かるようになる。

●誰が見ても美しいプログラムを目指す事。

●他人が理解出来るくらいに可読性があり、適切なコメントがある事。

●コーディング規約に遵守している事。
※標準コーディング規約以外に、そのプロジェクトでのコーディング規約がある為、絶対に遵守する。ただ読みやすいプログラムを作るのみならず、処理速度やバグを減らす為に考えられて作られている規約なので、遵守する事。

●共通関数が用意されているのであれば極力共通関数を使用する事。

●セキュリティについて常に意識する事。
※一般的にはSQLインジェクションや、クロスサイトスクリプティングなど。

●変数名や関数名は、コーディング規約に遵守する。
コーディング規約なき場合は、命名規約を自ら熟考し設計した上で命名する。
抽象的な変数名や関数名は、バグの元になるので、具体的な変数名とする事。

●コーディング規約に準拠となるが、省略形態を使用しない。バグの元になり、また可読性が低くなる。
※例えば、IF文のBoolean型判定でtrueの省略など。

●コーディング規約なき場合は、自らコーディング規約を作成する事。


ちなみに上達という事であれば、先に書いた通り、
兎に角、書籍ではなく他人の書いたコードに触れる事。

また、身近な誰かの為に作成する事で上達します。
自分の為でも結構です。

ちなみに趣味で所属していた団体の為に作成したPHPで作成したプログラムは団体を去った後でも使用されているそうです。
そもそも仕事で使わないPHPの勉強がしたかった為、画面設計書いて、こんなのなら作れると思うよと団体のスタッフに提案して、PHP単体ベースのプログラムと、PHP+MySQLベースの2本プログラムを作成しました。

例えば、家族の為に、友人の為に、こんな事が出来ないかな?と言われた時に、作ってみると面白いかもしれませんね。

覚える事が目的ではなく、作って誰かに使ってもらう若しくは自分自身で使う事が目的なので、関数を覚えて損はないけれど果たしてそれだけの関数を使いこなせるのか?って事です。
一般的なプログラムであれば、別段覚えていなくても、基本構文さえ分かっていれば特殊なロジック部分は調べれば済む話なので、特に覚えていません。

色んな言語で開発するのに、いちいち覚えてられませんよ笑

頭の中の設計がその言語で実現出来れば良い訳で、「実際には仕事の現場でもプログラマも検索しながら記述をしています。」は事実ですね。
基本構文は、どのプログラム言語も同じなので、どちらかと言うと思想や設計が重要かと思います。

一つの言語である程度作成出来るのであれば、後はググる笑
これに限ります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

とにかくたくさん作ることですね。
最初は書籍を買ってましたが、情報が古くなってしまうので今はネット頼みです。
以下、勉強という程でもないですがよくやっていることです。

■ 技術系ブログやTwitter巡回
全く知らなかった情報を得る為に使用しています。
そこから気になったことは検索したり。実際に使わないことも多いですが刺激になります。

■ プログラミング中に予測変換で出て来たメソッドを調べる
Unity(Monodevelop)でよくやります。
例えば「何かのコンポーネント.get」と入力して出て来た予測変換(候補メソッド)を眺めて、目的に沿ったものや関連するメソッドに当たりを付けてみたりとか。
普通にリファレンス眺めることもありますが、「確かあったと思うけど、何だっけ?」という時はこちらの方が早いです。
一緒に引数の説明も出て来るので「何を渡せばいいんだっけ?」というケースはあまり無いです。
出て来ないツール(言語)の場合はひたすらリファレンスを検索しまくりです。

■ ググる
「Unity 並べ替え 配列」とか未だに何回も検索してます。
ふわっとした単語でもGoogle先生が意図を汲んでくれるので大抵はこれで何とかなります。

■ teratailの質問に回答する
自分じゃ使わなかったり、そこまで深く見ていなかったプログラムの挙動を調べたりと結構知識は深まるなぁと。
「問題を起こしている部分を予測する」「他人への教え方を学ぶ」という意味でも面白いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

*私が使っているのはJavaなのでどこまで同じかわかりませんが私はこうやっています。
*参考にしていただければ嬉しいです。

私はノートに書くのは辛いのでパソコンのメモ帳にあらかじめ使いそうなプログラムを片っ端から入力して保存します。「保存した時の名前はどんなプログラムか書いて下さい」
これで使う時にパソコンのメモ帳を開いてコピーしてペーストです。
こうすれば全て覚えなくてもOKです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/02 13:00

    win32 APIを使っていた時は、メモ帳ではありませんが、以前作ったプログラムをコピー&ペーストしていました。

    確かに、覚えなくてもそこそこのものは作れていました。

    キャンセル

  • 2017/12/02 13:06

    頑張ってください!

    キャンセル

0

横から失礼します
質問者様と同じことで悩んでおり大変参考になります。
ありがとうございます。

写経に関してなのですが…

自分はRubyとRuby on Railsを勉強していてオープンソースのデータをgithubからダウンロードして写経しようと思っているのですが、Ruby on Railsの場合ファイルが複数個所にあって連動しあっているからどこをどう写経すれば良いか分からないくないでしょうか?

routesを読んでそれに関連したcontrollerファイル、viewファイルを読み込んでいけば良いという事なのでしょうか?

ダウンロードしたデータをローカルサーバーで立ち上げて動きを一つ一つ追いながら関連しているコードを探し出して追っていけばよいのでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/02/02 19:02

    回答欄あるいは自己解決欄なので、質問目的で使うのは本来の役割に反するかと。
    新たに立て直した方が良いと思いますよ。

    キャンセル

  • 2018/02/02 19:05

    LouiS0616さんのおっしゃる通りだとおもいます。
    ruby関係の質問を新しく立てると良いでしょう!

    キャンセル

  • 2018/02/02 19:11

    了解いたしました。
    申し訳ございません。

    キャンセル

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

  • ただいまの回答率 87.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る