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

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

ただいまの
回答率

90.76%

  • C

    3451questions

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

  • MinGW

    42questions

    MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。

c言語の習得までについて

受付中

回答 5

投稿 編集

  • 評価
  • クリップ 3
  • VIEW 410

maikel

score 37

c言語についての質問です。
組み込みの仕事がしたいのでc言語やっています。

本題ですが、私はドットインストールで講座を見ながら練習しているんですが、
ドットインストールの講座がどうも中途半端に終わったような気がするんです。
https://gyazo.com/89c918f9763a0458571c2ff124e5ea75

初心者なので気がするだけなのかもしれないので質問しました。
実際、何をどのぐらいできたらc言語ができることになるのでしょうか。
できるようになるまでの経過とともに説明頂けると幸いです。

ノートもとっていますが、勿論、実際にコードしgccで実行しています。
授業はトータルで2回ぐらい聞いています。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 5

+6

ドットインストールの動画をおおざっぱに見た感じでは、入門になっているかどうかすら怪しいレベルです。 あたりまえですが、合計で一時間にもならないような動画を見てきちんと理解できるということはありません。

また、ひとつのプログラミング言語を習得するということはプログラミングの大前提であって、言語がわかればプログラミングできるというような簡単な話でもありません。 あなたは日本語をあたりまえのように使っているでしょうが、日本語でなら医学論文のひとつでも書けるかといったらそんなわけはないですよね。 言語と一緒に、その言語で表そうとするものについての理解も必要です。

組込み分野であれば、それで制御する対象の特性などを知っていなければ言語だけわかっっていても何にもなりません。

一方で、日本語を使えるのが当たり前な日本人であっても日本語の文法・語彙を完璧に隅から隅まで知っている人もいません。 それで不便を感じることというのもそうありません。 C言語も同様に、何年もそれで仕事している人でも隅から隅まで知っているというわけでもないのです。

どういう基準でC言語を出来るといって良いのかというのは、ちゃんとした線引きが出来るものではなく、人によって、場合によって異なってしまいます。 しかし、あえて最低限度の基準を設けるとすれば、何か現実的な問題に対処するためのプログラムを作ることが出来たなら、最低限の基準は満たしていると考えてよいのではないかと考えます。 現実的な問題というのは、言語の入門書のサンプルにあるようなものではなくあなたが日常の中で「こういうソフトがあったらいいのに」と思うようなもののことです。

それが出来るようになる道筋としてははっきり言って千差万別で、これも人によって言うことが違うと思います。 個人的には、定番の書籍の一冊くらいはちゃんと買った方が良いと思います。 質問サイトにある質問には前提がまるでわかっていないようなものも多く、それは何かに躓くたびにググってなんとかしてきたような人で、ちゃんと基礎から積み重ねていないことでそうなるのです。 体系的にまとまっている本は学習効率を左右する重要な存在です。 入門者向けの書籍であればせいぜいが二千円とか三千円くらいの安価な値段で買えますので、良さそうな本を買うべきです。

ただちょっと、私が実際に学んだのはずいぶん前のことなので、具体的にこんな本が良いという推薦は他の回答者の方に譲ります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/01 05:31

    他の言語では電子書籍もよく使ってるんですけど、電子書籍ではだめですか?

    キャンセル

  • 2018/05/01 10:27

    もちろん電子書籍でもいいですよ。 体系的にまとまっている情報が大事という話なので。

    キャンセル

+2

まず先に書いておきます。
質問者さんにとって
いい学習の機会選択をするため
参考程度に読んでください。

 回答

何をどのぐらいできたらc言語ができる

これはよく言われるのは、ポインタの理解、構造体を使ったデータ構造ができること、
値渡しと参照渡しの違いを理解して関数を作り、それを元に効率よくプログラムを作れること、などあります。
また有名なH氏のC言語入門のビギーナー編から応用編まで理解していること、など特定の書籍を例に挙げる人もいます。新·明解C言語・・・もそうですね。


質問の趣旨からそれるかもしれませんが

組込み現場の「C」プログラミング 基礎からわかる徹底入門
こちら

昔、職場や学生の間で話題になった本です。実際にCやマイコンの理解がすすんだ、
実際に組み込みの現場の作業のこともわかった、など新人さんや現場の評判でした。

同じシリーズで こちら もあります。一度書店でのぞいてみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/05/02 02:45

    その本書店で探してみます。

    キャンセル

  • 2018/05/02 02:58

    参考になったようでよかったです。

    キャンセル

+2

 第一に

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/05/01 05:19

    linuxCは自分で使ったり練習したりすることは可能でしょうか。企業の製作ツールの値段に驚愕すること間違いなしみたいなことを言われたのですが。

    キャンセル

  • 2018/05/01 16:09

    linux Cというのは、maikelさんが使っている(と思われる)MingWがまさにそれです。
    MingWはWindows上でlinux Cを実行したり、コンパイルできるようにするものなので、そのままそれを使っていって、問題ないと思います。

    ハードウェアに実際に組み込んで練習をしてみたいというのであれば、Raspberry piやArduinoといった、ミニコンピュータを使用してみるのもよいと思います。秋葉原などに行けば、つなげる部品も売っていますし、教材も充実していると思います。本体が諭吉一枚で十分すぎるくらいの値段だったと思います。

    本やほかの部品も含めて、2,3万円あれば、事足りると思います。

    企業用の製作ツールというのが、ぴんと来ていないのですが、ソフトウェア製作に個人で使えるようにライセンスを出しているところも多いので、一人で試す分には自分は高すぎて開発環境が用意できないようなことはなかったです。

    キャンセル

+1

猫でもわかるプログラミングというサイトがお勧めです。
私はこれで習得しました。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

+1

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言語を使う"、ってのは目的でなく、手段のひとつなので、専門知識や経験のほうが、重要なのではないか、と思います。

できるようになるまでの経過とともに説明頂けると幸いです。

学生さんであれば、工学部、電気・情報系の大学へ行くのをおすすめしますが... (私も学生時代、そういうのが得意な友人たちから、いろいろ学びました。。。授業???.. あまり...)
いまは、インターネットで調べられることも多いので、独学でやれなくもないと思いますが、実際のハードウェアを使って、組込み機器の開発をされている会社・チームなどに所属して、エキスパートの人のワザを見る、というのがいいと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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

関連した質問

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

  • C

    3451questions

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

  • MinGW

    42questions

    MinGW(ミン・ジー・ダブリュー)は GNUツールチェーンのWindows移植版です。 ランタイムライブラリと開発ツールで構成されています。