- 締切済み
C言語学習について
大学4年生で研究室に配属されています。プログラムをする学科にいますが、あまりプログラムを作れません。 C言語の文法書を読んだり、サンプルプログラムを見たりしてはいます。独学はなかなか難しいです。 特にC言語でつくりたいものもありません。 C言語を使えるようになりたいのですがどうしたらいいでしょうか。C言語のいろいろな本を借りたり見たりはしています。実際に作った方が身につくとは思うのですが。サンプルプログラムを打つのも飽きてしまいます。 C++とかJAVAとかありますが、C言語しか使ったことがないのですが気になります。 近くにプログラムを教えてくれるような教室もありません。 助言お願いします。
- みんなの回答 (7)
- 専門家の回答
みんなの回答
- nobe
- ベストアンサー率66% (59/89)
こんにちは。 ソフト業界で働く者です。 役に立たないかもしれない経験談ですが参考になれば幸いです。 まず上達のコツは、 人様の作った高度なプログラムを修正したり するとスキルは格段に上がります。 野球の下手な友達とキャッチボールをしても 上手くならないのと一緒です。 私の時代の人たちは 今ほど書籍やソフトがありませんでしたので 皆、独学で覚えました。 自分の場合ですと、 参考書代わりにgnuという団体 ◆linuxで有名です、gccとかgpp もそうですね。 →http://www.gnu.org/ で配布されるソース付のいろんなプログラムを 貰ってきたりしてパソコンに移植したりしました。 ソースを解析しながら修正するのでプログラミングや 手法を学ぶには一石二鳥です。 また作ったソフトが気に入らなければそこを自分で 治せるのでとても重宝します。 さらに、参考書と違って解説が無い分、 自分で解析してプログラムを作った人の意図を 把握する必要があるので思考力が付きます。 また解析をして日本語でコメントを入れてゆくのも 方法です。 ご存知と思いますが、gnuのプログラムは一般的に 国外の人がつくったプログラムがほとんどです。 これらを見ていると、海外の皆さんは 脳ミソの構造が違うのだと実感できます。 近頃の参考書に載っているプログラムを 見て思うのは、日本人の作るプログラムは未だに お粗末なものが多いということです。 これではスキルは身につきません。 洋モノもあるのですが日本人好みの選定がされて 販売されているのでやっぱりお粗末です。 つまり、本場のプログラムを見ることが一番 近道だということです。 いきなり敷居の高い挑戦ですが、このぐらいでないと 多分覚えないだろうと思います。 せっかく覚えるのですから変な日本人癖のついた プログラミングより世界で通用するプログラムを 作れるようになりましょう。 私は現場でつくづくそう思っています。 話は変わって、C++についてですが C++はCのサブセットですので、 拡張であって別言語ではありません。 言語としてはCと同じものです。 『オブジェクト指向プログラミング』という考え方を 取り入れただけものですね。 Javaもそうです。 基本的に同じですので まずはCに慣れたほうが、という人が多いですが 私は、最初から覚えたほうが良いだろうと思っています。 その理由のひとつに、 C++はオブジェクト指向でないという人がいます。 つまりC++は使い手によって如何様にもなる幅の広い 言語なわけですがこういう人が居る背景には、まだ、 Javaのように規制されていないとオブジェクト指向を 認知すらできない人が多いと言うことなのです。 それぐらい「オブジェクト指向」は難しいとされて きましたが、そもそもが、従来の考え方に囚われすぎて いるために彼らには理解できないのです。 よって今の若い世代の人が 積極的に、我々にとって新しいオブジェクト指向を 取り入れることによってオブジェクト指向 という考え方を取り入れていくべきだと思っているのです。 もうひとつの理由には、 今はC言語が主流ですがこれから段々と消えつつある言語です。 私の時代にアセンブラが主流でいまや誰も使わないのと同じです。 Javaなどは元々機器組み込み用のネィティブな言語ですので そのうちアセンブラなどに取って代わりC言語も使わなく なるでしょうね。 将来Javaをやるならやっぱりオブジェクト指向を 先に知っておいたほうが良いでしょう。 プログラミング自体はコツをつかめば誰でも 出来ます。 裏を返せばプログラムより設計主案や手法が 大切で、オブジェクト指向とは 正しく設計手法を実態化するプログラミングなのです。 もし興味を持ったら調べてみてください。 興味が無くなったらごめんなさい(泣)。
- domi_rb
- ベストアンサー率39% (60/152)
#1で回答したdomi_rbです。 Psanさんは、「ACM」はご存知でしょうか? 私は、大学時代、このプログラミングコンテストを受けていました。これは、万国で行われるもので、英語の出題となりますが、世界レベルの人たちと戦うことができます。 ここの問題は、シンプル且つ難題もあります。 挑戦する価値はあります。 以下に、過去の問題のURLを記載しますので、 解いてみてください! ちなみに、時間制限も本番ではありますので、自分で時間を決めて試験してみるのも良いかもしれません。 がんばってください!
- sha-girl
- ベストアンサー率52% (430/816)
言葉足らずでした。 >VC++はC++のクラスについて、ある程度わかっている人でなければ >意味もわからずプログラミングすることになります。 はMFCを使って、GUIをプログラミングする場合を意味したつもりです。 普通のコンソールアプリなら、どのコンパイラでもあまり変わりません。
- sha-girl
- ベストアンサー率52% (430/816)
>c++やJAVAの方が面白そうに思います。 独学はなかなか難しいです。 C++をマスターするということは包括的にCの知識も必須だと私は思います。 あとC/C++を教えてくれる塾なんて聞かないですよ。基本的には独学です。 もし院に進む気であれば研究員としてCは欲しいスキルですし 独学で勉強できなければプログラム言語自体も進化しつづけるわけですし 取り残され結局挫折します。特に研究機関はUNIXがメインなので Cを扱えない人ってまずいません。 あといきなりVC++はお勧めしません。 VC++はC++のクラスについて、ある程度わかっている人でなければ 意味もわからずプログラミングすることになります。 自分の研究のテーマに関係する計算については 電卓やエクセルはやめてすべてCで行ってみては?
- murasaki_rocks
- ベストアンサー率18% (7/37)
大抵の人は書かなきゃ覚えないですよ。 参考書とか見るひまがあったらひたすら打つしかないでしょう。 覚えたいけど、勉強はいやだっていうわがままな君には ぜひゲームやツールを作る事を勧めます。 人間は楽しい事や楽する事が大好きですから夢中になって打つと思います。 Windows環境ならVC++でブロック崩しが推奨です。 CUIとかJavaなら五目並べとかオセロなど簡単ですよ。 慣れてきたらツールでもつくって..
お礼
やっぱ自分でなにかCで書いて作った方がいいですよね。
- HAL007
- ベストアンサー率29% (1751/5869)
>>特にC言語でつくりたいものもありません。 作るテーマがあると身に付くのが早いんですけど・・ >>C++とかJAVAとかありますが、C言語しか使ったことがないのですが気になります。 Cをマスターすれば差ほど大きな障害なく入れるはずです。 テーマを作ってコーディングすることが早道ですね。
お礼
何かテーマが欲しいですね。研究室でやらされることは面白くありません。
- domi_rb
- ベストアンサー率39% (60/152)
こんにちわ。 IT関係の仕事に就いている者です。 PC言語は、実践にならないと、なかなか身につかないものだと、就職してから感じています。ですので、Psanさんのお気持ち、よくわかります。 まず、C言語の開発環境があることに感謝しましょう。環境がなかったら、開発さえできませんからね。 >サンプルプログラムを打つのも飽きてしまいます そうですね、打つだけでは、飽きてしまいますよね。 私が持っている本の中に、C実践プログラミングというのがあります。分厚い本で、牛の絵が表紙です。オラリージャパンという会社から出版されています。こちらの本は、解説しながら、問題も出ています。 「このような結果を出すには、どのようなプログラムを書けばいいか?」というような感じです。 難易度は、少し高めですが、C言語を学習した大学4年生ならば、大丈夫でしょう!! 正直言って、今は、オブジェクト指向がはやってきているので、JAVAの勉強もお勧め致しますが、C言語を身につけたいと思ったら、問題を解いてみてください。もし、問題が足りないようでしたら、私から問題を数問出してもOKですよ(笑) 私もC言語がパーフェクトなわけではありませんが、必要に迫られたほうが身につくと思います。問題集のようなものもでていますので、TRYしてみてください! C言語のスペシャリストを目指してがんばってくださいねー!
お礼
C実践プログラミングは最近買いました。研究室ではC言語を使っているのでC言語を勉強するつもりですが、c++やJAVAの方が面白そうに思います。 何か問題を出していただければありがたいです。あとwebを使って調べたりもします。
お礼
研究室ではwindowsをつかってるので、visual c++でc言語をつくってます。