最近C言語の勉強をはじめ、高橋麻奈さんのやさしいCをやりました。
構造体とかポインタなどの機能についての基本的な知識は得ることができましたが、それで何ができるのか分かりません。
もちろんコンソールアプリケーションしか作れない言語ではありませんよね。
具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。
あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
こんにちは。
具体的にどのようなことができるのか、それを作るためにはどのような知識が必要なのか教えてください。
コンピュータ・プログラミングについてC言語で開発できないソフトウェアはほとんどないと思います。
一部アセンブラを使ったり言語の標準ではなく拡張機能をつかったりすることはありますが。
Androidの基本部であるlinuxのカーネルはC言語で記述されています。他にもC言語で記述されているソフトウェアは星の数ほどあります。
あとそれについてのおすすめの書籍、サイトなどがあればそれもお願いします。
だがしかし、アセンブラと同様に既にC言語も適用される範囲はかなり限定されつつあります。
小型マイコンやOSのカーネルのプログラムが主ではないかと思います。残りは元々C言語で書かれていて、それをC++やその他の言語へ移植するのが厳しいためそのままC言語でメンテナンスしているものでしょう。
つまり何が言いたいかというと、C言語を目的として勉強することはあまりお勧めできませんのでお勧めの書籍も「ない」ということです。
なお、他の言語を勉強する取っ掛かりとしてC言語を勉強することには賛成です。かなり多くの言語の構文へ影響していますし、ポインタの概念は非常に重要な概念ですから、その学習に注力できる点で優れています。
投稿2018/07/18 07:42
総合スコア23272
0
もちろんコンソールアプリケーションしか作れない言語ではありませんよね。
理論上は、環境に応じたAPIを呼び出すことで、GUIアプリを作ることも可能です。ただし、
- GUIライブラリはC言語の標準ではないため、環境ごとのライブラリ、あるいはクロスプラットフォームのライブラリを用意して書く必要がある
- (GObjectのようにC言語を魔改造レベルで拡張してオブジェクト指向化して使っている例もあるけど)オブジェクト指向でないC言語では、ウィンドウシステムの扱いが煩雑になる
- GUIアプリケーションで決まったウィジェットを描画する部分はパフォーマンスが要求されるわけでもなく、スクリプト言語やC#のようなツールのほうが生産性が圧倒的に高い
などの事情もあって、「C言語でGUIアプリケーションを作る」ということはあまり積極的に行われるものではありません。
投稿2018/07/18 05:30
総合スコア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
総合スコア62
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
なんでもできる言語なのでやりたいことを直接的に書いたほうが答えを得られると思います
Cの使い方はわかったら次はフレームワークやライブラリの使い方を勉強したほうがいいです
ゲームが作りたいのであれば、libsdlを使うといろいろな環境でグラフィックや音を扱うことができます
サーバーを作りたいのであればbsd socketですかね
webやandroid等のシステムを作りたいのであればC言語で作るのはやめたほうが良いと思います(もっと簡単に作れる言語が他にありますので)
他の言語を使ったからといってC言語を全く使えないというわけではなくC言語を使わないとできないこともあるので
一部をCで書くということもできます(javascriptではwasm、c#ではC言語で作ったDLLライブラリを呼び出すなど)
WEBやGUIなどの人間が直接触ることが多い箇所でC言語を使う場面は最近はめっきり減ってメモリ管理やモジュール管理について人間が楽ができる他の言語でやることが多いと思います。
投稿2018/07/18 05:50
総合スコア71
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。