• ベストアンサー

プログラミングのコツを教えてください

閲覧ありがとうございます。 私は今未経験でプログラミングの研修をしているのですが、わからない所だらけで調べて(大体解決しません...)人に質問してばかりです。 しかし、私と同じように未経験なのに進捗がすごく進んでいる方もいます(私よりも後に入ったのに...( ;´Д`))。 そこで質問です。プログラミングのできる方は、作業の際にどのような事をしているのでしょうか?私のような素人にプログラミングのコツを教えていただきたいです。回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.3

 おそろしく、個人差があるので、隣の人と自分を比較しない方が良いですよ。  良く、数学的な素養とかいう表現がありますが、論理的に手順を分解できるかどうか言う訓練がちゃんと出来ているかどうかで全然違ってきますから。  プログラミングのコツなんて、即効薬はなかなかないもので、地道に思考能力を鍛えていくしか無いです。  さて、研修の内容をそのまま家に帰ってまでやっても面白くないでしょう。人は、面白いと思えないと、のめり込めませんから、  折角、書店でいろんな本を眺めているなら、研修の内容なんかお構いなしで、自分が面白いと感じる本を買って読んでみるのも一つの手です。出来れば、ちゃんとコンピュータに実際に入れて実行して見ること。さらに、その後で、少しでも良いから、「ここをこうしたらどうなるだろう?」という所を見つけて実際にやってみることです。  後は、そうですね。もし、書店にSBクリエイティブ刊行の数学ガール(結城 浩著)が見つけられるようなら、のんびりと読んでみると、頭の体操になります。このシリーズの内容の幹の部分の考え方は、まさに、今あなたが必要としてることだと思います。

augmydt
質問者

お礼

回答ありがとうございます! 本を買ってコンピュータに入れて実験してみますね(`・ω・´)数学ガールも読んでみます 回答ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (17)

noname#223464
noname#223464
回答No.8

お世辞にも私は有能とは言えませんが、まがいなりにでもとりあえず通用してきた(と思いたい)立場として思い返してみました。 特に意識してきたことではないのですが、今考えるとたぶん下記のようなことを実践してきたのかなぁと思います。 1.分からないところが分からないと言った事態になっていないか?つまり、何が分からないのかを分かっているか。 2.プログラミングは手段であり目的ではない。目的になってしまっていないか。 3.ロジックに正解は無い。他人の力量、ロジックを批判したり、馬鹿にする人間が言うことは一番参考にしてはいけない。 1が土台、2,3が知識、技術の向上を目的としています。 特に1が重要で、どうしてこうなるのか?ではなく、どこが分からないのか?さらに、なぜ、わからないのか?を意識すると同じコードでもちょっと感じ方が変わります。 2,3はちょっと長くなるので割愛。 というか3に関してはちょっと微妙かもしれません。理由はあるのですが、長くなるのと、本当に実践してきたか?と問われるとう~ん???となるようなならないような。 文章力が無くて、正直なところ、本回答は自分で読んでも伝わり難いだろうなぁというのは重々承知しておりますが、私も未経験でやってきた手前ちょっと書いてみました。

augmydt
質問者

お礼

回答ありがとうございます!(*´ω`)

全文を見る
すると、全ての回答が全文表示されます。
回答No.7

> 数学的な知識は たまに大学生レベルも必要になりますが 大学生レベルと言っても基本は「微分、積分、行列」ぐらいなモノで、ものすごく高等な数学と言うほどではありません。 (ネットで検索すれば良いので)それらを熟知している必要はありませんが、「こう言う場合には行列を使えば良い」みたいな大まかな知識は必要でしょうが。 例えば Java でプログラムを組むにしても、Java を熟知している必要はありません、ネットで検索すれば おkです(僕などコマンドのスペルとか言語仕様とか分からないコマンドとか しょっちゅうネットで検索してばかりです・笑、それでもプログラムは組めます)。

augmydt
質問者

お礼

回答ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
回答No.6

> (確実に固定された書式になっている部分は そのままファイルのデータ構造をプログラムに持ち込んでも良いですが)ファイルのデータ構造をプログラムに持ち込まないようにしましょう。 > ファイルのデータ構造をプログラムに持ち込むと、ファイルのデータ構造が変更されたら、プログラムを大幅に変更する必要が出てくるでしょう。 > 入力用にデータ構造・展開用サブルーチンを作りデータを分解し、出力用にデータ構造化サブルーチンを作りデータをファイル用に構造化してやる。 > ファイルのデータ構造が変更されたら「データ構造・展開用サブルーチン」、「データ構造化サブルーチン」を修正し、データが増えたのなら増えた分のプログラムを追加・修正してやれば良い訳です。 これは Java とかの高級言語の話ではなく、Perl のようなスクリプトの話です。 Perl などでは、ついついファイルのデータ構造をプログラムに持ち込んでプログラミングしてしまいがちになります。

augmydt
質問者

お礼

回答ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
回答No.5

これは誰も教えてくれない事かもしれませんが (確実に固定された書式になっている部分は そのままファイルのデータ構造をプログラムに持ち込んでも良いですが)ファイルのデータ構造をプログラムに持ち込まないようにしましょう。 ファイルのデータ構造をプログラムに持ち込むと、ファイルのデータ構造が変更されたら、プログラムを大幅に変更する必要が出てくるでしょう。 入力用にデータ構造・展開用サブルーチンを作りデータを分解し、出力用にデータ構造化サブルーチンを作りデータをファイル用に構造化してやる。 ファイルのデータ構造が変更されたら「データ構造・展開用サブルーチン」、「データ構造化サブルーチン」を修正し、データが増えたのなら増えた分のプログラムを追加・修正してやれば良い訳です。

augmydt
質問者

お礼

回答ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
回答No.4

他人に分かる様にコメント書けと言うのは嘘です、その他人とは どのレベルのプログラマーでしょうか?、初心者でしょうか、中級でしょうか、中級でも どのレべルでしょうか、曖昧で全く基準がありません。 コメントは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&

augmydt
質問者

お礼

回答ありがとうございます!

全文を見る
すると、全ての回答が全文表示されます。
  • Caryo_t
  • ベストアンサー率45% (112/246)
回答No.2

プログラミングのコツはね、楽しむことだと思います。 自分が思った動作がうまくいったとき、少し嬉しくないですか? もしかすると「研修」がきっかけなので面白いと感じる経験が少なくて、 「できない!どうしよぉ;><」ばっかり思い出しちゃうかもしれませんが、 できたときの喜びは、できないというプロセスが無いと味わえないものです。 キレイゴト と思うかもしれませんが、私はそう信じています。 というわけで、ちょっと以下をやってみてください。 https://studio.code.org/s/frozen ↑丸1から始めてみましょ。 これができたら、そして少し楽しかったら「素質」は十分です。 当然「論理的思考」もできています。安心してください。 あと、もう一つコツを。 それは、いまやったwebページと同じようにしてみることです。 いまやったwebページでは、簡単なことから少しずつ進みましたよね? 中には「当たり前だよっ!」って思ったこともあったかもしれません。 でも、その当たり前を確認してみるんです。 「ここまでは動くはず」というコードを書いて、それを変形させる。 そして少しずつ目標の動きに近づけていきます。 最初にできる「当たり前」は基本的なことしかないかもしれませんが、 慣れてくると「当たり前」がわりと高度なところからスタートするようになります。 そのころ、今では考えられないぐらいプログラムが得意になっていますよ。 余談ですが、ずっとプログラムをやっている人なら、「とりあえず書いたコード」が すんなり動いちゃったら逆に不安になるものです(少なくとも私はそうです)。 バグが出たとき、「よし。そうこなくっちゃ。じゃぁどこだ?どこがバグなんだ?」 と、パズルを解くように自分のコードを眺めたり動作確認をしたりする。 それが無上の喜びになるというマゾっ気も、プログラムの素質かもしれません。 だから、プログラムを楽しむようにしてみてください。 特に、うまくいかないことを楽しむ。 上手くなっちゃったら楽しめない、今だけの楽しみもあるんです。 Hello world! 願わくば楽しい世界にいらっしゃいませ。

augmydt
質問者

お礼

回答ありがとうございます! うまくいかないことを楽しむ領域で..すか...(´・ω・`)うぅ

全文を見る
すると、全ての回答が全文表示されます。
  • catpow
  • ベストアンサー率24% (620/2527)
回答No.1

>>しかし、私と同じように未経験なのに進捗がすごく進んでいる方もいます プログラミングは論理的な思考能力・抽象化能力が必要で、それは人によって大きな差があるといいます。 ですので、あなたより後に入った方でも、プログラミングの適正がある方なら、貴方の10倍、100倍も早くできるようになっても不思議ではありません。 >>私のような素人にプログラミングのコツを教えていただきたいです。回答よろしくお願いします。 自転車に乗るとか、鉄棒の逆上がりのコツってありますよね?あるいは、大工さんが材木にカンナを上手くかけるコツを教えてくれるかもしれません。 でも、それを聞いただけで、自転車に乗れない人がすぐに乗れるようになるでしょうか? あるいは、逆上がりができるようになるでしょうか? 木材を、カンナできれいな平面に仕上げられるでしょうか? それを聞いても、たぶん、すぐにできるようにならず、地道な努力、練習を続けないと、できるようにならないでしょう。 ちなみに、私もプログラマやっています。同じように仕事を始めたころは、なかなかプログラミングできませんでしたね。 書店で、プログラミング関連の専門書や雑誌を何冊も買って読んだり、IBMから文法書を買ったりして、深夜や休日に読んだり、自宅のパソコン(当時はマイコンと言った)を使って、夜遅くまでプログラムの勉強をしたものです。 そういうことを半年くらいやって、やっと「ちょっとプログラムが書けるかな?」と思えるようになったものです。 学生時代の受験勉強のように、毎日、夜遅くまで勉強、休日も1日中、プログラムの勉強って感じでがんばってれば、そのうちできるようになりますよ。たぶん。

augmydt
質問者

お礼

回答ありがとうございます! 今取り組んでいる箇所に関係のあるページはないかと、仕事帰りに本屋さんに寄ってプログラミングの本の目次を読んでいます。 しかし、休日に、今取り組んでいる箇所と関係のない部分についての読書はしていません(´・ω・`) なので、今後、休日も読書していこうと思います(`・ω・´)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 仕事をさせるコツ

    初めまして、ちょっと悩んでることがあるので質問させていただきます 私は現在、人を集めてゲームを制作しようとしています。 みんなで集まってやれる場所がないので、それぞれに仕事を振って週に一度、 進捗報告をさせるというスタンスをとっています。 個々の能力は高くて助かるのですが、チームの一部に漂っている雰囲気が 「進捗報告会までにやればいい」といった感じになってしまっているのではと思うことがあります。 というのも、その日までに定めた進捗はこなしてくれることが多いのですが、 (こなしてこないこともありますが) それ以上のことをしようとしてくれたことはないのです。 進捗報告会で初めて見せるのではなく、何度か見せてもらってその都度手直しして進捗報告会で完成版!とすれば効率も良くなるはずなのですが・・ 現在は 進捗報告会で見せる ↓ ここだけ直してね ↓ 次の進捗報告会で修正版を見せてもらえる あまりかかるように思えない作業でも、このようにこの会議の前にあわててやっているのではないのかと思う節があります。 「提示されたやつはこんな感じで終わったんですが、次の作業でなにかやることはありますか?」 というレベルまでみんなのモチベーションを上昇させるにはどうしたらよいのでしょうか? 参考になるサイトや書籍、指示することのコツでも回答いただければ幸いです。 自分ひとりだけモチベーションが高くて失敗してしまった経験もあるので、 自分のモチベーションに任せてどんどん他人のケツを叩いていくというやり方には少し不安を感じています。

  • プログラマーの方にお聞きしたいことがあります

    閲覧ありがとうございます。プログラマーになっておよそ1ヶ月の者です。 今の現場で進捗通りに作業が進まなくて困っています。 「他の人がコミットしたのを見れば似たような機能あるから大体わかるよ」と言われたのですが、その通りに入力したらエラーが出たりと進捗が進まないのです。 今までは他人のソースを真似しながら、やってきました。しかし、実装が完了して、コードテストの段階で引っかかってしまいます。 ここで、「どうしようか」ということで、二つのことで迷っています。 (1)進捗を改善するためにひたすら他人がコミットしたソースをコピペする。 →進捗は改善するが、長い目で見てそれでプログラミングが身につくか? (2)他人がコミットしたソースを見て「これがどういう事を意味しているのか」理解、or理解できないなら質問して作業をすすめる →進捗が遅れてしまうが、バグが出た際に対応しやすいかもしれない。土台が(1)よりも固まっているので 理想としては(1)と(2)の長所を兼ね備えているのがベストなのですが。。アドバイスをよろしくお願いいたします。 また、同じ現場の先輩方はコピペをしているような速さでコードを書いているので凄いなと思います(´・ω・`)ふえーん

  • プログラマー 進捗

    閲覧ありがとうございます。プログラマーになって1ヶ月の者です。 今の現場で進捗通りにいかなくて困っています。 「他の人がコミットしたのを見れば似たような機能あるから大体わかるよ」と言われたのですが、その通りに入力したらエラーが出たりと進捗が進まないのです。 今までは他人のソースを真似しながら、やってきました。しかし、実装が完了して、コードテストの段階で引っかかってしまいます。 ここで、「どうしようか」ということで、二つのことで迷っています。 (1)進捗を改善するためにひたすら他人がコミットしたソースをコピペする。 →進捗は改善するが、長い目で見てそれでプログラミングが身につくか? (2)他人がコミットしたソースを見て「これがどういう事を意味しているのか」理解、or理解できないなら質問して作業をすすめる →進捗が遅れてしまうが、バグが出た際に対応しやすいかもしれない。土台が(1)よりも固まっているので 理想としては(1)と(2)の長所を兼ね備えているのがベストなのですが。。アドバイスをよろしくお願いいたします。

  • マルチタスクプログラミング

    マルチタスクプログラミング ド素人な質問ですみません、マルチタスクを意識したプログラミングをC言語で実現するにはどうしたらよいのでしょうか? 自前のHPにあるデータ数十万件をバッチを組んでデータの移行を考えていますが、その移行方法として工夫無しですと理論値で半年かかることがわかり、何とか移行時間を縮められないかなと考えている中、マルチタスクでプログラミングしてみたらどうかな?と思ったのが始まりです。 C言語の経験は大学で習った程度(なんとなくポインタが分かる程度)ですが、具体的な方法など教えていただければと思ってます。 また、ほかにもっとこっちのほうがいいとかありましたらご教授ください。

  • たとえばオークションのプログラミング

     コンピューターの素人ですが質問があります。  たとえばヤフーのオークションを一人でプログラミングする場合、どれほどの時間や日数がかかるのでしょうか。  条件は、オークションの構想、スタイルなどの必要事項がすべて決まって、あとはプログラムとして打ち込むのみという場合とします。  大体で結構ですのでよろしくお願いいたします。

  • プログラミングの本当の初心者は・・・

    プログラミングのまったくの初心者です。 このような質問は多いと思いますが、是非経験者の方の意見を聞かせてください。 興味を持ったのは仕事で使えると便利なことが多く是非やってみたいと思いました。 しかし、まったくの素人、そして年齢的にも40歳です。 こんな私が始めるためにはどのようにしたらよいでしょうか? また、言語がたーくさんありますがまずどこから始めたらよいのでしょうか? 個人的にはRubyがいいと詳しい人からは聞きますが素人には無理なのでしょうか? ちなみに仕事では解析業務等を行いたいと思っております。 皆さんの貴重な意見をどうか聞かせてください。

  • なかなかプログラミングができない

    文系大卒30歳、4年ネットワークエンジニアとして働き、SEを目指して3年大手SI屋でSEとして働きました。 大手SI屋ではプログラミングは協力会社さんに委ねることが多く、すでに社会人5年目だった私はプログラマとして即戦力にならないため、最初の1年はマニュアル作成やドキュメント作成が主な仕事でした。結局プログラミングすることもほとんどなく、そのうち小規模のサブプロジェクトリーダーなどをやったり、提案活動をさせられたりしてました。 プログラミング経験のないままこういう仕事をすることに限界を感じ、小さなSI屋に転職して半年になります。小さいながらプライマリで仕事を受けている会社ですが、プライマリで仕事を受けているとドキュメント作業などプログラミング以外の仕事がやはり多く、なかなかプログラミングができません。 プログラミングをしたければ、やはりSI屋から仕事を請けるような小さな会社に転職したほうがよいのでしょうか? もうSE業界に来て4年になろうとしているのに、未だプログラミングができない自分にいらだっています。。。

  • 初歩からのプログラミングの勉強について

    5月から某企業でSEになる為に働く者です。 厳密にはその企業がSE・PGを育成する子会社を設立しており、 その子会社に採用を頂き5月からまずアルバイトとして研修を受ける事になっています。 私は現在24歳。今まで社会人経験はありません。 高・短大と工業の電気化におりましたので多少勉強してはいたのですが、 当時PCに興味がなく苦手意識があった事から、また学業を離れて長かった事から プログラミング経験などは素人と思って頂いて構いません。 もちろん研修で1から学んでいくのですが、研修中も随時試験などを行いついていけない 人間は足切りされて行きます。まだ研修まで時間がありますので今のうちに独学で勉強したいと思っています。 そこで勉強する為のテキストなのですが、初心者からでも分かり易く覚え易いものを探しています。 なにかいいテキストがあれば教えて頂きたいと思います。 ちなみに研修ではC言語→C++言語→VC++で学んでいくようです。 また社会人としてのマナーも身に付けたいと思っております。 こちらも同じく良い書籍などがあれば紹介して頂きたいです。 よろしくお願いします。

  • ネットワークプログラミングについて

    C言語のネットワークプログラミングについて質問です。 UDPで通信を行う際に、daytimeクライアントとサーバの変更する必要がある所はどこになるのでしょうか?  また、どのようなヘッダや関数になるのでしょうか?

  • プログラミングの学習方法を教えてください。

    ご閲覧ありがとうございます。 23歳学生です。 現在、ソフトウェア開発に興味をもっています。 ですが、全くの素人ですので、何から手をつけて学んでいけばよいのか分からず困っています。 情報技術の知識レベルは中小企業診断士の学習がきっかけで、以下のことを学びました。 1)ハードウェア、ソフトウェアの基礎 2)ファイル、データーベースの概要 3)通信ネットワークの基礎 4)システム開発の手法 5)その他 しかし、実用的なプログラミングや開発に関して全くわからずじまいで、プログラミング=ソフトウェア開発?といった具合です。 ソフトウェア開発の技術者の方は、どのようにプログラミングをスタートをされたのでしょうか? 目標は、最終的には「オリジナルの家計簿ソフト」を作りたいと考えています。 経験談、書籍、URL等何でも結構ですので、一から学べるアドバイスをよろしくお願いいたします。