C言語とは?できること、初心者入門サイト、ソフト、使い方

スポンサーリンク
プログラミング言語

プログラミング言語 C言語について調べてみました。

スポンサーリンク

C言語とは

C言語は、現時点で最も使用されているプログラミング言語の一つです。

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。

 

C言語は、AT&Tベル研究所のケン・トンプソンが開発したB言語の改良として誕生した。

1973年、トンプソンとUNIXの開発を行っていたデニス・リッチーはB言語を改良し、実行可能な機械語を直接生成するC言語のコンパイラを開発した。UNIXは大部分をC言語によって書き換え、C言語のコンパイラ自体も移植性の高い実装のPortable C Compilerに置き換わったこともあり、UNIX上のプログラムはその後にC言語を広く利用するようになった。

C言語の特徴、できること

C言語はポインタを扱えることで、よりハードウェアに密着したコードを書くことが可能です。

また、ほぼすべての処理系に対応しているために、ほとんどのプログラムを記述することが可能です。

実際、例えば、UNIXのカーネルやシェルはC言語で記述されています。

  • 汎用性が高い。プログラムの自由度や、目的に応じた拡張が容易であるため、オペレーティングシステムやアプリケーションソフトウェア・ファームウェアの記述、デバイスドライバー開発や機械制御など、あらゆる分野に適応している。
  • 対応する機器の範囲が広い。パーソナルコンピュータはもちろん、自動車や家電の組み込み用マイコンからスーパーコンピュータまで、C言語を使用できるハードウェアは多様である。多目的性と、対応機器の多彩さのため、「コンピュータを使ってやること」は大抵、C言語で対応可能である。
  • 商用・非商用を問わず、採用ソフトウェア分野が広い。作成や使用のための補助的なソフトウェアが豊富である。
  • 機械語に変換するソフトなどの開発環境がCPUに付属していたり無償だったりするものもあるため、ライセンス料の支払いをしなくても使用が始められる。
  • 開発時期が古く、文法に機械語の影響が強く、複雑である。この欠点を補正するためのちに開発された新言語に比較し、記述することが多く、面倒で習得しにくい低水準言語である。
  • アマチュアからプロ技術者まで、プログラマ人口が多く、プログラマのコミュニティが充実している。C言語は使用者の多さから、正負の両面含め、プログラミング文化に大きな影響を及ぼしている。
  • 言語の適用先であるUNIXの場合、大抵のことがスクリプト言語・マクロプロセッサやフィルタやそれらの組み合わせで処理できるため、うまく分野の棲み分けができていた面があった。仕様規格・派生言語も多く幅広い領域への移植の結果、適切でない分野にC言語が使われている場合もある。
  • C言語は手続き型言語の側面と関数型言語の側面がある。コンパイラ言語とOSを念頭に設計している。アセンブラのコードと同じことを実現できるようなコンピュータ寄りの言語仕様になっている。低水準な記述が出来る高級言語とも、高級言語の顔をした低級言語と言うことがある。
  • Cコンパイラは、移植の容易性、自由度、実行速度、コンパイル速度などを追求した。代わりにコンパイル後のコードの安全性を犠牲にしている。セキュリティーの脆弱性や潜んだバグによる想定外の動作、コンパイラによる最適化の難しさがある。最適化するとコンパイル速度が遅くなるなどの欠点が生じることがある。自動車分野ではMISRA CというC言語の部分集合(subset)を定義して、C言語の弱点を補っている。
  • UNIXおよびCコンパイラの移植性を高めるために開発してきた経緯から、オペレーティングシステムカーネルおよびコンパイラ向けの低水準記述ができる。

C言語 初心者のための入門サイト

C言語を初心者が学ぶための入門サイトはいくつかあります。

以下にまとめました。

 

苦しんで覚えるC言語

総合目次 - 苦しんで覚えるC言語
総合目次 - 苦しんで覚えるC言語

 

C言語

C言語
C言語の学習サイトです。C言語入門や仕様の説明等があり、Cプログラミングが学習できます。ポピュラーなプログラミング言語であるC言語を学習して自由自在にプログラミングできるようになりましょう!

 

C言語入門

C言語入門 - 基本構文をサンプルコードとともに紹介! - Webkaru
C言語を基本構文をサンプルコードとともに紹介しています。

C言語のアプリ開発に必要なソフト

C言語の学習に必要なソフトは何でしょうか?

 

Windowsでのアプリケーション開発で、最もよく使われているのはVisual Studioでしょう。

本格的な開発を行うにはVisual Studioがおすすめです。

IDE (統合開発環境) とは?おすすめ、種類、プログラミング
IDEについて調べてみました。 IDE (Integrated Development Environment)、統合開発環境 とは IDEは統合開発環境のことです。 プログラム開発を行う際に使われるソフトウェアです。 統合開発環境(とう...

 

ブラウザだけで学習に必要な機能を網羅している以下のサイトもあります。

Online C Compile

http://www.tutorialspoint.com/compile_c_online.php

C言語を学習する本

C言語を学習するためのバイブルと言える本が、B.W.カーニハンとD.M.リッチーが書いた「プログラミング言語C」でしょう。

 

プログラミング言語C―ANSI規格準拠

中古価格
¥1から
(2018/8/7 13:07時点)

ただ、少し古い本であるために、新しい本では、「スッキリわかるC言語入門」がおすすめです。

スッキリわかるC言語入門

新品価格
¥2,916から
(2018/8/7 13:09時点)

C言語の演算子の意味

C言語の算術演算子、論理演算子、条件演算子、比較演算子、ビット演算子、べき乗の演算子、余りの演算子の意味について以下にまとめてあります。

C言語の演算子について
C言語の演算子について、算術演算子、論理演算子、条件演算子、比較演算子、ビット演算子、C言語のべき乗の演算子とは、C言語の余りの演算子とは、等について説明しています。優先度がわかる優先順位一覧もあります。

 

C言語 ポインタ、関数の使い方

C言語を学習するにあたって、最もつまずくのはポインタと関数の使い方でしょう。

以下にポインタと関数の使い方についてわかりやすく書いたサイトをまとめました。

 

ポインタのわかりやすい使い方

【C言語入門】ポインタのわかりやすい使い方(配列、関数、構造体) | 侍エンジニアブログ
この記事では「 【C言語入門】ポインタのわかりやすい使い方(配列、関数、構造体) 」といった内容について、誰でも理解できるように解説します。この記事を読めば、あなたの悩みが解決するだけじゃなく、新たな気付きも発見できることでしょう。お悩みの方はぜひご一読ください。

 

関数の作り方、呼び出し方

【C言語入門】関数の作り方、呼び出し方(宣言、引数、戻り値) | 侍エンジニアブログ
この記事では「 【C言語入門】関数の作り方、呼び出し方(宣言、引数、戻り値) 」といった内容について、誰でも理解できるように解説します。この記事を読めば、あなたの悩みが解決するだけじゃなく、新たな気付きも発見できることでしょう。お悩みの方はぜひご一読ください。

 

C言語でゲームを作る、サンプル

C言語は、汎用的なプログラミング言語であり、ゲーム開発にも適しています。

以下にサンプルプログラムの載っているゲーム開発に適したサイトをまとめました。

 

C言語サンプルプログラム

C言語サンプルプログラム(オープンソース)/佐伯英子技術士事務所(情報工学)IT専門家 エンジニア

 

C言語ゲーム制作入門

CooEl GAME [C言語ゲーム制作入門 概要]

 

新・C言語 ゲームプログラミングの館

https://dixq.net/g/index.html

 

C++、C#、Javaとの比較

C言語とC++、C#、Javaとの比較は、次の通りです。

C++とは?初心者が学習?できること、難しい?特徴、CやJavaとの違い
プログラミング言語 C++について調べてみました。 C++とは?C言語との違い C++は、文字通りC言語の拡張版で、元々はC言語にオブジェクト指向の概念を取り入れたものでした。 C++(シープラスプラス)は、汎用プログラミング言語の一つであ...
C# (Cシャープ) とは?入門、Javaとの違い、ゲーム、配列、本
プログラミング言語 C# について調べてみました。 C#(シーシャープ)とは C#はJavaと並んで現在、最も使われている言語の一つです。 C#(シーシャープ)は、アンダース・ヘルスバーグが設計(デザイン)したプログラミング言語であり、構文...
Java(ジャバ)とは?プログラミング言語、ダウンロード
プログラミング言語 Javaについて調べてみました。 Java(ジャバ)とは?意味、プログラミング言語 Javaは、狭義ではサン・マイクロシステムズが開発したプログラミング言語です。 一方、Javaは開発環境やJVM (Java Virt...

 

コメント

タイトルとURLをコピーしました