- ベストアンサー
プログラミングのコツを教えてください
閲覧ありがとうございます。 私は今未経験でプログラミングの研修をしているのですが、わからない所だらけで調べて(大体解決しません...)人に質問してばかりです。 しかし、私と同じように未経験なのに進捗がすごく進んでいる方もいます(私よりも後に入ったのに...( ;´Д`))。 そこで質問です。プログラミングのできる方は、作業の際にどのような事をしているのでしょうか?私のような素人にプログラミングのコツを教えていただきたいです。回答よろしくお願いします。
- みんなの回答 (18)
- 専門家の回答
質問者が選んだベストアンサー
おそろしく、個人差があるので、隣の人と自分を比較しない方が良いですよ。 良く、数学的な素養とかいう表現がありますが、論理的に手順を分解できるかどうか言う訓練がちゃんと出来ているかどうかで全然違ってきますから。 プログラミングのコツなんて、即効薬はなかなかないもので、地道に思考能力を鍛えていくしか無いです。 さて、研修の内容をそのまま家に帰ってまでやっても面白くないでしょう。人は、面白いと思えないと、のめり込めませんから、 折角、書店でいろんな本を眺めているなら、研修の内容なんかお構いなしで、自分が面白いと感じる本を買って読んでみるのも一つの手です。出来れば、ちゃんとコンピュータに実際に入れて実行して見ること。さらに、その後で、少しでも良いから、「ここをこうしたらどうなるだろう?」という所を見つけて実際にやってみることです。 後は、そうですね。もし、書店にSBクリエイティブ刊行の数学ガール(結城 浩著)が見つけられるようなら、のんびりと読んでみると、頭の体操になります。このシリーズの内容の幹の部分の考え方は、まさに、今あなたが必要としてることだと思います。
その他の回答 (17)
お世辞にも私は有能とは言えませんが、まがいなりにでもとりあえず通用してきた(と思いたい)立場として思い返してみました。 特に意識してきたことではないのですが、今考えるとたぶん下記のようなことを実践してきたのかなぁと思います。 1.分からないところが分からないと言った事態になっていないか?つまり、何が分からないのかを分かっているか。 2.プログラミングは手段であり目的ではない。目的になってしまっていないか。 3.ロジックに正解は無い。他人の力量、ロジックを批判したり、馬鹿にする人間が言うことは一番参考にしてはいけない。 1が土台、2,3が知識、技術の向上を目的としています。 特に1が重要で、どうしてこうなるのか?ではなく、どこが分からないのか?さらに、なぜ、わからないのか?を意識すると同じコードでもちょっと感じ方が変わります。 2,3はちょっと長くなるので割愛。 というか3に関してはちょっと微妙かもしれません。理由はあるのですが、長くなるのと、本当に実践してきたか?と問われるとう~ん???となるようなならないような。 文章力が無くて、正直なところ、本回答は自分で読んでも伝わり難いだろうなぁというのは重々承知しておりますが、私も未経験でやってきた手前ちょっと書いてみました。
お礼
回答ありがとうございます!(*´ω`)
- amanojaku1
- ベストアンサー率54% (265/488)
> 数学的な知識は たまに大学生レベルも必要になりますが 大学生レベルと言っても基本は「微分、積分、行列」ぐらいなモノで、ものすごく高等な数学と言うほどではありません。 (ネットで検索すれば良いので)それらを熟知している必要はありませんが、「こう言う場合には行列を使えば良い」みたいな大まかな知識は必要でしょうが。 例えば Java でプログラムを組むにしても、Java を熟知している必要はありません、ネットで検索すれば おkです(僕などコマンドのスペルとか言語仕様とか分からないコマンドとか しょっちゅうネットで検索してばかりです・笑、それでもプログラムは組めます)。
お礼
回答ありがとうございます!
- amanojaku1
- ベストアンサー率54% (265/488)
> (確実に固定された書式になっている部分は そのままファイルのデータ構造をプログラムに持ち込んでも良いですが)ファイルのデータ構造をプログラムに持ち込まないようにしましょう。 > ファイルのデータ構造をプログラムに持ち込むと、ファイルのデータ構造が変更されたら、プログラムを大幅に変更する必要が出てくるでしょう。 > 入力用にデータ構造・展開用サブルーチンを作りデータを分解し、出力用にデータ構造化サブルーチンを作りデータをファイル用に構造化してやる。 > ファイルのデータ構造が変更されたら「データ構造・展開用サブルーチン」、「データ構造化サブルーチン」を修正し、データが増えたのなら増えた分のプログラムを追加・修正してやれば良い訳です。 これは Java とかの高級言語の話ではなく、Perl のようなスクリプトの話です。 Perl などでは、ついついファイルのデータ構造をプログラムに持ち込んでプログラミングしてしまいがちになります。
お礼
回答ありがとうございます!
- amanojaku1
- ベストアンサー率54% (265/488)
これは誰も教えてくれない事かもしれませんが (確実に固定された書式になっている部分は そのままファイルのデータ構造をプログラムに持ち込んでも良いですが)ファイルのデータ構造をプログラムに持ち込まないようにしましょう。 ファイルのデータ構造をプログラムに持ち込むと、ファイルのデータ構造が変更されたら、プログラムを大幅に変更する必要が出てくるでしょう。 入力用にデータ構造・展開用サブルーチンを作りデータを分解し、出力用にデータ構造化サブルーチンを作りデータをファイル用に構造化してやる。 ファイルのデータ構造が変更されたら「データ構造・展開用サブルーチン」、「データ構造化サブルーチン」を修正し、データが増えたのなら増えた分のプログラムを追加・修正してやれば良い訳です。
お礼
回答ありがとうございます!
- amanojaku1
- ベストアンサー率54% (265/488)
他人に分かる様にコメント書けと言うのは嘘です、その他人とは どのレベルのプログラマーでしょうか?、初心者でしょうか、中級でしょうか、中級でも どのレべルでしょうか、曖昧で全く基準がありません。 コメントは10年後、20年後の自分が分かる様に書きましょう(余程 記憶の良い人は別として10年後、20年後に自分の書いたコメントを読んだら まるで他人が書いたように見えるでしょう、それでも分かるように書くようにしましょう)。 コメントは自分が必要だと思った所に書きましょう、なんでも かんでもコメントを書く必要はありません。 プログラムは構造化しましょう、スパッゲッティー・プログラムだとバグも発生しやすいですし、デバッグも困難になりがちです。 (僕は人のプログラムは全然読めない方ですが)ある時、掲示板のプログラムを見ていて最初 全然 意味が分からなかったのですが、しばらく眺めていて、物凄く酷いスパッゲッティー・プログラムだと分かり、これを作ったヤツは全然プログラミング・センスないな~とか思ったりしましたが、その物凄く酷いスパッゲッティー・プログラムでチャント動いていると言うのは ある意味 天才かもしれません(教訓:天才は別としてプログラムは構造化しましょう・笑)。 > プログラミングのできる方は、作業の際にどのような事をしているのでしょうか?私のような素人にプログラミングのコツを教えていただきたいです。 (天才は別として)プログラムを構造化してイメージしましょう。 細かい部分は実際の動作(1回目のループは「1」、2回目のループは「3」のようなモノ)から、その規則性、法則性のようなモノを抽出してプログラミング化する。 例えば「カレンダーの表示」には割り算の余を利用するとかですが、「カレンダーの表示」ぐらいなら「if文」でも対応できますが、延々と長いデータだと「if文」では対応できなくなります、(規則性、法則性のようなモノが無い場合は力技(「if文、配列」など)でヤルしか無いですが)やはり実際の動作から規則性、法則性のようなモノを抽出する能力は必要になると思います(数学的な知識は たまに大学生レベルも必要になりますが、通常は中高校生レベルで 全然 おkです)。 (これは誰も教えてくれない事かもしれませんが)ある程度 大きなプログラムは動かしながら作れと言うのは鉄則です。 僕が まだプログラミングの初心者だった頃、それを知らずに(プログラミング初心者としては)結構 大きなプログラム作ったのですが、延々と動かないプログラムを打ち込み、一応プログラムの打ち込みが完了しても、当然バグがあって動かないので延々と動かないプログラムをデバッグすると言うのは非常に辛く精神衛生上 非常に悪いです。 ですので本来のプログラムとは別に、プログラムを動かすデバッグ用のルーチンを作り、最初は動かすのに必要 最低限のプログラムを作成してやれば良いでしょう(効率が悪いように思うかもしれませんが、その方が精神衛生上 全然 良いです)。 > 今取り組んでいる箇所と関係のない部分についての読書はしていません(´・ω・`) 個人的には必要になった時に必要なモノを勉強するで良いと思います。 > プログラムの勉強 「プログラムの勉強」と言っても本を読む事ではありません、もちろん本を読んでも良いのですが、大工になりたい人が本ばかり読んでいても技術が上達しないのと同様に、プログラマーはプログラムを組まなければ上達しません。 プログラミングの研修以外に、自分の作りたいプログラムを作って見ましょう(これこそ正にプログラミングの勉強です)、ただし自分の作りたいプログラムに熱中しすぎると学校の成績が下がるかもしれません(プログラマーなら学校の成績がナンボのもんじゃい、と言うぐらいの気概は必要です・笑)。 要件としては自分のモチベーションが上がるモノ、プログラムの難易度のハードルは低く設定する事(高く設定してしまうと完成できない危険性があります)。 自分のモチベーションが上がるモノと言う要件なら、Android Java は どうでしょうか?(ハードルは結構 高いかもしれませんが…) Android 端末さえあれば自分の作ったプログラムを人に見せびらかせられるのでモチベーションが上がるんじゃないでしょうか? ただし、みんなが普段 使ってるような「アプリ、ゲーム」などと比べて雲泥の差でショボイので、あまり良い反応は得られない場合が多々あるかもしれませんけど…。 Android プログラミングの基本の基本 http://8242.teacup.com/bremen1/bbs/8 下記は僕が作ったテトリスです。 ちなみに「Tetris(R)」は登録商標「(R)」になっているようなので、名前は「Tetraz」としています。 Android Tetraz 017 http://ashtarte.hotcom-web.com/utf8/smt.cgi?r+sara/&bid+00000002&tsn+00000002&bts+2016/03/04%2022%3A39%3A06&
お礼
回答ありがとうございます!
- Caryo_t
- ベストアンサー率45% (112/246)
プログラミングのコツはね、楽しむことだと思います。 自分が思った動作がうまくいったとき、少し嬉しくないですか? もしかすると「研修」がきっかけなので面白いと感じる経験が少なくて、 「できない!どうしよぉ;><」ばっかり思い出しちゃうかもしれませんが、 できたときの喜びは、できないというプロセスが無いと味わえないものです。 キレイゴト と思うかもしれませんが、私はそう信じています。 というわけで、ちょっと以下をやってみてください。 https://studio.code.org/s/frozen ↑丸1から始めてみましょ。 これができたら、そして少し楽しかったら「素質」は十分です。 当然「論理的思考」もできています。安心してください。 あと、もう一つコツを。 それは、いまやったwebページと同じようにしてみることです。 いまやったwebページでは、簡単なことから少しずつ進みましたよね? 中には「当たり前だよっ!」って思ったこともあったかもしれません。 でも、その当たり前を確認してみるんです。 「ここまでは動くはず」というコードを書いて、それを変形させる。 そして少しずつ目標の動きに近づけていきます。 最初にできる「当たり前」は基本的なことしかないかもしれませんが、 慣れてくると「当たり前」がわりと高度なところからスタートするようになります。 そのころ、今では考えられないぐらいプログラムが得意になっていますよ。 余談ですが、ずっとプログラムをやっている人なら、「とりあえず書いたコード」が すんなり動いちゃったら逆に不安になるものです(少なくとも私はそうです)。 バグが出たとき、「よし。そうこなくっちゃ。じゃぁどこだ?どこがバグなんだ?」 と、パズルを解くように自分のコードを眺めたり動作確認をしたりする。 それが無上の喜びになるというマゾっ気も、プログラムの素質かもしれません。 だから、プログラムを楽しむようにしてみてください。 特に、うまくいかないことを楽しむ。 上手くなっちゃったら楽しめない、今だけの楽しみもあるんです。 Hello world! 願わくば楽しい世界にいらっしゃいませ。
お礼
回答ありがとうございます! うまくいかないことを楽しむ領域で..すか...(´・ω・`)うぅ
- catpow
- ベストアンサー率24% (620/2527)
>>しかし、私と同じように未経験なのに進捗がすごく進んでいる方もいます プログラミングは論理的な思考能力・抽象化能力が必要で、それは人によって大きな差があるといいます。 ですので、あなたより後に入った方でも、プログラミングの適正がある方なら、貴方の10倍、100倍も早くできるようになっても不思議ではありません。 >>私のような素人にプログラミングのコツを教えていただきたいです。回答よろしくお願いします。 自転車に乗るとか、鉄棒の逆上がりのコツってありますよね?あるいは、大工さんが材木にカンナを上手くかけるコツを教えてくれるかもしれません。 でも、それを聞いただけで、自転車に乗れない人がすぐに乗れるようになるでしょうか? あるいは、逆上がりができるようになるでしょうか? 木材を、カンナできれいな平面に仕上げられるでしょうか? それを聞いても、たぶん、すぐにできるようにならず、地道な努力、練習を続けないと、できるようにならないでしょう。 ちなみに、私もプログラマやっています。同じように仕事を始めたころは、なかなかプログラミングできませんでしたね。 書店で、プログラミング関連の専門書や雑誌を何冊も買って読んだり、IBMから文法書を買ったりして、深夜や休日に読んだり、自宅のパソコン(当時はマイコンと言った)を使って、夜遅くまでプログラムの勉強をしたものです。 そういうことを半年くらいやって、やっと「ちょっとプログラムが書けるかな?」と思えるようになったものです。 学生時代の受験勉強のように、毎日、夜遅くまで勉強、休日も1日中、プログラムの勉強って感じでがんばってれば、そのうちできるようになりますよ。たぶん。
お礼
回答ありがとうございます! 今取り組んでいる箇所に関係のあるページはないかと、仕事帰りに本屋さんに寄ってプログラミングの本の目次を読んでいます。 しかし、休日に、今取り組んでいる箇所と関係のない部分についての読書はしていません(´・ω・`) なので、今後、休日も読書していこうと思います(`・ω・´)
- 1
- 2
お礼
回答ありがとうございます! 本を買ってコンピュータに入れて実験してみますね(`・ω・´)数学ガールも読んでみます 回答ありがとうございます!