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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

5回答

233閲覧

C言語って何ができるんですか?

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1グッド

1クリップ

投稿2018/07/18 05:19

最近C言語の勉強をはじめ、高橋麻奈さんのやさしいCをやりました。
構造体とかポインタなどの機能についての基本的な知識は得ることができましたが、それで何ができるのか分かりません。
もちろんコンソールアプリケーションしか作れない言語ではありませんよね。
具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。
あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。

aaaaaaaa👍を押しています

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

こんにちは。

具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。

コンピュータ・プログラミングについてC言語で開発できないソフトウェアはほとんどないと思います。
一部アセンブラを使ったり言語の標準ではなく拡張機能をつかったりすることはありますが。
Androidの基本部であるlinuxのカーネルはC言語で記述されています。他にもC言語で記述されているソフトウェアは星の数ほどあります。

あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。

だがしかし、アセンブラと同様に既にC言語も適用される範囲はかなり限定されつつあります。
小型マイコンやOSのカーネルのプログラムが主ではないかと思います。残りは元々C言語で書かれていて、それをC++やその他の言語へ移植するのが厳しいためそのままC言語でメンテナンスしているものでしょう。
つまり何が言いたいかというと、C言語を目的として勉強することはあまりお勧めできませんのでお勧めの書籍も「ない」ということです。
なお、他の言語を勉強する取っ掛かりとしてC言語を勉強することには賛成です。かなり多くの言語の構文へ影響していますし、ポインタの概念は非常に重要な概念ですから、その学習に注力できる点で優れています。

投稿2018/07/18 07:42

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

もちろんコンソールアプリケーションしか作れない言語ではありませんよね。

理論上は、環境に応じたAPIを呼び出すことで、GUIアプリを作ることも可能です。ただし、

  • GUIライブラリはC言語の標準ではないため、環境ごとのライブラリ、あるいはクロスプラットフォームのライブラリを用意して書く必要がある
  • (GObjectのようにC言語を魔改造レベルで拡張してオブジェクト指向化して使っている例もあるけど)オブジェクト指向でないC言語では、ウィンドウシステムの扱いが煩雑になる
  • GUIアプリケーションで決まったウィジェットを描画する部分はパフォーマンスが要求されるわけでもなく、スクリプト言語やC#のようなツールのほうが生産性が圧倒的に高い

などの事情もあって、「C言語でGUIアプリケーションを作る」ということはあまり積極的に行われるものではありません。

投稿2018/07/18 05:30

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。

今どきわざわざ開発効率の悪いC言語が選定されるシーンというのは限られていますが、最近流行りのIoTの世界ではハードの制約上Cを使わざるを得ないことが多いです。
私も昨年そういう開発に携っていましたが、メモリはそもそも32キロバイトしかありませんでしたし、消費電力を減らすためにCPUクロックを32kHzまで落とす場面もあり、JavaやC#はもちろんC++すら動かす余裕が無いため仕方無くC言語で開発していました。
そういうデバイス開発に興味をお持ちでしたらその分野ではC言語はいまも現役バリバリですので勉強する価値はあると思います。

その場合、

  • プログラムが動作する際CPUやメモリ等をどのように使っているのかというコンピュータの仕組みについての知識
  • UARTやI2C等の通信の仕組みについての知識
  • 抵抗・コンデンサ・インダクタ・トランジスタ等の役割がわかる程度の電気回路の知識

等々、C言語以外の知識が必要なように思います。

或いは、C#等の高級な言語で開発する上でもC言語の知識は有用ですので勉強しても無駄にはなりません。
これは後々必要になってから勉強しても良いのですが、最初に楽なものから入って後からしんどいもの・めんどくさいものを勉強するのは大変かも知れません。
C言語のめんどくささが当たり前の状態でJavaやC#に触れると
「え?今までのアレはやらなくていいの?」
という具合に楽に感じることが多いですが、逆は
「え?今までそんなことしなくてよかったのにC言語はいちいちそんなことしなくちゃいけないの?」
という捉え方になり最初にCを勉強するよりめんどくさく感じると思います。


  • CPU等各種ハードウェアに近い層のプログラムには興味が無い
  • 「どんなプログラムを書くか」より「何を作るか」の方がずっと大事だと思う

というのであれば、C言語の勉強以外に時間を使う方が有意義です。

投稿2018/07/18 16:35

illusionist

総合スコア62

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

なんでもできます。
が、これから学んでいくならC#にしなさい。

投稿2018/07/18 05:21

y_waiwai

総合スコア87747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

なんでもできる言語なのでやりたいことを直接的に書いたほうが答えを得られると思います

Cの使い方はわかったら次はフレームワークやライブラリの使い方を勉強したほうがいいです
ゲームが作りたいのであれば、libsdlを使うといろいろな環境でグラフィックや音を扱うことができます
サーバーを作りたいのであればbsd socketですかね

webやandroid等のシステムを作りたいのであればC言語で作るのはやめたほうが良いと思います(もっと簡単に作れる言語が他にありますので)

他の言語を使ったからといってC言語を全く使えないというわけではなくC言語を使わないとできないこともあるので
一部をCで書くということもできます(javascriptではwasm、c#ではC言語で作ったDLLライブラリを呼び出すなど)

WEBやGUIなどの人間が直接触ることが多い箇所でC言語を使う場面は最近はめっきり減ってメモリ管理やモジュール管理について人間が楽ができる他の言語でやることが多いと思います。

投稿2018/07/18 05:50

you21979

総合スコア71

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問