回答受付が終了しました

C言語を学んでいるんです!と質問すると大抵、「実際に打ってみれば分かる」と言われますが、そもそもその打っているものが何か分からないのにひたすら打って分かるものなんですか?

回答(4件)

1

自分で打たないと上手くならないのは、確かな事実です。 ただ、打つと言っても人の書いたコードをコピペしてもあまり上達しないと思います。 自分で関数や文法などを調べながら、試行錯誤して打つと、良い経験になりますよ。

1人がナイス!しています

0

「実際に打ってみれば分かる」 が意味するところの裏の意味(本音)は 「実際に打ってみれて分からなければ」「永遠に分からない」です 打ってみて解からないなら「適正ナシ」です 逆に、打ってみて解かる人は適正アリです 現役プログラマは皆、打ってみたら解かったを積み重ねている

>この関数はこういう意味で、これでくくるとこうなるみたいな事が分かっていないと何をしているのか分からないと思います 関数とか動作とか何をしているかとか、分っていなくとも ・この関数はこうに違いない ・これでくくるとこうなるに違いない と「何をしているのか」「予想」します で、打ってみて動作テストしてみて、予想が正しいか判定します 予想と動作テスト結果が等しくなるまで推論の修正を繰り返します 予想できるか?正しい予想が出来るか? がプログラマに成れるかどうかの分かれ目です

1

プログラミングには、3つの要素があります。 まずは、文法。 C言語であれば、予約語や演算子、関数の書き方等の文法に当たる部分です。 これはもう、C言語の入門書なりを読んで覚えるしかありません。 次にライブラリ、この関数はこういう意味で〜とか、どんな関数があるのか、とかの知識がこれです。 関数はどんなものがあるのかをだいたい知っておけば良く、 細かい使い方や仕様とかは、使う時になってから、リファレンスと呼ばれる関数の仕様書のようなものを読んで確認すればOKです。 わざわざ隅々まで暗記する必要はありません。 最後が、アルゴリズムです。 これは、上記の文法やライブラリをどの順番で使って、どう組み立てたら、 自分の望むものができるのか?という、プログラミングにおいて、最も重要な内容です。 これが出来ないと、文法やライブラリなんかをいくら覚えても意味がありません。 ところがこれに関しては、どう組み立てるかですから、決まった方法というものはありません。 その都度、必要に応じて自分の頭で考えるものなのです。 なので、こればかりは、色々な物を試しに作ってみては、 動かして、直してという、繰り返しの中でしか獲得できません。 昔の人達は、遊びの中からその方法を自然と身に着けたためか、 あまりその部分のやり方について、詳しく書かれたものが無いように思います。 これには、作りたいものを、よく理解し、それを扱えるサイズまで分解してゆき、その後に再構築するという、手順が必要になります。 よく、○○の方法が分かりません。と丸投げされている質問に、 「まずは、自分のやりたい事を日本語で具体的に書いてみてください」 と答えるのは、この部分を体験する為です。 ここを超えないと、いつまで経ってもプログラミングはできるようにはなりません。 (そう言われてやってくれる人は稀ですが。(大半の人は、他人にやらせて、楽したいだけだものね……)) なので、文法を覚え、ライブラリ(関数)を調べながら、頭と手を使って何度も組み立てては直してという、やってみるが、プログラミングの上達の道になります。

1人がナイス!しています

0

>実際に打ってみれば分かる 堂々巡りですが、実際にやってみたら即座に理解した、という人物が、そのようなことを言います。つまり、ただ単に実体験を語っているだけです。やってたらなんとなく意味を察した、という勘や直感が働きます。これは、数十ほど打っていたら自動的に文法が脳内に構成されたものだと思われます。この辺りは、普遍文法とか生成文法とかの話です。 生成文法 - Wikipedia https://ja.wikipedia.org/wiki/%E7%94%9F%E6%88%90%E6%96%87%E6%B3%95 普遍文法 - Wikipedia https://ja.wikipedia.org/wiki/%E6%99%AE%E9%81%8D%E6%96%87%E6%B3%95 また、昔のBASICあたりの時代だと、打ってみたら視覚的に分かるものであり、つまりは答える人の年代に依る可能性もあります。

なぜ人間が小学校に上がるくらいまでには特に文法を学んだわけでもないのにある程度の母語を話せるかというと、その時点で既に厖大な量の実例を見聞きしていて、勝手に脳内に文法が生成されるから、などの理由も考えられるからです。なので、文法を理解する前に、言語を運用出来ます。