• ベストアンサー

C言語で個人の趣味では何が出来ますでしょうか。

C言語で個人の趣味では何が出来ますでしょうか。 プログラミング言語をさらに追求したいので、これからC言語を学びたいと思いますが、C言語って生産性が悪くて作りたくても作れないことはありますでしょうか。また、将来性はどうでしょうか。 個人の趣味では何が出来ますでしょうか。私が思いつくことはWindowsアプリぐらいです。最近、C言語によるLinuxのネットワークプログラミングという本が出てきたのですが、あれはどういうものでしょうか。 また、当方は自宅サーバをよくいじる方なので、C言語は必要になりますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> C言語って生産性が悪くて作りたくても作れないこと C言語があれば、コンピュータ上で実行できることなら「何でも作れます」が、「現実的には作ることが無茶」なことも非常に多いことになります。 正規表現などは基本的になく、文字列処理がPerlやPHPなどと比較して非常に手がかかります。 Windowsアプリも最近ではもうC#でほぼ十分です。サーバいじりが目的ならawk/perl/python/bashあたり使えれば大概の環境で困りませんね。 システムに近いところを触りたい・OSを知りたい などの意志でないなら、敢えてC言語を触る必要もないかも知れません。 プログラミング言語を追求するという目的なら、SchemeとかHaskellとかPrologとか学んだ方が視界が広がります。 実はプログラミングを行うに当たってはOSを知る必要もあって、その意味ではC言語をやって損しないのですが、どうもプログラミング「言語」を追求したいと聞くと、言語的に異なるパラダイムを持つものを知って欲しく思ってしまいます。 ネットワークプログラミングの本は私は知りませんが、おおかたntolとかgetaddrinfoとかそういうのでしょう。 Python等はOSの上に自身のフレームワークという層をひとつ噛ませて実行しているため、OSで何が起きているのか分かりません。C言語ではその層が存在しない状態で動かすことが出来るため、何が起きているのかよく分かります。 ネットワークプログラミングはそういうものの代表です。PHPやPythonなどでは「このポートでサーバ動作をする」みたいな関数が準備されていて、それを利用するだけで簡単にサーバを作ることができます。C言語であれば、ソケット開いてバインドしてリスンして名前解決してバイトオーダ変えて、と色々なことをしなければ通信することが出来ません。 こういうものは一度体験するとコンピュータに対する理解が深まります。しかし二度目以降はプログラムの動作速度以外に得るものはなくなります。 その程度のものです。 質問の雰囲気からすると、あまりC言語をすすめる気にはなりません。 プログラミング自体に対して好奇心をお持ちなら、自力でもうちょっとがんばってみてください。Write Great CodeとかCode Completeあたり読んだりしてはどうですか。

noname#139165
質問者

お礼

ご回答ありがとうございます。

その他の回答 (4)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.5

>C言語で個人の趣味では何が出来ますでしょうか。 OS、コンパイラ、インタプリタ、Windowsアプリ、Linuxアプリ、ゲーム、マイコンのプログラムでも何でも作れます。 >プログラミング言語をさらに追求したいので、これからC言語を学びたいと思いますが、C言語って生産性が悪くて作りたくても作れないことはありますでしょうか。また、将来性はどうでしょうか。 Windowsアプリに関しては生産性が悪いと思います。将来性という意味なら、C++の方がメインになって来ていますね。ただ、Cでないといけない場面もあります。趣味の範囲でいうなら、必要なら新しい言語を覚えれば良いんじゃないでしょうか。 >最近、C言語によるLinuxのネットワークプログラミングという本が出てきたのですが、あれはどういうものでしょうか。 文字通りの本です。C言語でネットワークプログラミングを学ぶための本ですね。WWWサーバのapacheとかもC言語で書かれていますので、自分でサーバを作りたいとか、WEBクライアントを自作したいとか、そんな事の初歩を勉強するための本です。 >また、当方は自宅サーバをよくいじる方なので、C言語は必要になりますでしょうか。 まず有り得ませんが、必要以上にカスタマイズしたいなら必要になってくるでしょう。最新版にするためにmakeを自分で始めるとC言語の知識があるに越したことはありませんので。

noname#139165
質問者

お礼

ご回答ありがとうございます。

回答No.4

一応、PCアプリやドライバーの開発から家電製品の制御までやってるなんでも屋です。 >C言語って生産性が悪くて作りたくても作れないことはありますでしょうか 「生産性」と「作れない」は別物です。 その「生産性」を上げるための仕組み(関数)を作ること自体がC言語にはできますから。 >個人の趣味では何が出来ますでしょうか。 やる気になれば何でも。 質問者さんが今使用している、携帯、デジカメなどの家電製品の制御もC言語で組まれている場合が多いですよ。

noname#139165
質問者

お礼

ご回答ありがとうございます。

noname#111181
noname#111181
回答No.3

SE歴20年の者です。 かつてCコンパイラの日本語インプリメントした経験がありますが、いまや、C言語は縁の下の力持ちという役回りで、当時より利用者人口が増えているように感じます。 PHP、Rubyといった高級スクリプト言語はCで書かれていますし、LinuxそのものもCで書かれてます。各種デバイスドライバも、たいていCで書かれています。 「自宅サーバ」のOSが何か分かりませんが、Linux系でしたらCは必須です。 逆に、UIを書くのは苦手です。 Windowsひたら、コア処理部分はVisualCで書いて、UI部分をVisualBASICで書くということはよく行われます。 ロボットや自動車の制御プログラムもCが多いです。 個人的にはロボットの制御プログラムに興味があります。

noname#139165
質問者

お礼

ご回答ありがとうございます。

  • buriburi3
  • ベストアンサー率44% (353/792)
回答No.2

WindowsアプリはMFC無いと苦しいですからC++の方がやりやすいです。 Win32API直叩きならCでも平気ですがMFC(またはそれに類するAPIが)無いと色々と面倒です。 「C言語によるLinuxのネットワークプログラミング」みたいな本は20年以上前から存在します。 バークレーSocketを使ったTCP/IPまたはUDP/IPを使用したアプリケーション層での通信プログラムの作り方です。 httpやメール/FTPなどの全ての通信サービスの基礎です。 通信系を弄るならマルチスレッドの知識も技術も必要になります。

noname#139165
質問者

お礼

ご回答ありがとうございます。