dポイントプレゼントキャンペーン実施中!

例えば、数学は主に計算力と思考力

より具体的には計算力、計算の工夫、論理的思考力

他にも発想力、洞察力など色々ありますが、

また、化学は8割型、記憶力だと思いますが、

プログラミングで求められる力って何でしょうか?

C言語、ocamlの場合が知りたいです。

質問者からの補足コメント

  • どう思う?

    具体例を出していただいて、

    プログラムが書けるようになるプロセスでどんな力

    が必要なのかが知りたいです。

      補足日時:2017/03/04 02:03

A 回答 (8件)

みなさんが大体言っているのですが、付け加えるなら



言語のマニュアルを読むための英語力・言語力、
(これがないためにぼくは苦労しています)

複雑すぎる理論を捨てて保守性を優先する合理性、
(簡単な四則計算の組み合わせでしたが、if-else if文を
使うような場面を処理させたところ、何をやってるか
わからなくなって、保守し難くしていたことに気づいた
経験あり)

プログラムの全体像を構築把握する空間認識能力
(これもぼくは貧弱なために苦労しています)

なども必要でしょう。
    • good
    • 0

>プログラミングで求められる力って何でしょうか?



アルゴリズムとフローチャートだと思います。
    • good
    • 0

商業目的なのか、研究目的なのか、スタートアップや個人的な趣味なのかで多少は変わりますが、推理小説を書く時に求められるものとそっくりです。


つまり…発想力と言語能力(国語の能力と考えてよいです)と物事を論理的に考える能力です。

発想力という点は結局のところコンピュータとは道具に過ぎないからです。使い方は決まっていません。
こんなものを作ればお客様は喜ぶのではないか?こんな使い方をすれば人にできない事をコンピュータにさせられるのではないか?こんなものを作れば面白いのではないか?
プログラミングという物は常にコンピュータを使う事によって生まれるユートピアを思いつくところから始まります。
発想力がない事には何も始まりません。

次に、言語能力が必要という点についてはソースコードとは命令書だからです。
プログラム言語は相手が人ではなくコンピュータという違いはありますが結局のところ命令書ですから、作る時に求められるのは作文の能力です。
ただ、人間とコンピュータの頭は特性が異なる為全く同じではありません。
例えば人は複雑な命令は苦手ですがある程度あいまいな命令であってもいいようにふるまってくれます。
一方でコンピュータは定義の欠落が1つでもあれば動きませんが、どんなに同音異義語があってもどんなに異音同義語があっても平気ですし理解できます。
また、お客様が望んでいる事を理解したり、自分が正しいと思った仕様をお客様に理解させたり、使う事をのすばらしさを理解して買わせたり…
プログラミングの周辺で必要になる事でも様々な場所で言語能力が関わってきます。

3つ目に論理的に考える能力が必要となるのは、プログラミングとはやりたい事の手順を抜け目なく"想定外"をできる限りなくして、(理解としやすさと全く無関係な)論理的正しさを基準に表現する行為だからです。
コンピュータが大量のデータを高速で処理する特性上日、いくら論理的には天文学的な数値の確率でしか起こりえない事象が日常的に起こる事になります。
ですから、論理的に考えて抜け目なく"想定外"をできる限りなくす必要があります。
例として、3,656,158,440,062,976分の1(さいころが20個同時に振って全て1になる確率)と聞くとどう思うでしょうか?
情報理学を知っているプログラマは1日に数回起こるほどありふれた事と考えます。※1
論理的な美しさにかかわる部分となると、例えばリストを前から順に処理するとうまくいかないのに後ろから処理するとうまくゆくような事象は山ほどあります。
そういった時には論理的に意味がある要素なのか、それとも自分が理解しやすいといった論理的には意味はない執着なのかを切り分ける必要が出てきます。
上手く行かない時自分の考えは間違っているのではないかと疑い、より論理的に正しい考え方が出てきた時に自分の考えを否定できないと堂々巡りを繰り返す事になります。
コンピュータはベテランか新人か等関係なく常により論理的に正しい方の味方をしますので、プライドや経験的な勘を理由に相手の意見を否定する行為は最悪と言えます。

最後に言語は何を使うかはあまり関係ありません。
小説を書く時、英語で書くか日本語で書くか中国語で書くかは重要でなく、ストーリーが重要なのと似たようなものです。
C言語で書こうがCobolで書こうがプログラミング言語は「分岐とループと処理」という3種類の物を列挙する手段に過ぎませんので。

※1 以下の通り。
・判定の結果は3,656,158,440,062,976パターン(6の20乗)とする。
・説明の簡略化のため全パターン満遍なく発生するものとする。
・その判定はCPUコア1つにつき1秒に10回発生するものとする。
・CPUコアは4つとする。
・利用者は10億人とする。
→1*10*4*1,000,000,000*60*60*24/3,656,158,440,062,976≒0.94525444032465717113892755424198
→1日に1度程度起こるだろう。
現実には数マイクロ秒間隔で判定が行われる事もそれほど珍しくありませんので10,000人位の利用者でさえ1日1回くらいは起こる可能性は十分にありえます。
    • good
    • 0

プログラムは、いろんな書き方があり、その意味で、数学の問題を解くのに似ています!ですから、発想力もいるでしょう!実際にプログラミングを勉強し、プログラムを作成した立場から言えば、まず、


基本を 基本的な事柄の書いてある良書(みんなが勉強している本がいいでしょう)で基礎を身につけること!次に、実際にプログラミングをしてみる!エラー処理をしながら、いろいろ思考して直して見る!その意味で、注意力も必要です。そして、他の人の書いたソースコードも理解して覚えましょう!暗記は要らないが、理解力は必要です。また、どのようなプログラムを最初に作成する時に、日本語をプログラムにあった内容に変換して作る必要があるので、プログラム言語の深い理解が欠かせません!
プログラム言語は、違えども、英語や中国語というような違いでしょうから、その言語に慣れることが必要でしょう!私も、仕事に必要で独学した時、まず、関数から入門し プログラム作成に移行しましたが、基礎力をマスターするにも 半年から1年間必要でした!
    • good
    • 0

1からN(自然数)までの整数の合計を求めるにはどうすれば良いか?



案1
「合計」という箱に1からNまでの数を加えれば良い。
→手順
 「合計」に1を加える
 「合計」に2を加える
  ……
 「合計」にNを加える

これだとNが大きな数だ書くのが大変

→「数字」という箱に1からNを入れ替えて繰り返せば良い
→手順
 1. 「合計」に0を入れる
 2. 「数字」に1を入れる
 3. 「合計」に「数字」を加える
 4. 「数字」の数をひとつ増やす(1だったら2にする)
 5. 「数字」がNより大きければ終了、そうでなければ3.へ



案2
→定義
 Nまでの合計は、N-1までの合計に1を加えたものだ
 N-1までの合計は、N-2までの合計に1を加えたものだ
  ……
 2までの合計は、1までの合計に1を加えたものだ

 1までの合計は1だ

→関数
 合計(N)=(N=1の場合) -> 1
     |(その他の場合)-> 合計(N-1) + 1



・課題の中から法則性を見出す
・それを言葉で表してみる
・それをプログラム言語で表してみる
    • good
    • 1

SE業種でリーダとかマネージャをやっていて、ツクヅク感じさせられた事は、携わってる人達の国語力の無さです。



自分の考えを正確に相手に伝えられない。
相手の仕様書などを正確に解釈出来ない。

それでプログラムを作っても、字下げはやらない、コメントは少ない、これでは見た人は解らない。

まずは、国語力。
これ無くして何をやっても意味無い。
    • good
    • 3

プログラムを書けるようになることは


道具を使いこなすのとそんなに変わりません。
単にプログラムを書けるようになるだけなら高い能力は要りません。
たくさん書いて経験を積めばいいです。
多少、他人のソースも読んでみるとよいと思いますが、
それくらいで終わりです。

目的はソフトウェアを作りたいですよね?
ソフトウェアを作るには、プログラムを書くことよりも
設計などのほうが能力的には必要になります。
ソフトウェア実現したいこと整理して、必要な機能など分析して、
プランをたてて、ドキュメントなどで表現する能力です。
構造化言語、オブジェクト指向、関数型などで具体的な技術は変わり、
内容もいろいろありすぎてなかなか説明するのは難しいですが。

まずはプログラムを書いてみてください。
多分、なかなかすっきりしたプログラムを書けないと思いますが、
それはプログラミングとは別の、上記のほうの学習が必要になります。
    • good
    • 0

すべてのことに言えることですが、


忍耐力と解決力です。

人脈もあればなお良し。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!