• 締切済み

プログラムを始めるなら

C言語をある程度知っている人なら、プログラミングは大丈夫だと言われる理由って何でしょう? 別にC言語を元に全てのプログラムができたわけでもないし、 オブジェクト指向のプログラムとは毛色が違うし。 私自身C言語,javaなどのソースが読める程度しかできませんが、 プログラミングが出来るとはお世辞にも言えません。 何故このような事が言われているのでしょう? また、最初に学ぶべき言語としてはやはりC等の言語がいいのでしょうか? それともアセンブリ言語のような物の方がいいのでしょうか?

みんなの回答

回答No.4

> >作るものによって学ぶ言語を選択するのがいちばん健康的 > 作るものが何になるか分からない時はどれが一番でしょうか? Ruby, Python, Java, C#, あたりだったらどれでも良いと思います。 あえていうなら、(かなり偏見ですが)その中で純粋に勉強しやすいのは Java かなと。Pythonは書籍不足、Rubyはやり方が多彩、C#はウィザードやプロジェクトの設定等が問題になることがあり厄介。

回答No.3

まず、Cは大体の事が出来るので、一度のめり込んでしまえば、 長く勉強できる。また、その課程でOS、メモリ、シェル・・・等、 プログラミングに当たって今後重要になる知識が自然と身に付いてきます。 一番大きいのは、開発環境でしょうか。 VCを購入せずともgccやbccといったコンパイラで十分勉強できます。 JAVAに比べると開発環境も比較的軽量ですしね。 さらに、書籍やウェブページなど勉強するに当たっての環境が豊富なことも挙げられるでしょう。 No2の方が仰るとおり、デバッグは面倒ですが、 逆に考えると、Cの面倒なデバッグが身に付いてしまうと、 他の言語でのデバッグは比較的簡単に思えるかも・・・いやそうでもないか? アセンブラはCの後にやった方がわかりやすいかと。 というよりも、最近の言語と形態が違いすぎるので、 アセンブラは、言語と言うより"アセンブラ"とういう認識の方が良いかもしれません。 ただし、知っておいて損はありませんし、職によってはアセンブラやCOBOLが役に立つ事が多いのも確かです。

miniture_min
質問者

お礼

回答ありがとうございます。 私の職自体ではアセンブラを直接使うことは皆無なのですが、 言語の理解として必要かどうかが気になっていたのです。

回答No.2

C言語を "最低限" 勉強すると、ポインタについての知識がつくと思います。ポインタを理解していると、他の言語で「参照渡し」「値渡し」などの概念が出てきたときに、即座に(そしてわりと正確に)理解することができます。また変数とヒープ領域の関係について理解していることも強みです。 C言語を "ある程度" 勉強すると、メモリについての知識やシェル、OSとそのインターフェイスについても知ることになります。これはなかなか他では得られない利点でしょう。(もちろん、知る意思がないと知ることはありませんけどね) RubyやJavaしか知らない方がC言語を独学する様子を見ることがあるのですが、そういった方がよく引っかかるのが意外にも変数とヒープの関係だったりします。Javaでも学習すると思うのですが、プログラムの本筋でないと思われ、見過ごされてしまうのでしょうか。 ただし、入門言語としてC言語には問題点があります。とりあえず二つ。 ひとつには、デバッグがしにくいということ。C言語では本来望まれる形以外でメモリを参照することが出来るので、潜在的にバグとなりうる箇所が激増します。加えてC言語ではプログラムのソース自体には関数以上の構造がなく、また#includeがそのまま他ファイルを読み込むという仕様であるため、バグが出た位置の特定が難しいことすらあります。あとポインタを用いると(ポインタじたいは汎用的すぎるので)コンパイラによるエラーの発見が困難になるという、言語仕様から来る問題もあります。 またもうひとつは、変数などの概念がまるきり抽象化されていないこと。もともとC言語はOSを書くために設計されたため、低レベルな部分についても触りやすい、「高級アセンブラ」という位置づけのものです。ですからC言語における変数とは本当は「メモリ上のある領域」という意味づけでしかなく、そこにどのような値を導入し、どのような値を取り出すかという単位で考えることが可能になってしまいます。つまり「変数」という概念の枠を越えてしまえるのです。 その他の高級言語では変数自体に(型情報など)何らかの意味づけが加えられ、安全性が増しています。また変数も変数という抽象的なものであって、「何か」を出し入れするための名前であり、その中身についてメモリ上のマッピング等を考えることはありません。良くも悪くも、より抽象的にとらえられるのです。 はじめてのプログラミングの学習において本来大事なのは、プログラムのアルゴリズムやデータ構造の作り方、もう少しレベルを落としてフローといったことであると思っています。こういったことを学ぶ前に言語の落とし穴にはまりがちであるC言語およびC++は、はじめての言語としては私はあまり適しているようには思いません。そういう意味ではRubyなどが良いのかも知れませんね。 なんにせよ、作りたいもの次第で使う言語は変わるものなので、作るものによって学ぶ言語を選択するのがいちばん健康的だと思います。 アセンブリ言語は知ると幅が広がりますが、今の時代、初めての言語としては意味があるように思えません。 RubyやPython, Javaなどの高級言語で学ぶことの方が圧倒的に多いはずです。

miniture_min
質問者

お礼

回答ありがとうございます。 >変数とヒープ領域の関係について理解していること なるほど。 >作るものによって学ぶ言語を選択するのがいちばん健康的 作るものが何になるか分からない時はどれが一番でしょうか?

  • notnot
  • ベストアンサー率47% (4900/10357)
回答No.1

>C言語をある程度知っている人なら Cじゃなくても、ある言語(特殊な物を除く)を知っていれば同じですね。 言語の機能を知っているかはあまり重要でなく(リファレンスを見ればいい)、プログラミングの概念が身についているかどうかが重要です。 >また、最初に学ぶべき言語としてはやはりC等の言語がいいのでしょうか? >それともアセンブリ言語のような物の方がいいのでしょうか? アセンブラはアセンブラで重要ですが、何を目的に学ぶかで違ってくるでしょうね。GUIアプリとかWebアプリを開発するのが目的なら、アセンブラは必須ではないでしょう。ただ、「アセンブラを学んだがさっぱり理解できなかった」という人は、プログラミングに向かないと思います。

miniture_min
質問者

お礼

回答ありがとうございます。 >何を目的に学ぶかで違ってくるでしょうね それもそうですね。

関連するQ&A

専門家に質問してみよう