c言語についての質問です。
組み込みの仕事がしたいのでc言語やっています。
本題ですが、私はドットインストールで講座を見ながら練習しているんですが、
ドットインストールの講座がどうも中途半端に終わったような気がするんです。
https://gyazo.com/89c918f9763a0458571c2ff124e5ea75
初心者なので気がするだけなのかもしれないので質問しました。
実際、何をどのぐらいできたらc言語ができることになるのでしょうか。
できるようになるまでの経過とともに説明頂けると幸いです。
ノートもとっていますが、勿論、実際にコードしgccで実行しています。
授業はトータルで2回ぐらい聞いています。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
ドットインストールの動画をおおざっぱに見た感じでは、入門になっているかどうかすら怪しいレベルです。 あたりまえですが、合計で一時間にもならないような動画を見てきちんと理解できるということはありません。
また、ひとつのプログラミング言語を習得するということはプログラミングの大前提であって、言語がわかればプログラミングできるというような簡単な話でもありません。 あなたは日本語をあたりまえのように使っているでしょうが、日本語でなら医学論文のひとつでも書けるかといったらそんなわけはないですよね。 言語と一緒に、その言語で表そうとするものについての理解も必要です。
組込み分野であれば、それで制御する対象の特性などを知っていなければ言語だけわかっっていても何にもなりません。
一方で、日本語を使えるのが当たり前な日本人であっても日本語の文法・語彙を完璧に隅から隅まで知っている人もいません。 それで不便を感じることというのもそうありません。 C言語も同様に、何年もそれで仕事している人でも隅から隅まで知っているというわけでもないのです。
どういう基準でC言語を出来るといって良いのかというのは、ちゃんとした線引きが出来るものではなく、人によって、場合によって異なってしまいます。 しかし、あえて最低限度の基準を設けるとすれば、何か現実的な問題に対処するためのプログラムを作ることが出来たなら、最低限の基準は満たしていると考えてよいのではないかと考えます。 現実的な問題というのは、言語の入門書のサンプルにあるようなものではなくあなたが日常の中で「こういうソフトがあったらいいのに」と思うようなもののことです。
それが出来るようになる道筋としてははっきり言って千差万別で、これも人によって言うことが違うと思います。 個人的には、定番の書籍の一冊くらいはちゃんと買った方が良いと思います。 質問サイトにある質問には前提がまるでわかっていないようなものも多く、それは何かに躓くたびにググってなんとかしてきたような人で、ちゃんと基礎から積み重ねていないことでそうなるのです。 体系的にまとまっている本は学習効率を左右する重要な存在です。 入門者向けの書籍であればせいぜいが二千円とか三千円くらいの安価な値段で買えますので、良さそうな本を買うべきです。
ただちょっと、私が実際に学んだのはずいぶん前のことなので、具体的にこんな本が良いという推薦は他の回答者の方に譲ります。
投稿2018/04/30 18:11
総合スコア5444
0
第一に
C言語というのはOS(WindowsとかMacとかLinuxとか)によって、大幅に内容が変わってしまうものです。
(LinuxとMacは似ていますが)
また、実装するプログラムの内容も、とっても幅広いです。
例として挙げると
- GUIアプリケーション(画面を表示する)
- サーバ用プログラム(Webサーバとかストリーミングサーバとか)
- 接続した機器を使用するためのドライバ(USBで接続したものの制御とか、組み込みもこの辺りです。)
そのため** C言語ができる ** というのは、たいてい
組み込みLinuxCができるよ!
とか
Windowsアプリケーションが作れます!
とか
ロボットの制御できます!
などなど
多岐にわたるものです。
そのため、ビジネス的に言えば、どのCができるようになったという自覚があれば、「できるようになった。」と言っていいのではないでしょうか?
組み込みの仕事がしたい
現状、組み込みはandroidなども含めLinux Cと呼ばれるものか、MISRA-Cと呼ばれる規格で作成されていることが多いと思います。(あくまで、個人的見解なので、間違っていたらご了承ください)
MISRA-Cは、できるだけOSにかかわらずCの標準的な機能のみで作ろうという規格です。
Linux Cに関しては、元々のOS本体をカスタマイズできることから、組み込みのような小さな機械の中で動かすのに適していることから採用が増えています。(androidはlinuxの1種です)
この辺りのことから、自分で今一度組み込みのCに関して調べてみるとよいと思います。追加で、何か聞きたいことがあるようでしたら、コメント欄などでもよいので是非。
投稿2018/04/30 18:06
編集2018/04/30 18:08総合スコア218
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/01 07:09
0
まず先に書いておきます。
質問者さんにとって
いい学習の機会選択をするため
参考程度に読んでください。
回答
何をどのぐらいできたらc言語ができる
これはよく言われるのは、ポインタの理解、構造体を使ったデータ構造ができること、
値渡しと参照渡しの違いを理解して関数を作り、それを元に効率よくプログラムを作れること、などあります。
また有名なH氏のC言語入門のビギーナー編から応用編まで理解していること、など特定の書籍を例に挙げる人もいます。新·明解C言語・・・もそうですね。
質問の趣旨からそれるかもしれませんが
組込み現場の「C」プログラミング 基礎からわかる徹底入門
こちら
昔、職場や学生の間で話題になった本です。実際にCやマイコンの理解がすすんだ、
実際に組み込みの現場の作業のこともわかった、など新人さんや現場の評判でした。
同じシリーズで こちら もあります。一度書店でのぞいてみてください。
投稿2018/04/30 17:50
総合スコア1195
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
maikelさん、
"c言語についての質問" とのことですが、
組み込みの仕事がしたいのでc言語やっています。
と書かれてますので、まず、組込みの方のお話をします。
ところで、炊飯器も、テレビも、デジカメも、3Dプリンタも、Android携帯電話も、自動車も、ハードディスクやSDカードの中にも、いたるところで、ソフトウェアが動いてます。
みんな、"組込み"と呼ばれる機器ですが、だいぶ、環境が違うと思いませんか?
maikelさんは、どのような組込み機器の開発をされたいのでしょうか?
組込みエンジニア、と言われる人は、ハードウェア制御にかかわってくるソフトウェアの開発をしていると思います。なので、ある程度のハードウェアの知識、それを制御するソフトウェアの知識が必要になります。
"組込みエンジニア"募集します!、というと、以下のような知識があることが、期待されてるんじゃないかな、と思います。(特定の分野に偏っていると思うので、参考程度に.)
-
ハードウェア周り
o 基本的なハードウェアの構成・動作(CPU、メモリ、DMA、タイマ)
o 基本的なインターフェース(USB, I2C, SPI, GPIO, CAN, MIPI等々)
o チップのデータシートが読める
o 回路図(Schematics)が読める -
ソフトウェア周り
o システムの状態や遷移の概念、管理、実装方法
o 割り込み処理
o 一般的なリアルタイムOSの基本知識、使い方
o (スタートアップ処理(CPUが起動してから、main関数に来る当たり))
o (コンパイラ・リンカ・Makefile ..の基本知識)
このようなバックグラウンドの知識があって、要求される仕様を元に、システム全体の制御を、プログラミング言語で実装していく、、というような感じですよね。
ということで、
実際、何をどのぐらいできたらc言語ができることになるのでしょうか。
↑のような知識に比べたら、C言語の知識ってのは、それほどでもないんじゃないかな?? と思います。
Matlabというモデルベースのツールでアルゴリズム設計をしたら、組込み用Cコードを生成してしまう、なんてのもありますし。
たいてい、"C言語を使う"、ってのは目的でなく、手段のひとつなので、専門知識や経験のほうが、重要なのではないか、と思います。
できるようになるまでの経過とともに説明頂けると幸いです。
学生さんであれば、工学部、電気・情報系の大学へ行くのをおすすめしますが... (私も学生時代、そういうのが得意な友人たちから、いろいろ学びました。。。授業???.. あまり...)
いまは、インターネットで調べられることも多いので、独学でやれなくもないと思いますが、実際のハードウェアを使って、組込み機器の開発をされている会社・チームなどに所属して、エキスパートの人のワザを見る、というのがいいと思います。
投稿2018/05/01 07:07
総合スコア1825
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/30 20:31
2018/05/01 01:27