[2016/12/23]『参考図書』変更及びコメント付与
[2016/12/23]『さいごに、』追加
[2016/12/23]『C言語の開発環境の作り方』更新
リンク追加→[Win/Mac][超初心者向け]C言語の開発環境の初歩の初歩、シンプルな開発環境を作って使う)
[2015/12/27]本記事公開
Contents
C言語のイメージって・・・難しい?
C言語って難しいイメージがあるかも知れません。
ポインタがどうだ、メモリアドレスがどうだ、配列がどうだ、、、みたいな小難しい物がいっぱいあるイメージかと思います。
私個人的には、C言語は数ある言語の中で一番 簡単 だと思っています。
C言語の命令なんてめちゃくちゃ少ないですし、覚えなければいけない命令なんて僅かですよ。
C言語について聞かれたらこう答えるようにしています。
「ただ、使えるようになっていくためには、言語でなくコンピュータやメモリの事を覚えていく必要あるので、その部分が難しいと言うか取っつきにくいでしょう。」
C言語は人間が勘違いしやすい部分や間違いやすい部分をフォローしてくれません。
車に例えるなら、最近の言語はAT車、C言語はMT車という感じでしょうか。
6速で車を始動したらクラッチ板が壊れるとしましょう(実際にそうなるかどうかは知りませんが・・・・)。
壊れるぐらいなら前もって警告でも出してくれればいいのにと思うけど、C言語はそんな警告は出してくれません。
最近の言語はAT車なので6速で車を始動させる事はありません。(勝手に1速にしてくれるか、警告を出してくれる)
・・・っていうイメージかなと思います。
C言語は、プログラマが完全に正しくプログラミングする必要があります。
どんなプログラミング言語であっても、コンピュータの仕組みとしてデータはメモリ上に置かれます。
最近のプログラム言語は、メモリへデータを置く際、各データが重ならないようにうまく配置してくれます。
しかし、C言語はデータをメモリのどこにどのくらいのサイズで置くのかは、基本的にはプログラマが決めます。
C言語はプログラム通りにやっているだけで、AのデータがBのデータを上書きしても
C言語 『いやいや、プログラマーの指示通りに動いてまんがな。それが間違いかどうかはワシャ知りまへんがな。』
という感じです。
つまり、
C言語は全ての責任をプログラマーに押し付けています。
プログラマーの間違いを見つけてくれたり指摘してくれたりなんて優しいことはしてくれません。
この辺がC言語は難しいと思われるところじゃないかなと思います。
他の言語であれば、そういう事が発生しないようになってたりします。
プログラミング未経験者がC言語を覚えるためには
何から勉強すればいいんだ?
じゃ、
プログラミング未経験者がC言語を覚えるためには何から勉強すればいいんだ?
と聞かれれば「プログラミング言語C 第2版」をおすすめしています。
ただ、この本の欠点として・・・・、例題とか演習問題がつまらないんですよ。そのつまらなさにガマンしなければなりません(笑)
と言っても、これを読破しろってワケじゃなく、「第1章 やさしい入門」だけをやればいいんではないかと思います。(開発環境については別途調べる必要はありますけど)
C言語の勉強はこの本のこの第1章が一番手っ取り早いと思います。
説明は簡潔で、てっとり早くプログラミングをします。
簡単なプログラミングであれば、この第1章の知識でどうにかなるでしょう。
もちろんこれが全てではないのでここから勉強を継続しなければなりませんが、まずはこの第1章だけをやってみてください。
私もC言語の勉強はこの第1章しかやっていません(笑)
他の言語を知っていたっていうのはありますが、仕事で初めてC言語の現場に入った時この第1章の知識だけでなんとかなりました。
そもそもよく見て欲しいんですけど、本屋さんでObjective-CやSwiftやJavaやC#やRubyとかの本を見てください。「プログラミング言語C 第2版」と比較してそれらの分厚さ!!!
どんだけ覚えなアカンねん!!!
どんだけ覚える量があるねん!!!
・・・って思いませんか?。
それにVerがちょっと上がるだけで、本に書かれてあるサンプルが動かないとか・・・orz
言語以外に気にしなければならない開発環境が多過ぎますよ。
C言語であればそういった悩みも無く、一度覚えれば自分のプログラミング力として確実に財産になると思います。
別のプログラム言語を覚える際の役にも立つでしょう。
で、C言語って覚えたほうがいいの?
とは言え、C言語のような古い言語をこの時代に覚える必要はあるのか? と思うでしょう。
まぁ、覚える必要は無いでしょうね(笑)
覚えたい人だけが覚えればいいでしょう。
大体のC言語の入門書はCUIが多いので、あまり楽しくないしね。
C言語でグラフィカルな事をやるのは色々と面倒だし・・・
今の時代においては、C言語ではプログラミングの楽しさは味わいにくいと思います。
『俺はコンピュータを制御してるぜ!!』という感覚が楽しいと思える方はC言語は合っているかも知れませんが、そうでない方は合わないと思います。
特にRubyとかJavaScript等を使うオシャレなWeb系に携わるのであればC言語なんて要らんでしょ。
VisualStudioとかを使ってシステム開発をする人は覚えておくといいかも?という感じかな。
まぁ、無理して覚えなくてもいいでしょ。
C#でラムダ式とかLINQとか色々覚える方が役に立つでしょう。
でも組み込み系/制御系のプログラマを目指す人には必須です。
C言語を知らない分からないなんて話にならないですし、C言語の命令を知っていてもメモリ上のデータの展開が想像できないのであればC言語を理解できていないでしょうから仕事としては無理ですね。
C言語は言語を覚えるという行為はさほど意味がありません。
メモリの上にデータがどのように配置されるか?
各プロセスやスレッドのメモリはどういう状況になるのか?
メモリはどのプロセスに張り付くのか?
とかとか・・・・
そういう点を考えられるようになるべきです。
C言語の開発環境の作り方
C言語の開発環境の作り方は幾つかありますが、一番簡単なのはVisualStudioをインストールするのがラクですけど(Windowsの場合←最近Mac版のVisualStudioが出たのでMacも同様かな?)、でも使い方で悩むかも知れません。
コンパイラを入れるだけが一番簡単かなぁと、個人的には思います。
設定もPATHぐらいだし。
Windowsの場合
Windowsであれば、
VisualStudioのExpressをインストールすればいいかなと思います。
それか、Eclipseとか。
他にもBorlandとかLSI-C試食版とか色々ありますし、Vectorで探しても何個か出てくると思います。
まぁ、でもWindowsでC言語の開発環境を作るのは案外面倒なのでMacとかLinuxで作る方がラクっす。
Macの場合
Macであれば、Xcodeをインストールすればgccも入るはず。
※Xcodeのインストールは手こずる事があります。
※コチラの記事を参照。
Linuxの場合
Linuxであれば、デフォルトでgccが入ってるはず。
OS問わず
Atomというエディタを使って作る方法もあります。
さいごに、
人それぞれ考え方の違いがあると思いますので、C言語が難しいか簡単かは実際のところは分かりません。
ですが、結局のところは、やってみなけりゃ分からない と思うんですよね。
やってみたら『意外と簡単!』と感じる人がいれば、『思っている以上に難しいじゃん!』と感じる人もいるでしょう。
どうせやらないのなら、『難しいからやらない』ではなく、『やってみたけど難しいからやらない』の方が良くなくないですか?(どんな理論だwww)
ポインタが難しいと言われる事が多いんですけど、それはメモリの番地を想像すればいいのに・・・・と思うんですよね。
プログラミングではしょっちゅう使う配列も実はポインタと密接につながっているんですよね。
ここではポインタの説明はしませんが、メモリの番地や、データがメモリ上にどういうように展開されるか?という絵を想像するとポインタはそんなに難しいものではないと思ってもらえると思います。
私個人的には、C言語は数あるプログラミング言語の中でも激烈に簡単な方だと思っています。
もちろん感じ方は人それぞれですので、難しいと感じる人がいてもいいですし、難しいと思う気持ちもよくわかります。
ま、とりあえずやってみればいいんじゃないですかね?
ただし・・・・・
使いこなすのは超絶激烈に難しい部類のプログラミング言語 だとも思います。
もちろんどのような言語でも使いこなすのは難しいです。
他の言語だと発生しないようにしてくれているエラーでも、C言語では自分で意識しないといけないので、考える事が多過ぎてしんどです。
ってな感じで、
あんまりC言語をオススメはしません(笑)
参考図書
↓独学で真面目に取り組むならこの辺りがいいのかなと思います。(もちろん上で紹介している本も真面目に勉強できますよ)
コメントを残す