分C言語とはC言語は,高級言語のような可読性(プログラムの読みやすさ)や移植性(異なるOS上でも動作すること)の高さを維持しながら,アセンブラのように小回りが効くという優れたプログラミング言語です。C言語はif,forやwhileなどの制御文を用い,基本的にはgoto文を使用しない,構造化プログラミング言語のひとつでもあります。一般に,どのような言語を使ってプログラムを記述する場合でも,それを最終的に実行するのはそのコンピュータ内のCPUです。CPUが実行できるのはCPUの命令コード(機械語)のみです。CPUの命令コードは2進数のデータの羅列であるため,これを人間が直接プログラムするのは非常に困難であり,通常,そのようなことはしません。アセンブラ(アセンブリ言語)は,ニーモニックと呼ばれるCPUの命令コードとほぼ1対1に対応する文字列を使ってプログラムする方法で,これなら人間が直接プログラムすることが可能です。アセンブラはCPUのレジスタを操作する命令など,細かいレベルの操作まですべて記述しなければならないため,プログラムの意図として実際にやりたいこととアセンブラ上の命令との間にかなりの隔たりがあり,アセンブラのプログラムを人間が読んで内容を理解するのは困難です。言語自体がCPUの命令コードに依存しているため,CPUの種類ごとにアセンブラが存在し,あるCPUのアセンブラで記述したプログラムはそのCPUでしか動きません。これらの意味からアセンブラは低級言語と呼ばれます。これに対して,人間がわかりやすい変数を用いたり,if文などの制御文を使ったりできるのがFORTRAN,BASIC,COBOLなどの高級言語です。高級言語では,アセンブラとは違ってCPUの命令コードには依存しない形でプログラムを記述することができ,プログラムの記述内容を読んでそのプログラムの意図を理解することが容易です。ところが高級言語では,アセンブラでは可能だったメモリの直接アクセスなどの低レベルの操作ができません。したがって高級言語では,科学技術計算や事務処理計算などはできても,OSのようなシステムそのものをプログラムすることはできません。C言語は,高級言語と低級言語の両方の特徴を持った言語と考えられます。C言語は,もともとUNIX自体を記述するための言語として開発された言語であり,高級言語のようにわかりやすくプログラムできると同時に,低級言語のようにメモリの直接アクセスなどの低レベルの操作もでき,OSのカーネルやデバイスドライバといったハードウェアに密接なプログラムも記述することが可能です。いう意味では,C言語はCPUに依存しない汎用アセンブラであると言ってもよいでしょう。一般に高級言語は,コンパイラ型言語とインタープリタ型言語に分けることができます。コンパイラ型言語としてはC,C++,FORTRAN,Pascal,COBOLなどがあり,インタープリタ型言語としては,BASICやシェルスクリプト,Perlなどがあります。Javaは「バイトコード」と呼ばれる中間コードにコンパイルしたあと実行時にはインタープリタを使用するため,コンパイラ型言語とインタープリタ型言語の中間に位置すると考えられます(図1.1⁠)⁠。C言語のソースを実行できるようなインタープリタや,BASICをコンパイルできるコンパイラも存在するため,この分類は必ずしも絶対的なものではありません。実行時に必要コンパイラ型言語コンパイラ型言語では,プログラムを記述したソースファイルを,CPUが直接実行可能な実行バイナリファイルに変換することによってプログラムを実行します。ソースファイルを実行バイナリファイルに変換することを[コンパイル]と言い,コンパイルを行うプログラムのことを[コンパイラ]と呼びます。C言語のコンパイラなら[Cコンパイラ]と呼びます。ソースファイルを実行バイナリファイルに変換するという意味においてはコンパイラ型言語はアセンブラにも似ています。コンパイラ型言語はアセンブラとは違って,その変換処理は1対1の単純なものではありません。一般にコンパイラには,なるべく無駄のない,最適なCPUの命令コードに変換できるような高い性能が求められます。コンパイラ型言語は,インタープリタを使わずに実行バイナリファイルを直接実行できるため,プログラムを高速に実行することができます。実行バイナリファイルができてしまえば,そのプログラムがもともとC言語で書かれていたのかアセンブラで書かれていたのかということは関係なくなります。プログラムの実行には実行バイナリファイルのみが必要で,ソースファイルは実行時には必要ありません。このためソースを公開したくないプログラムでは,プログラムの開発者はコンパイル済みの実行バイナリファイルのみを配布することができます。コンパイラ型言語インタープリタ型言語インタープリタ型言語は,ソースファイルをインタープリタを通して直接実行するという方式の言語です。インタープリタ型言語では実行バイナリファイルは作成されず,[⁠インタープリタ]と呼ばれるプログラムがソースファイルを解釈しながらプログラムを実行します。インタープリタによるソースファイルの解釈は実行時に逐次に行われるため,プログラムの実行はコンパイラ型言語よりも遅くなってしまいます。インタープリタ型言語で書かれたプログラムを実行するには,そのソースファイルだけでなく常にインタープリタが必要ということになります。その一方でインタープリタ型言語には,コンパイラ型言語とは違って[ソースファイルを修正してもコンパイルの作業は必要ない]という特長があります。ソースファイルの修正を頻繁に行う場合や,プログラムの実行速度が多少遅くても問題にならない場合は,インタープリタ型言語の方が適しているとも言えます。インタープリタ著者プロフィール山森丈範(やまもりたけのり)「C言語はアセンブラを触っているうちに自然に覚えてしまった」というプログラマ。C言語とのかかわり上,OSは専らUNIXを使用。C言語のプログラムでは,いつもLinux/FreeBSD/Solarisすべてで動くことを気に留めている。C言語と同様に移植性の高いシェルスクリプトにも思い入れが深く,著書に『シェルスクリプト基本リファレンス』がある。【実践】C言語による組込みプログラミングスタートブックソフトウェアエンジニアにとって,「組込み」の敷居が低くなってきています。本書は,ソフトウェアエンジニアのための「組込み」プログラミングの入門書です。既存のC言語入門は,文法の詰め込み学習型か,簡単さを売り物にして後々まったく役に立たない書籍のいずれしかありません。「C」は歴史の長いプログラミング言語ですが,いまなお最初に勉強するものとして選ぶ方が多いようです。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。