LINEスタンプ制作代行サービス・LINEスタンプの作り方!

お電話でのお問い合わせ:03-6869-8600

stampfactory大百科事典

C言語

C言語(シーげんご)は、1972年にAT&Tベル研究所のデニス・リッチーが主体となって開発したプログラミング言語である。英語圏では単に C と呼んでおり、日本でも文書や文脈によっては同様に C と呼ぶことがある。ホスト環境やプログラムの内容によっては、以下に対して脆弱性対策を施しても実行速度の低下が無視できる程度であることも多く、欠点とみなされることも少なくない。 プログラムC言語の プログラムには、ホスト環境を前提とするか、フリースタンディング環境を前提とするかで、方向性が異なる。入門書によって趣が異なるいくらかの方向性が存在する。ホスト環境を前提とする場合には、入出力の利用により、動作をすぐに確かめることができる。標準Cライブラリ (codice_6)のcodice_7関数を利用したものを例示する場合、以下のようなものがある。ここでサンプルソース中の「codice_8」は改行を表す。なお、codice_7 関数は変数や書式化された文字列などが表示できる比較的高機能な出力関数である。C言語として可変引数である特殊なmainとprintfを使っていることにより、C言語の関数プログラミングに対する誤解を生む原因にもなっている。C言語は、 ベル研究所のケン・トンプソンが開発したB言語の改良として誕生した(#外部リンクの「」参照)。1973年、トンプソンとUNIXの開発を行っていたデニス・リッチーは B 言語を改良し、実行可能な機械語を直接生成するC言語のコンパイラを開発した。 は大部分をC言語によって書き換え、C言語のコンパイラ自体も移植性の高い実装の に置き換わったこともあり、UNIX上のプログラムはその後にC言語を広く利用するようになった。アセンブラとの親和性が高いために、ハードウェアに密着したコーディングがやりやすかったこと、言語仕様が小さいためコンパイラの開発が楽だったこと、小さな資源で動く実行プログラムを作りやすかったこと、UNIX環境での実績があり、後述の といった解説文書が存在していたことなど、さまざまな要因からC言語は業務開発や情報処理研究での利用者を増やしていった。特にメーカー間でオペレーティングシステムやCPUなどのアーキテクチャが違う 環境では再移植の必要性がしばしば生じて、プログラムをC言語で書いてソースレベル互換を確保することが標準となった。1980年代に普及し始めたパーソナルコンピュータは当初、8ビットCPUでを搭載していたものも多く、が普及していたが、80年代後半以降、16ビットCPUを採用しメモリも増えた( 非搭載の)パソコンが主流になりだすと、2万円前後の安価なコンパイラが存在したこともあり、ユーザーが急増した。8ビットや8086系のパソコンへの移植は、ポインタなどに制限や拡張を加えることで解決していた。1990年代中盤以降は、最初に学ぶプログラミング言語としても主流となった。GUI環境の普及とオブジェクト指向の普及により 、、、、、などの言語の利用者も増加したため、広く利用されるプログラミング言語の数は増加傾向にある。現在でもJava, C#, C++などC言語の後続言語を含めて、C言語は比較的移植性に優れた言語であり、業務用開発やフリーソフトウェア開発、 などの実装が困難な組み込みなどの小規模のシステムで、幅広く利用されている。リッチーとカーニハンの共著である「」1978年を出版。その後標準ができるまで実質的なC言語の標準として参照。C言語は発展可能な言語で、この本の記述も発展の可能性のある部分は厳密な記述をしておらず、曖昧な部分が存在していた。C言語が普及するとともに、互換性のない処理系が数多く誕生した。これはプログラミング言語でしばしば起こる現象であり、C言語固有の現象ではない。そこで、ISO/IEC JTC1と は協同でC言語の規格の標準化を進め、1989年12月に が を、1990年12月に ISO が を発行した。ISO/IEC 規格のほうが章立てを追加しており、その後 も ISO/IEC 規格にならって章立てを追加した。それぞれ C89( C89)及び ISO/IEC C90 という通称で呼ぶことがある。日本では、これを翻訳したものを日本工業規格『JIS X3010-1993 プログラム言語C』として、1993年10月に制定した。最大の特徴は、 と同様の関数プロトタイプを導入して引数の型チェックを強化したことと、codice_18 や codice_19 などの新しい型を導入したことである。一方、処理系に依存するとするに留めた部分も幾つかある(codice_20 型のビット幅、codice_21 型の符号、ビットフィールドのエンディアン、シフト演算の挙動、構造体などへのパディング、等)。16bit/32bitCPUの両方に対応できるようにするため、定義しないことを決めている未定義、定義したもののどれにするかを決めていない未規定、処理系ごとに決めて文書化する処理系定義など、CPUとの相性による有利不利が生じないような規定になっている型の大きさは16bit/32bitCPUの両方に対応できるように決めている。バイト数は codice_22 演算子で取得し、最大最小値は codice_23 で参照することとしている。多くの処理系では codice_21 型は 8 ビット、codice_25 型は16ビットである。codice_20 や codice_27 はCPUのレジスタの幅などによって決めている。また API などの呼び出しには、ヘッダで codice_28 や codice_29 などと codice_30 で定義した型を使用して回避することがある。codice_21 型以外で符号を明示しない場合は codice_32(符号付き)にするかどうかも処理系。規格上には、BCPL・タイプの一行コメント(「codice_33」)は無いが、オプションで対応した処理系も多く、gcc や Clang は GNU 拡張 codice_34 でサポートしている。C89には、下記の追加の訂正と追加を行った。1999年12月1日に、ISO/IEC JTC1 SC22 WG14 で規格の改定を行い、 の機能のいくつかを取り込むことを含め機能を拡張し を制定した。この版のC言語の規格を、通称としてC99と呼ぶ。 は C99 に完全準拠していると公称している。 C コンパイラ(gcc)は C99 にほとんど対応しているが一部未対応部分も残っている。日本では、日本工業規格 JIS X 3010:2003「プログラム言語C」がある。主な追加機能:C99は下記の訂正がある。2011年12月8日に改定された"ISO/IEC 9899:2011"(通称 C11)が現在の最新規格である。gcc や Clang などが部分的に対応している。改定による変更・追加・削除機能の一部を以下に記述する。C11 は文字列(UTF-32、UTF-16、UTF-8 の各符号化方式)に標準で対応している。そのほか、codice_48 式、 と同様の無名構造体・無名共用体、排他的アクセスによるファイルオープン方法、quick_exitなどのいくつかの標準関数などを追加した。また、codice_49 関数指示子を追加した。codice_49は従来各処理系毎に独自に追加していた(たとえば gcc では codice_51)ものを共通化したもので、「呼び出し元に戻ることがない」という特殊な関数についてその特性を示すためにある。codice_14 文を持たない関数という意味ではなく(規格では codice_14 文を持たなくとも、関数の最後の文の実行が終われば制御は呼び出し元に戻る)、この指示が意味するものは、当該の関数、ないしその内部から呼び出している関数の実行中に、必ず codice_54 や codice_55 を実行したり、例外などで終了する、あるいは、codice_56 による大域ジャンプで抜け出す、継続渡しスタイル変換されたコードである、などのために、絶対に制御が呼び出し元に戻らない、という関数を指示するためにある。そのような関数は、スタックに戻りアドレスを積む通常の呼び出しではなく、スタックを消費しないジャンプによって実行できる。アラインメント機能、codice_57 型やC言語ネイティブの原始的なスレッド機能などを省略可能な機能として規格に組み込んだ。また、C99 では規格上必須要件とされていた機能のうち、複素数型と可変長配列を省略可能なものに変更した。これらの省略可能な機能は C11 規格合致の必須要件ではないので、仮に完全に規格合致の処理系であっても、対応していないかもしれない。C11 規格では、省略可能な機能のうちコンパイラがどれを提供しているかを判別するために利用できる、テスト用のマクロを用意している。codice_58 関数は廃止。gcc, clang, Visual C++, C++Builderなど著名な4つがC言語と を一つの処理系で対応している。C言語とC++の共通部分を明確にし、二つの言語の違いに矛盾が生じないようにすることが課題になっている。その他にも、OpenGLシェーダー言語であるGLSL、DirectX(Direct3D)シェーダー言語であるHLSL、OpenCLカーネル記述言語であるOpenCL-Cなど、C言語の文法的特徴を取り入れた派生言語やDSLが多数存在する。2015年現在、初心者向けのイラスト入り入門書やサブルーチンのサンプル集の他、組み込み機器の制御や科学技術計算など目的を特化した専門書なども多数ある。便利な機能の説明はあっても、学習者の水準や目的にあった本を見つけるのは必ずしも容易でない。オープンソースのCコンパイラ、OSも大規模なものがあり、直接読み始めるのは困難になっている。オープンソースのOSの小規模なものから始めるとよい。

出典:wikipedia

LINEスタンプ制作に興味がある場合は、
下記よりスタンプファクトリーのホームページをご覧ください。