質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.06%

C言語で面白い事ありますか?

受付中

回答 11

投稿

  • 評価
  • クリップ 4
  • VIEW 4,934
退会済みユーザー

退会済みユーザー

最近C言語を改めて勉強し直しているんですが、面白い事って何かありますか?
普段はWebアプリを高水準言語で作成しています。こっちでは面白サービスを作るのが目的ですが、Cでも目的として面白いものが作りたいです。

抽象的な質問で申し訳ないのですが、自分が面白いと持ったのはソケット通信です。自分でサーバを作ってて立てて通信させる。という単純なものでしたが面白く感じました。
ですが、あまり目的がないように感じられました。

何か目的をもって取り組みたいのですが、C言語に詳しい方、Cならこんなことが出来るとか、おもろいことがあれば教えていただきたいです。よろしくお願い致します。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    2016/06/20 00:26

    こちらの質問が他のユーザから「問題・課題が含まれていない質問」という指摘を受けました
    teratailでは、漠然とした興味から票を募るような質問や、意見の主張をすることを目的とした投稿は推奨していません。
    「編集」ボタンから編集を行い、質問の意図や解決したい課題を明確に記述していただくと回答が得られやすくなります。

回答 11

+6

面白いかどうかはわかりませんが、 IOCCC というものがあります。公式サイト(英語)


投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/19 18:34

    私は、理系ではないのに、C言語と関わったお陰で、組み込み系のエンジニアと画像処理モニター表示やデータベースに関わるプロジェクトに加わることが出来ました。
    組み込み系のエンジニアには悪い印象はありませんが、データベースの操作も勉強すると、仕事に幅が産まれるのかもしれません。
    私は文系で、組み込み系のエンジニアには絶対なれないですが、これから先は業務系のエンジニアと組み込み系のエンジニアが協力して新しい世界が成立すると、互いに面白くなると期待しています。
    私には組み込み系のエンジニア技術はわかりませんが、データベースを勉強するなら、マイクロソフトのアクセスを土日に専門学校で勉強することをオススメします。
    それにプラスしてWeb開発の基本的なhtml,css,javascriptを勉強して自宅でWebサイトを自作するのです。C言語の業務系のプログラムは証券会社やセキュリティの厳しい分野で採用されていたので、規模の大きなプロジェクトに参加出来るチャンスもあるかもです。
    わたしは、C言語からオラクルへの移植も経験しました。
    C言語の面白さはC言語を採用している企業にあるのかも知れないです。
    あいまいな回答でごめんなさい

    キャンセル

+5

身も蓋もないですが、「Cが」面白い、ということはないかと思います。得手不得手はありますが、今時の高水準言語でできないことは、まずありません。OSですら、その気になればJavaで書くことも十分に可能です。

では、なぜ、Cは使われ続けているのでしょうか。他の方々が指摘する特徴

1. 小回りが利く
2. 高速に動作する
3. ライブラリが多い

は、確かに事実ですが、決定的な要因ではないと思います。本当の理由は、

4. 使う人が多い
( http://qiita.com/tadnakam/items/0f724e7cb0f3a0f0f64f )

からです。私は、Cの最大のメリットが、多数人からレビューを受けられることだと考えています。

本当のところ、Cは面白いのです。それは事実です。面白さは、言語そのものだけでなく、コミュニティに求めてもいいと思うのです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/27 18:36

    「OSですらその気になればJavaで書くことも十分に可能」というのはさすがに言い過ぎではないでしょうか。
    最低限必要な部分(たとえば、IPLなどはJavaで書くことは不可能)とJavaVMを実装すれば、「OS」のほとんどの部分をJavaで作ることは可能かもしれません。
    しかし、JavaVMを実装するために大量のAPIが必要になり、おそらくJavaVM及びそのためのAPIがコードのほとんどを占めてしまいます。
    そのため、「JavaでOSを書く」というのはさすがに無理がある気がします。
    「Cの面白さ」とは関係ないですが、気になったので投稿しました。気分を悪くさせてしまったらすみません。

    キャンセル

+3

普段Webアプリを作っているなら、それらの言語向けのライブラリをCで作るのもいいかと思います。あまり知られていないけどとても有用なC/C++で書かれたライブラリをPythonやRubyから使えるようにして、pipやgemで入れられるようにすれば、一躍有名になれますよ。

ライブラリなんてよくわからないって場合でも、普段のWebアプリでやけに重い部分をCで書き直すなんてすると、実用的かつ面白いかも知れませんね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

目的をもって勉強ということですので、
高水準言語に慣れていてスレッドの理解があるのでしたら、
C言語でマイクロスレッド(Fiber)の自作に挑戦するのはどうでしょう?

プログラムカウンタや、スタックポインタの理解に役立つと思います。

将来的にどういった環境で開発していても
このあたりの基礎知識は、理解しておいて損は無いです。

また、自作し最適化されたマイクロスレッドは
一般的にAPIが提供するものより高速なものに仕上がるケースが多いので
あなたが将来関わる開発において切り札の1枚となるような
実用性の高いものを目指してみてはいかがでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

楽しそうな話題が上がっているので、私も。

ファームウェアをC言語で書いて制御するってマジ楽しいと思います。
ここでもラズベリーパイって良く見かけますね。このようなハードが安いし、開発ツールも事実上無料と言う幸せな時代です。

ハードウェア制御に興味がない時は、Windows SDKを直接制御して簡単なWindowsアプリを作り、Windowsの基本的な仕組みが理解するのも有用ですね。メッセージ・ループとかですね。

また、LinuxならLinuxのコードを読むってなかなか歯ごたえがありますよ。OSの基本的な仕組みを理解でき、ものすごく力が付くと思います。
ついでにC++の有り難みが身にしみます。C言語でバリバリ「仮想関数」を使っていますから。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

C言語と高水準言語を比較して、メリットを考えた時にざっと思いついたのは以下です。

  • 処理速度を速くできる( 高水準言語で行われている冗長な処理を省ける。コンパイラが洗練されている。 )
  • H/Wの機能を使える( ソケット通信はこの一種だと思います。 )

OSがC言語で書かれている事が多いのもこの辺りが要因と考えています。OSのコードを読んだり、あわよくばパッチを送ることを目的にすることも出来ると思います。

逆説的ですが、普段高水準言語でやれている事をC言語でやろうとすると、こんなに面倒なんだという事を理解して、高水準言語の良さを知るとか。

最終的には何を面白いと思うか次第になると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

いろいろな言語処理系は大抵Cで書かれています。
そっち方面に興味がおありでしたらCはとても面白いと感じると思います。

また、Androidアプリを作るなら普通Javaですが、Qt という開発環境では
C (C++※)でAndroidアプリが作れます。
Javaの様に、様々なプラットフォーム向けのアプリがC(C++)で簡単に作成できます。

※「よりよいC」としてC++を選択するのは良いことです。
C++はCの改善点を多く含んでおり、はじめてCに入門する方でもコンパイラは
C++を使う事をおすすめしたいです。C++だからといって OOP
(オブジェクト指向プログラミング) しなければいけないとか、
なにか難しい書き方を覚えなければいけないとかはありません。
C++で普通にCのコードを書いてくださいb

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

Cを言語として捉えるなら他の言語よりもよりハードウェアに近い制御が出来る事でしょう。
もともとアセンブラとの親和性が高いので、他の言語に比べてより低位の部分を動かす事が出来ます。
最近の高級言語はこの低位の部分を考えなくて良いようにライブラリ等で提供されていますね。

私はC言語が一番好きですが、それはファームウェアという分野で開発しているからだと思います。
PCやスマホ上で、すでに用意されたライブラリを使って作る場合は、言語はぶっちゃけ何でも良いです。

しかしファームウェアの世界は「機器を直接制御する」ことができるので、この世界の楽しさは
PCやスマホには無い楽しさがあります。マイコンを直接動かし、LEDを点けたり音を出したり
すべて一から作る事が出来ます。
それにはC言語が最適です。この業界では必須言語と言っても良いでしょう。

「言語の楽しさ」よりも「制御する楽しさ」がこの世界にはあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/11/07 22:35

    Cとは関係ないかもですが・・・マイコン制御は楽しいですねd^^
    TSSもどきのOSならすぐ作れるし(一度で完結する処理ならレジスタ退避すら要らない)、実行キューすらなくても、タスクを登録すればちゃんと処理が動きます・・・v^^

    キャンセル

  • 2015/11/09 16:20

    RTOSを使うと一段と楽しくなりますよね!
    逆に一度使っちゃうと戻れませんが(笑)。

    キャンセル

0

ruby から C/C++ で作成機能を呼び出すことができます。
ruby では作りに悔いが、C/C++ ではすでに実装されている、作りやすいといったものを ruby, java, pho, ...  などから呼び出せるようにして、web アプリに機能追加してみてはいかがでしょう。

- C++で実装した class を rb++ を使って、ruby 拡張ライブラリにして、ruby から呼び出してみる http://qiita.com/kasei-san/items/e76c4cbee5a0aa467433
- BundlerでCのソースを含んだGemは簡単に作れる http://qiita.com/ymmtmdk/items/c2a9f233eeb33e5d18e2

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

今の若いもんわ!
CPUに直接命令を与えて動かす楽しみをわかってない(--;

それって理系じゃなくて文系の仕事じゃぞ?

まぁOSがある今ではマイコン以外は直接ってのはムリでAPI叩く程度だけどさー。

せめてメモリのポインタいじくり回す醍醐味をわかってくれたらのぅ。

高級言語やOSに守られた現代のプログラマはコンピュータの本当に楽しいとこを知らずに不憫じゃのう..

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

面白い基準は難しいですが、
C言語は、LinuxやUnixなどのOSの開発言語ですので
OSのソースコードをみるのも面白いと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る