• ベストアンサー

プログラミングにおける思考ってどのようなものでしょうか?

プログラミングを学んでいるものです。 目標のプログラムを作成に至るまでの手順がまるで理解できません。 仮にプログラムが完成したとしても、マグレでしかなく何故そのような プログラムになったのか説明が出来ないのです。 現在、プログラミングをしているのですが、全く思い浮かびません。 ひどい時には、24時間以上かけても始めでつまずいたままです。 これではただの時間の無駄で、その度に我儘にも自分の労力の無意味さと能力にショックを受けます。 暗記と違い時間をかけても得るものが何もないのは理系?関係では良くあることでしょうが、このまま不毛な真似をするのは駄目だと思いました。 プログラミング文法を知っているかではなく、プログラムの組み立てについて、どのような思考で行えばよいのでしょうか? ご意見お願いします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.10

#9の方の意見に似ていますが、以下の順序で考えます。 (1)全体を「初期処理」、「中核処理」、「終了処理」の三個に分ける。  基準は「初期処理」=最初に1回だけやる。「中核処理」=本体で、  ブラックボックスになる。「終了処理」=最後に1回だけやる。 (2)各ブロックについても具体的なプログラムイメージが掴めない時は  同様に三分割し、問題を先送りにする。これをプログラムがイメージ  できるまで繰り返す。 (3)結果として、「初期処理」や、「終了処理」が不要な場合もある。 (4)常にトップダウンで考える。局所的に細かい部品(イメージは  掴み易い)から組み上げる思考は排除する。 (5)プログラムイメージは上から下へ流れる方向で考える。  絶対に上に戻る、あるいは下の方への飛び越しは排除する。 (6)必ず、(プログラム言語ではなく)文章で表現する。その後で  プログラム言語に「翻訳」する。 特に(6)は大事です。現場の叩き上げで、プログラム作成能力は抜群 なのに(6)がダメという人がいます。若いうちは良いのですが、 やがて、扱いの難しい人材になってしまいます。(6)ができれば 言語に関係しなくなり、実プログラムを他人に任せることも可能に なります。 こういうことを繰り返して1年半くらいすると、自然に身に付くので、 息をするぐらい普通にできるようになります。 ただ、どうしようもなく「センスが無い」という場合もあるので、 1年半やってみて、「普通」にできないようなら、考え直した方が 良いでしょう。

WhiteRay
質問者

お礼

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

その他の回答 (9)

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.9

基本は「分割統治」 大きな問題は小さな問題の集合。 小さな問題に分けて考える。 しかしどう分割するかというところに経験が必要なのかもしれません。 人のプログラムを読むことも重要なことだと思います。 いいプログラムを読むこともまずいプログラムを読むこともそれなりに勉強になります。

WhiteRay
質問者

お礼

回答ありがとうございます。 応用は基礎の集まりといった感じで考えると解りやすいかも。 まずいプログラムというのは自分のそれしか見たことが無いため 何とも言えませんが。

  • avanzato
  • ベストアンサー率54% (52/95)
回答No.8

こんにちは。 私は独学の後専門課程を修了しました。 独学は小学校から高校までN88BASICをひたすらやって参考書が無かったので他の人の作ったプログラムソースを見て流れを掴み、分からない構文は実際に動かして意味を知りました。 専門課程修了後SEに就職し毎日プログラミングに追われましたがやはりそんな中でも作り方がわからない事は多々ありました。 それから10数年経ちますが今でも分からない事はいっぱいあり壁にぶつかった時はインターネットで検索し問題を解決します。 これを繰り返しているとLvは上がりますしちょっと前まで出来なかったようなものは簡単に作れるようになります。 今はひたすらプログラムを作ることが必要だと思います。 あと、参考書の内容を全て覚える必要はありません。 今作るプログラムに必要なことを徐々に覚えていくと私は良いと思います。 また、私がプログラミングのときに最初に考えることは「まず、何をどうしたいか?」を明確にすることです。 参考までに、、、そして頑張ってください^^

WhiteRay
質問者

お礼

回答ありがとうございます。 自分はVBAですが、根本的な部分は似ているようだ。

回答No.7

私もプログラミングを独学しました。 確かに参考書程度では、文法は理解できてもテクニックは上達しません。 テクニックは、ひたすらプログラムを作ることです。 No.4さんの言われてるように、人間が手作業した場合の手順を把握することは大事だと思います。 その上で、いきなり完成形を目指すのではなく、作業の部分部分をテストプログラムとして作成してみてください。 最終的にそれを一つにまとめるよう作成していけば、一つのプログラムが出来ると思います。 これを繰り返すことで、部分的なプログラムを作成せずに作っていけるようになります。 部分的な事でわからない場合は、ネットでも結構テクニックが見つかりやすいと思いますよ。

WhiteRay
質問者

お礼

回答ありがとうございます。 経験が大事そう、日々の積み重ねが無いと進みにくいのか。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.6

大体わかったような気がします。 Windows でランチャプログラムが作りたい。 =>でも俺の持ってる C言語入門なる参考書にはランチャの作り方など載ってなくて、printf のオンパレードだ。 といった感じですかね。 結論としては、言語の文法だけでは知識量が圧倒的に足りなくて、 ライブラリの使い方やプラットフォーム毎に依存した部分をさらに勉強するしかありません。

WhiteRay
質問者

お礼

回答ありがとうございます、こんな時間まですいません。 本当にプログラミングは大変だ・・・

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.5

>あるプログラムを作ると指定されている この「指定」がどんなものかが分からんのですわ。 仕事の話だとして、あなたの役割がコーディングだとするなら、詳細設計書という形で指示があるのが普通です。 詳細設計書があって、文法がわかっているなら、「24時間もの間まったく作業が進まない」という状況はちょっと想像がつきません。 外部要件だけ決まっていて、どのように実装すればいいのか分からない。という状況ならいくらでもあります。 そういう場合は、様々な実装方法を勉強してもらうしかありません。

WhiteRay
質問者

補足

失礼、学んでいるだとちょっとややこしいみたいですね。 「勉強しているもの」です。 詳細設計書なるものはありません。ただ、ヒントとしてプログラムを作成するための必要な文法は説明されています。 今の状況としては公式を知っている、じゃあ問題解けるかと聞かれたらNOといった感じです。 わからないから適当に公式使ってたら出来たなんて、プログラム作った内に入るワケがありません。何かプログラミングって全部応用問題って感じがするのですわ。基礎という概念が全く存在してなくて、いきなり応用問題解けと言われても、どういう風に考えて解けばいいのか理解できない。

回答No.4

人間は、最初からひらめいて出来る人なんて早々いません 勉強だって先生から教えていただくし、教科書等を見て覚えたりします プログラムだって同じですよ 他の人が作ったプログラムを雑誌やネットで手に入れたら その横にどんな動作・処理をしているか全部書いていくんです 書き込んだら、何度も見て流れを考えていけばいいですよ それを何度もしていくとプログラムの組み立て方が頭に入ってきます プログラムは言語ですから、作文と同じで起承転結をしっかりと話の流れを考える 人間が手作業でする場合を考え、手順を作文にしたらコンピューターの言語に変換していく作業です

WhiteRay
質問者

お礼

なるほど。 >>人間が手作業でする場合を考え、手順を作文にしたらコンピューター の言語に変換していく わかりやすいイメージです。 試してみよう、返答ありがとうございます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.3

どこで躓いているかがよく分かりません。 詳細設計書があって、コーディングできません。という話? 概要設計書だけあって、それを詳細の設計にブレイクダウンできません。という話? 要件がまったく決まっていないので、プログラミングできません。という話?

WhiteRay
質問者

補足

あるプログラムを作ると指定されている ↓ プログラムの文法は予め説明されている ↓ どうやってプログラムを作るのか? ←此処で止まります 大抵当てずっぽうになってしまい、まともにプログラムを作れた試しがありません

noname#140925
noname#140925
回答No.2

基本的なロジックの考え方さえ判れば、言語はどれだろうが、大抵は文法書があればプログラムは組めます。 一般的にはフローチャートの方が有名ですが、PADの方が簡単かもしれません。 プログラムを組む前に、フローチャートなりPADなりで、やりたい事を整理してからプログラムに起こしましょう。 [参考]フローチャートの作成 http://homepage1.nifty.com/Iruka/nifty/cgi/mailcheckCGI/page2.html [参考]PADについて http://www2.ee.knct.ac.jp/el/E2/L210/algorism/pad1.html

WhiteRay
質問者

お礼

回答ありがとうございます。 フローチャート、参考にしてみます。

  • cyan15
  • ベストアンサー率50% (3/6)
回答No.1

どのような分野でのプログラムをされているのかわかりませんが、とりあえずご意見。 こう、毎日の生活のなかで、「あ、こんなのがあったら便利なのになぁ」とかって思いませんか? あの感覚ですよ。 無理に「役に立つ製品を作るんだ!」ってくそ真面目に考えても、なかなか浮かばないものなのは、当たり前です。 それに下手なプレッシャーまで感じていては、そもそも柔軟な思考が必要な分野なのに、ますます開発ができなくなってしまいますよ。 ようは発明家のようなものなのです。 誰得なアプリケーションであったとしても全然いいんじゃないでしょうか。それが意外な点で着目されて開発が急展開するなんてよくあることです。まずは「こんなのなんの役に立つんだよ」とか思って自虐的になる前に何でもいいから作ってみてください。プログラムの練習にもなりますし、決して無駄にはならないはずです。 ほんとに難しい分野ですよね、ご健闘をお祈りします。

WhiteRay
質問者

お礼

柔軟な思考、やっぱりそれ大事ですか。 あと練習は結構大変そうですが、頑張ってみます!

関連するQ&A

  • プログラミングのアウトソーシングについて

    個人でプログラムを作成するのは中々時間と労力が必要ですよね? そこで、アルゴリズムなど枠組みを決定して、後はそれに沿ってプログラミングするだけでいいというところまでもっていったら、中国など、人件費の安いところに依頼したいのですが、そのようなことはどこで調べられるのでしょうか?

  • プログラミングの勉強方法

    プログラミングの勉強方法 今、私は理系の大学3年生です。 自分はプログラミングが全くと言っていいほどできません。 このままでは研究室に配属になるときにまずいと思い、あせっています。 授業でプログラムの授業がないので独学でやろうとしているのですが、どうもなにをやっていいのかわかりません。 なので基本情報処理技術者、応用情報技術者と資格を取っていこうと思います。 資格を取ることを目標にすれば勉強にも身が入るかと思っているのですが、プログラムをできるようにするためにとるための資格って基本情報処理技術者などでいいのでしょうか? もっとオススメの目標となる資格があれば教えてください。 ちなみに私の専門は通信系で、言語はC言語を頑張っていきたいと思っています。ポインタ辺りまでの基本的な内容は授業で学習しました。

  • 論理的思考センスのない人は矯正できないか??

    論理的思考センスのなさは、一生治らないものなのでしょうか? 自分自身、よく世間で言われるような食わず嫌いで、数学 が嫌いとかそういうものではないです。 一応、一通り高校では数学IIICまで取りました。 ただ、全て暗記数学でした。解放を丸暗記するような勉強法です。 教科書の定理の証明の部分は、何回読んでもこじ付けに思えて仕方 ありません。 パズルゲームや、数学などが楽しいといっている人の気持ちが 自分には全く理解できないです。 それでも、なんとか、努力したら論理的思考が身につくかもしれない と思い、パズル、数学をするのですが、全然変化がありません。 自分には、ある事象から妥当的な推論をするという、思考能力は 一生かけても無理なのでしょうか?? 何故、自分が、かなり苦手な数学で論理的思考を鍛えようとしているのかは、大学の研究室(システム開発系)で数学、プログラミングをバリバリにやっているところに入ろうと思っているからです。動機は学生時代に特殊技能を身につけておきたいからです。 数学とプログラミングというと、論理的思考が必須ですが、自分は、 仮に数学を一生懸命、考えた場合、一般人並かそれ以上の能力は身につくのかが不安です。変に希望をもたないほうが、自分のためなのかと ついつい考えてしまいます。 それと、その研究室の人に、論理的思考ができないと、結局将来は「使われる側の人間になる」と言っており、文系の難関資格、例えば、司法書士とかを取得するのにも、論理的思考が必須であるとか、言われてました。それと、数学ができないから、この研究室から逃げるという行為もやめなさい、とも言われました。 この方達は、自分がどれだけ頑張っても、論理的思考が身につかない ことの苦労が分かってくれないような気がしてならないのですが、もし かしたら本当に、必死の努力によって、論理的思考が身につくかもしれないと、かすかな期待も持っています。 けど実際は、見返りがあるかないかわからない数学を一生懸命やるよりも、その時間を資格取得に向けたほうが効果的ではないかというのが、 妥当な考えなのではないかと自分は思うのです。 世の中、論理的思考が出来ないと本当にうまくいかないのでしょうか? また、その能力は後天的に身につくもので、多大な時間と労力を使ってでも、見返りのあるものでしょうか? 長文読んでくださって本当にありがとう御座いました。レスつけてくれる人がいたら、数学が得意で論理的思考がなんたるものか知ってる人の率直な意見でも構いません。 それに、論理的思考を後天的に身につけた方がいたら、是非教えて欲しいです。 お願いします。

  • プログラミング初心者以上になるには…

    これまで参考書やホームページを参考にしてプログラミングについて学んできたつもりです。 しかしどうしても分からないことがあります。 上記の解説は電卓やカレンダーとかの作り方しか説明していません。 それでどうやって高度(?)なソフトウェアができるんでしょうか? 例えばブラウザとかメーラーとかダウンロード支援ソフトとかデフラグツールとか、その他諸々…。 言語の文法なんて少し時間をかければ覚えられます。 しかし、作りたいと思うプログラムを作りたくても、自分が入力する「文章」とコンピュータの深部(?)がどう繋がっているのかわからないため何をやればいいかわかりません。 質問が漠然としていてすみません。 でもこの漠然とした疑問はプログラミング初心者は誰もが持つことと思います。 誰か教えてください。 お願いします。

  • 文系プログラミングについて。

    お世話になります。 私は高校・大学共に文系なのですが、今年4月からSEとして働き始めました。 しかし、プログラミングの研修を行って一週間経ちましたが、プログラミングというよりも「算数」の分野で非常に苦しんでいます。 先にプログラムのソースを見ると言いたいことはわかるのですが、文章でこういったブログラムを作成しなさいといわれると頭が真っ白になってしまいます。 「絶対値を求めなさい」や、「最小値・最大値を求めなさい」など理系出身者にとっては簡単きわまる問題も1時間もかけてようやく解けるか解けないかのレベルです。 会社の同期や先輩方には「慣れだな」とおっしゃていただけるのですが、明らかに不向きだと私は痛感しています。みなさんはどのようにjavaを学習されましたか? 特に同じ悩みをかかえていた文系SEの方にお聞きしたいです。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • プログラミングの打開策について

    2年目のプログラマーです。 小さい会社にいて設計も兼ねています。質問なのですが、プログラミング で「ある事がしたい」のに文法がわからない時があります。自分はこの場合ネットや人に聞くのですが、答えが必ず自分では調べてもわからない事がほとんどです。もちろん人やネットに聞く前に自分で調べますが、わかりません。そして答えはもちろん本やヘルプには出ていません。そういう プログラムを動作してみて初めてわかる(推測の時もあります)答えは 経験でしか身につかないのでしょうか?。それともよく調べればどこかに書いてある(ヘルプや本)のでしょうか?。最近こんな事が頻繁に続き 自信が無くなりかけています。人だのみが多く答えがわかっても、正直 「自分では幾ら時間を掛けてもわからないな」と思ってしまいます。 これは普通の事なのでしょうか? (アルゴリズムや基本的な文法など時間をかければ出来るものと違います)

  • プログラミング、または天才について

    現在C言語によるLinuxプログラミングを勉強しています。 Linuxもプログラミングもまだまだ初心者ですがなんとか勉強しています。 このまま勉強を続けていき、将来的にはLinuxを好きなように弄れる人間になりたいと考えています。 そこでいくつか質問があります。 まず、そういう人たち(例えばGNUやkernelの開発グループ)は一日にどれくらいプログラミングをしているのでしょうか。 廃人のようにゴリゴリキーボード叩いているイメージがあります。 また何歳ぐらいからコンピュータを触っていたのでしょうか。 20代から本格的に勉強を始めても彼らのようなレベルに達することは可能でしょうか。 それと、僕は情報系の学部に所属する学生であるにも関わらず数学・物理が苦手です(中学では数学は得意でしたが高校で挫折しました)。 パズルも苦手です。 プログラマーに数学が必要かどうかという議論はこれまで数多くなされてきたと思いますが、そういう人たちは数学・物理は得意なんでしょうか。 ある分野の天才というのは長い時間その分野に情熱を抱きやり続けた人間だと思います。 しかし僕がこの勉強を始めたのはつい最近です(中学ぐらいから憧れはありましたが勉強はしてきませんでした)。 彼らと経験値において大きなギャップがあります。 またプログラミングに限らず解けない問題があると無性にイライラします。 どうやっても解けない問題にぶつかったり、やっとのことで書き上げたコードも他人のもとよく書けたコードと比較したりすると劣等感を抱だき思考が脱線します(自己嫌悪です)。 僕はおそらくプログラミングに向いていないのでしょう。 しかしなぜか諦めきれないでいます。 おそらく昔から抱いていた「ハッカー」や「エンジニア」に対する憧れがあるからでしょう。 成人を越えた今でもそれを捨てきれません(思考も精神も凝り固まっているのでしょう)。 少し話が脱線してしまいましたが、大人からプログラミングを始めて大きなことを成し遂げた人はいるでしょうか。 プログラミングに限りません、あらゆる分野においてですが。 書いてる途中にいろいろな疑問が思い浮かびそのまま書いています。 かなりの駄文になりましたがみなさんの意見をお聞かせください、お願いします。 本文はもっと短くまとめられたでしょう。

  • コンピュータープログラミングについて質問です。

    よろしくお願いいたします。 私は、学生時代にC言語とVBを勉強して自分にはプログラミングは 向かないとあきらめて、徐々に疎遠になり、挫折しました。 自分がプログラミングをやめた遠因に 在籍していた学校で 自分がMS-DOSプロンプト画面に、文字コードで■や○で表示して なんとなく、動くプログラムを作っていたときに 後々、気づけば、その人と比べること事態が間違いだったのですが、 その後輩は、学校の特待生で 小学生の頃から、プログラミングを行っていて、学生の1年次に 自分で、企業から請負で2400円時給換算でプログラミングを納品していて さらに、APIとかに直接アクセスして、コンピュータープログラミングゲームで 市販されていてもおかしくないレベルのソフトをつくり、 多分、私も誘われたのですが、、コミックマーケットなどで、絵を描いてくれる友達などと ともに、オリジナルゲームを作ろうなどといって、将来的には会社を自分で興したいといっていた 後輩と比べて、他にも、ダブルスクールで大学時代にハードをいじっていたとか 高校卒業と同時にデザイン系を学んでいてスキルアップのために学校にきました。 とおっしゃる方々がいたのですが、 本当にあっさり、基本情報処理の一種をうかって 匿名掲示板などでもあの試験簡単だぜなどといわれているのを見聞きし、 さらに、2年間の学生自分に第2種基本情報処理試験を合格すれば良いと 聞いていたのに、その方々は、1年時の後期試験で受かられてしまい 私は慌てふためき、完全に空回りしてしまい、 元々、私は勉強のできない人間の典型例なので(現在は本の少しはましになったと思います) 枝葉末節にこだわりすぎて、さらに、はじめから大きいプログラムを作ろうとばかりしてしまい、 自分が完成させたプログラムは、MS-DOS画面に文字コードを利用して動きがあるように 見える、テニスと、後は、適当に作って、自分用に作ったHTMLとCSSのWEBページだけです。 HTMLはJavaスクリプトなどを使っていないし、デザインにこってFlashなどを使っているわけでも ないので、作品というか完成貧としては、これらのしょぼい作品だけです。 やはり、自分に一番足りないのは、無駄を省いた、本当にプログラミングに費やした時間と 完成品を作り実際に動いたプログラムソフトウェアーの数だと思うので、 何を作りたいか明確にすればよいと思うのですが、 そもそも論として、 誰かに、何を作ったらよいですか?と聞いている時点で、プログラマー失格ですよね、、、 でも、教えてください。 実用的なプログラムだと、 エクセルのマクロとか もしくは、WHPなどを勉強して見たいと考えています。 そもそも論として、 Windowsベースのソフトを作るかどうか、ドライバーソフトやIOインターフェースを 制御したりそもそも、OSを作ることもできるC言語を2年ぐらい勉強しただけで、 なんでできないんだろうなどということはうぬぼれもはなはだしいということですよね。。。 後、要領ですよね、、、 サーバーを立ててデーターベースを作って管理するなどにも興味があり、 昔、全文検索システムNAMAZUさんやLinuxについても調べた事があり、 Perl、Rubyなども勉強したいと考えたのですが、 学生時分は、広く浅く知識を集めただけで終わり、 浅さのレベルが本当に浅かったために、プログラムを挫折しました。 現在も、この文章をここまで、書いた時点で、プログラミングを作るのが大変そうだなーと 思うようになり、プログラム大変そうだなー、やっぱりやめようと考えるようになりました。 なので、ものぐさな人間でも、結果が分かりやすいプログラミングの勉強法、 プログラムを作り出したら完成させる、ということを前提に、考えると、 いまさら、iアプリか、今はやりの、スマフォ、iPhone Android向けに、 ソフトを作るのが良いでしょうか? 何が言いたいのか支離滅裂になってしまったのですが、 どのソフトウェアーがお勧めか実際にプログラミング、プログラムを趣味にされている方の アドバイスをよろしくお願いいたします。

  • プログラミング言語を習得したいです。

    以前より興味はあったのですがなかなかこれといったコツもつかめないまま途中で辞めてしまったことも多かったプログラミングの学習。 もう真剣に取り組みたいと本気で考えるようになりました。 これまでなぜ継続的な学習ができなかったのかということを振り返ってみると (1)目的がはっきりとせずなんのためにやっているのか分らなくなる。 (2)本に書いてある内容を理解しないまま進めてしまい(~日でできるプログラミングみたいな本を買いました。)自分がどのレベルまで来ているのか実感ができなかった。 この二点に尽きる気がします。 そこで質問させていただきます。 どのようなプログラミングの言語をどのように学ぶと良いか回答者様の経験(周りの人の様子)などを踏まえ教えていただけないでしょうか。 私がプログラミングを学びたい最大の理由は近い将来独立して様々なWebサービスを世にリリースしていきたいと考えているからです。 スマートフォンアプリを作成したりWebアプリを作成したりと多くのことに携わってみたいのですが今は1つ1つを丁寧にこなしていきたいと考えております。 現在はまだ学生ということもあり時間は結構取れます。 PCもMac、Windowsともに持っております。 達成感を実感でき持続可能な目標がほしいです。 漠然とした質問で大変恐縮なのですが どうぞ宜しくお願い致します。

  • プログラムとは理系ですか文系ですか?

    当方はプログラミング歴は20年以上です。 ある程度のゲームやアプリケーションは作れます。 先日、コンピューター専門学校卒業(その人のプログラミング経験は専門学生時代の在籍のみで、「Hello world」すらうてません)の友人となぜか論議になったのですが、 彼いわくプログラムは文法を使うから理系じゃなく文系だと言うのです。 その彼が通っていた学校の講師もそう言っていたらしいです。 私は理系だと思っています。 そもそも文系と理系自体に完全に別ける事時代がナンセンスなのかもしれませんが、プログラマー(プロアマ問わず)のみなさんはどうおもわれますか?